Repository navigation
Description
Overview
Phase 4 of the GitHub token consolidation. The personal PATs are revoked and the PAT_PYAUTOLABS org secret is deleted (2026-10-23); no workflow reads it since phase 3. Prose in six repos and one Mind test fixture still describe the PAT, which would mislead a future session. This task retires those mentions.
Plan
- Four viz
AGENTS.mdrender paragraphs: dispatch uses thepyautolabs-botApp token and fails loudly. - Hands
docs/nightly_release_design.mdsecrets line → the App. - Mind:
scripts/spawn.pycomments +docs/pyautobrain/spawn_spec.mdrows 9b/9c name the App secret (DROP rules unchanged); test fixture →APP_PRIVATE_KEY; rewrite therelease_fires_visualization_dispatch.mddraft to use an App token. - One PR per repo; Mind tests locally; every PR waits for green CI.
- Tier: glance — merge mode: auto-merge on green if the Witness passes, post-merge summary
- Human, later (GitHub settings, no code): org PAT policy (restrict classic, keep fine-grained approval); one org-level
SLACK_WEBHOOK_URL(visibility all) replacing the nine repo copies.
Detailed implementation plan
Affected Repositories
- PyAutoMind (primary), PyAutoHands, autolens_visualization, autogalaxy_visualization, autofit_visualization, autocti_visualization
Branch Survey
All six on main, clean, unclaimed.
Suggested branch: feature/github-token-p4-retire-pat-mentions
Implementation Steps
- Viz
AGENTS.md(autolens L221, autogalaxy L173, autofit L175, autocti L202): one sentence each. - Hands
docs/nightly_release_design.mdL81. - Mind
scripts/spawn.pyL160, L188 comments;docs/pyautobrain/spawn_spec.mdrows 9b/9c;tests/test_spawn_template_contract.pyL123 fixture (L85 feat: Spawn Drift detects drift but nothing regenerates — wire the self-heal PR #125 comment stays as history); draft prompt Plan + Human prerequisite. - Witness:
grep -rn PAT_PYAUTOLABSover tracked files, excludingcomplete/and the parent's_surveys/, is empty in all six repos.
Original Prompt
Click to expand starting prompt
GitHub token consolidation phase 4: retire every remaining PAT_PYAUTOLABS mention
Type: maintenance
Target: pyautomind
Repos:
- PyAutoMind
- PyAutoHands
- autolens_visualization
- autogalaxy_visualization
- autofit_visualization
- autocti_visualization
Difficulty: easy
Autonomy: supervised
Priority: high
Status: formalised
Consequence: glance
Parent: draft/release/pyautohands/github_token_and_secret_setup_full_review.md (phase plan in_surveys/03_target_design_and_phases.md); phase 3 = complete/2026/10/github-token-p3-dispatchers-app.md
Witness:grep -rn PAT_PYAUTOLABSover each of the six repos' tracked files, excludingcomplete/records and the parent prompt's_surveys/, is empty
Review-minutes: 10
Unattended: never
Filed: 2026-10-23
Done on GitHub 2026-10-23: the human revoked the personal PATs and the
PAT_PYAUTOLABS org secret was deleted (APP_PRIVATE_KEY is now the only org
secret; APP_CLIENT_ID the only org variable). No workflow reads the PAT
(phase 3). What is left is prose and one test fixture that still describe it:
autolens|autogalaxy|autofit|autocti_visualization/AGENTS.md: the render
paragraph says theeyes-refreshdispatch usessecrets.PAT_PYAUTOLABSand
"warns and skips". Now: a per-steppyautolabs-botApp token scoped to
PyAutoEyes; a missing credential fails the job.PyAutoHands/docs/nightly_release_design.mdline ~81: "Secrets:
PAT_PYAUTOLABS(dispatch/poll …)" → the App token
(vars.APP_CLIENT_ID/secrets.APP_PRIVATE_KEY).- PyAutoMind
scripts/spawn.pyrule-9b/9c comments (~160, ~188) and
docs/pyautobrain/spawn_spec.mdrows 9b/9c: "depends on
secrets.PAT_PYAUTOLABS" → the org App secret. The DROP decisions do not
change (a fresh org still has no App secret configured). - PyAutoMind
tests/test_spawn_template_contract.py: line 123's
arxiv_interests.ymlminiature usessecrets.PAT_PYAUTOLABSas "a
configured secret"; switch it tosecrets.APP_PRIVATE_KEY(what the real
workflow reads) — the test's meaning is unchanged. Leave the line-85
historical comment about feat: Spawn Drift detects drift but nothing regenerates — wire the self-heal PR #125 as history, rewording only if it reads as current. - PyAutoMind
draft/feature/pyautohands/release_fires_visualization_dispatch.md:
its plan tells a future session to dispatch withsecrets.PAT_PYAUTOLABSand
"skip cleanly when the secret is empty", with a human prerequisite on the PAT's
repo list. Rewrite to: mint an App token (repositories:both viz repos,
permission-contents: write) as Handsrelease.ymlalready does elsewhere;
drop the prerequisite (the App is installed org-wide).
Not in scope (human, GitHub settings): org → Personal access tokens policy
(restrict classic PATs, keep fine-grained approval), and creating one org-level
SLACK_WEBHOOK_URL (visibility all) to replace the nine repo copies, so Heart's
secrets: inherit callers that never held it (*_workspace_test, HowTo*) post
too; delete the repo copies after. PyPI tokens stay until phase 1b. Phase 5 =
PyAutoMind/policy/github_tokens.md.
Validation: Mind python3 -m pytest -q tests/test_spawn_template_contract.py
(and the full suite), Hands' and the viz repos' own PR CI; witness grep.
One PR per repo.
Activity
Jammy2211 commentedon Oct 23, 2026
PRs Opened
Mind tests: 703 passed. Witness: empty in Hands and the four viz repos. In Mind it fails as worded, because of history (the #125 test comment,
condemned.md, a dated epic survey, the parent prompt's premise, this task's prompt) and a negative guard (tests/test_session_hook_sync.py:391asserts the literal is absent). The witness could never have passed, so the glance auto-merge does not apply; merge by human /prm.Human, later: org PAT policy (restrict classic, keep fine-grained approval); org-level
SLACK_WEBHOOK_URL(visibility all), then delete the 9 repo copies.Jammy2211 commentedon Oct 23, 2026
Shipped
All six PRs merged 2026-10-23 with every CI leg green: PyAutoMind#511 (b8505cc), PyAutoHands#323 (f05ffa0), autolens_visualization#18 (51c7e4d), autogalaxy_visualization#7 (e5e6256), autofit_visualization#6 (d90051a), autocti_visualization#6 (503d161). Mind's PR-skipped
driftjob is the known schedule-only job, not a test leg.Done on GitHub the same day: personal PATs revoked (human),
PAT_PYAUTOLABSorg secret deleted.APP_PRIVATE_KEYis now the only org secret.Still owed by the human (GitHub settings): org PAT policy (restrict classic, keep fine-grained approval); org-level
SLACK_WEBHOOK_URL(visibility all), then delete the 9 repo copies. Next: phase 5,PyAutoMind/policy/github_tokens.md.intake: file likelihood_lifecycle_phase_6_follow_up_delaunay; 6c ledg…
likelihood-lifecycle 6c closed (#509; PRs #510, #511); 413890_0 carri…