ci: publish to Pages from dashboard_refresh's already-fresh path too - #362
Merged
Conversation
dashboard_refresh.yml dispatched pages_dashboard.yml only from inside its self-heal branch, below an early `if check; then exit 0; fi`. When the committed render was already fresh it returned before asking the publisher — and the commit that made it fresh was pushed by mind_ledger_merge.yml with GITHUB_TOKEN, which fires no push event, so pages_dashboard.yml's own trigger never saw it either. The published board could therefore strand indefinitely while dashboard.html on main was correct: the nightly cron takes the same early-return path, so nothing healed it. Observed 2026-08-27 — a retired prompt kept rendering as a pickable chip for ~1.5h and was re-picked as already-shipped work. The failure is inverted: the page goes stale precisely BECAUSE the session did its job properly. Leaving the render stale would have fired the self-heal and published. Dispatch the publisher on the already-fresh path too, for non-pull_request events. permissions: actions: write was already declared. Issue #361
Jammy2211
pushed a commit
that referenced
this pull request
Aug 27, 2026
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.
Summary
dashboard_refresh.ymldispatched the Pages publisher only from inside itsself-heal branch. The job's first act is
if check; then exit 0; fi, so when thecommitted render was already fresh it returned before reaching the dispatch — and the
commit that made it fresh was pushed by
mind_ledger_merge.ymlwithGITHUB_TOKEN,which fires no
pushevent, sopages_dashboard.yml's ownpush: main, paths: [dashboard.html]trigger never saw it either.The published board could therefore strand indefinitely while
dashboard.htmlonmainwas correct. Two properties made it worse than a lag:
cron: "20 3 * * *"takes the same early-returnpath, so nothing recovered it. It stayed stale until some push to
maintouchingdashboard.htmlhappened to be made with a non-GITHUB_TOKENcredential.Had the render been left stale, the self-heal would have fired and published. So every
workflow run is green and the repo copy is perfect while the published surface is wrong.
Observed 2026-08-27: a retired prompt kept rendering as a pickable chip ~1.5h after its
retirement landed on
main, and was re-picked as already-shipped work.Pages Dashboardlast ran 19:15:13Z; the ledger merges at 19:29, 19:30 and 20:09 produced
Mind Ledger Merge/Dashboard Refresh/Lifecycle Driftruns and noPages Dashboardrun.This is the third bite of the same
GITHUB_TOKENtrap. The fix for bite two(
a305a293) added the right dispatch on the wrong branch of the flow.Fixes #361.
API Changes
None. CI workflow only — no library source, no public symbols, no dependency changes.
Test Plan
pytest tests/in PyAutoMind — 267 passedYAML parses;
permissions: actions: writealready declared (no permission change)bash -non the extracted step body (GitHub runsrun:asbash -e)Behavioural control test with
ghand the renderer stubbed, run underbash -e:pushscheduleworkflow_dispatchpull_requestpull_requestThe pre-fix column is the control: it confirms the test actually detects the bug rather
than passing vacuously. The
schedulerow is the one that makes the nightly cron a realbackstop for the first time.
Post-merge replay: land a ledger-only change through
mind_ledger_merge.ymlandconfirm a
Pages Dashboardrun appears for it — the real chain, not an inferencefrom a green
Dashboard Refresh.Deliberately out of scope
mind_ledger_merge.yml's heal loop. Addingpages_dashboard.ymlthere wasconsidered and declined: it already dispatches
dashboard_refresh.ymlon every merge,so with this change the publish is guaranteed through that path, and a second dispatch
would fire a duplicate deploy on every ledger merge.
PyAutoHands/release_board.yml,PyAutoMemory/knowledge_board.ymlandPyAutoScientist/organism_board.ymleach renderand
actions/deploy-pages@v4in a single run, so they cannot desync. PyAutoHeart hasno board workflow. Checked 2026-08-27; no change needed in any of them.
Ship gate — Heart override
Heart was RED at ship time and the human authorized shipping anyway, explicitly. The
RED reason, verbatim:
Yellows: workspace validation timeout (
autolens_test scripts/multi_dataset/shared_preloads.py,cloud#32902243623) ·
manifest drift: session-start hooks (generated) — 34 mismatch(es)·PyAutoFit: open PR 8d old.This is not the
AUTONOMY.mdcorrective-PR exception — that permits only a fix scopedto the RED reason itself, and this change is unrelated to release validation. It is a
deliberate human override, recorded here so the merge decision is auditable.
Generated by the PyAutoLabs agent workflow.