You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: release-validation report + readiness hard gate (M2)
Add the Heart-owned release-validation tier: a tracked validation_report.json
and an ingest-and-judge CLI that proves the exact source about to ship was
built, TestPyPI-published, wheel-installed, and exercised at release fidelity.
- heart/validate.py: schema_version 1 report + `pyauto-heart validate --ingest`.
Folds the M1 TestPyPI rehearsal artifact, a {repo: sha} commit_shas.json, and
(from M3) a wheel-based integration report into one report; computes
release_ready (pass/fail axis) and persists it to state + a history archive.
Ingest-and-judge ONLY: never dispatches a build, never talks to GitHub, never
mutates a repo.
- heart/readiness.py: hard gate consuming the report. GREEN-for-release now
requires a fresh passing report whose commit_shas match the current main HEADs
(via ci_status.head_sha) under the `release` profile; absent/stale-by-age/
SHA-mismatch/wrong-profile -> YELLOW; a failed stage -> RED.
- state.py aggregates validation_report.json; status.py renders it;
bin/pyauto-heart gains the `validate` subcommand.
- health_agent/capabilities.yaml registers the `validate` capability +
validation_report signal, the release_gate rule, and the Release/Health Agent
boundary so the Brain agents surface it manifest-driven.
- docs/release_validation.md defines (not yet wired — M3) the `release` env
profile and the wheel-install requirement as acceptance criteria.
- Tests: tests/test_validate.py (ingest) + readiness gate paths
(absent/stale-by-SHA -> YELLOW, fresh-pass -> GREEN, fail -> RED). 166 pass.
Co-Authored-By: Claude <noreply@anthropic.com>
0 commit comments