FR-CULL-13 — Evidence never becomes a verdict, and a test proves it #55
Notifications
Due Date
No due date set.
Depends on
#56 FR-CULL-8a — Per-face eye state and head pose, as evidence
dtourolle/DarkRoom
Reference: dtourolle/DarkRoom#55
Reference in New Issue
Block a user
Every signal the app computes about a frame is evidence; no code path writes a rating, flag, label or trash membership without an input event between the signal and the write. Added to the spec 2026-09-19 (
7db999c) with R7; nothing is tagged to it yet.Why
FR-CULL-5's ground rule — automated selection is distrusted because its documented failure is rejecting the only frame of a moment — was stated once and enforced nowhere. FR-CULL-8a adds per-face eye state and head pose, which are exactly the signals a well-meaning shortcut would turn into an auto-reject. The clause says the classifier does not hold the pen; this issue is the mechanism.
Deliverable
dr_catalog::rating, the sidecar judgement writers, burst representative acceptance) and shows each reachable only from an input event — a static assertion over the call graph or a tagged allow-list, whichever fails loudly when a new writer appears.Acceptance
TRACES: FR-CULL-13on the test and the chip row;TRACES: R7on the judgement dispatchProgress check (2026-09-24). Eye state only:
85cc2b1)TRACES: R7cd0ca67records that a pass selecting frames by blink was deliberately not built.First half shipped in v0.18.2 (
2cde2874,adbb9ac9):tools/traceability/src/verdicts.rsparses every shipped Rust file and fails CI (no_verdict_is_written_but_by_a_person) if a rating, flag, label or trash entry is written anywhere but a reviewed list of 74 sites: user input callbacks, relays checked back to them, and verdicts carried from elsewhere (sync, sidecar/XMP reads, duplicate consolidation). Planting a write in burst grouping and in the eye-state reader made it fail. TRACES: FR-CULL-13 | R7. Still open: the evidence chips (clipping, focus, burst, face count) on grid cells and in culling mode, shown as absent rather than zero.