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
- Replace producers so every terminal Repository has canonical evidence.
- Replace consumers of
Success, AnalyzedRepos, and mutable analyzed counts.
- 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.
Outcome
Make explicit per-Repository terminal evidence the only authority for Analysis reconciliation.
Depends on
Scope
RepositoryAnalysisOutcomewith independent workflow-Analysis and secret-detection phase statuses:succeeded,failed,skipped, andnot_requested.confirmed_present,confirmed_gone, orunknown.Deletion order
Success,AnalyzedRepos, and mutable analyzed counts.AnalysisResultfields 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
Run at minimum:
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.