ADR-0015: Bind alpha acceptance to retained evidence bytes

Status: accepted Date: 2026-08-30 Owners: ZeroProofML maintainers Supersedes / superseded by: alpha acceptance schema v1 / none

Context

The initial alpha acceptance validator checked digest syntax and non-empty evidence labels, but it did not resolve those labels or compare candidate artifact bytes with the manifest. A syntactically complete manifest could therefore pass without retained evidence.

Decision

Alpha acceptance schema v2 uses repository-relative evidence records containing both a file path and SHA-256 digest. Passed gates require existing files whose bytes match those digests. Publication authorization additionally binds a full qualified Git commit, an immutable source file, and the exact wheel and sdist under dist/. Required gate identifiers are fixed and mandatory.

Each passed gate uses distinct retained evidence bytes; one generic object cannot be reused to satisfy multiple gates. CI-generated qualification fan-in records live under ignored dist/ so downloading them for the acceptance job does not make the qualified Git checkout appear dirty.

Pending, failed, and unavailable gates cannot carry evidence that might be mistaken for accepted evidence. Preparation records remain valid without local artifacts only while publication authorization is false.

Consequences

The validator is still a release-record checker, not a substitute for human review or for the commands that produce each report. Green acceptance now means the named evidence bytes and candidate distributions are locally present and hash-bound to the manifest.

Alternatives considered

Free-form evidence identifiers were rejected because their existence and content cannot be checked. Directory paths were rejected because mutable trees do not provide one unambiguous retained evidence object.

Verification and rollout

The unreleased v0.7.0a1 manifest moves to schema v2 and reopens locally claimed passes. Mutation tests cover missing evidence, path traversal, digest mismatch, fabricated commits, nonexistent distributions, cross-gate evidence reuse, and the generated qualification-summary location.