Fictional sample and state contract
Six original repo-native illustrations/posters: A01 Bicycle route study (bicycle, urban), A02 Morning commuter (commute, urban), A03 Bicycle wheel detail (bicycle, wheel), A04 Coast at sunrise (coast, sunrise, poster), A05 Urban portrait (urban, portrait, poster), A06 Sunrise route (sunrise, commute). Collections are Field notes (A01/A02/A04) and Workshop (A03/A05/A06). Original evidence and artwork are immutable.
Search lowercases ASCII alphanumeric tokens, requires every query token, and checks exact whole tokens in title and/or controlled tags as selected. Empty query matches all. Evidence text is excluded. Type and collection facets combine with AND. The only synonym expansion is query bike → bike OR bicycle when enabled; bicycle never expands to bike. This is lexical matching, with no stemming or semantic inference.
Author-assigned relevance labels, fixed before correction: bicycle and bike each expect A01/A02 (complete bicycle scene); coast expects A04; urban portrait expects A05. A03 is a returned but irrelevant component detail for the full-scene task. Baseline bicycle and bike return A01/A03: useful 1/2, missing 1/2. Add bicycle only to A02: each returns A01/A02/A03, useful 2/3, missing 0/2. Coast is 1/1 useful, 0/1 missing; urban portrait is 1/1 useful, 0/1 missing in both states. Disabling synonyms makes bike return none: useful 0/0 (undefined, shown as no returned denominator), missing 2/2. These labels express author judgment, not observed users.
Storage northstar-findability-v1 holds schema version 1, revision, controlled tags keyed by all six exact IDs, a boolean policy and ordered edits. History must replay from the original sample to the exact current state; revision equals history length. Each edit has exact keys, valid unique vocabulary and a matching before state. Unknown IDs/fields, duplicate tags, inconsistent history and unknown versions are invalid. Original evidence never changes.
Durable edits preview before/after and require confirm; cancellation writes nothing. Preview is bound to complete memory state, raw saved bytes, selected record and search view. Changed raw bytes reject confirmation even at the same revision. Unreadable storage keeps memory and warns. Invalid bytes remain until an explicitly previewed reset. Corruption discovered later also blocks edits and exposes reset. Reset replaces the complete saved sample; its preview explains that all edits/history are lost. Undo reverses only the latest edit by appending its inverse. Reset cannot be undone and invalid raw bytes are never restored. View edits are session-only; a single previous query/facet/scope view can be restored, including after clearing filters. Refresh restores compatible durable edits and starts the default search view.
When saved storage cannot be read, durable writes are not attempted even if writing would succeed. Confirmed edits and reset affect memory only; unseen saved bytes remain intact. The review explicitly discloses this boundary.