Skip to content

feat(ooda): persist curated analysis results as durable Findings #102

Description

@1012839419a-alt

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions