Skip to content

Make Repository Analysis outcomes canonical #109

Description

@fproulx-boostsecurity

Outcome

Make explicit per-Repository terminal evidence the only authority for Analysis reconciliation.

Depends on

Scope

  • Define the canonical RepositoryAnalysisOutcome with independent workflow-Analysis and secret-detection phase statuses: succeeded, failed, skipped, and not_requested.
  • Carry explicit Repository existence evidence: confirmed_present, confirmed_gone, or unknown.
  • Produce outcomes for Repository, Organization, and explicit Repository-set requests, including partial multi-Repository completion and non-fatal per-Repository errors.
  • Derive aggregate analyzed counts from outcomes.
  • Adapt Poutine, deep secret detection, Kitchen, and Counter transport consumers to the new result shape without a missing-evidence compatibility fallback.
  • Keep phase errors structured and safe for later operator reporting.

Deletion order

  1. Replace producers so every terminal Repository has canonical evidence.
  2. Replace consumers of Success, AnalyzedRepos, and mutable analyzed counts.
  3. Remove those legacy AnalysisResult fields and tests that infer authority from aggregate success or finding presence.

Do not remove the existing graph importers in this slice; the canonical ingestor replaces them in the next slice.

Verification

  • Repository success and failure outcomes.
  • Organization and Repository-set partial completion.
  • Workflow success with secret detection failed, skipped, and not requested.
  • Explicit confirmed-gone evidence versus unknown existence.
  • Aggregate counts are derived and cannot contradict per-Repository outcomes.
  • Missing outcome evidence grants no replacement authority.

Run at minimum:

go test ./internal/poutine ./internal/kitchen ./internal/counter/...
make test
make lint

Done when

No code decides Analysis replacement scope from a global success flag, a mutable Repository-name list, or the presence or absence of findings.

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

    architectureArchitecture and structural codebase improvementready-for-agentFully specified and ready for an AFK agent

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions