What is wrong
CLAUDE.md's "Working in this repo" section states:
Submodules: macros/ is the only git submodule (see .gitmodules).
There are two. .gitmodules currently reads:
[submodule "macros"]
path = macros
url = https://github.com/d-morrison/macros
[submodule ".ai-config"]
path = .ai-config
url = https://github.com/Morrison-Lab/ai-config
Confirmed independently by git submodule status, which lists both pins:
-28ca42082f30f9aba5f69f74070f270ee09b2dc8 .ai-config
-8ce5d0cfc70c4d62210ae54043d7437862904180 macros
The repository layout section has the same gap one level up --- it lists
macros/ as "a git submodule for shortcode/macro definitions" and does not
mention .ai-config at all.
Why it matters
CLAUDE.md is auto-loaded into every session working this repo, so the claim
is read as current fact by every agent that touches it, and it is wrong in the
direction that causes silent damage: a session that believes there is one
submodule will not think to init, check, or preserve the other.
.ai-config is not incidental. It is load-bearing in three places:
chapters/pr-workflow-with-agents.qmd is built from six
{{< include ../.ai-config/shared/workflow/*.md >}} directives --- the
chapter's own content is three lines of intro plus six headings, and it is in
the website sidebar (_quarto-website.yml:47). Removing or failing to check
out the submodule hard-fails that chapter's render.
.github/workflows/bump-ai-config.yml exists solely to auto-bump the pin.
.github/workflows/claude-code-review.yml:56 already carries the correct
count in a comment ("This repo vendors two submodules (macros, .ai-config)"),
so the repository contradicts itself between two files.
Suggested fix
Update both spots in CLAUDE.md:
- "Working in this repo" --- name both submodules rather than asserting a
count, so a third one cannot silently falsify the sentence again. Per
avoid-hardcoding-external-data,
prefer pointing at .gitmodules over restating an enumeration of it.
- "Repository layout" --- add a
.ai-config/ entry noting it supplies the
pr-workflow-with-agents.qmd includes.
Worth stating in the same edit that git submodule update --init --recursive
is required for that chapter to render, since the current text mentions the
command but attaches it only to macros/.
Provenance
Noticed 2026-08-17 while scoping a request to remove the .ai-config
submodule. The request was withdrawn, so the submodule stays and this doc
defect stands on its own. Filed rather than folded in, per
dont-incur-technical-debt's
authorship-not-adjacency bound --- the stale line predates this session and no
diff of mine touches it.
What is wrong
CLAUDE.md's "Working in this repo" section states:There are two.
.gitmodulescurrently reads:Confirmed independently by
git submodule status, which lists both pins:The repository layout section has the same gap one level up --- it lists
macros/as "a git submodule for shortcode/macro definitions" and does notmention
.ai-configat all.Why it matters
CLAUDE.mdis auto-loaded into every session working this repo, so the claimis read as current fact by every agent that touches it, and it is wrong in the
direction that causes silent damage: a session that believes there is one
submodule will not think to init, check, or preserve the other.
.ai-configis not incidental. It is load-bearing in three places:chapters/pr-workflow-with-agents.qmdis built from six{{< include ../.ai-config/shared/workflow/*.md >}}directives --- thechapter's own content is three lines of intro plus six headings, and it is in
the website sidebar (
_quarto-website.yml:47). Removing or failing to checkout the submodule hard-fails that chapter's render.
.github/workflows/bump-ai-config.ymlexists solely to auto-bump the pin..github/workflows/claude-code-review.yml:56already carries the correctcount in a comment ("This repo vendors two submodules (macros, .ai-config)"),
so the repository contradicts itself between two files.
Suggested fix
Update both spots in
CLAUDE.md:count, so a third one cannot silently falsify the sentence again. Per
avoid-hardcoding-external-data,prefer pointing at
.gitmodulesover restating an enumeration of it..ai-config/entry noting it supplies thepr-workflow-with-agents.qmdincludes.Worth stating in the same edit that
git submodule update --init --recursiveis required for that chapter to render, since the current text mentions the
command but attaches it only to
macros/.Provenance
Noticed 2026-08-17 while scoping a request to remove the
.ai-configsubmodule. The request was withdrawn, so the submodule stays and this doc
defect stands on its own. Filed rather than folded in, per
dont-incur-technical-debt'sauthorship-not-adjacency bound --- the stale line predates this session and no
diff of mine touches it.