Problem
The 1.6 release proof validators intentionally fail closed when approved live-control evidence is supplied without a valid expected candidate SHA. Today the operator-facing blocker groups a missing --candidate-sha, an invalid SHA, and a true proof mismatch under approved_live_control_candidate_mismatch.
This is safe, and the release runbook always supplies the candidate SHA, but the diagnostic can send an operator toward tamper investigation when the command invocation merely omitted the flag.
Acceptance criteria
- Distinguish a missing or invalid expected candidate argument from a valid-but-mismatched proof candidate.
- Preserve fail-closed release readiness behavior.
- Keep preflight, bundle, and demo-status diagnostics aligned.
- Add focused tests for missing, invalid, and mismatched candidate inputs.
Provenance
Follow-up from the exact-head evaOS review of PR #772. Classified P3 and not a 1.6 release blocker because the documented release path supplies the flag and current behavior fails safely.
Problem
The 1.6 release proof validators intentionally fail closed when approved live-control evidence is supplied without a valid expected candidate SHA. Today the operator-facing blocker groups a missing
--candidate-sha, an invalid SHA, and a true proof mismatch underapproved_live_control_candidate_mismatch.This is safe, and the release runbook always supplies the candidate SHA, but the diagnostic can send an operator toward tamper investigation when the command invocation merely omitted the flag.
Acceptance criteria
Provenance
Follow-up from the exact-head evaOS review of PR #772. Classified P3 and not a 1.6 release blocker because the documented release path supplies the flag and current behavior fails safely.