docs/SCRIPTS.md claimed to document "every script in bin/ and every module in src/pxh/". Measured on this branch by counting ### bin/… and ### src/pxh/… headings against ls:
- bin/: 42 of 103 documented — 61 missing
- src/pxh/: 4 of 31 documented — 27 missing
That is 88 gaps, not the 58 first estimated. The module side is far worse than the script side: the only documented modules are state.py, logging.py, time.py, and voice_loop.py. Every entry that is present names a script that really exists, so the inventory has holes rather than rot.
The gaps are not peripheral. Absent entries include px-mind, px-brain, px-brain-status, px-claude-session, px-blog, px-api-server, px-evolve, and 36 of the 46 tool-* scripts — including tool-wander, tool-brain-reply, and tool-remember. (tool-voice is documented; an earlier revision of this issue said otherwise.)
#215 softened the completeness claim rather than filling the gap, because a document asserting completeness while known-incomplete is exactly the failure mode that PR exists to eliminate. This issue tracks actually closing it.
Proposed
- A structural test in
tests/test_docs.py that fails when a bin/ script or pxh module has no entry — with an explicit, shrinking allowlist of known-undocumented names, so the gap can only get smaller.
- Backfill entries, prioritising the daemons and
tool-* scripts, since tools are the ones an agent is most likely to reach for from a prompt.
Do not merge step 1 without the allowlist — a test that fails on 88 pre-existing gaps is a test nobody will keep.
Note the counts in docs/SCRIPTS.md are hand-maintained and were wrong on first writing (45/11 rather than 42/4). Step 1 makes them mechanical, which is the real fix: a hand-counted self-audit is the same class of defect as #214.
docs/SCRIPTS.mdclaimed to document "every script inbin/and every module insrc/pxh/". Measured on this branch by counting### bin/…and### src/pxh/…headings againstls:That is 88 gaps, not the 58 first estimated. The module side is far worse than the script side: the only documented modules are
state.py,logging.py,time.py, andvoice_loop.py. Every entry that is present names a script that really exists, so the inventory has holes rather than rot.The gaps are not peripheral. Absent entries include
px-mind,px-brain,px-brain-status,px-claude-session,px-blog,px-api-server,px-evolve, and 36 of the 46tool-*scripts — includingtool-wander,tool-brain-reply, andtool-remember. (tool-voiceis documented; an earlier revision of this issue said otherwise.)#215 softened the completeness claim rather than filling the gap, because a document asserting completeness while known-incomplete is exactly the failure mode that PR exists to eliminate. This issue tracks actually closing it.
Proposed
tests/test_docs.pythat fails when abin/script orpxhmodule has no entry — with an explicit, shrinking allowlist of known-undocumented names, so the gap can only get smaller.tool-*scripts, since tools are the ones an agent is most likely to reach for from a prompt.Do not merge step 1 without the allowlist — a test that fails on 88 pre-existing gaps is a test nobody will keep.
Note the counts in
docs/SCRIPTS.mdare hand-maintained and were wrong on first writing (45/11 rather than 42/4). Step 1 makes them mechanical, which is the real fix: a hand-counted self-audit is the same class of defect as #214.