Repository navigation
repos_sync: retire the CLAUDE.md → AGENTS.md pointer files (#482) - #483
Merged
Merged
Conversation
Claude Code now loads AGENTS.md natively, and any CLAUDE.md in the cwd or an ancestor makes it ignore every AGENTS.md. The 'CLAUDE.md → AGENTS.md pointers' leg (name kept byte-identical for PyAutoHeart's drift parser) now requires a repo with AGENTS.md to have NO CLAUDE.md. --write's pointer writer becomes remove_claude_md_pointers: it deletes only a content-free pointer (the @AGENTS.md import plus comments, headings and the pointer's own boilerplate) and reports, never deletes, a CLAUDE.md with content. CLAUDE_MD_POINTER is dropped and CLAUDE.md leaves GENERATED_TOP_LEVEL. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QmiavJnNzmKb6EJmgYATfx
The propagation job calls remove_claude_md_pointers only on workflow_dispatch (never on the push trigger, so the deletion wave stays a human act), honours dry_run, and stages only a tracked CLAUDE.md the function removed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QmiavJnNzmKb6EJmgYATfx
…#482) The template no longer writes the retired CLAUDE.md adapter; the CLAUDE.md KEEP rules stay as tolerant leftovers. policy/hpc_ral.md is an instance page (cluster, SSH aliases, user), so it is DROPped ahead of policy/*. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QmiavJnNzmKb6EJmgYATfx
…S.md (#482) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QmiavJnNzmKb6EJmgYATfx
The organ mains keep the retired pointer until the human-dispatched propagation wave, so the inverted leg is unmeetable on PRs and on push. Both drift checks drop it by its exact label with a loud TEMPORARY banner; PyAutoMind's own absence of a CLAUDE.md and the retirement tests are asserted instead. Remove when the CLAUDE.md retirement wave has run (session_hook_propagate dispatch) — tracked on PyAutoMind#482. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QmiavJnNzmKb6EJmgYATfx
PyAutoMind is never a propagation target, so its retired pointer is removed in-repo; Claude Code reads AGENTS.md natively. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QmiavJnNzmKb6EJmgYATfx
Jammy2211
added a commit
that referenced
this pull request
Oct 29, 2026
…ped) close-out /prm close-out 2026-10-29 for autolens_profiling #471, #481, #478, #484, #477, #479, #480, #483 and PyAutoPulse#81 (all merged). Issues #469 and #472–#476 closed. - records: complete/2026/10/likelihood-lifecycle-p2{b-interferometer, c-point-source,d-galaxy-group,e-cluster,f-dataset-datacube,g-weak}.md - re-filed: draft/research/autolens_profiling/likelihood_lifecycle_ p2bc_quiet_rerun_ingest.md and p2{d,e,f,g}_*_runs.md - epics.md + epic ledger phase-2 lines updated; epic stays open - dashboard regenerated Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 #482.
Why
Claude Code ≥ 2.1.277 loads
AGENTS.mdnatively (built-in plugincc-plugin-agents-md, default modeclaude-md-or-agents-md). Measured on 2.1.292 (2026-10-07): in that mode anyCLAUDE.mdin the cwd or an ancestor makes the engine ignore everyAGENTS.md, so the 46 content-freeCLAUDE.md → @AGENTS.mdpointer files (and the unversioned workspace-rootCLAUDE.md) must all be retired together. A fileCLAUDE.mdimports is never loaded twice, so this is hygiene, not a token saving. Codex, Cursor and other agents readAGENTS.mddirectly and never readCLAUDE.md, so nothing changes for them.What
scripts/repos_sync.py: the"CLAUDE.md → AGENTS.md pointers"check leg (name byte-identical, so PyAutoHeart'smanifest_driftparser needs no change) now reports a repo that hasAGENTS.mdand aCLAUDE.md.write_claude_md_pointers→remove_claude_md_pointers: deletes only content-free pointers; aCLAUDE.mdwith real content is reported (KEPT) and never deleted..github/workflows/session_hook_propagate.yml: carries the removal onworkflow_dispatchonly (never on push), honoursdry_run, stages onlygit rm --cached CLAUDE.md..github/workflows/firewall_gate.yml: TEMPORARY skip of the pointer leg (organ mains keep their pointers until the wave runs) plus a replacement step asserting PyAutoMind carries noCLAUDE.mdand running the retirement tests. Remove with the wave's close-out.scripts/spawn.py/docs/pyautobrain/spawn_spec.md: templates no longer generatewiki/example/CLAUDE.md; newpolicy/hpc_ral.mdis DROPped from the public template (names a user, hosts and SSH aliases).policy/hpc_ral.md: the RAL/HPC rules moved verbatim out of the workspace-rootAGENTS.md, which shrinks to a three-line pointer stanza (root files are unversioned; applied by hand after merge).CLAUDE.mdremoved here (the propagation job never targets Mind).test_repos_sync_structure_lint.py; updates intest_session_hook_sync.py,test_repos_sync_standards_block.py,test_spawn_template_contract.py,test_spawn_privacy.py. Mind suite 684 passed;PyAutoHeart/tests/test_manifest_drift.py8 passed.Follow-ups (after merge)
session_hook_propagatewithdry_run: true, review the diff stat, then dispatch for real → removes the 44 reachable pointers.euclid_assistant(session_hook: false, personal namespace): delete itsCLAUDE.mdby hand.spawn_driftflagswiki/example/CLAUDE.mduntil then).CLAUDE.mdpointers sit below repo roots (assistantscripts/andwiki/*, PyAutoMemorywiki/*, workspace_testscripts/). Measured: a pointer below the cwd suppresses nothing and still loads lazily, so they are harmless for root-started sessions, but a session started inside such a folder would lose its ancestors'AGENTS.md. Extend the removal leg to nested pointers (or hand-clean) in a follow-up.AGENTS.md, delete rootCLAUDE.md, re-runbin/install.sh(Brain#492 supplies the corrected model-delegation block).API Changes
None for the published libraries (PyAutoNerves/Fit/Array/Galaxy/Lens are untouched). Internal PyAutoMind tooling only:
scripts/repos_sync.pyrenameswrite_claude_md_pointers→remove_claude_md_pointersand inverts the"CLAUDE.md → AGENTS.md pointers"check leg (leg name unchanged). See full details below.Test Plan
python -m pytest tests/— 684 passed (clean env; worktree branch head 9f39fb2)tests/test_manifest_drift.py— 8 passed (leg name byte-identical, parser unchanged)activate.shenv,tests/test_repos_sync_root_default.py::test_a_root_that_does_not_hold_this_checkout_is_refusedfails — pre-existing env leak (PYAUTO_ROOT), reproduced identically on basec567af45; not touched by this PRCLAUDE.md)session_hook_propagatedry_run: truedispatch, review diff stat, then real dispatchFull API Changes (for automation & release notes)
Removed
scripts/repos_sync.write_claude_md_pointers— replaced byremove_claude_md_pointersPyAutoMind/CLAUDE.mdAdded
scripts/repos_sync.remove_claude_md_pointers— deletes content-freeCLAUDE.mdpointers; reports (KEPT) and never deletes aCLAUDE.mdwith real contentpolicy/hpc_ral.md— RAL HPC rules moved verbatim from the workspace-rootAGENTS.md; DROPped from the spawned public templateChanged Behaviour
repos_sync.py --checkleg"CLAUDE.md → AGENTS.md pointers"now flags a repo that hasAGENTS.mdand aCLAUDE.md(previously flagged a missing pointer)session_hook_propagate.ymlcarries theCLAUDE.mdremoval onworkflow_dispatchonly, honouringdry_runspawn.pyno longer generateswiki/example/CLAUDE.mdMigration
euclid_assistantby hand; workspace root by hand (see Follow-ups)Downstream impact
manifest_drift: no change needed (leg name unchanged; 8 tests pass). Until the wave runs, Heart readiness reportsmanifest drift: CLAUDE.md → AGENTS.md pointers — 45 mismatch(es)(YELLOW) — expected.🤖 Generated with Claude Code
https://claude.ai/code/session_01QmiavJnNzmKb6EJmgYATfx