Findings get an explicit Status line, symmetric with decisions
Date: 2026-09-11 Status: closed Supersedes: none Superseded-by: none — current
Context
Section titled “Context”docs/findings/20260911-1205-finding-status-not-modeled-in-repo-walker.md found that walkFindings (cli/src/repo-walker.ts:47-63) never extracts a status for finding docs — FindingDoc carries only path/timestamp/title, with no status field at all, unlike DecisionDoc’s extractStatus. This blocks the drain-time metric irina/SYNTHESIS.md §2 specifies (open findings ÷ findings closed in the trailing 28 days) on every repo in the fleet, not just hermes — irina/LANES-M1-M4.md’s hermes pilot cycle-0 baseline had to descope to decisions-only as a stopgap for exactly this reason, and irina/SYNTHESIS.md §10 names closing this gap as the single highest-leverage remaining act in the whole IRINA build. Unlike hermes’s decision-status fix (devarno-cloud/hermes#91, #92), which retrofitted an existing but inconsistent vocabulary across 29 already-written docs in one repo, findings today have ZERO status concept anywhere in the fleet — every finding doc, in every repo, is unstamped. This is a green-field convention decision, not a format cleanup, and the scope of any fleet-wide retrofit is unknown and explicitly NOT decided by this doc.
Decision
Section titled “Decision”Findings adopt the same explicit Status: line convention as decisions (open|closed|superseded, matching extractStatus’s existing bold-label/YAML recognition in cli/src/repo-walker.ts), going forward, for newly-authored findings only. A finding with no Status line parses as unparseable, fail-closed, exactly as an unstamped decision already does — no silent default to ‘open’ or ‘closed’. Semantics for findings specifically (distinct from decisions, which this doc must define rather than assume by analogy): ‘open’ means the condition the finding describes is still true/unaddressed; ‘closed’ means a subsequent finding, decision, or verified fix has addressed it (the closing artefact should be named in a Closed-by: field, mirroring decisions’ Superseded-by, so closure is traceable to a specific act, not just a status flip); ‘superseded’ is reserved for a finding whose observation was itself wrong or replaced by a more accurate one, not for a finding whose underlying issue was fixed (that is ‘closed’). Fleet-wide retrofit of existing findings is explicitly OUT of scope for this decision — it ratifies the convention and the walkFindings/extractStatus code change (cli/src/repo-walker.ts) that reads it, but does not mandate or schedule retrofitting any existing finding doc in any repo. Consequence accepted knowingly: drain time computed on findings will read as artificially high (many ‘open’-by-default via unparseable-treated-conservatively, or simply uncomputed) until individual repos retrofit their own findings, same adoption curve hermes’s decisions just went through.
Alternatives considered
Section titled “Alternatives considered”- Backlink-only convention (Resolved-by field, no status line) — Mirrors how decisions already track supersession, and avoids adding a second field type to maintain — but makes ‘is this finding open’ unanswerable without cross-referencing every decision/PR in the repo for a backlink, which is much more expensive to compute than a single-doc regex scan, and doesn’t give a finding author a way to self-declare closure the way a decision’s own Status line does. Rejected as more expensive to compute for the exact drain-time use case this decision exists to unblock.
- Silent default to ‘open’ for unstamped findings — Cheaper migration path (no retrofit needed, every existing finding just counts as open), but directly contradicts the established discipline this same corpus already ratified for decisions (extractStatus’s own design comment: never silently read an unrecognized status as open, because that is the one value the MR-7 sign-off check skips). Would also make the metric worse than uncomputed — a wrong number that looks confident is worse than an honest unparseable gap.
- Mandate immediate fleet-wide retrofit as part of this decision — The scope is unknown (every finding doc in every registered repo, likely hundreds+) and unbounded by this decision’s own analysis — committing to it now would be the same mistake as picking hermes as pilot without checking fleets_allowed first (irina/SYNTHESIS.md C8). Ratify the convention and the code change now; scope and schedule retrofit as a separate, later act once the size of the problem is actually measured.
Consequences
Section titled “Consequences”(no consequences enumerated — explicit none)
References
Section titled “References”- docs/findings/20260911-1205-finding-status-not-modeled-in-repo-walker.md
- irina/SYNTHESIS.md
- irina/LANES-M1-M4.md
- cli/src/repo-walker.ts
Sign-off
Section titled “Sign-off”- Subagent: claude-sonnet-5 (session_01488gmoyur1UAMfpNMgUAhC)
- Human: alex@devarno.com
Countersigned by human:alex@devarno.com on 2026-09-21. Box ticked by the
human directly, in-file; this line recorded by the agent as scribe.
Petrova-Override: human:alex@devarno.com against fleets_allowed:[] on petrova-codes