Record D12 as settled by events, and D3 as delivered

D12 had been OPEN since the 2026-08-08 calibration, and D3 said it
depended on D12. In the meantime the milestone D3 named was delivered
and closed on 2026-08-30 and the application reached 0.12.2 with every
cluster the calibration selected at least begun. The decision the
register was waiting for had been made by building, so the register
now says so: full scope stands, v1 has no date, and "post-v1" in §7 is
the one way a clause leaves the count.

The status line also stops calling this a draft from August; it has
carried eleven dated amendments since.
This commit is contained in:
2026-09-19 12:24:54 +02:00
parent e6ac31d39d
commit c921852d89
+19 -5
View File
@@ -1,6 +1,6 @@
# DarkRoom — Requirements Specification # DarkRoom — Requirements Specification
**Status:** Draft v0.1 · 2026-08-08 **Status:** Living document · first written 2026-08-08 · audited 2026-09-19
**Owner:** Duncan Tourolle **Owner:** Duncan Tourolle
A cross-platform, non-destructive RAW photo editor for Linux desktop and Android, in the A cross-platform, non-destructive RAW photo editor for Linux desktop and Android, in the
@@ -1904,7 +1904,7 @@ Rationale, evidence, and the eliminated alternatives are recorded in
|---|---|---| |---|---|---|
| D1 | Language and UI framework | Rust + Slint, rendering through wgpu | | D1 | Language and UI framework | Rust + Slint, rendering through wgpu |
| D2 | RAW decoder | rawler; LibRaw fallback behind a trait | | D2 | RAW decoder | rawler; LibRaw fallback behind a trait |
| D3 | First milestone | **Provisional — depends on D12** | | D3 | First milestone | Delivered — [milestone-v0.1.md](milestone-v0.1.md), closed 2026-08-30 |
| D4 | Nextcloud sync mechanism | ETag pruning, chunked upload v2, Login Flow v2 | | D4 | Nextcloud sync mechanism | ETag pruning, chunked upload v2, Login Flow v2 |
| D5 | Colour management | lcms2 + GPU-side matrix/LUT transforms | | D5 | Colour management | lcms2 + GPU-side matrix/LUT transforms |
| D6 | Shader authoring | Hand-written WGSL | | D6 | Shader authoring | Hand-written WGSL |
@@ -1913,7 +1913,7 @@ Rationale, evidence, and the eliminated alternatives are recorded in
| D9 | Operation UI model | Declarative parameter descriptors | | D9 | Operation UI model | Declarative parameter descriptors |
| D10 | Interface strategy | One adaptive UI, tablet + desktop | | D10 | Interface strategy | One adaptive UI, tablet + desktop |
| D11 | Product positioning | Culling-first differentiator; see below | | D11 | Product positioning | Culling-first differentiator; see below |
| D12 | Scope versus pace | **OPEN** | | D12 | Scope versus pace | **DECIDED 2026-09-19** — settled by events; full scope stands, no v1 date |
### D11 — product positioning ### D11 — product positioning
@@ -1935,7 +1935,21 @@ Settled by requirements calibration, 2026-08-08.
| Licence | GPLv3 | | Licence | GPLv3 |
| Pace | Evenings and weekends, indefinite | | Pace | Evenings and weekends, indefinite |
### D12 — scope versus pace · **OPEN** ### D12 — scope versus pace · **DECIDED 2026-09-19**
**Settled by events.** The reconciliation this decision asked for never happened as a decision;
it happened as a build. Between the calibration and this audit the milestone D3 pointed at was
delivered and closed (2026-08-30), and the application went through eleven further releases to
0.12.2 carrying culling, develop, masks, faces, sync, Flatpak and a Windows channel. The scope as
calibrated stands as written, and the pace is the pace. What was reconciled is the *date*: v1 has
none. A requirement in this document is in scope until §7 says otherwise, and "post-v1" in §7 is
the only mechanism by which something leaves the count — used on 2026-09-19 for the plugin API,
and for nothing else.
The two tensions below are kept as the record of what the decision weighed. Both resolved
themselves the same way: the expensive selection was built anyway, and the differentiator was
built alongside the develop chain rather than instead of it.
The calibration selected an ambitious feature set — full tablet editing, full ingest, culling as a The calibration selected an ambitious feature set — full tablet editing, full ingest, culling as a
differentiator, complete GPU masking, AI denoise, Fuji-first colour, deep sync, sidecar durability differentiator, complete GPU masking, AI denoise, Fuji-first colour, deep sync, sidecar durability
@@ -1956,7 +1970,7 @@ much.
architecture but is useful to nobody. If culling is what no existing tool does well, a culler is architecture but is useful to nobody. If culling is what no existing tool does well, a culler is
both a smaller build and a usable one — it needs no develop chain. both a smaller build and a usable one — it needs no develop chain.
Resolving D12 sets D3 and [architecture.md §10](architecture.md)'s Phase 2. D12 was what set D3, and [architecture.md §11](architecture.md)'s build order followed it.
### D15 — target devices · **DECIDED 2026-08-22** ### D15 — target devices · **DECIDED 2026-08-22**