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_VERSION set), check F gates on the candidate (FAIL → RED as today) and reports the released bootstrap's state as a WARN row 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
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./PyAutoHeart |
main |
clean |
Suggested branch: feature/colab-gate-candidate-audit
Implementation Steps
heart/checks/verify_install.sh check_f, only when TARGET_VERSION is set: after the verbatim setup-cell driver succeeds, (a) run colab_gate.py verify once as the RELEASED facet, advisory only, capturing its detail and the installed autonerves version from the report's packages block; (b) re-pin: pip install --no-deps "${PIP_INDEX_ARGS[@]}" autonerves==$T autofit==$T autoarray==$T autogalaxy==$T autolens==$T, then importlib.reload(autonerves.setup_colab) and pip install --no-deps of _PROJECTS["autolens"]["packages"] (mirrors _colab_setup, does not call setup() again); fold the COLAB_GATE_AUTONERVES_SRC overlay into this step as an extra overlay after the re-pin; (c) run colab_gate.py verify again 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 row F|WARN|released Colab bootstrap (autonerves=<ver>) broken for readers: <detail>; candidate passes, then the notebook cell and F|PASS as today; (e) the results table prints WARN rows, n_fail counts only FAIL so ready stays true on WARN, n_warn joins the Overall line, both gate reports go into the sidecar (VI_F_GATE_VERIFY candidate + new VI_F_GATE_VERIFY_RELEASED), header comment and usage text updated.
heart/readiness.py install 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.py Install verify section: ready true + any check WARN → section WARN, summary passed 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 turns F|WARN|... into status WARN with ready true 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.sh header, skills/verify_install/verify_install.md, docs/release_validation.md check F paragraph, health_agent/capabilities.yaml measures 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 writer
heart/readiness.py — install-verification leg of the verdict
heart/dashboard.py — Install verify section
heart/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.
Overview
PyAutoHeart is RED with two reasons sharing one cause:
install verification FAILED (testpypi; checks F)andrelease validation FAILED (stage integrate). In run 35195111347 all 707 integrate scripts passed; onlyverify_installcheck F (the Colab gate) failed, on blackjax, corner, jax_zero_contour, optax, xxhash and zeus.In a TestPyPI rehearsal (
TARGET_VERSIONset) check F seeds the venv pinned to the candidate, but the verbatim setup cell then runspip install autonerves --no-depsunpinned, and the releasedautonerves.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
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).TARGET_VERSION) is unchanged: one verify, audits what a reader gets today.Detailed implementation plan
Affected Repositories
Branch Survey
Suggested branch:
feature/colab-gate-candidate-auditImplementation 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/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).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)
Before: the verify line shows
autonerves=2026.9.15.1and 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. Thenpytest 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 commandsOriginal 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.