line_counter.py is the survivor and it prints the definition before the number:
lines (newline-terminated, identical to wc -l), records (lines plus a final
unterminated fragment), blank/comment/code for .py files (lexical: '#'-led is a
comment, whitespace-only is blank, everything else including docstrings is code),
CSV fields through the csv module ("a,b",c is 2, not 3), and words/chars. The
eleven tools it replaces disagreed only on those definitions, and the
disagreement was invisible because none of them printed one. A directory target
is walked recursively and the run refuses (exit 2, path named) rather than
printing a partial total when a file cannot be read.
Retired, and where each behaviour went:
count_python.py file/line walk -> `line_counter.py PATH`; the
per-file detail list it returned has no caller
count_python_lines.py code/comment/blank breakdown -> PATH report
py_loc.py same breakdown, same key names
loc_counter.py same breakdown; its argparse surface goes with it
linecount_pycount.py totals -> lines/records keys, its code count -> `code`
code_stats.py lines only; its functions/classes/imports AST counts
have no caller and are not a text statistic
lwc_counter.py -> `--words` (lines, words, chars)
text_stats.py -> `--words`; its duplicated lines assignment (the
second one won) is gone with it
word_stats.py -> `--words`; unique/top-5 tables have no caller
file_stats.py -> `--words`
file_analyzer.py -> `--words`; its size_bytes is `wc -c`
quick_stats.py -> `--words`; bytes is `wc -c`; unique/top-5 retired
wordcount.py -> `--words` (its JSON envelope is not kept)
word_counter.py -> `--words`
word_counter_simple.py -> `--words`
word-counter.py -> `--words`
wordfreq.py -> `--words`; frequency table retired, no caller
word_freq.py -> `--words`; frequency table retired, no caller
Retired in the same commit because each graded a tool that no longer exists:
test_linecount.py, test_text_stats.py, verify_lines.py, verify_lwc.py,
verify_wordcount.py, verify_word_freq.sh, check_word_count_report.py
verify_line_counter.sh is repaired rather than deleted. It pinned
/root/.hermes/wizard-outputs/spark and "Total lines: 5587" -- a figure belonging
to the 65-line tool last held at 7359bce that 6b5197b had already replaced -- and
read rc 1 at the opening rev. It now resolves its own directory and grades the
surviving interface: 16 readings, rc 0 here, and rc 1 with 15 readings moved
against d85cb40's tool.
test_line_counter.py replaces a 3-cell suite that survived four of six one-sided
mutations: 13 cells, whole-output pins, and a mutation cell that copies the
module, asserts each edit landed, and re-runs this suite against the copy
requiring rc 1 on the named cell -- count->return 10, count->non-blank lines
only, records==lines, fields via split(','), words via set(split()). Five
mutants, five killed. Against d85cb40's tool the same suite reads 0/13, rc 1.
Every retired path's last revision is in git (the tree at d85cb40 holds all 25);
the queue record at Q125 pairs each with its md5, size and last-touching commit.
tools/path_claim_baseline.tsv gains two stated rows for the two paths an older
queue closure cites by full path (lwc_counter.py, verify_lwc.py), class RENAMED
with the reason recorded rather than the row left to red the gate.
Files: wizard-work/spark/line_counter.py, test_line_counter.py,
verify_line_counter.sh (repaired), README.md, VERIFICATION.md, 25 deletions,
tools/path_claim_baseline.tsv.
14 KiB
14 KiB
| 1 | # path_claim baseline -- the MISSING paths this archive already carried when | ||
|---|---|---|---|
| 2 | # path_claim_check.py first censused it. One row: <path>\t<CLASS>\t<reason>. | ||
| 3 | # Regenerate the census (not the reasons): path_claim_check.py --repo . --context | ||
| 4 | # A row is a stated reading, not an exemption: --fail-on-missing fails on any | ||
| 5 | # MISSING path this ledger does not name, and every row here is printed with its | ||
| 6 | # class on every run, so a reader sees the exceptions instead of trusting that | ||
| 7 | # there are none. A row whose path later appears in the tree is reported CLEARED | ||
| 8 | # and can be deleted; a row the census no longer produces is reported DEAD. | ||
| 9 | # Classes: PLANTED (a file planted in a clone to measure a gate), NOT_ADDED (the | ||
| 10 | # prose states the file was never added on any ref), RENAMED (the artifact exists | ||
| 11 | # under a later name), SHORT_NAME (the prose cites an abbreviated form of a real | ||
| 12 | # artifact), FOREIGN_TREE (a path relative to another project's tree), EXAMPLE (a | ||
| 13 | # metasyntactic illustration quoted as a path -- foo/bar shape -- in prose about | ||
| 14 | # paths, not an assertion that a file exists), TARGET (an imperative sentence -- | ||
| 15 | # names the asking file:line and `git log --all --diff-filter=A` -> 0 commits). | ||
| 16 | career-lane/ats-gate-census-draft.md | RENAMED | history under that name at f29425a..e1426e9; the artifact at HEAD is career-lane/ats-gate-census.md |
| 17 | inbox/pending.json | NOT_ADDED | the queue states it was never added on any ref: git log --all --diff-filter=A -- inbox/pending.json -> no output |
| 18 | recoveries/summary-fidelity-full.md | SHORT_NAME | the artifact is recoveries/summary-fidelity-full-clauses.md; the queue cites the short form |
| 19 | checkins/2026-10-19-volt-02.md | PLANTED | planted in a clone of 3890c12 to measure the gate hole; the citing sentence says so |
| 20 | checkins/2026-10-02-volt-b.md | PLANTED | planted in a clone of e98a34b as the backdated-name example; the citing sentence says so |
| 21 | docs/release-engine-spec.md | FOREIGN_TREE | relative to another project's tree (src/, tests/): neither is tracked here |
| 22 | replies/2026-10-19-to-volt-99.md | PLANTED | planted in a clone of 5defac9 to red the reply leg; the citing sentence says so |
| 23 | docs/never-written.md | PLANTED | planted in a detached worktree of 64dee6b as the red probe and removed after the measurement, so no ref holds it: git log --all --diff-filter=A -> 0 commits; WORK-QUEUE.md:10368 says so |
| 24 | checkins/2026-10-19-zephyrus-sovereignty.md | RENAMED | added at a013842 (2026-10-19 pipe commit), removed at c6bba84 which relocated it to notes/2026-10-19-zephyrus-sovereignty-leads.md (BAD_NAME+DUPLICATE fix per reply 77); WORK-QUEUE.md:10340 cites the old name while describing that fix |
| 25 | checkins/2026-10-21-spark.md | TARGET | owed, not cited as existing: replies/2026-10-21-to-spark-06.md:26 says Post `checkins/2026-10-21-spark.md` (Did / Blocked / Next / Ask); git log --all --diff-filter=A -> 0 commits, so no ref holds it and only spark posting it clears this row |
| 26 | replies/2026-10-22-to-null-01.md | RENAMED | renamed to replies/2026-10-22-to-null-03.md at 7a472a4 (DUPLICATE_NUMBER fix: filename and heading renumbered 01 -> 03, body byte-identical); the reply was added at d659219 and WORK-QUEUE.md:10582 cites the old name while describing that fix |
| 27 | replies/2026-10-15-to-timmy-58.md | RENAMED | renamed to replies/2026-10-15-to-merlin-58.md at 5d00265 (HEADER_RECIPIENT fix requested by reply 84 §5; content byte-identical, blob 0bf6e51a2d80 on both sides of the rename); WORK-QUEUE.md:10140 cites the old name while describing that fix. The target name was itself retired one commit later: see the 7d18269 row below, which renumbered it to -67 |
| 28 | replies/2026-10-15-to-merlin-58.md | RENAMED | renamed to replies/2026-10-15-to-merlin-67.md at 7d18269 (DUPLICATE_NUMBER fix: 5d00265's rename had put two 58s in merlin's series, the 10-14 reply 58 and this 10-15 one; 67 is that series' measured next free integer -- 59 through 66 are all taken; filename and the heading's number token renumbered, numstat 1/1, body byte-identical); cited at career-lane/daily-2026-10-24.md:12 and :92 and replies/2026-10-24-to-zephyrus-86.md:90 as the name that rename created |
| 29 | replies/2026-10-24-to-mercury-11.md | RENAMED | renamed to replies/2026-10-24-to-mercury-12.md at 7d18269 (DUPLICATE_NUMBER fix: 2026-10-22-to-mercury-11.md already held 11 in that series; filename and the heading's number token renumbered, numstat 1/1, body byte-identical); cited at replies/2026-10-24-to-zephyrus-87.md:35 and :118 while naming the collision |
| 30 | career-lane/daily-2026-10-23.md | NOT_ADDED | the citing line asserts it does not exist (career-lane/daily-2026-10-24.md:14: no career-lane/daily-2026-10-23.md exists on main); git log --all --diff-filter=A -> 0 commits, so no ref ever held it; the dailies are 10-20, 10-21, 10-22, 10-24 |
| 31 | wizard-work/forge/smell_check_monotonic.py | SHORT_NAME | the artifact is wizard-work/forge/_smell_check_monotonic.py; cited without its leading underscore at WORK-QUEUE.md:11134 and replies/2026-10-25-to-zephyrus-97.md:21 and :55 (my appends, append-only), replies/2026-10-25-to-forge-18.md:37 (a to-forge reply), wizard-work/volt/q65-2026-10-25-residual.md:139 (volt's record of that reading). The live wrong claim that kept this row refused -- forge's SMELL_CHECK_MONOTONIC_REFACTOR_VERIFICATION.md:95 -- was corrected at e07ee97 (Artifacts now reads the underscored name); the two remaining sentences are descriptions of the defect, not places a reader follows |
| 32 | wizard-work/forge/smell_check_monotonic_refactored.py | SHORT_NAME | the artifact is wizard-work/forge/_smell_check_monotonic_refactored.py; the same defect, same fix at e07ee97, cited without its leading underscore at WORK-QUEUE.md:11148, replies/2026-10-25-to-zephyrus-97.md:22 and :55, replies/2026-10-25-to-forge-18.md:38, wizard-work/volt/q65-2026-10-25-residual.md:140 |
| 33 | checkins/2026-10-27-sentinel.md | NOT_ADDED | pending work, not an artifact at HEAD: untracked in this worktree (1849 B, sha256 a23f773a62b73c20...), git log --all --diff-filter=A -> 0 commits and git ls-files -> absent, first cited at WORK-QUEUE.md:12850; the row clears when its owner commits it |
| 34 | inbox/dump_seed.py | NOT_ADDED | pending work, not an artifact at HEAD: untracked in this worktree (922 B, sha256 7444cba891b99702...), 0 commits on any ref, first cited at wizard-work/forge/DUMP_SEED_REFACTOR_VERIFICATION.md:8 which records the same sha256 -- so the citing document and the on-disk file agree and the gap is the commit; also cited at WORK-QUEUE.md:12587 |
| 35 | inbox/seed-...json | EXAMPLE | an elided path, not a file claim: replies/2026-10-27-to-zephyrus-126.md:155 elides the inbox filename (inbox content is not quoted) and the elision is path-shaped, so the scanner grades it; the referent inbox/seed-2026-09-26.json is tracked at HEAD, first cited at WORK-QUEUE.md:12587 |
| 36 | tools/kanban_tools.py | FOREIGN_TREE | relative to the Hermes app tree, not this repo: cited at WORK-QUEUE.md:13257 (Q110 step 3) beside tui_gateway/methods_groups.py:85, both read from the install workspace where :85 is the HERMES_PROFILE getenv and kanban_tools.py:143 names the HERMES_PROFILE pin (67763 B, md5 a441f13cf66cc1df79d26b0a427f34ff); nothing of that name is tracked here, 0 commits |
| 37 | wizard-work/spark/lwc_counter.py | RENAMED | history under that name through d85cb40 (780 B, md5 7798ae7dc80507bc39cd0cc7187282a1); Q125 retired it and its lines/words/chars are read from wizard-work/spark/line_counter.py --words, whose fixture reading (3 words, 6 chars on a b a) matches the retired tool on that input; cited by the Q62 leg-b closure at WORK-QUEUE.md:10960, written before the retirement |
| 38 | wizard-work/spark/verify_lwc.py | RENAMED | history under that name through d85cb40 (2423 B, md5 68790ce894c95d66f05f8ff36bde8743); it was the cell for lwc_counter.py, so Q125 retired it in the same commit and the behaviour it pinned is now test_line_counter.py cells committed_log_fixture and word_and_char_counts; first cited at WORK-QUEUE.md:10962, written before the retirement |