R77.D audit — CLAUDE.md §9.2 doc-count drift
Scope
CLAUDE.md §9.2 (“Twelve top-level directories — zoned manifest”) lists a .md count per top-level directory. Those counts were last reconciled in R75 Wave H (2026-04-18 morning). R75 Wave I + R76 + R77 Waves 1 landed additional .md files (R77 audit/contract/packet/verification artefacts, R76 seal audits, R76 spawn manifests, 12 new R77 docs and ~80 frontmatter edits). The numbers in §9.2 have drifted. R77.D reconciles them against the post-R77-Wave-1 main (e2305277).
Environment
- Worktree:
.worktrees/claude/r77-d-claude-counts - Branch:
feature/r77-d-claude-counts - Base:
origin/main@e2305277(latest Wave 1 merge — R77.A #169)
Measurement method
Every count below came from the same command, one directory at a time:
find <dir> -name "*.md" -type f | wc -l
Run from the worktree root. find walks the whole subtree including dotfiles, which matches the original §9.2 count contract (all committed + untracked .md files on disk, excluding binary and non-.md content). No filtering applied.
Current §9.2 values vs measured reality
| Row | Current §9.2 value | Measured (e2305277) | Delta | Action |
|---|---|---|---|---|
.agents/ |
257 | 243 | −14 | Edit |
.claude/ |
29 | 30 | +1 | Edit |
.github/ |
6 | 6 | 0 | no-op |
.venv-tools/ |
53 | 0 (dir absent) | −53 | Edit |
.vscode/ |
“2 tracked” | 1 tracked (README.md); mcp-settings.example.json is not .md |
−1 | Edit prose (distinguish .md count from “tracked files”) |
.worktrees/ |
0 | 0 | 0 | no-op |
assets/ |
1 | 1 | 0 | no-op |
data/ |
6 | 2 | −4 | Edit |
docs/ |
~242 | 331 | +89 | Edit (drop tilde) |
projects/ |
1 | 1 | 0 | no-op |
temp/ |
“1 + scratch” | 1 + scratch | 0 | no-op |
Total rows changing: 6 of 11 visible rows plus one cell where prose needs a precision fix (.vscode/).
Per-row breakdowns
.agents/ = 243
.agents/README.md 1
.agents/skills/ 29
.agents/spawns/ 205
.agents/swarms/ 8
.agents/archive/ (absent)
────
243
The CLAUDE.md §9.2 text currently says .agents/ = 257; the count must have been based on a tree that still contained .agents/archive/ plus an older snapshot of spawns/. Memory fragment reference_skills_inventory.md mentions “.agents/archive/ 5” — that subdir is no longer in the repo. The 257 → 243 delta matches that pruning plus R76/R77 churn in spawns/.
Note: the §9.2 prose says “23 canonical colibri-* skills in skills/”. Current skills/ contains 29 .md. The skills count vs SKILL.md count are not identical (some skills ship multi-file packages with references/). The “23” number is a separate claim in the prose, not the .md count — task scope restricts us to the number cell only, so leave the prose alone. Flagging for possible future pass.
.claude/ = 30
.claude/README.md 1
.claude/skills/ 29
────
30
Up by 1 from the stale 29. Likely cause: R77 Wave 1 mirror-resync PR (#153 equivalent in R76 lineage) bringing .claude/skills/ into alignment with .agents/skills/.
.venv-tools/ = 0 (absent)
$ ls -la .venv-tools
ls: cannot access '.venv-tools': No such file or directory
The Python package residue directory mentioned in §9.2 (VENDOR zone, 53 .md) is not present in the current working tree. Whether that is an intentional cleanup (sometime in R74–R77) or a gitignored state that never includes the dir is undetermined from this task. The zoned manifest’s ground-truth rule is “.md count on disk right now” → 0. If the directory returns later, the number will reappear.
.vscode/ — current “2 tracked” vs reality
The .vscode/ row currently says 2 tracked in the .md cell, but that number is counting README.md + mcp-settings.example.json. The latter is .json, not .md, so it is out-of-scope for a column labeled .md. The tracked .md count is exactly 1. The prose in the Role column remains accurate (it mentions both files).
Options:
- Change
2 tracked→1 tracked (+1 .json)— preserves the “two files are tracked” truth. - Change
2 tracked→1— strict.md-only.
Chose option 1 for informational fidelity with a single-character footprint. See packet.
data/ = 2
data/README.md 1
data/tool-contracts/README.md 1
────
2
The §9.2 current 6 is stale. Sub-task counters in data/tool-contracts/ or similar may have changed between R74 and R77. Measured reality is 2.
docs/ = 331
Up from ~242 (R75 Wave H baseline). Increments since: P0.5.1/P0.5.2 Wave I chain (8 docs), R76 Phase-A/B chain (~15 docs), R77 Waves 1 chain (~12 docs including audits, contracts, packets, verifications for R77.A/B/C/F1/F2), plus various reconcile docs. The ~ tilde is no longer warranted — we have an exact count at a known SHA.
What this audit does NOT touch
Per task scope and CLAUDE.md §9.2 convention:
- Zone labels (CANON / HERITAGE / MIRROR / SCRATCH / VENDOR) — structural, not count-driven.
- Role column prose — describes what the directory contains, not how many
.mdfiles it has. - Edit rule column — policy, not numeric.
- §9.2 “Note on
.planning/“ paragraph — unchanged. - §9.1 Phase 0 code targets table — R77 touches no
src/code; the table is untouched. - §9.3 Root-level files — R77 did not add root files.
Risks / surprises
.venv-tools/absent: the zoned manifest has a row for it. Deleting the row is out-of-scope for a count-reconcile (that is a structural edit). Setting the count to0honors the measurement-only contract..vscode/“2 tracked” is a legacy idiom — dropping the bespoke wording to strict numeric would erase information. Packet preserves it in a minimal form.- Memory index (
MEMORY.md) also carries doc counts (data/6 ·docs/~242 ·.claude/29 ·.agents/257 — matches the stale CLAUDE.md). That is user memory, not repo canon, and is explicitly out of scope for an executor task touching the repo. Flagging for a PM-directed memory refresh if desired — not included here. - The prose inside the
.agents/Role cell says “23 canonicalcolibri-*skills inskills/”. That number is about canonical skills, not.mdfiles, so it is unchanged. It is also potentially stale (29.mdinskills/, many skills carry multiple files). Out of scope.
Conclusion
Six cells require numeric edits; one requires a one-word precision tweak. Zero structural or prose edits. Zero src/ touches. Footer timestamp block gains a third entry for R77 Wave 2 close.