Merge: origin's sync ordering and adoption work, its scan-complete trigger ported into library_ui/
This commit is contained in:
@@ -530,6 +530,15 @@ Three invariants, each tested:
|
||||
| Re-storing an existing id updates in place, never migrates | Migrating would rewrite a sealed shard |
|
||||
| Merging another client's shard is insert-only and idempotent | Both copies derive from the same bytes by the same code, so neither is better; preferring ours avoids dirtying a shard others have synced |
|
||||
|
||||
**When the exchange runs.** Corrected 2026-09-20. It fired only after the metadata sweep — hours
|
||||
on a large library — so a fresh device re-derived every thumbnail it looked at, re-detected faces
|
||||
and re-read every header before adopting the shards and snapshot that held all of it. It now also
|
||||
fires the moment the scan completes, which is the first moment the rows the merges key on exist,
|
||||
and the sweep starts behind it. In steady state that pass is one listing. The catalog merge also
|
||||
takes **capture metadata** (`captured_at`, offset, camera, lens, ISO) for images still at
|
||||
`metadata_state < 2`, matched by `oc:fileid` — a date is a fact about the file's bytes, not local
|
||||
state, and the snapshot already carried it; the sweep's per-chunk query then finds nothing left.
|
||||
|
||||
**The transfer**, in `dr-ui`'s `derived_sync`, exchanges shards with `.darkroom-derived/` under the
|
||||
library root. `ThumbStore::shards()` reports which are sealed, so an up-to-date client's whole pass
|
||||
is one listing plus whichever shard is still open.
|
||||
|
||||
@@ -1814,6 +1814,28 @@ tool for a hand-held set, and a photograph with real parallax is not a panorama.
|
||||
in one operation until HDR merge exists on its own. No live re-stitch: a different projection or
|
||||
crop after the fact is a new file, not an edit. No video.
|
||||
|
||||
### 3.12 Inference runtime
|
||||
|
||||
The face, segmentation and border-fill models run under an inference engine the application
|
||||
selects per device. [inference.md](inference.md) is the design: its §3 sets the dependency policy
|
||||
the runtime may reopen, its §10 the milestones (M1–M7) the clauses below cite as acceptance. The
|
||||
clauses are the register entries inference.md §12 promised; they are stated here so the
|
||||
traceability gate can count them.
|
||||
|
||||
**FR-INF-1 — Runtime selection.** On launch the application shall determine, per device and
|
||||
without blocking the first frame, the fastest inference backend that can build and run a session
|
||||
for the shipped models, by attempting it; shall record and reuse that determination until the
|
||||
runtime, driver, hardware or models change; and shall display the backend in use in Settings and
|
||||
on the about screen. *Acceptance:* inference.md §10 M1 and M5.
|
||||
|
||||
**FR-INF-2 — Derived engines.** Backends that require device-specific compilation shall compile in
|
||||
the background after selection, shall serve requests from the next lower backend until each engine
|
||||
is ready, and shall not change the backend of a job in progress. *Acceptance:* M5.
|
||||
|
||||
**FR-INF-3 — Model forms.** Quantised model forms are produced at release time from real
|
||||
calibration data and are shipped only when they meet inference.md §10's accuracy gates against the
|
||||
canonical form; the application never quantises on the device. *Acceptance:* M2, M7.
|
||||
|
||||
---
|
||||
|
||||
## 4. Non-functional requirements
|
||||
@@ -2111,6 +2133,13 @@ it is far cheaper to discover now than after the UI is built.
|
||||
clipping indicators (FR-DSP-7), and the HSL mixer carry a shape or text affordance. This matters
|
||||
more in a colour-grading application than in most software.
|
||||
|
||||
### 4.10 Inference
|
||||
|
||||
**NFR-INF-1 — Embedding comparability.** Face embeddings shall be computed at a precision whose
|
||||
deviation from the f32 reference is within [inference.md](inference.md) §7's gate, on every
|
||||
backend, so that embeddings from any device are comparable — FR-CULL-9's calibration depends on
|
||||
it. *Acceptance:* inference.md §10 M3.
|
||||
|
||||
---
|
||||
|
||||
## 5. Data model and architecture
|
||||
|
||||
+24
-20
File diff suppressed because one or more lines are too long
@@ -282,7 +282,9 @@ $LOCALAPPDATA\Programs\DarkRoom\
|
||||
models\
|
||||
scrfd_500m_640.onnx scrfd_2.5g_640.onnx scrfd_10g_640.onnx arcface_mbf_b1.onnx
|
||||
2d106det_b1.onnx ocec_s_b1.onnx sgc_l_48_b1.onnx
|
||||
scrfd_500m_640.int8.onnx scrfd_2.5g_640.int8.onnx scrfd_10g_640.int8.onnx
|
||||
yolo26s-sem-ade20k.onnx yolo26s-sem-ade20k.classes.json categories.txt
|
||||
migan-512.onnx
|
||||
LICENSE
|
||||
uninstall.exe
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user