Repository navigation
Description
Overview
PyAutoHeart is RED with two reasons sharing one cause: install verification FAILED (testpypi; checks F) and release validation FAILED (stage integrate). In run 35195111347 all 707 integrate scripts passed; only verify_install check F (the Colab gate) failed, on blackjax, corner, jax_zero_contour, optax, xxhash and zeus.
In a TestPyPI rehearsal (TARGET_VERSION set) check F seeds the venv pinned to the candidate, but the verbatim setup cell then runs pip install autonerves --no-deps unpinned, and the released autonerves.setup_colab.setup() installs the whole stack unpinned, downgrading everything to the PyPI release. The gate therefore audits the RELEASED bootstrap, never the candidate. The bootstrap fix (PyAutoNerves #168, #169, merged 2026-09-15) is untagged, PyPI still serves 2026.9.15.1, so: Heart RED → nightly rehearsal never publishes → PyPI stays broken → Heart RED. A chicken-and-egg that needs a human override every time.
Decision (2026-09-17): do not release; fix the gate so no authorisation is needed. Scope is PyAutoHeart only, no PyAutoNerves change.
Plan
- In a rehearsal (
TARGET_VERSIONset), check F gates on the candidate (FAIL → RED as today) and reports the released bootstrap's state as aWARNrow that does not change the verdict (the nightly only publishes on GREEN, so YELLOW would still block the release that fixes it). - The continuous PyPI-index path (no
TARGET_VERSION) is unchanged: one verify, audits what a reader gets today. - Readiness stays verdict-neutral on WARN; the dashboard shows "passed with warnings" with the WARN detail.
- Tests for the usage text, the sidecar writer, readiness and the dashboard.
Detailed implementation plan
Affected Repositories
- PyAutoHeart (primary)
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./PyAutoHeart | main | clean |
Suggested branch: feature/colab-gate-candidate-audit
Implementation Steps
heart/checks/verify_install.shcheck_f, only whenTARGET_VERSIONis set: after the verbatim setup-cell driver succeeds, (a) runcolab_gate.py verifyonce as the RELEASED facet, advisory only, capturing its detail and the installed autonerves version from the report'spackagesblock; (b) re-pin:pip install --no-deps "${PIP_INDEX_ARGS[@]}" autonerves==$T autofit==$T autoarray==$T autogalaxy==$T autolens==$T, thenimportlib.reload(autonerves.setup_colab)andpip install --no-depsof_PROJECTS["autolens"]["packages"](mirrors_colab_setup, does not callsetup()again); fold theCOLAB_GATE_AUTONERVES_SRCoverlay into this step as an extra overlay after the re-pin; (c) runcolab_gate.py verifyagain into a second report as the CANDIDATE facet with today's FAIL semantics; (d) RESULTS rows: candidate FAIL →F|FAIL|<detail>; candidate pass + released failed → extra rowF|WARN|released Colab bootstrap (autonerves=<ver>) broken for readers: <detail>; candidate passes, then the notebook cell andF|PASSas today; (e) the results table prints WARN rows,n_failcounts only FAIL soreadystays true on WARN,n_warnjoins the Overall line, both gate reports go into the sidecar (VI_F_GATE_VERIFYcandidate + newVI_F_GATE_VERIFY_RELEASED), header comment and usage text updated.heart/readiness.pyinstall block: no verdict change for WARN; a comment records that WARN is verdict-neutral by decision 2026-09-17 (a broken released bootstrap is not evidence against shipping; the release is the remedy).heart/dashboard.pyInstall verify section: ready true + any check WARN → section WARN, summarypassed with warnings (<index>; <letters>), WARN details as detail lines. FAIL / find-links unchanged.heart/checks/colab_gate.py: no behaviour change expected (verify already takes--report-json).- Tests:
tests/test_verify_install_script.py(usage text mentions WARN + rehearsal re-pin; sidecar snippet turnsF|WARN|...into status WARN withreadytrue when no FAIL),tests/test_readiness.py(checks[F PASS, F WARN]ready true → no red, no yellow; ready false with FAIL still red),tests/test_dashboard.py(WARN row renders WARN; FAIL still FAIL). - Docs:
verify_install.shheader,skills/verify_install/verify_install.md,docs/release_validation.mdcheck F paragraph,health_agent/capabilities.yamlmeasures line.
Witness (red first; needs python3.12)
bash heart/checks/verify_install.sh F --testpypi --version 2026.9.17.1.dev77201 --report-json /tmp/vi.json
Before: the verify line shows autonerves=2026.9.15.1 and F FAIL. After: released facet → F WARN (6 missing), candidate facet → autonerves=2026.9.17.1.dev77201, F PASS, ready true. Negative control: no --version → one verify, unchanged. Then pytest tests/test_verify_install_script.py tests/test_readiness.py tests/test_dashboard.py.
Key Files
heart/checks/verify_install.sh— check F driver, results table, sidecar writerheart/readiness.py— install-verification leg of the verdictheart/dashboard.py— Install verify sectionheart/checks/colab_gate.py— the gate's seed/verify commands
Original Prompt
Click to expand starting prompt
PyAutoMind/draft/bug/pyautoheart/colab_gate_rehearsal_audits_released_bootstrap.md (Mind commit 92e7c04) — "Check F audits the released Colab bootstrap in a TestPyPI rehearsal, not the candidate". Type: bug; Target: PyAutoHeart; Difficulty: moderate; Autonomy: supervised; Priority: high; Consequence: block. Related: PyAutoHeart#228, PyAutoNerves#168, PyAutoNerves#169.
Activity
Jammy2211 commentedon Sep 17, 2026
Shipped
Merged via #230 (head
4f7e04e, merge08c74aa), Heart Tests green on py3.12 and py3.13.What changed:
verify_install.shcheck F, with--versiononly: audits the released bootstrap first as an advisory facet (reported as anF|WARN|released Colab bootstrap (autonerves=<ver>) broken for readers: ...row that never movesready), re-pins the venv to the candidate (five packages==VERSIONfrom the rehearsal index,setup_colabreloaded and its own package list reinstalled as_colab_setupdoes), then gates on the candidate with today's FAIL semantics. The continuous run without--versionis unchanged. TheCOLAB_GATE_AUTONERVES_SRCoverlay now applies after the re-pin, or before the single audit.n_warn; the sidecar carries the released report ascolab_gate.verify_released; readiness stays verdict-neutral on WARN; the dashboard renders "passed with warnings (; F)" with the detail.Still to do by hand: the red-first witness on a machine with python3.12 (command in the PR body). The next nightly rehearsal carries PyAutoNerves #168/#169, so check F should pass on the candidate and Heart should go GREEN without a release authorisation.
Generated by Claude Code