verify_install: check F gates on the candidate in a rehearsal, reports the released bootstrap as WARN - #230
Merged
Conversation
…s the released bootstrap as WARN In a TestPyPI rehearsal (--version) the injected setup cell is verbatim and therefore unpinned: `pip install autonerves --no-deps` and the released `setup_colab.setup()` it imports pull the whole stack back down to the current PyPI release, so check F audited the RELEASED bootstrap and never the candidate. A broken released bootstrap then held Heart RED over the very release carrying its fix (run 35195111347; PyAutoNerves #168/#169 merged but untagged). With --version check F now runs the audit twice: the released bootstrap first, advisory, reported as an `F|WARN|...` row that never changes `ready`; then the venv is re-pinned to the candidate (all five PyAuto packages ==VERSION from the rehearsal index, --no-deps, setup_colab reloaded and its own package list reinstalled as _colab_setup does) and the gate audits that with today's FAIL semantics. The continuous run without --version is unchanged. The COLAB_GATE_AUTONERVES_SRC overlay moves out of the verbatim cell to after the re-pin (or before the single audit). Results table counts n_warn (n_fail still counts only FAIL, so `ready` stays true on WARN); the sidecar folds the released report in as colab_gate.verify_released. readiness stays verdict-neutral on WARN (decision 2026-09-17, recorded in a comment); the dashboard renders a WARN "passed with warnings" section with the detail. Docs, skill text and capabilities.yaml updated; tests for the script text, the sidecar writer, readiness and the dashboard. Refs #229, #228. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATSR1eVsUBBK49nfLhb7JQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #229. Related: #228, PyAutoNerves#168, PyAutoNerves#169, run 35195111347.
Why
Heart is RED with two reasons sharing one cause (
install verification FAILED (testpypi; checks F)andrelease validation FAILED (stage integrate)). All 707 integrate scripts pass; only check F, the Colab gate, fails. In a TestPyPI rehearsal (TARGET_VERSIONset) the seed step pins the venv to the candidate, but the injected setup cell is verbatim and therefore unpinned:pip install autonerves --no-depsand the releasedsetup_colab.setup()it imports pull the whole stack back down to the PyPI release (log:installed PyAuto stack — autonerves=2026.9.15.1 ...). The gate audited the RELEASED bootstrap, never the candidate, so the bootstrap fix already on PyAutoNerves main could never be observed: Heart RED → nightly never publishes → PyPI stays broken → Heart RED.Decision (2026-09-17): no release; fix the gate so no authorisation is needed. Heart-only change.
What
heart/checks/verify_install.sh, check F, only with--version:colab_gate.py verifyonce as the released facet (advisory; captures detail andpackages.autonervesfrom the report; never FAILs);pip install --no-deps <rehearsal index args> autonerves== autofit== autoarray== autogalaxy== autolens==VERSION, then reloadautonerves.setup_colabandpip install --no-depsits_PROJECTS["autolens"]["packages"]exactly as_colab_setupdoes (no secondsetup()call; workspace already cloned). TheCOLAB_GATE_AUTONERVES_SRCoverlay moves out of the verbatim cell to after the re-pin (or before the single audit on the continuous path);verifyagain as the candidate facet with today's FAIL semantics;F|WARN|released Colab bootstrap (autonerves=<ver>) broken for readers: <detail>; candidate <version> passes, then the notebook cell andF|PASSas today.The continuous run (no
--version) is unchanged: one audit, one verdict. The results table prints WARN rows and countsn_warn;n_failcounts only FAIL soreadystays true on WARN. The sidecar folds the released report in ascolab_gate.verify_releasedbesideseed/verify; the{check,status,detail}shape is untouched.heart/readiness.py: no behaviour change; a comment records that WARN is verdict-neutral (a broken released bootstrap is not evidence against shipping the candidate; the release is the remedy, YELLOW would still block it since the nightly publishes only on GREEN).heart/dashboard.py:readytrue with any WARN row → section WARN,passed with warnings (<index>; <letters>), WARN details as detail lines. FAIL and find-links unchanged.heart/checks/colab_gate.py: untouched (verify already takes--report-jsonand runs twice in one venv).skills/verify_install/verify_install.md,docs/release_validation.md,health_agent/capabilities.yaml.WARNandre-pin; re-pin driver, both facets, continuous path single audit,n_warn), the lifted sidecar writer (F|WARN|+F|PASS|→ statuses WARN/PASS,readytrue,verify_releasednested, readiness not red/yellow), readiness (WARN row verdict-neutral; FAIL beside WARN still red), dashboard (WARN renders WARN with detail; FAIL still FAIL).Verification
python3 -m pytest -q -n auto tests/→ 1026 passed.bash -n heart/checks/verify_install.shclean; all three heredoc driverspy_compileclean.python3.12venv path). Red-first witness for a desktop: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.After merge
The next nightly rehearsal carries PyAutoNerves main (#168/#169), so check F passes on the candidate, the released bootstrap reports as WARN, Heart goes GREEN and the nightly publishes. No release authorisation needed. Merge stays human.
🤖 Generated with Claude Code
https://claude.ai/code/session_01ATSR1eVsUBBK49nfLhb7JQ
Generated by Claude Code