Repository navigation
fix: retire PyAutoConf rename leftovers in Brain functional surfaces - #268
Merged
Merged
Conversation
The PyAutoConf -> PyAutoNerves rename (package autoconf -> autonerves) was completed in the reader-facing docs but left eight sites naming the old repo/package. Four were live defects, all of them silent — nothing failed, the surfaces just stopped seeing the Nerves repo. config/policy.yaml is the functional core: - repo_aliases split one repo across two dead keys. `@PyAutoConf` normalised to `autoconf` and `@PyAutoNerves` to `pyautonerves`; neither is in the body map, so neither resolved. Make `autonerves` the single canonical key and alias the other three spellings onto it, the shape the `pyautobuild: pyautohands` entry already set. That also collapses the three target_default_wiki rows that existed only to paper over the split. - test_witness pointed at PyAutoConf/test_autoconf, reachable only through the stale alias. `pyauto-brain refactor` therefore reported `[unwitnessed: pyautonerves]` and advised "strengthen tests first" for a repo with a 157-test suite. Now PyAutoNerves/test_autonerves, verified live. - release.relevant_repos listed PyAutoConf, and nightly.sh fetches each name verbatim. Whether a rename redirect carried that call is unverified from this session; naming PyAutoNerves removes the dependency rather than trusting it. - hygiene.sh timed `import autoconf`, whose non-zero rc is recorded as `autoconf:n/a` and skipped, so Nerves import timing went unmeasured. The remaining four sites are comments and prose. Two were stale beyond the name: ensure_workspace_labels.sh and repo_cleanup/reference.md both mapped repos to `rhayes777`/`Jammy2211` owners that the migration retired — the labels script's own live list already disagreed with its header. Both now defer to the body map's `github:` field instead of hardcoding an owner. Tests pin every seam: all four spellings normalise to one known key; the witness map resolves under each; a PyAutoNerves commit qualifies a night (the prompt's acceptance criterion, offline); and every release-relevant repo must exist in the body map — the drift guard whose absence let this survive. A repo-wide guard enforces the prompt's grep acceptance, allowlisting only the sites deliberately about the rename and failing if an allowlist entry goes dead. It found the eighth site (skills/OPERATIONS.md) during the run. Closes #267 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MPhEXMoPYa7H1sNHWR2GNW
This was referenced Aug 24, 2026
github-actions
Bot
deleted the
claude/pyautoconf-rename-leftovers-38ia48
branch
August 25, 2026 14:09
Jammy2211
pushed a commit
that referenced
this pull request
Aug 27, 2026
CI's tenant firewall caught what the tests could not: the new leg-4 comments and the test's section header named a concrete satellite repo, in .py files. The framework organs must stay adoptable as a config-diff fork, so an instance fact outside the declared config surfaces is drift — and growing FIREWALL_ALLOWLIST instead would mean one more file an adopting fork has to rewrite, for a name that carries none of the finding. The shape is the evidence, not the tenant: "a workspace-test repo, issue #266 / PR #268" says everything the comment needed. The dates, issue and PR numbers are not instance facts and stay. AGENTS.md keeps the concrete names deliberately — skills prose and AGENTS.md are out of the firewall's scope by design (production prompts, never genericised), and the runnable `--repo` example there is more useful naming a real repo. The test file was already violating its own header, which promises every fixture is fictional and that nothing in it names a real prompt or record. tenant firewall: OK. 584 pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vd6ptkoJsjAJMosPWsCDZz
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
The PyAutoConf → PyAutoNerves rename (package
autoconf→autonerves) wascompleted in the reader-facing docs but left eight sites naming the old
repo/package. Four were live defects, all silent — nothing failed, the surfaces
just stopped seeing the Nerves repo.
The root cause sat under the symptom the prompt reported.
repo_aliasessplitone repo across two dead keys:
@PyAutoConfnormalised toautoconfand@PyAutoNervestopyautonerves, and neither is in the body map, so neitherresolved.
autonervesis now the single canonical key with the other threespellings aliased onto it — the shape the existing
pyautobuild: pyautohandsentry already set. That also collapses the three
target_default_wikirows thatexisted only to paper over the split.
The other three live defects:
test_witnesspointed atPyAutoConf/test_autoconf, reachable onlythrough the stale alias.
pyauto-brain refactortherefore reported[unwitnessed: pyautonerves]and advised "strengthen tests first" for a repothat has a real suite.
release.relevant_reposlistedPyAutoConf, andnightly.shfetcheseach name verbatim. Whether a rename redirect carried that call is unverified
(see below); naming
PyAutoNervesremoves the dependency rather than trustingit.
hygiene.shtimedimport autoconf, whose non-zero rc is recorded asautoconf:n/aand skipped — so Nerves import timing went unmeasured.Four comment/prose sites follow. Two were stale beyond the name:
ensure_workspace_labels.shandskills/repo_cleanup/reference.mdboth mappedrepos to
rhayes777/Jammy2211owners the migration retired — the labelsscript's own live list already disagreed with its header. Both now defer to the
body map's
github:field instead of hardcoding an owner.Fixes the headline finding of
PyAutoMind/draft/maintenance/pyautobrain/refactor_witness_map_missing_autonerves.md;that prompt's broader "audit the other organ/library repos" ask is deliberately
not absorbed here and stays a separate task.
API Changes
None. PyAutoBrain is an organ, not a released library, and nothing imports it —
these are internal policy maps and agent prose.
config/policy.yamlis adeclared config surface, so the key changes are noted for any adopting fork:
test_witnessandtarget_default_wikiare keyedautonerves(wasautoconf),and
release.relevant_reposnamesPyAutoNerves. Old spellings keep workingthrough
repo_aliases.Test Plan
python3 -m pytest tests/ -q→ 467 passed (462 baseline + 5 new)python3 PyAutoMind/scripts/repos_sync.py --check→ all 11 checks OK(its tenant-firewall leg caught my own test comments hardcoding the org
name; fixed before commit)
bash -non all four touched shell scriptsrefactor,bug,sizingall behaveLive proof of the headline defect being fixed —
bin/pyauto-brain refactoronthis branch:
No
[unwitnessed: pyautonerves].New test coverage
tests/test_policy_seams.py— all four spellings normalise to one key that isin
KNOWN_REPOS; the witness map resolves under each; and every name inrelease.relevant_reposmust exist in the body map. That last one is thedrift guard whose absence let this survive the rename.
tests/test_activity_gate.py— fixture moved off the old name, plus a caseasserting a
PyAutoNervescommit qualifies a night (the prompt's acceptancecriterion, offline and deterministic).
tests/test_nerves_rename_complete.py(new) — enforces the prompt's grepacceptance repo-wide, allowlisting only the sites deliberately about the
rename, and failing if an allowlist entry goes dead so it can't rot into a
blanket waiver. It found the eighth site (
skills/OPERATIONS.md) on itsfirst run.
Two things a reviewer should check rather than take on trust
Heart was never consulted.
pyauto-heartis not on PATH in thisweb-github session and PyAutoHeart is not in its repo scope, so
bin/pyauto-brain vitalsreturns not-found. The per-repo suite stood in perthe
WORKFLOW.mdfallback and is green, but no YELLOW was acknowledged andno RED was seen, because nothing was asked.
The commit message says "157-test suite… verified live" — the count is
weaker than that reads. The path
PyAutoNerves/test_autonervesisverified properly: cloned
PyAutoLabs/PyAutoNerves@mainand confirmed thedirectory exists beside the
autonervespackage with 17test_*.pyfiles.The count is cited from
PyAutoMind/complete/2026/08/cli-noise-autonerves-batch.mdand was not re-run here. Nothing in the change depends on it — only the path
is load-bearing — but the commit states the number without that qualifier and
pushed history isn't rewritten in this org, so the correction lives here.
Gate at sign-off
Effective autonomy
supervised(headersupervised,bugcapsupervised).Plan was pre-approved before any edit and is on #267, unmodified since.
Tests PASS (467) · smoke n/a (organism repo, no downstream script surface) ·
review CLEAN with claim dispositions on
#267 ·
Heart NOT EVALUATED (above). Human signed off on PR-open; merge is yours.
No
pending-releaselabel — PyAutoBrain is outside the release chain.Closes #267
🤖 Generated with Claude Code
https://claude.ai/code/session_01MPhEXMoPYa7H1sNHWR2GNW
Generated by Claude Code