Repository navigation
Description
Overview
The PyAutoConf → PyAutoNerves rename (package autoconf → autonerves) was
completed in the reader-facing docs but left seven functional and comment sites
in PyAutoBrain still naming the old repo/package. Found by the 2026-08-19
readability census (#237). Each site was verified individually rather than
blind-renamed; four turn out to be live defects, not cosmetic drift — the
worst being that @PyAutoNerves and @PyAutoConf normalise to different
keys, neither of which the refactor witness map or the body map recognises.
Plan
- Make
autonervesthe single canonical normalised repo key: add
pyautonerves/autonervesaliases and retargetpyautoconfto it, the
same shape as the existingpyautobuild: pyautohandsback-compat alias. - Re-point the refactor test-witness map and the nightly activity gate at
PyAutoNerves, so neither depends on a GitHub rename redirect. - Fix the
/hygieneperf default so PyAutoNerves import timing is measured
again instead of silently skipped. - Correct the four comment/prose sites, replacing two stale hardcoded owner
mappings with the body map as the source of truth. - Add tests pinning each seam, including a drift guard that would have caught
this, and update the fixture that pins the old name.
Detailed implementation plan
Affected Repositories
- PyAutoBrain (primary)
- PyAutoMind (prompt lifecycle only — no code)
Work Classification
Library / organism-infrastructure. No workspace leg.
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./PyAutoBrain | claude/pyautoconf-rename-leftovers-38ia48 | clean |
| ./PyAutoMind | claude/pyautoconf-rename-leftovers-38ia48 | clean |
Branch: claude/pyautoconf-rename-leftovers-38ia48
Worktree root: n/a — web-github session, working from the session clones
(worktree_check_conflict → 0, nothing claimed in active.md).
What each site actually is
Live defects
-
config/policy.yamlrepo_aliases—pyautoconf: autoconf.
_sizing.normalise_repo("@PyAutoConf")→autoconf, which is in none of
LIBRARY_REPOS/WORKSPACE_REPOS/ORGANISM_REPOS(those derive from
PyAutoMind/repos.yaml, where the repo isPyAutoNerves,category: organ).
There is nopyautonervesalias either, so@PyAutoNerves→pyautonerves
while@autonerves→autonerves: two keys for one repo. That is why
target_default_wikicarries three entries (autoconf,autonerves,
pyautonerves) papering over the split. -
config/policy.yamltest_witness—autoconf: PyAutoConf/test_autoconf.
Keyed by the normalised name, so it is reachable only via the stale alias and
points at a repo path that no longer exists. Confirmed live: the sibling
promptdraft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.md
recordspyauto-brain refactorreporting[unwitnessed: pyautonerves]and
advising "strengthen tests first" for a repo with a 157-test suite. -
config/policy.yamlrelease.relevant_repos— containsPyAutoConf.
agents/conductors/release/nightly.sh:196fetches
repos/PyAutoLabs/$repo/commits?sha=main&since=…for each name. Whether the
rename redirect carries that call is unverified — see "Open question".
The fix removes the dependency rather than relying on it. -
agents/conductors/hygiene/hygiene.sh:147— not listed in the prompt.
HYGIENE_PERF_LIBSdefaults toautoconf autofit autoarray autogalaxy autolens;hygiene.sh:415-417runsimport autoconfand records a non-zero
rc asautoconf:n/a, skipping it. PyAutoNerves import timing has been
silently unmeasured since the rename.
Stale beyond the name
-
bin/ensure_workspace_labels.sh:19-21— header claims non-PyAutoLabs orgs
rhayes777/PyAutoConf, rhayes777/PyAutoFitand
Jammy2211/euclid_strong_lens_modeling_pipeline. The liveREPOSarray below
it already lists all three underPyAutoLabs/.repos.yamlhas only two
non-PyAutoLabs homes (Jammy2211/euclid_assistant,Jammy2211/admin_jammy),
neither in this script — so every line of that block is wrong. -
skills/repo_cleanup/reference.md:128— "Owner mapping:
PyAutoConf/PyAutoFit →rhayes777, elseJammy2211". Wrong on both halves.
It is prose the agent follows in the web-github degrade path
(gh api repos/<owner>/<repo>/…); no code keys on it, but a session
following it queries dead owners. -
agents/conductors/health/health.sh:208,
agents/conductors/feature/MIND_TAXONOMY.md:77— comment/doc examples only.
Deliberate — left alone: ORGANISM.md:27 (the rename note itself),
agents/conductors/intake/_intake.py:96 ("autoconf": "PyAutoNerves", labelled
a legacy alias), tests/test_policy_seams.py:71 (covers both spellings on
purpose).
Implementation Steps
config/policy.yamlrepo_aliases:pyautoconf: autonerves; addautoconf: autonerves
(old package mentions in archived prompts) andpyautonerves: autonerves.target_default_wiki: collapse the three entries toautonerves: methods.test_witness:autoconf: PyAutoConf/test_autoconf→
autonerves: PyAutoNerves/test_autonerves.release.relevant_repos:PyAutoConf→PyAutoNerves.
agents/conductors/hygiene/hygiene.sh:147—autoconf→autonerves.bin/ensure_workspace_labels.sh:19-21— replace the org block with a
statement that every repo listed is underPyAutoLabs/, pointing at
repos.yaml+repos_sync.py --check(already cited two lines below).skills/repo_cleanup/reference.md:128— replace the hardcoded mapping with
"resolve<owner>/<repo>from thegithub:field inPyAutoMind/repos.yaml".agents/conductors/health/health.sh:208,
agents/conductors/feature/MIND_TAXONOMY.md:77— name swap.- Tests
tests/test_activity_gate.py:143— fixturePyAutoConf→PyAutoNerves;
add a case asserting aPyAutoNervescommit makesjudge()return
active: True(the acceptance criterion, offline and deterministic).tests/test_policy_seams.py— assert all four spellings
(PyAutoNerves/autonerves/PyAutoConf/autoconf) normalise to
autonerves; assert that key is inKNOWN_REPOS; assert
TEST_WITNESS["autonerves"]; assert every name in
release.relevant_reposexists in the body map — the drift guard that
would have caught this.- New guard test:
PyAutoConf/autoconfappears in PyAutoBrain only at
the three deliberate sites. This is the prompt's grep acceptance,
enforced rather than asserted by hand.
Key Files
config/policy.yaml— the four map edits; the whole functional core of this task.agents/faculties/sizing/_sizing.py—normalise_repo, sole consumer ofrepo_aliases.agents/conductors/refactor/_refactor.py—TEST_WITNESSconsumer.agents/conductors/release/activity_gate.py+nightly.sh—relevant_reposconsumer.agents/conductors/hygiene/hygiene.sh— perf import timing.tests/test_policy_seams.py,tests/test_activity_gate.py— the seam pins.
Trade-offs
- Retargeting
pyautoconfrather than deleting it keeps the ~150 archived Mind
prompts that say@PyAutoConfrouting correctly, for one back-compat line.
Precedent:complete/2026/07/rename-autobuild-to-autohands.md, which kept
autobuildas a router keyword for exactly this reason. - Risk is low:
repo_aliaseshas one consumer, and each re-keyed map is read by
exactly one module. Baseline suite is 462 tests, green before the change.
Testing
python3 -m pytest tests/ -q in PyAutoBrain — 462 green at baseline; expected
to stay green plus the new cases.
Open question (does not block this PR)
The prompt asks to verify whether the nightly activity gate counts activity
on PyAutoNerves today via GitHub's renamed-repo redirect. This session cannot
answer it empirically: the agent proxy 403s every api.github.com call for both
the old and new names, and gh is not installed here. Rather than depend on
redirect behaviour, this PR removes the dependency — the gate names
PyAutoNerves directly, and a new body-map drift test keeps the set honest. If
you want the historical question settled (i.e. were quiet-night verdicts between
the rename and this PR judged on a repo the fetch could not see), that needs one
gh api repos/PyAutoLabs/PyAutoConf/commits call from an authenticated session.
Related
draft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.md is a
sibling prompt whose headline finding — [unwitnessed: pyautonerves] — is
resolved by step 1 here. Its second ask ("audit the other organ/library
repos" for witness-map coverage) is broader than this rename and is deliberately
not absorbed (one prompt = one task = one PR); that prompt should be
re-scoped to the remaining audit once this merges.
Original Prompt
Click to expand starting prompt
# PyAutoConf rename leftovers in Brain functional surfaces
Type: bug
Target: pyautobrain
Repos:
- PyAutoBrain
Difficulty: small
Autonomy: supervised
Priority: normal
Status: formalised
Filed: 2026-08-19 (backfilled from git)
Found by the 2026-08-19 readability census (#237). The PyAutoConf → PyAutoNerves
rename (package `autoconf` → `autonerves`) was fixed in the reader-facing docs
(ORGANISM.md, docs/example.md, skill prose), but these FUNCTIONAL sites still
carry the old name and need per-site verification, not a blind rename:
- @PyAutoBrain/config/policy.yaml:74 — unit-test location map entry
`autoconf: PyAutoConf/test_autoconf`. Is the map keyed by package (should the
key become `autonerves: PyAutoNerves/test_autonerves`?) and does anything
still resolve the old path?
- @PyAutoBrain/config/policy.yaml:84 — the nightly activity gate's
`relevant_repos` lists `PyAutoConf`. A renamed GitHub repo answers via
redirect for some API calls but not all — verify whether activity on
PyAutoNerves is being COUNTED by the gate today, then update the list (and
check `tests/test_activity_gate.py:143`, which pins the old name in its
fixture).
- @PyAutoBrain/bin/ensure_workspace_labels.sh:20 — comment names
`rhayes777/PyAutoConf`; verify the script's live repo list.
- @PyAutoBrain/agents/conductors/health/health.sh:208 — comment example only.
- @PyAutoBrain/skills/repo_cleanup/reference.md:128 — "Owner mapping:
PyAutoConf/PyAutoFit → `rhayes777`" is stale beyond the name: the body map
says PyAutoLabs owns PyAutoNerves and PyAutoFit. Fix the mapping, and check
whether any repo_cleanup behaviour actually keys on it.
Acceptance: grep for PyAutoConf/autoconf across PyAutoBrain returns only
deliberate historical references; the activity gate demonstrably counts a
PyAutoNerves commit; tests updated.
Activity
Jammy2211 commentedon Aug 24, 2026
Parked at ship sign-off —
awaiting-inputEffective autonomy is
supervised(prompt headersupervised,bugwork-type cap
supervised). Per the levels table inAUTONOMY.md, ship PRsign-off at
supervisedparks and asks rather than opening the PR. Theimplementation is complete and pushed; the PR is the only thing waiting.
Branch:
claude/pyautoconf-rename-leftovers-38ia48(PyAutoBrain @
2088bad, PyAutoMind @a22800f) — 10 files, +158 / −18.What was done
All eight sites resolved as planned, plus one the guard test found. The
functional core is
config/policy.yaml:autonervesis now the singlecanonical normalised key, with
pyautonerves/autoconf/pyautoconfaliased onto it;
test_witnessandrelease.relevant_repospoint atPyAutoNerves;
hygiene.shtimesimport autonerves.Eighth site, found by the new guard test, not by the prompt:
skills/OPERATIONS.md:41— "autoconf lowercases YAML dict keys (muJy→mujy)". A live operational gotcha about current package behaviour, renamed toautonerves. This is the guard earning its place on its first run.Gate legs
Also green:
repos_sync.py --check(all 11 checks, including the tenantfirewall — which caught my own test comments hardcoding the org name, since
fixed),
bash -non all four touched shell scripts, and live conductor runs(
refactor,bug,sizing) against the changed policy.Live proof of the headline defect being fixed —
bin/pyauto-brain refactoron this branch:
No
[unwitnessed: pyautonerves], which is exactly what the sibling promptrefactor_witness_map_missing_autonerves.mdreported.Review-faculty claim dispositions
The surface lifted one claim from the commit message. Disposing of it in three
parts, because they do not share a basis:
from the Mind records. Cloned
PyAutoLabs/PyAutoNerves@mainand checked: thedirectory exists at the repo root beside the
autonervespackage, holding 17test_*.pyfiles.pyauto-brain refactorrunabove, plus
tests/test_policy_seams.py::test_refactor_test_witness_loadswhich now pins the witness under every spelling.
PyAutoMind/complete/2026/08/cli-noise-autonerves-batch.mdand I did notre-run the suite (numpy install timed out in this session). Nothing in the
change depends on the count — only the path is load-bearing, and that is
verified above. Flagging it because the commit message states the number
without that qualifier, and the commit cannot be amended (pushed history).
pyauto-heartis not on PATH here and PyAutoHeart is not in this session's reposcope, so
bin/pyauto-brain vitalsreturns:Per
WORKFLOW.md's fallback, the per-repo suite stands in as the gate and it isgreen — but that is the fallback, not a Heart verdict. No YELLOW was
acknowledged and no RED was seen, because nothing was asked. If you want a
real leg 4, the PR should be opened from a session that can reach Heart.
The question
Sign off on opening the PR for
claude/pyautoconf-rename-leftovers-38ia48?main(nopending-releaselabel: PyAutoBrainis outside the release chain), set
active.mdtolibrary-shipped, awaiting-merge, and stop. Merge stays yours.can run the vitals leg, then open the PR.
Two scope calls I made without asking
Both are recorded here so you can reverse either:
pyautoconfrather than deleting it. ~150 archived Mindprompts say
@PyAutoConf; deleting the alias would strand them. Precedent:complete/2026/07/rename-autobuild-to-autohands.mdkeptautobuildas arouter keyword for the same reason.
draft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.mdalso asks to "audit the other organ/library repos" for witness-map coverage
— broader than this rename, so it stays a separate task (one prompt = one
task = one PR). Its headline finding is resolved here; that prompt wants
re-scoping to the remaining audit once this merges. Worth a look:
test_witnessstill keyspyautoreducewith thePyAutoprefix while everyother row is bare, which is the sort of thing that audit should settle.
Generated by Claude Code
Jammy2211 commentedon Aug 24, 2026
Shipped
Merged as #268 (
2e7ea30) intomain. CI green:Brain Testson2088bad. Branch proven merged — 0 unmerged commits.All eight sites resolved. Four were live defects: the
repo_aliasessplit thatleft
@PyAutoConfand@PyAutoNervesresolving to two dead keys, thetest_witnessrow pointing at a deleted repo path, the nightly gate polling theold repo name, and
hygiene.shsilently skipping the Nerves import timing. Fourwere comment/prose, two of them stale beyond the name — both hardcoded owner
mappings now defer to the body map.
The eighth site (
skills/OPERATIONS.md) was found by the new repo-wide guardtest on its first run, not by the prompt's list.
Follow-up shipped in the same session: the audit that
refactor_witness_map_missing_autonerves.mdasked for went out as#269 / PR #271. It found that Nerves was not a one-off — PyAutoCTI and five
organs had no witness row at all, and PyAutoReduce carried the same split-key
defect.
Carried forward, not fixed: the redirect question in the PR body is still
open. Whether the nightly gate was counting PyAutoNerves activity between the
rename and this PR could not be answered from a web-github session (the proxy
403s
api.github.comfor both names,ghis not installed). The gate no longerdepends on the answer; settling the history needs one authenticated
gh api repos/PyAutoLabs/PyAutoConf/commitscall.Heart was never consulted on this task —
pyauto-heartis unreachable here — soleg 4 of the ship gate did not run. Recorded that way in
PyAutoMind/autonomy_log.mdrather than logged as a clean four-leg gate.Generated by Claude Code