diff --git a/docs/requirements.md b/docs/requirements.md index 0b56dd3..c4a99b4 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -1,6 +1,6 @@ # 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 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 | | 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 | | D5 | Colour management | lcms2 + GPU-side matrix/LUT transforms | | 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 | | D10 | Interface strategy | One adaptive UI, tablet + desktop | | 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 @@ -1935,7 +1935,21 @@ Settled by requirements calibration, 2026-08-08. | Licence | GPLv3 | | 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 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 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**