Parent: #96
Status: ready-for-agent
What to build
Add the Decide portion of the OODA Analysis Loop by allowing an authorized operator to turn a curated Analysis Snapshot result into a durable Finding. The Finding must survive snapshot expiry and keep the decision explainable by separating observation, interpretation, recommendation, and evidence.
The user experience starts from a cited curated analysis result, lets the operator review and edit the decision narrative, and persists a stable reference to the authoritative export receipt and source range without copying forbidden analytical payloads into the primary database.
Acceptance criteria
- An authorized operator can create a Finding only from a completed, accessible Analysis Snapshot and a supported curated result.
- The Finding records observation, interpretation, recommendation, evidence references, snapshot receipt identity, source range, author, and timestamps as distinct fields.
- Validation rejects empty, stale, cross-scope, unsupported, or tampered analysis references.
- Persisted Finding evidence contains no raw trace messages, payloads, URLs, credentials, arbitrary SQL, or QuestDB connection details.
- A Finding remains readable and auditable after its disposable Analysis Snapshot expires or is deleted.
- The UI presents the cited observation and source range before saving and makes the distinction between analysis and operator judgment clear.
- Public API and frontend tests cover successful creation, authorization, validation, expiry, deletion, and forbidden-field behavior.
Blocked by
#101
Verification evidence
- Red-green API tests at the Finding creation seam.
- Persistence test proving the Finding survives snapshot deletion.
- Frontend behavior tests for review, validation, and saved state.
- Security assertions over stored and returned Finding evidence.
Parent: #96
Status: ready-for-agent
What to build
Add the Decide portion of the OODA Analysis Loop by allowing an authorized operator to turn a curated Analysis Snapshot result into a durable Finding. The Finding must survive snapshot expiry and keep the decision explainable by separating observation, interpretation, recommendation, and evidence.
The user experience starts from a cited curated analysis result, lets the operator review and edit the decision narrative, and persists a stable reference to the authoritative export receipt and source range without copying forbidden analytical payloads into the primary database.
Acceptance criteria
Blocked by
#101
Verification evidence