infra: CLAUDE.md/AGENTS.md standardization tooling + drift checks (Mind) - #62
Merged
Merged
Conversation
…(Mind) Spec 1 (claude_md_standardization) + spec 2 client, agent-agnostic layer: - repos_sync.py: add check_claude_md_pointers + the canonical content-free CLAUDE.md pointer, wire a --write sweep (write_claude_md_pointers) and the --check drift check, and report checked-out repos that have no AGENTS.md (reported for a human, never auto-stubbed). Idempotent; skips absent repos so it runs in a partial/web checkout. - AGENTS.md: add the generated command-surface block (markers filled by PyAutoBrain/bin/install.sh --write-agents-surface) so Mind carries the verb index it previously lacked. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KUGujq6jAgU3CExnLkkELe
…NTS.md The organism-map block is duplicated into every organ's AGENTS.md by design (a web/single-repo session loads only that repo's committed files, so the map must live there, not behind a cross-repo link). That duplication was written by --write but never verified by --check, so a hand-edit — or a repos.yaml change without a --write — could let the copies drift silently. Add check_map_blocks (+ an extract_block helper) so --check verifies each organ's map block still equals system_map(), mirroring how the command surface is guarded by install.sh --check-agents-surface. Reported as drift; fails CI. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KUGujq6jAgU3CExnLkkELe
…from Mind PyAutoBrain is guaranteed loaded in every session (web, mobile/code, and local), so its auto-loaded AGENTS.md already carries the organism-map and command-surface blocks into every session's context. Duplicating them into Mind's AGENTS.md added no availability and a second copy to keep in sync, so remove both from Mind; the canonical single home is PyAutoBrain/AGENTS.md. Kept: Mind's own CLAUDE.md → @AGENTS.md pointer, and the generators + drift checks (they now guard Brain's single copy against repos.yaml and the bin/pyauto-brain registry; the marker opt-in means they simply target Brain). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KUGujq6jAgU3CExnLkkELe
…s loaded) The map block is no longer duplicated across organs; it lives in PyAutoBrain, which is loaded in every session. Update check_map_blocks's rationale comment to match — the check still guards any present copy against system_map()/repos.yaml. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KUGujq6jAgU3CExnLkkELe
…_assistant to body map - repos.yaml: add autofit_assistant (assistant) — it existed in the org but was missing from the body map, so the drift checks didn't cover it (its siblings autolens_assistant/euclid_assistant were present). Already pointer-compliant. - z_features epic + the two maintenance specs: mark complete and record the outcome — the Brain-only design (shared blocks live once in PyAutoBrain, which is loaded in every session; not duplicated per-organ) and the compliance sweep (organs done: Heart#67/Build#147/Memory#21 merged; 17 non-organ repos already compliant; 3 AGENTS-less reported; 3 Jammy2211 unreachable). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KUGujq6jAgU3CExnLkkELe
…my2211 repos The standardization epic couldn't reach Jammy2211/autofit_workspace_developer, Jammy2211/euclid_assistant, Jammy2211/admin_jammy (cross-tier add_repo blocked — session was pyautolabs-owned). File the reachability tail as a maintenance prompt so it isn't lost; it needs a session rooted on a Jammy2211 repo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KUGujq6jAgU3CExnLkkELe
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.
The PyAutoMind half of the ecosystem AGENTS.md/CLAUDE.md/command-surface standardization (epic:
z_features/agents_md_standardization.md).What changed
scripts/repos_sync.pycheck_claude_md_pointers+ the canonical content-freeCLAUDE.mdpointer, a--writesweep (write_claude_md_pointers), and a report of checked-out repos with noAGENTS.md(reported for a human, never auto-stubbed). Idempotent; skips absent repos so it runs in a partial/web checkout.check_map_blocks(+ anextract_blockhelper): the organism-map block was generated by--writebut never verified by--check, so a hand-edit or a stale copy could drift silently.--checknow recomputessystem_map()and fails on divergence — mirroring how the command surface is guarded byinstall.sh --check-agents-surface.AGENTS.md— removed the organism-map and command-surface blocks. They are not duplicated per-organ: PyAutoBrain is loaded in every session, so its auto-loadedAGENTS.mdcarries both shared blocks into context everywhere (one canonical copy). Mind keeps its ownCLAUDE.md → @AGENTS.mdpointer.repos.yaml— addedautofit_assistant(it existed in the org but was absent from the body map; its assistant siblings were present), so the drift checks now cover it.z_features/epic + the twomaintenance/specs — marked complete with the outcome recorded (Brain-only design + the full compliance sweep).Design note
The epic originally assumed each organ embeds its own shared blocks (single-repo web sessions load only the open repo). That was corrected mid-flight: PyAutoBrain is guaranteed loaded in every web/mobile session, so the shared blocks live once in Brain and reach everywhere — no duplication, no cross-organ drift surface. See the companion PyAutoBrain PR.
🤖 Generated with Claude Code
Generated by Claude Code