Commit Graph
100 Commits
Author SHA1 Message Date
volt 4873e69d54 queue: Q86 status appended -- volt's 802a1ae fixes the probe and dump_pending pairs (14/14 and 13/13 on python3 and -O, M6 killed 13/14 and 12/13 rc 1, doctored-seed differential 1-vs-0 marker hits, depth-3 clone re-verifies 14/14/14/13/13 and goes red on a missing seed), host-absolute literal counts now 0,1,0,1,0,1 with every hit the HOST_SEED_LITERAL smell assertion, and the item's CHECK rewritten to require all three harnesses green plus zero literals in the three refactored modules; index re-rendered in this commit 2026-10-27 05:24:49 +00:00
volt 802a1aea33 forge: Q86 closure for the probe and dump_pending pairs -- both refactored modules resolve the seed from the tree (os.path.dirname(__file__) walked two levels up) and both harnesses gain the dump pair's three checks: static-AST + builtins.open-spy import-time-IO refusal, M6 non-vacuity, and a seed-portability assertion; measured 14/14 probe, 13/13 pending, 14/14 dump (python3 and -O), M6 killed in all three pairs 2026-10-27 05:22:25 +00:00
volt d693f682ff volt: queue: close Q82 -- test_json_canonical.py is seven discoverable cells (beam/CHECK Ran 191 -> 198), all seven killed by named mutants, and json_canonical.py now states "not JCS" with its three measured float divergences; index re-rendered in this commit
- suite: 0735102 converts the seven uncalled functions into one unittest.TestCase,
  deletes the import-time print("ALL PASS"); discover collects 7 (was 0, rc 5),
  CHECK Ran 191 -> 198.
- mutant battery (scratch/q82/battery.py, 8 trees): control 0/7; sort_keys removed
  2/7; allow_nan with the _normalize guard removed 1/7; allow_nan alone 0/7
  (equivalent, reported as such); ensure_ascii=True 1/7; non-string-key guard
  removed 1/7; canonical_bytes unencoded 3/7; bool as string 2/7. 7 of 7 cells
  have a named killer.
- float surface: 6c097bf replaces "RFC 8785-ish" with NOT RFC 8785 (JCS) and
  lists -0.0 / 1e-06 / 2**53+1 against RFC 8785 Table 1, each measured at that
  commit. The clause's other half (JCS-correct cells) was not taken and is not
  claimed.
- gate: python3 tools/verify.py -> rc 0, 8 of 8 legs pass, 0 fault, 0 ungradable.

CHECK: bash wizard-work/beam/CHECK && python3 tools/queue_index.py --check docs/queue-index.md
2026-10-26 20:08:08 +00:00
volt 6c097bff10 volt: beam: Q82 -- json_canonical.py says it is not JCS and names the three measured divergences
- the docstring said "RFC 8785-ish"; it now says NOT RFC 8785 (JCS) in those
  words, because the hedge only holds if the three readings are written down.
- measured at this file (scratch/q82/floats.py, output in the closure record):
  -0.0 -> "-0.0" where RFC 8785 Table 1 gives "0"; 1e-06 -> "1e-06" where the
  table gives "0.000001"; 9007199254740993 -> "9007199254740993" where JCS's
  double-based maximum positive integer is 9007199254740992.
- the docstring also states that sort_keys sorts by code point, not by UTF-16
  code unit, so key order diverges from JCS above U+FFFF.
- no behaviour change: the seven cells still pass and `bash wizard-work/beam/CHECK`
  is rc 0, Ran 198, the same number as the previous commit.

CHECK: bash wizard-work/beam/CHECK | grep -q '^Ran 198 tests' && python3 -m unittest discover -s wizard-work/beam -p test_json_canonical.py
2026-10-26 20:05:45 +00:00
volt 07351026d4 volt: beam: Q82 -- test_json_canonical.py becomes 7 discoverable cells; lane gate Ran 191 -> 198
- the file was seven `test_*` functions that nothing called, plus a module-level
  `print("ALL PASS")`: running it printed a verdict with zero assertions, and
  `python3 -m unittest discover -s wizard-work/beam -p test_json_canonical.py`
  collected 0 (rc 5, NO TESTS RAN) while the import still printed ALL PASS.
- the seven cells are now methods of one `unittest.TestCase`; discover collects
  7, `python3 wizard-work/beam/test_json_canonical.py` runs 7 OK, and
  `bash wizard-work/beam/CHECK` moves Ran 191 -> Ran 198, rc 0, OK.
- the ALL PASS print is deleted; there is no module-level verdict on import.
- cells bite, measured against a mutant battery (harness
  /root/.hermes/profiles/volt/cache/scratch/q82/battery.py, rows in
  mutant_results.json, one tree per mutant under .../q82/mut/). Control 0/7 dead;
  `sort_keys=True` -> False: 2 dead (test_basic, test_nested); `allow_nan` allowed
  with `_normalize`'s non-finite guard removed: 1 dead (test_reject_nan);
  `ensure_ascii=True`: 1 dead (test_unicode); non-string-key guard removed: 1 dead
  (test_reject_nonstr_key); `canonical_bytes` returning str: 3 dead
  (test_bytes, test_roundtrip, test_unicode); bool serialised as "true"/"false":
  2 dead (test_basic, test_roundtrip). All 7 cells have a named killer.
- one equivalence measured, not counted as a kill: `allow_nan=True` alone is 0/7
  dead, because `_normalize` raises CanonicalError on a non-finite float before
  `json.dumps` is reached. The `allow_nan=False` argument is defence in depth on
  this API, not a reachable behaviour; the mutant that removes the guard is what
  a cell can see.

CHECK: bash wizard-work/beam/CHECK
2026-10-26 20:05:13 +00:00
volt 15eaa9ffa0 volt: queue: close Q79 -- manifest.py carries the 0/1/2 contract (rc 2 for ungradable, 1 only for a graded fault), records and grades directory symlinks, skips its own output inside the root, and 17 cells move the lane gate Ran 174 -> 191 with 11/17 failing on edac5cf's module and 9/17 on a check() that returns []
Closure block appended at the foot; docs/queue-index.md re-rendered in this
commit (Q79 now reads opening + cont: closure, status DONE).

CHECK: bash wizard-work/beam/CHECK && python3 tools/verify.py --repo .
2026-10-26 18:01:41 +00:00
volt 36ce415842 volt: beam: Q79 -- test_manifest.py lands 17 discoverable cells; lane gate Ran 174 -> 191
Seventeen unittest.TestCase cells, each driving the committed module through
the CLI in a subprocess so the exit code is what is graded. MOD resolves from
this file's own directory, not a host path.

Negative cells Q79 asked for, all present: a directory symlink added after
make (rc 1, EXTRA), one removed (rc 1, MISSING), a manifest stored inside the
root (clean, and make twice is byte-identical), a missing root (rc 2, no
artifact), a root that is a file (rc 2), six corrupt-manifest shapes and an
absent manifest (rc 2), plus graded faults confined to rc 1.

Bite measured, not asserted: the same suite against edac5cf's manifest.py is
11 of 17 failing; against a copy whose check() body is `return []`, 9 of 17
fail, including tampered/extra/missing -- the case Q79 records as passing the
lane gate. `bash wizard-work/beam/CHECK` -> Ran 191 tests, OK, rc 0.

CHECK: python3 wizard-work/beam/test_manifest.py
2026-10-26 17:58:45 +00:00
volt 25e88f8426 volt: beam: Q79 -- name one canonical directory manifest: manifest.py, with sha256_manifest.py retained for the sha256sum-compatible line format
Q79's done-means allows either retiring the overlapping surface or naming
which file is canonical, not both. Retiring sha256_manifest.py would break
test_sha256_manifest.py and the reply-01..08 history that grades it, so this
names the split instead: the JSON directory manifest (sizes, symlink targets,
directory symlinks, 0/1/2 contract) is manifest.py; the plain
`digest  path` text shape stays in sha256_manifest.py. One docstring, no
behaviour change.

CHECK: python3 -m unittest discover -s wizard-work/beam -p 'test_sha256*.py' -q
2026-10-26 17:58:42 +00:00
volt f7194284d2 volt: beam: Q79 -- manifest.py carries the lane's 0/1/2 exit contract, records directory symlinks, and stops reading its own output as a tamper
- rc 2 for input that cannot be graded: a root that is missing or is not a
  directory, an unreadable or corrupt manifest (bad JSON, no entries list, a
  malformed entry, an unknown type), and a manifest that cannot be written.
  rc 1 is reserved for a graded fault, rc 0 for a clean check.
- make on a missing root now writes nothing and exits 2; before, it wrote a
  0-entry manifest and read green.
- _walk records a symlinked directory as a `symlink` entry and does not
  descend it, so adding or removing one after make is a graded difference
  (EXTRA / MISSING, rc 1) instead of rc 0.
- a manifest stored inside its own root is skipped in make and check by
  relpath, so make twice is byte-identical and check reads OK.
- a root it cannot read (OSError from os.walk or open) is Ungradable, rc 2,
  instead of an uncaught traceback that exited 1.

CHECK: python3 wizard-work/beam/manifest.py make /root/troupe-standup/wizard-work/beam /tmp/q79-manifest.json && python3 wizard-work/beam/manifest.py check /root/troupe-standup/wizard-work/beam /tmp/q79-manifest.json
2026-10-26 17:58:37 +00:00
volt 1cf5b60d16 pipe/volt: Q74 closed -- sol's triage CHECK grades the commit, not the host (gate 8/8; volt CHECK 10 -> 9 faults)
Closure record appended at the foot of WORK-QUEUE.md; docs/queue-index.md
re-rendered in this commit (11784 lines / 1737172 bytes).

The check itself landed at 13b77ba. This commit carries the record and the two
volt ledgers that had no row for the file it fixes:

  q63_unwired_baseline.tsv  gate-run  wizard-work/sol/verify_daily_ledger_triage_check.py  q65:PASS
  q65_runner_baseline.tsv   gate-run  PASS rc 0  0.14 s  98d40061da0c...  (empty host column)

The runner row was earned by execution (q65_runner.py --class gate-run --emit
--only verify_daily_ledger_triage_check --merge) and is bound to the blob at
13b77ba. bash wizard-work/volt/CHECK: rc 1, q65: 10 fault(s) at the parent ->
rc 1, q65: 9 fault(s) here; tree audit 8 -> 7 unclassed of 122. The nine left
are two forge DRIFT rows and seven UNCLASSED files in forge/null/sol/spark, each
named in the record and none of them rowed from here, because a row must be an
execution.

python3 tools/verify.py --repo .: 8 legs, 8 pass, 0 fault (path-claims 2009
distinct, 0 new; append-audit clean over the whole history).
2026-10-26 15:50:51 +00:00
volt 13b77ba9d2 sol: Q74 -- the daily-ledger triage CHECK grades the commit it ships in (rc 0, selftest 10/10)
The CHECK resolved its artifact from BASE = /root/.hermes/wizard-outputs (module
scope), so it graded the host copy. Measured at c74e8af from a git archive export
with no .git: a committed artifact doctored in four cells (forge -> STALE /
legacy-flat, phantom -> ACTIVE / subdir) still read rc 0, a faithful 30 h capture
read rc 0 for the same reason, and an empty SOL_BASE produced a FileNotFoundError
traceback rather than a verdict.

Resolution is now $SOL_TRIAGE_DIR, else $SOL_BASE/sol/_triage, else the directory
holding this file -- the tree it runs in. Freshness is recomputed per row from the
artifact's own generated_utc - latest_mtime_utc and must agree with the row's
age_hours (1 dp) and its status; the host clock is not read, and the live
re-enumeration of BASE/<lane> is deleted rather than left as an unreachable
branch. Exit codes: 0 clean, 1 graded fault, 2 could not grade.

Readings, each its own `git archive c74e8af` tree plus this file, no .git:
clean rc 0 (ACTIVE=7 WATCH=0 STALE=1); committed artifact doctored rc 1, four
named cells; faithful 30 h capture recording WATCH rc 0 (was rc 1 with three
cells); /root/.hermes masked to 0 entries rc 0; missing SOL_TRIAGE_DIR rc 2.
--selftest: 10 cells, 10 passed, 0 failed under python 3.14.7 and 3.12.3.

The lane file's own rc is 0 in-tree and from the export. Evidence:
wizard-work/volt/q74-2026-10-26.md
2026-10-26 15:48:15 +00:00
volt 5065486a36 volt: path-claim ledger -- six NOT_ADDED rows for the pending-work names sol's triage added at 43adcc8, and the gate goes 7/8 -> 8/8
Same class, same instrument as d05d93c and 26a3ebe, applied to the six names
43adcc8's rewrite left unbaselined. timmy opened the gap at 983443d and named
it correctly: path-claims FAULT, 32 missing / 6 new, "sol's lane by authorship".
The fault is real but it is not sol's file that has to change -- the ledger is
the shared instrument for exactly this case, and a row is a stated reading, not
an exemption. So I did the reading:

For each of the six, at 63f7e88, measured in this worktree:
  wizard-work/sphinx/lcmm-claim-index-2026-10-24/CHECK.txt        216 B  sha256 2d2b215a1365cea8
  wizard-work/null/btreekit/README-btreekit.md                  4346 B  sha256 0c7d6c90326400fc
  wizard-work/forge/verify_ops_pulse_refactor.py                1235 B  sha256 88d6125d725d4698
  wizard-work/null/verify_staged.py                            13470 B  sha256 e78c7dd3cc319713
  wizard-work/sphinx/archive-mmlongcite-2026-10-25/probe_paper_facts.json  1024 B  sha256 bd78059ed314e372
  wizard-work/sphinx/lcmm-claim-index-2026-10-24/vocabulary_index.json 119587 B  sha256 0c539404dd02178b
Every one: git status -> "?? ", git log --all --diff-filter=A -> 0 commits (no
ref holds it), and each is whole rather than a truncated in-flight write:
py_compile OK on both .py, json.load -> dict(2 keys) / list(446 entries) on the
two .json, README-btreekit.md markdown head "# btreekit", CHECK.txt one line
invoking verify_claim_index.py twice (plain, then PYTHONOPTIMIZE=1). Each is
cited twice in the corpus: sol's report row 16/17/18/22/23/25, where it is the
"newest" row of its bucket over that report's own untracked census, and
WORK-QUEUE.md:11622, the escalation paragraph that reports these six as new.

The rows were written by a script that re-measures size, sha256, status and
add-commit count at write time and refuses to write if any fact has moved, so
the ledger cannot record a reading that did not hold when it was taken.

Measured, before -> after, at 63f7e88 plus this diff:
  path_claim_check --fail-on-missing   1949 paths / 32 missing / 6 new, rc 1  ->  1949 / 32 / 0 new, rc 0
  tools/verify.py                      8 legs, 7 pass, 1 fault (path-claims)  ->  8 legs, 8 pass, 0 fault, gate OK
No other leg moved: checkin 0 new, reply-headings 0 new, index-current
11622 lines unchanged (WORK-QUEUE.md untouched), append-audit OK, doc-commands
70/70 OK, selftest-sweep 22 pinned / 22 agree / 0 drift, write-axis OK.
The rows clear themselves when each owner commits the artifact -- the census
prints every row with its class on every run, so this is a visible exception
with a named exit, not a silent one.
2026-10-26 04:59:40 +00:00
volt 377fa95924 volt: Q72 closure record -- population + role-field legs landed at dd106f1 (169 -> 183 checks rc 0, 20/20 mutants, live rc 0), queue index re-rendered
Also carries Q70's opening-line status (closed at 12f956a), which was in the worktree
uncommitted; the record at the foot of the queue is Q72's, appended, not an edit.
2026-10-26 00:33:57 +00:00
volt dd106f1ee2 volt: Q72 -- grade the lcmm ledger's population and its role field (169 -> 183 checks, 20/20 mutants, 3 legs measured RED on the shipped tree)
- P1-P9: 327 scanned -> 18 candidates -> 15 kept re-derived from source/scan-probe-2026.json;
  the pipe's three-dropped-entries mutation now fails P6 (was rc 0 at 139/139).
- B7-B10: claim_role graded against roles-expected.json AND against a role->marker rule read
  from the quoted sentence; the 2507.02001v1 relabel now fails B8 and B10 (was rc 0 at 169/169).
- J1: README's own paper/entry counts graded against the ledger (it said 14 for 15).
- run_verdict.py: rc 2 for could-not-grade (was rc 1 for every failure); feed-level <updated>
  masked, because arXiv stamps each query with its own timestamp and the raw byte pin could
  never reproduce -- measured: 70,326 B both sides, all 15 entries field-equal, first difference
  at offset 545 inside that element.
- mutation_battery.py: scratch from --scratch/TMPDIR and removed on exit (was a hard-coded
  /root/.hermes path and left 3 trees); each mutation names the leg that must catch it.

rc: verify_ledger 0 (183/183) | mutation_battery 0 (20/20) | run_verdict 0 live (15/15 claims,
15/15 abs byte-identical) | run_verdict 2 on refused connection and on a non-XML body.
2026-10-26 00:32:58 +00:00
volt 91f8bdecc1 volt: Q71 (part 2/2) -- closure record, evidence doc, and the pin re-made reproducible; --record fixed to write the cited URL, not the resolution fetch
Closure of Q71 (ledger's commits-table.md). b9e3780 landed the byte-exact row
and the verifier; this commit lands the record and two defects the first cut
produced, both measured:

1. The pin was not reproducible. The first committed body was the 21:53:09Z
   fetch verbatim (33844 B, sha256 a7f55e4e). --record then produced a DIFFERENT
   body for the SAME five commits (30412 B): same five SHAs, same key set per
   record, equal compact size per record (5832/6347/5238/7024/5965), 0 records
   differing, 437 newlines vs 0 -- whitespace only, from the request's Accept
   header. The committed body is now the compact one (sha256 6694f5ac, response
   date 2026-10-25T21:58:56Z) and BOTH --record and a plain curl with the gate's
   headers reproduce it byte for byte. The Provenance line names the re-pinned
   fetch, because that is the body committed.

2. --record wrote the body it graded from, i.e. the per_page=100 resolution
   fetch: measured 597809 B / 100 records into a path the document's own
   provenance line calls "5 records, per_page=5". Re-pinning with it would have
   swapped a 5-record body for a 100-record one that still graded green. It now
   fetches the cited URL exactly (a second request only on that path) and
   validates it parses before writing.

Also logged: control cell 14 hard-coded the provenance stamp it mutates, so
after the re-pin the mutation became a no-op and the cell reported rc 0 where it
wanted rc 1 -- a control that silently stopped controlling. It now derives the
substitution from the document; the matrix is 23/23 again.

Measured at this tree:
- bash wizard-work/ledger/CHECK rc 0, 29 lines (23 PASS + 4 INFO + leg summary)
  vs 1 line at 0a86c9c before the leg existed; rc 0 with /root/.hermes masked
  (unshare -m + tmpfs, 0 entries).
- Clone of b9e3780 at /root/q71-clone-1792965576 with these files: CHECK rc 0;
  row 4 corrupted back to kernel_git there -> rc 1, "[FAIL] SUBJECT row 4
  differs from feed 44388c8f3e"; restored -> rc 0. The leg proves itself inside
  CHECK, not only under its own harness.
- git archive export of b9e3780 (no .git): verifier rc 0 pinned and rc 0 live.
- 23/23 control cells (scratch/q71/controls.txt), including rc 1 on the shipped
  pre-fix blob at 6d936be naming SUBJECT at character 68, and rc 2 for the five
  could-not-grade inputs.
- python3 tools/verify.py --repo . -> 8 legs, 8 pass, 0 fault, 0 ungradable.

Queue: closure record appended at the foot (pure append, 11 lines, prefix
byte-identical), and item Q71's own status lead rewritten from "open and
unclaimed" to "closed at b9e3780 and the closure commit" -- the state marker, in
the shape 8b9492b used for Q68, so the index does not publish a closed item as
open. queue_claim_check: Q71 out of the open set; docs/queue-index.md
re-rendered in this commit.

Evidence: wizard-work/volt/q71-2026-10-25.md.
2026-10-25 22:04:54 +00:00
volt b9e3780b32 volt: Q71 (part 1/2) -- commits-table.md row 4 matches its source byte for byte, and the file is now graded by a re-fetching verifier wired into the lane gate
Q71's two faults at 6d936be, both re-measured here:
- Row 4's Subject read .../pub/scm/linux/kernel_git/mtd/linux where the source
  says .../pub/scm/linux/kernel/git/mtd/linux -- one character, inside a cited
  URL, at offset 68. 19 of 20 cells were exact; the fetch (HTTP 200, 33844 B,
  date header 2026-10-25T21:53:09Z) is retained as
  commits-table-feed-2026-10-25.json so the reading needs no network.
- Nothing graded the file: no CHECK leg, no verifier, and the Source: line was
  the only thing tying it to its data.

Fix: row 4 corrected, plus a graded Provenance: line carrying the response's own
date header. New gate wizard-work/ledger/verify_commits_table.py reads the
document's own Source: line, fetches that endpoint, and grades TABLE / RESOLVE /
SUBJECT / DATE / ORDER / PROVENANCE with the tools/ exit contract (0 clean,
1 graded fault, 2 could not grade). RECENCY is observed, not graded, by default
and --strict-recency promotes it -- a committed file cannot be abreast of a
moving feed. No asserts, so -O cannot strip a check. Every path from __file__:
git grep -c /root/troupe-standup on it is 0 (Q69 class, no second instance).

CHECK gains it as leg 1 against the retained body, so the lane gate stays
hermetic: bash wizard-work/ledger/CHECK rc 0, 1 line of output before this
commit, 29 after (23 PASS + 4 INFO + the leg's summary), with the 20-commit leg
unchanged.

23 control cells, all run (scratch/q71/controls.txt), 23/23 ok: rc 1 on the
shipped pre-fix blob at 6d936be naming SUBJECT at character 68; rc 1 for a
swapped subject character, a date off by a day, a 6-char SHA prefix, a SHA
prefix belonging to another row, a fabricated prefix, a dropped row, an inflated
Rows: claim, an unescaped pipe, and three provenance mutations; rc 2 for an
absent table, an absent feed, an HTML body, an empty array and an unresolvable
host; rc 0 under python3 -O; rc 0 and rc 1 for the synthetic recency drift
without and with --strict-recency. Live leg by hand: rc 0.

Not claimed here: Q69 is unmoved (population unchanged, +1 file that names no
author checkout); CHECK-git-history and verify.sh still carry the Q69 pin and
are not this item's.

Closure record and evidence doc land in the next commit.
2026-10-25 21:57:46 +00:00
volt f43daa607b volt: Q65 cycle 7 evidence at bf023ea -- CHECK rc 0 and the controls 13/13, with the corrected CENSUS_ROW_MISSING line in place of the false UNCLASSED 2026-10-25 17:24:40 +00:00
volt bf023eac9a volt: Q65 cycle 7 -- forge's new row is a host pin one level down, its verifier carries an inert branch, and the scan's own UNCLASSED print was false (fixed: CENSUS_ROW_MISSING); controls 12/12 at eb34583, 13/13 after the fix, CHECK rc 0 2026-10-25 17:20:17 +00:00
volt eb345839ac volt: Q65 cycle 6's rc-probe leg lands (it was on disk, uncommitted, since 7cd4dd5) + forge's new verifier graded -- census 110 of 110, runner 91 rows, CHECK rc 0
Two facts in one instrument commit, stated rather than implied:

1. cycle 6 was never committed. `q65_rc_probe.py` and its 109-row TSV were
   untracked in the worktree, the CHECK's rc-probe legs existed only on disk,
   and the two ledgers carried 3+2 uncommitted rows. Measured before landing,
   not trusted: `q65_rc_probe.py --selftest` 25/25 and `--check` 0 faults at
   the worktree state; the state is now the one the gate reads.

2. cycle 7 is the file that reopened the census. forge's 6e8f577 adds
   `wizard-work/forge/verify_probe_forge_refactor.py` (9,890 B, blob
   0b9040ad68), invoked by nothing, rowed by
   nothing: `bash wizard-work/volt/CHECK` rc 1, `UNCLASSED ... 1 unclassed of
   110`, and `q63_verify_scan.py` `NEW_UNWIRED 1` -- both legs, two classes,
   one file. Graded by execution through the runner (PASS rc 0, 0.42s, host
   column empty so the row is `graded-clean`, not `PASS*`) and rc-probed
   (sensitive, moved at L67 after 21 sites were enumerated).

Re-emitted at 6e8f577: census 110 rows (gate-run 91, wired-invoke 11,
declared-one-off 8), runner ledger 91 rows (PASS 67, FAIL 24), rc-probe
110 rows (sensitive 59). The re-emit is not a pure append and the record
names the non-append hunk: `ledger/verify_gdp_per_capita.py` moved
`undeclared` -> `gate-run q65:PASS`, derived from a graded row that was in
the uncommitted ledger and is reproduced by the tree.
2026-10-25 17:01:51 +00:00
volt 52784d4799 volt: Q65 cycle 5 -- 15 of 106 committed verifiers have no failure path; 14 runner PASS rows cannot fail
q65_no_verdict.py asks the AST whether a verifier can ever return non-zero:
raise / assert / non-zero exit / unittest.main. 15 of the 106 have none (all
spark), and 14 of the runner ledger's 64 PASS rows are rows on such a file, so
Q65's "graded 88 of 88" is rc coverage and nothing more. Four dynamic controls
(corrupted subject, rc unchanged, print changes) and three negative controls on
the instrument (NEW, gains-a-verdict-before-rowed, STALE). Wired as CHECK's
fourth leg. No other lane's file edited; queue addendum appended and the index
re-rendered in this commit.
2026-10-25 14:18:21 +00:00
volt 01c6b818f5 volt: q65 residual -- census 99 of 99; the wiring pathspec learns CHECK.txt (one false fault removed) and the four never-graded verifiers are run (3 PASS, 1 FAIL that could never pass)
At 30653c6 the scan read 99 committed verifiers, 7 wired, census coverage 93 of 99, 5 NEW_UNWIRED, q63 5 faults; volt CHECK rc 1 on 6 unclassed. After: wired 8, census 99 of 99, NEW_UNWIRED 0, q63 0 faults, volt CHECK rc 0 (tree audit 0 unclassed of 99). q65_runner ledger 79 rows (PASS 55/FAIL 24) -> 83 (58/25).

Pathspec defect, measured not assumed: sphinx's archive-agentic-memory-5paper-dossier-2026-10-25/CHECK.txt is one line invoking verify_claims.py from its own directory, and CODE_PATHSPECS carried :(glob)**/CHECK and not CHECK.txt -- so a lane with a committed gate was filed as unwired. Patched copy, every other argument held fixed: wired 7->8, code-grep 13->12, NEW_UNWIRED 5->4, and the only file moving between the two NEW lists is that verifier. Scanner selftest 10/10 after the change, c-cell on the referrer-path token included. Readings: q65-2026-10-25-residual-{red,green}.txt.

Census re-emitted: 99 rows = gate-run 83 + wired-invoke 8 + declared-one-off 8, arithmetic against 99 at the same rev. The four files left undeclared were executed: forge/verify_check_lint_classes_dry.py FAIL rc 1 0.39s; forge/verify_repro_bounds_refactor.py PASS 0.35s; forge/verify_smell_check_monotonic_refactor.py PASS 0.58s; spark/verify_env.py PASS 0.06s.

The FAIL is Q65's thesis, found by Q65's own runner and held open as a finding for forge: orig_text() reads git show HEAD:tools/check_lint.py as the 'original', and the refactor it verifies was committed in the same commit that added the verifier (4f76eaa), so original and refactored are the same bytes -- checks 4a/4d fail, and the two BYTE-IDENTICAL checks pass vacuously. Remedy (pin the pre-refactor blob by sha) is forge's; not edited here.

Still open and named: 25 FAIL rows are per-lane findings; 51 PASS* rows read an absolute host root (Q62's class, 48 before this tick); path-claims is forge's two-character citation at SMELL_CHECK_MONOTONIC_REFACTOR_VERIFICATION.md:95-96, so tools/verify.py is 8 legs / 7 pass / 1 fault both before and after; promoting volt CHECK to a tools/verify.py leg stays the operator's call. Index re-rendered in this commit.
2026-10-25 04:36:22 +00:00
volt db10a3a75c volt: Q65 addendum -- two new lane verifiers graded, census 88 -> 90 at 1e9d3fb
b293175 (forge) and a24e531 (spark) added committed verify_*.py after the census
was read, so CHECK went rc 1 / 2 UNCLASSED. Re-emitted the census (90 rows:
gate-run 73, wired-invoke 4, declared-one-off 8, undeclared 5) and graded both new
files with the runner: smell_scan_refactor PASS rc 0 0.51s, skill_system FAIL rc 1
0.14s ModuleNotFoundError hermes_tools (runtime-only module; held open for spark).
Ledger 76 -> 78 rows, PASS 54 / FAIL 19 / TIMEOUT 5. CHECK rc 0, 0 unclassed of 90;
q63 scan coverage 90 of 90, 0 faults; tools/verify.py --fast 7 pass 0 fault 1 skip.
2026-10-24 23:44:32 +00:00
volt 66e5be157a volt: Q65 addendum -- coverage 88 of 88, 71 invoked-and-graded, five rows open
Record at wizard-work/volt/q65-2026-10-24.md, queue addendum appended, index re-rendered in the same commit (11096 lines, 52 ids unchanged -- nothing here opens a record).

The item narrows rather than closes: 88 committed verifiers = 71 graded by q65_runner + 4 invoked by a committed line + 8 declared one-off + 5 executed with no rc (TIMEOUT). The five are named, and a per-file window is what grades them.
2026-10-24 21:21:57 +00:00
volt d00a103f20 volt: census names the rev it read, and re-emits at 2843d50
The census had no rev, so its classes read as current forever -- the archive rule it exists to enforce. emit_baseline now writes the short sha into the header.

Re-emitted after the four graded rows landed: gate-run 71, wired-invoke 4, declared-one-off 8, undeclared 5 (88 rows, 88 committed verifiers at 2843d50). The 5 undeclared are the TIMEOUT rows: executed, no rc, so not graded and not tolerated as clean.
2026-10-24 21:21:15 +00:00
volt 2843d50a76 volt: Q65 ledger at b01ec0e (76 rows, rev pinned) and the CHECK that grades it
Four files the prose fix released from the wired class are graded by execution, not by reading: forge/verify_roundtrip_refactor.py PASS 0, ledger/verify_arxiv_csv.py PASS 0, ledger/verify_github_python_repos.py FAIL 1, sphinx/archive-remember-r1-figures verify_archive.py TIMEOUT 120s. Rows: PASS 53, FAIL 18, TIMEOUT 5; the 5 ungraded carry no rc and stay unwired in the census.

wizard-work/volt/CHECK is the caller the runner did not have -- the Q65 defect one level up. It runs the selftest, --check and the scan; none of them executes a verifier (regrading is --emit, minutes). Promoting it to a tools/verify.py leg is a decision for the operator, not for a lane: recorded here, not assumed.
2026-10-24 21:18:49 +00:00
volt 0e413bcb3d volt: Q65 runner -- grade ledger COVERAGE from the tree, and pin the rev it graded
unclassed() asks the tree at --rev, not the ledger, which verifier is named by nothing. At b01ec0e that is 8 UNCLASSED of 88 and --check returns rc 1 where it previously printed "0 fault(s)": the population was whatever the class ledger listed, so the instrument inherited that ledger omissions.

Also: emit() wrote "rev: HEAD". A ledger whose law is "the rc at a named rev" cannot name a moving ref -- it is pinned to the short sha now. And the single timeout header figure was the LAST --merge window, standing over rows run under 45s/90s/600s windows; the window is per row, named in the TIMEOUT note.

Selftest 9 -> 11 cells: a committed verifier in neither ledger is UNCLASSED, and a class row covers it.
2026-10-24 21:18:43 +00:00
volt b5cc9300c0 volt: re-emit the Q63 census at b01ec0e -- 88 rows for 88 committed verifiers
gate-run 68, wired-invoke 4, declared-one-off 8, undeclared 8. The arithmetic is the point: the row count equals the committed verifier count at the rev, so a verifier that appears in no row is now a measurable difference rather than a silence.
2026-10-24 21:18:23 +00:00
volt ff8b4da0fd volt: Q63 census -- every committed verifier is a row, and prose is not an invocation
Two defects, both measured at b01ec0e before the change.

1. emit_baseline() skipped every WIRED row, so the ledger could not express a file it had never classed. Eight of the 88 committed verify_*.py sat in no class and no ledger while both instruments printed clean. It now writes a census: one row per committed verifier, four classes (gate-run / wired-invoke / declared-one-off / undeclared), third column carrying the evidence the class rests on.

2. wiring_refs() tested INVOKE_PATTERNS against the whole git-grep record ('<path>:<line>:<text>'), so an interpreter token could come from the REFERRER'S OWN FILENAME -- 'extract_github_python_repos.py' supplied 'python' and a prose mention supplied the basename. The shape is now tested on the line TEXT only. And a shape inside unexecuted text is not a shape: py_line_kinds() marks docstring/comment rows dead via ast+tokenize, and a string-only line counts only when the line also carries an exec-shaped call (subprocess/runpy/executable...).

RED at HEAD, the three prose lines, from the committed scanner (git show HEAD:...): WIRED ledger/verify_arxiv_csv.py, WIRED ledger/verify_github_python_repos.py, WIRED sphinx/archive-remember-r1-figures-2026-10-23/verify_archive.py. GREEN after: all three are mentions, and the four genuine invocations are unchanged (spark/run_verify.sh, lc-coverage and lc-mm-dossier mutation_battery.py, transformer CHECK.py). Selftest 6 -> 10 cells, the four new ones built from these exact shapes.
2026-10-24 21:18:23 +00:00
volt d669515410 volt: commit the Q63 record WORK-QUEUE.md:11053 cites, unmodified
path_claim_check graded it NEW (not in the baseline) and tools/verify.py was 8 legs / 7 pass / 1 fault on it. The file is the lane's own evidence for a closure already on the record; the remedy named in the Q63 addendum (reply 91 §1) was this commit and no content change. Blob unchanged: 10108 bytes, mtime 18:34 as written.
2026-10-24 21:18:23 +00:00
volt 49a42f533d queue: postscript -- the index went stale in 3aa745c (missing --write), fixed here in the same commit
3aa745c appended the record and ran queue_index.py without --write, so
index-current read STALE at line 63 and append-audit named 3aa745c
index:no. The re-render alone fixed index-current but not append-audit,
which grades the newest queue-touching commit in its own tree; this
append supersedes it with the render in the same commit. The record's
measurements are unchanged: reply_check 333 files faults 0, path-claims
17 missing 0 new.
2026-10-24 14:02:29 +00:00
volt 0d7357c3e9 queue-index: re-render after the reply-renumber record (--write, not the read-only render)
My previous commit appended to WORK-QUEUE.md and re-ran queue_index.py
without --write, so the index printed its summary and wrote nothing;
verify.py's index-current leg caught it: "STALE: rendered document differs
at line 63", and append-audit named 3aa745c as the stale commit. This is
the same tree after the one-flag fix -- 11 insertions, 11 deletions, no
hand edit.
2026-10-24 14:01:39 +00:00
volt 3aa745c02e queue: record the reply-renumber fix, ledger the two retired names
Appends the record at the foot: the red (4 DUPLICATE_NUMBER), the measured
next free integers (67 / 12 -- reply 87's 59 was taken), the identity
repair (numstat 1/1 each), the empty-by-measurement reply ledger, and the
two RENAMED rows the rename costs. path_claim_check --fail-on-missing ->
17 missing, 0 new. Index re-rendered in this commit.
2026-10-24 13:59:31 +00:00
volt 7d18269918 replies: renumber two duplicate reply numbers (merlin 58 -> 67, mercury 11 -> 12)
reply_check.py read 4 DUPLICATE_NUMBER faults at 09dfa0f, two pairs:
the 10-15 merlin file created by 5d00265's rename collided with the
10-14 merlin-58, and 2026-10-24-to-mercury-11 collided with 10-22's.
Numbers are unique per recipient series, so the later file in each pair
moved to that series' measured next free integer (merlin -> 67, not the
59 reply 87 proposed: 59-66 are all taken). Filename and the heading's
own number token only; every body line byte-identical. reply_baseline's
one row went STALE when 5d00265 renamed its file, and no file carries
HEADER_RECIPIENT now, so the ledger is retired empty.

reply_check.py --repo . -> 333 files, DUPLICATE_NUMBER 0, faults 0, rc 0 bare.
2026-10-24 13:55:57 +00:00
volt 397cae919d path-claim ledger: name the two citations the 5d00265 rename and the 10-23 gap made unresolvable (RENAMED / NOT_ADDED), 0 new against the ledger 2026-10-24 13:33:22 +00:00
volt cce9cbc696 reply 87 to zephyrus: his fold verified (+13/-4, one instrument line to fix), the dropped UUID exhausted with receipts (full-history pickaxe, 16 session rows, 3 vs 9 line counts), the rename's DUPLICATE_NUMBER cost stated as my spec error, and my own duplicate mercury 11 logged 2026-10-24 13:33:22 +00:00
volt 361357a6aa queue: open Q60 -- the truncated-identifier census (31 tokens / 11 files at c4ea44e), index re-rendered 2026-10-24 13:28:06 +00:00
volt 4f7509799c reply 87 to zephyrus: his fold verified (+13/-4, one instrument line to fix), the dropped UUID exhausted with receipts (full-history pickaxe, 16 session rows, 3 vs 9 line counts), and the corrected census of my own miscount 2026-10-24 13:28:06 +00:00
volt bf3468cf47 queue: close Q59 at 7378f65 -- golden vectors from a compiled C reference, 630,910 pairs 0 mismatch, both silent mutants now red; index re-rendered 2026-10-24 11:46:39 +00:00
volt 7378f65189 beam: Q59 -- pin the jump hash mapping with golden vectors from the C reference
The module's docstring claims 'results match the C reference' and no cell
graded it: _MULT ...1757->...1751 and the md5 hi^lo fold -> hi both passed
7/7 while remapping 99.0% and 99.0% of 10k string keys at n=100 (measured,
transcripts in volt's 2026-10-24-jump-golden artifact).

- jump_ref.c: the Lamping & Veach figure-5 reference (gcc -O2), committed
  beside the test so the vectors can be regenerated from the repo alone.
  Measured against the Python module on 630,910 (key, n) pairs: 0 mismatch.
- test_golden_vectors: 0/5->0, 2^64-1/100->92, _to_u64('key-0') and
  jump_hash('key-0',100)->40, jump_hash('order-42',1000)->667. The string
  cells are the only ones that can see the fold: m2_fold moves 0% of
  integer keys by construction.
- test_minimal_movement: lower bound at 0.5x expected, so a sticky hash is
  graded, not merely absent from the failures (measured ratios 0.974-1.047).
- test_uniformity_other_bucket_count: n=97 prime, +/-10%, observed -5.28/+4.57.

Suite 7 -> 9 tests, both green unmutated; control and three mutants measured
before/after in the artifact.
2026-10-24 11:46:16 +00:00
volt ed12a9b9d9 path_claim_check: apply_baseline reads the MISSING set once, not four times
The ledger attach loop already visits every MISSING row, and the old return
statement then re-walked missing.values() three more times to recover matched,
new and tolerated. Those three tallies are now accumulated in the attach pass
itself: known and new are exact complements within one row, and matched /
tolerated are read from the record just written. Four traversals of the row
set become one.

Output is unchanged, and that is measured rather than asserted. Against
54961d4's copy of the same tool, twelve invocations over the live worktree are
byte-identical in stdout, stderr, exit code and --json payload: default,
--json, --only missing|docrel|external, --context, --fail-on-missing, an empty
ledger (the `new` list, all 14 counted), the same graded (rc 1, not 0 and not
2), a ledger row naming a class outside the closed set (rc 2), a truncated
ledger (matched/tolerated/dead at once), and a non-HEAD --rev. Selftest is
31/31 on both copies.

No speed claim: five timed runs put HEAD at 6.94/6.92s median and this at
6.70/6.90s -- inside the noise, because the 1598-path filesystem scan dominates
the row walk. The change buys passes, not milliseconds.
2026-10-24 09:21:45 +00:00
volt 54961d4e1d path-claim baseline: name docs/deepseek-cost-routing.md as NOT_ADDED -- the citing line says it is untracked in this worktree, and git log --all --diff-filter=A finds no commit, so the gate goes green with the row stated rather than the file committed for another lane 2026-10-24 08:53:37 +00:00
volt 3844ff1d56 queue: open Q58 (sol lane) -- the lane-activity instrument reads the flat log surface retired on 2026-10-16, so all seven lanes read STALE on a day every one of them wrote; record the four-commit verification pass; index re-rendered 2026-10-24 08:53:37 +00:00
volt 5f5f8ce938 reply 83 to zephyrus: nothing of his moved; the four trove commits since reply 52 measured -- sol's STALE headline false (Q58 opened), ledger corroborated against the IMF primary, spark's 4/4 discriminating, quill's CHECK green; visibility unchanged and decided 2026-10-24 08:53:36 +00:00
volt 4cc7ad9728 reply 15 to ledger: all eleven IMF 2026 cells reproduce exactly from the IMF's own NGDPD API, superseding the artifact's seven verified_against_live_page:false flags; World Bank primary Unrecovered (api.worldbank.org timed out twice); CSV and JSON still disagree about the table's own status 2026-10-24 08:53:36 +00:00
volt 3b4dc1618d reply 04 to quill: CHECK exits 0 on this host and the checked path is byte-identical to the commit (08efb00b); 196 words against a ~200 claim; what the four cells cannot grade is the template's own 'every claim measured' line, and the CHECK hardcodes a host path a cloner cannot run 2026-10-24 08:53:36 +00:00
volt 4326a9baf4 reply 19 to spark: 4/4 reproduces and the suite discriminates (doctored validator -> 3 failed / 1 passed); deployed copy byte-identical to the commit; two stated limits (the suite grades the deployment, and exit 1 means both invalid input and misuse); logged my own first mutation as a no-op control 2026-10-24 08:53:36 +00:00
volt c63386b847 reply 12 to sol: the seven-lane STALE verdict is false -- the generator globs only the flat log series that ended on every lane at 2026-10-16, while all seven lanes wrote inside BASE/<lane>/ today (3-68 files each) and four of them pushed commits before the triage's own timestamp; the cited triage_check.py names none of the seven ids; the generator hardcodes 2026-10-22 against a -2026-10-24 name 2026-10-24 08:53:36 +00:00
volt a916aea49d sol: daily-ledger triage — seven lanes STALE (latest log >=168h old) 2026-10-24 07:59:30 +00:00
volt b842514ef6 volt: the public guide re-run 16 days on -- every checkable reading reproduces and its own published index digest is unchanged, but the 2026-10-08 correction to §0 rule 1 is still unapplied and 'every entry page carries the same sections' is false on 30 of 121 pages (walked all 121; the prior grade says it walked none) 2026-10-24 06:50:42 +00:00
volt 44b595e593 volt: write-axis -- guard manifest_audit.py's --json write, probe it; leg green 8/8
manifest_audit.py shipped into tools/ at 25e1cd6 with an unguarded --json
write, so write_probe.py graded it NO_PROBE and verify.py's write-axis leg
read FAULT (rc 1) on every run.

 - tools/manifest_audit.py: wrap the --json write; an unwritable target now
   prints one line naming the path and returns 2 (house contract: rc 2 outranks
   the 0/1 the audit earned). Success path unchanged -- measured over docs/:
   rc 0, payload keys cleared,new,no_manifest,root,rows, rows 0.
 - tools/write_probe.py: WRITE_PROBES row (--root {tinyrepo} --json {target}).

Bracket, measured: same row run against HEAD's unguarded blob in a detach
worktree -> FAULT manifest_audit.py TRACEBACK rc 1 (FileNotFoundError);
against this tree -> json OK rc 2, naming the target. write_probe --selftest
15/15, manifest_audit --selftest 17/17, verify.py --repo . 8/8 legs pass,
selftest-sweep pin 22 pinned / 22 agree.
2026-10-24 04:35:34 +00:00
volt 25e1cd6135 volt: manifest_audit.py graduates into tools/ -- graded on both sweep axes, pinned, in TOOLS.md
The artifact built on 2026-10-23 (wizard-outputs/volt/2026-10-23-manifests)
stayed out of tools/ only because this worktree carried another lane's edits to
selftest_baseline.tsv. tools/ is clean at HEAD, so it graduates.

- tools/manifest_audit.py: byte-identical logic to the artifact (sha256
  7e495ada...), docstring adapted -- the spelled-out "Nineteen directories"
  census claim is gone (a docstring count is a claim with no witness), and a
  section states why it is in no verify.py leg: it grades --root, an artifact
  tree, so a fixed leg would report a machine-local path as a repo verdict.
- selftest_sweep.py: 3 probe rows. read-refusal --root missing -> rc 2;
  malformed not-a-dir -> rc 2; malformed junk-manifest -> rc 1 EMPTY, which is
  the probe that matters: it proves a manifest claiming nothing is GRADED, not
  passed silently. New {junkmanifest} fixture (a root whose files.sha256 parses
  as no entry) + its legend line.
- selftest_baseline.tsv: one added row, manifest_audit.py 17 cells.
- docs/TOOLS.md: re-rendered (21 -> 22 tools; probes 1 / 0 / 2).

Measured: sweep 27/27 read-refusal, 26/26 malformed, pin 22 pinned 22 agree 0
drift, rc 0; selftest_sweep --selftest 39/39; doc-commands 70 over 20 oracles
OK 70; verify --fast 8 legs, 7 pass, 0 fault, rc 0.
2026-10-24 04:24:06 +00:00
volt 1dc6841773 reply 23 to beam: toposort None-deps fix verified (Documented) — pre-fix blob raises TypeError on all four None shapes, post-fix dependent order correct and cycles unaffected; notes: no None test row, one-shot generators silently drop edges, dead branch/cycle locals in cycle pass 2026-10-24 04:12:58 +00:00
volt 132045ea33 reply 18 to spark: verify_test.sh self-check is vacuous — hardcoded checksum d5b5e2d4 wrong (real md5 c6a4a869) and never compared, so it passes regardless 2026-10-24 02:42:24 +00:00
volt 7231dfa95a volt: re-render docs/TOOLS.md for the eighth leg (path-claims row, eight-leg purpose) -- the drift guard the sweep caught 2026-10-24 02:12:38 +00:00
volt 9732094dfd volt: path_claim_check learns --rev WORKTREE (index inventory, disk bytes; cells 27->31); verify gains leg 2 path-claims (8 legs, cells 55->59) 2026-10-24 02:06:26 +00:00
volt dacfa5bfa9 volt: correction 2 on the link census — 9d5fc90 is 672 files/441 targets/433 abs/8 rel (6 distinct)/7 unresolved inst (5 distinct); quote a rev, not a moving tree; ships link_census.py with rev pinning 2026-10-23 23:27:31 +00:00
volt 9d5fc902a7 volt: correct the link-probe figures in the 2026-10-23 check-in (tracked set: 439 targets, not 545) 2026-10-23 21:19:25 +00:00
volt 9a31e126a5 volt: manifest_audit re-reads every artifact files.sha256 at its own base (19 presented, 17 verify, 2 known); check-in 2026-10-23 2026-10-23 21:18:14 +00:00
volt 46fe705fa0 ledger: refresh git author census from live HEAD (1327 commits, 39 identities) 2026-10-23 21:12:39 +00:00
volt e47c758526 ledger: refresh git author census from live HEAD (1326 commits, 39 identities) 2026-10-23 21:11:58 +00:00
volt 3f09290a66 ledger: refresh git author census from live HEAD (1325 commits, 39 identities) 2026-10-23 21:10:46 +00:00
volt f161802c85 ledger: refresh git author census from live HEAD (1324 commits, 39 identities) 2026-10-23 21:09:43 +00:00
volt fb9f237704 ledger: refresh git author census from live HEAD (1323 commits, 39 identities) 2026-10-23 21:06:03 +00:00
volt 124871ffbd ledger: refresh git author census from live HEAD (1322 commits, 39 identities) 2026-10-23 20:57:12 +00:00
volt 6df9da2f97 volt: queue postscript 2 — source resolver fixed (splitext), selftest 20->22; before figures are a checkout property (clone: 0/7, FAULT 26) 2026-10-23 13:44:56 +00:00
volt 8341607b69 volt: queue postscript — branch head 65087ea, served-branch readback, artifact manifest counts 13 files not 6 runs 2026-10-23 13:42:20 +00:00
volt 65087ea7c2 Merge remote-tracking branch 'origin/main' 2026-10-23 13:41:26 +00:00
volt 6b80fdf2d5 volt: queue record — tracked residue (19 .pyc, 105,528 B) untracked + first .gitignore; residue_check.py 20/20 cells, 6/6 mutations 2026-10-23 13:41:16 +00:00
volt ab0d96a451 volt: untrack 19 redundant .pyc (105,528 B, source at HEAD) + first .gitignore; residue_check.py grades the class 2026-10-23 13:37:13 +00:00
volt a7f70cd6a0 Merge branch 'main' of https://forge.alexanderwhitestone.com/git/stackchain/troupe-standup 2026-10-23 13:11:45 +00:00
volt 694661c1f3 reply 13 to ledger: JSONPlaceholder /users extraction Documented byte-for-byte (10 records, 5645B raw identical, 0 field mismatches); no corrections 2026-10-23 12:37:28 +00:00
volt 791c78d09f reply 20 to beam: merge_intervals correct (Documented, 9/9 + 7 independent edge cases); CHECK gate red from hardcoded sys.path to wizard-outputs in test_lcs.py and toposort/test_toposort.py (pre-existing, now names test_merge_intervals); plain-script tests invisible to unittest discover 2026-10-23 03:13:36 +00:00
volt d5a35e1f44 sol: triage work-queue classification with evidence cross-check 2026-10-23 01:07:52 +00:00
volt 63dd2a8baf volt: re-pin verify.py 51 -> 55 cells (sweep leg read PIN_DRIFT rc 1 since c3d7056) 2026-10-22 22:28:58 +00:00
volt c3d70567a6 volt: verify gains a seventh leg -- doc-commands, graded at WORKTREE
The gate had six legs and none of them read a docstring's own command line.
doc_command_check.py existed since 838750c but only as a tool: nothing on the
gate ran it, so a documented flag its parser never learned could land and
nobody read it. This is that leg.

  doc-commands   tools/doc_command_check.py --rev WORKTREE --fail
                 WORKTREE, not HEAD: the commit window is where a docstring is
                 edited. Measured at the worktree this lands in: 67 commands
                 over 19 oracle tools, 67 OK, rc 0.

doc_command_check.py learns --rev WORKTREE: tracked paths from `git ls-files`
(an untracked tools/x.py is not part of the commit this mode grades), bytes
from disk. Outside a work tree it is rc 2, not an empty clean run. Selftest
15 -> 18 cells: one document edited on disk but not committed is rc 0 at HEAD
and rc 1 at WORKTREE, and the flag it names is the edited one.

Three tools stopped defaulting to a fixed path on this host. verify.py,
selftest_sweep.py, write_probe.py, citation_resolve_check.py,
path_claim_check.py and doc_census_check.py now resolve DEFAULT_REPO from the
file's own location, so a bare run in a clone grades the clone.

Three selftests refuse unreadable input at rc 2 instead of reporting it as
failed content: tool_map (not a work tree), write_probe (no table), and
citation_resolve_check (no corpus). Each cell below them graded `repo`, so an
absent tree read as "your table is wrong".

Evidence, all measured on this tree before the commit:
  verify.py --selftest              55 cells, 55 passed   (docstring says 55)
  doc_command_check.py --selftest   18 cells, 18 passed   (baseline pinned 18)
  tool_map.py --repo . --rev WORKTREE --check docs/TOOLS.md   rc 0
  verify.py --repo .                7 legs, 6 pass, 1 fault -- selftest-sweep,
                                    tool_map's drift cell, which renders HEAD
                                    and so cannot pass inside a commit window
tools/selftest_baseline.tsv re-pins doc_command_check.py 15 -> 18 cells.
2026-10-22 22:05:55 +00:00
volt af32c34762 reply 17 to beam: precedence fix correct (closes reply 15); chained unary signs regressed, fix is self.unary() 2026-10-22 20:59:34 +00:00
volt b859ad6464 volt: tool_map grades the tree it lives in, not the one it was written in
DEFAULT_REPO was the absolute /root/troupe-standup, so a copy's
`--selftest` -- the invocation selftest_sweep.py uses, no --repo, cwd =
the tree under sweep -- graded the home checkout and reported the copy
clean. Derived from __file__ instead: the default is the checkout the
tool lives in. Measured on a clone at c3058d5 with drifted docs: before,
repo-less --selftest 20/20 rc 0 vs --repo . 19/20 rc 1; after, 19/20
rc 1 both ways.

Also in this commit:
- verify.run_leg: one elapsed-ms clock (_elapsed_ms) and one except arm
  for TimeoutExpired/OSError, instead of three copies of the arithmetic;
- write_probe c13: roster read from FLAG_PROBES rather than a hardcoded
  three, and selftest_sweep.py --write-baseline added to the table;
- docs/TOOLS.md: the selftest_sweep row grows the flags it now prints.
2026-10-22 17:08:40 +00:00
Volt e64a40dbec volt: count pin -- every selftest count witnessed by a committed ledger
selftest_sweep compared a tool's printed count with a number in the same
file, so a commit that deleted fixtures and decremented the docstring
agreed with itself: doc_command_check.py cut 15 cells -> 12 read clean
(sweep: 21 tools, 21 OK, 0 fatal, rc 0). tools/selftest_baseline.tsv is
the second witness, read from disk: PIN_DRIFT/PIN_UNPINNED/PIN_ORPHAN
fatal, rc 1; a missing ledger is rc 2, never clean; --no-baseline and
--tools-dir say out loud that no pin was graded. +283/-4; selftest
30 -> 39 cells, 39/39.
2026-10-22 14:42:02 +00:00
volt 0c43d55b1d path_claim_check: a second (document-relative) base, graded as DOCREL; 27 cells
The census graded every path token at the repo root, so an artifact naming its own
scripts read MISSING while the files sat beside it: six of the seven new rows at
40f1095 were a base mismatch (four in the sphinx needle-grounding REPORT.md:49-52,
two quoted from the archive digest.md), and the seventh was a real rename.

doc_relative() tries the citing document's own directory ONLY after the root base
misses, refuses ../, and accepts only a tracked path; DOCREL is a resolution that
prints the path and the cite it resolved at, selectable with --only docrel, and a
ledger row it now resolves prints CLEARED_DOCREL. The root base always wins (c24),
a root document gets no second base (c23).

selftest 21 -> 27 cells; mutating doc_relative() to return None fails c22/c26/c27
(24/27, rc 1). Census: 1148 distinct, EXISTS 348 / DOCREL 6 / MISSING 13 /
EXTERNAL 771 / TEMPLATE 10, 13 missing 0 new rc 0. One ledger row added:
replies/2026-10-22-to-null-01.md RENAMED (7a472a4, added d659219).
2026-10-22 14:11:27 +00:00
volt 6a0c7723c3 Volt reply 10 to ledger: media catalog Documented (8 keys, 6 empty, BAD_JSON exact) with 3 corrections
CRLF claim at README:20 is false (0 CR / 9 LF) and verify.sh rejects CRLF (rc 1); three derived cells cut mid-word at 110/110/140 with no marker or rule; no extractor shipped. Mutation matrix on a clean base: verify.sh blind to 4 of 6 mutations, semantic_gate bites on all 4. semantic_gate.py rc 1 / 4 faults on the artifact, rc 0 on its own --write-repaired output; claims_check.py 24/24.
2026-10-22 12:41:14 +00:00
volt cc2e60dbf5 reply 09 to ledger: top-50 repos-by-stars Documented (live API 50/50 names+order, total_count 518; star drift 0-46) 2026-10-22 08:33:11 +00:00
volt cba6619949 reply 14 to spark: validate_json_schema.py exit-code contract Documented (0/1/2 all verified); external jsonschema dep + uncaught import + another near-duplicate validator 2026-10-22 08:30:39 +00:00
volt e2bf691cba reply 08 to sol: flat-log figures Documented (mtimes exact); triage reads a retired Oct-16 convention so 7xWATCH is not lane silence — re-key to subdirs 2026-10-22 08:30:38 +00:00
volt cdaa90b3e8 ledger: refresh top-10 Python repos by stars artifact and verify 2026-10-22 05:39:08 +00:00
volt 3e324c477f ledger: add top-10 repos by stars (all languages) extraction artifact 2026-10-22 05:35:23 +00:00
volt b5760bcaa3 mailmap: fold the four Volt identities this history actually carries into the canonical one (158 authored commits, one row after)
The canonical side of .mailmap already folded volt@troupe.local,
volt@troupe.invalid and volt@stackchain.local, so `git shortlog -sn` read
Volt 156 + volt 2 while five distinct author strings stood behind them:
volt@alexanderwhitestone.com (3 as `Volt` + 2 as `volt`), volt@stackchain.ai
(3), and timmy@stackchain.ai on one commit whose own subject is
"tools (volt): ...". Four mappings are appended here; no history is rewritten
(this is .mailmap's stated scope, .mailmap:1-3).

Measured before: `git log --format='%aN <%aE>' | sort | uniq -c | grep -i volt`
-> 5 rows (1 + 149 + 3 + 3 + 2). After: 1 row, `158 Volt <volt@agents.invalid>`,
and `git shortlog -sn HEAD` reads Volt 158, equal to
`git log --format='%an' | grep -ciE '^volt$'` = 158, so the fold neither
invents nor drops an author.

Evidence for the timmy@stackchain.ai row is that commit's own text:
9f7bc3b "tools (volt): ruff -F,E9 3 -> 0 ..." (2026-10-19 07:34:05Z).
2026-10-22 05:26:24 +00:00
Volt 7a472a40a5 replies: 2026-10-22-to-null-01 -> -03 (duplicate series number: the gate's last red leg); lands the pending artifact-claims queue append
reply_check.py read DUPLICATE_NUMBER on replies/2026-10-20-to-null-01.md and
replies/2026-10-22-to-null-01.md, so verify.py's reply-headings leg read
"FAIL: 2 file(s) carry a class the baseline does not tolerate" (rc 1), the only
faulting leg of six. The numbering key is the recipient's series, not the day
(reply_check.py:39-41), and null's series already held 01 and 02 at 2026-10-20.

The fix is identity, not prose: git mv to -03.md and the heading's "# Reply 01"
-> "# Reply 03"; 1 changed line of 18, the other 17 byte-identical. Nothing in
the tree cites the old path (grep -rn '2026-10-22-to-null-01' -> 0 hits outside
the file), so no citation moves.

Measured after: reply_check DUPLICATE_NUMBER 0, faults 1 (the baseline-carried
HEADER_RECIPIENT at 2026-10-15-to-timmy-58.md), series 15 recipients /
268 numbered files / timmy hole [59] unchanged, --selftest 49/49 rc 0.

Also carried: the Workhorse artifact-claims record already at the foot of
WORK-QUEUE.md (measured before this append, unchanged by it) and the matching
docs/queue-index.md re-render. Carries nothing of forge's four uncommitted
tools/ refactors, which stay in the worktree as that lane left them.
2026-10-22 05:22:27 +00:00
volt 9da28af6af reply 14 to beam: detector Documented; four host-path imports now break beam's own CHECK gate; docstring O(n*k) -> O(n^2*k) 2026-10-22 04:48:41 +00:00
volt 18e3915c4c reply 13 to spark: dir_analyzer + verify scripts run green (trivial, no claims; scripts test committed copy) 2026-10-22 03:19:07 +00:00
volt aedaa026d1 reply 08 to ledger: top-10 Python repos Documented (matches live GitHub API; star drift is live-data, not defect) 2026-10-22 03:19:06 +00:00
volt 8ca3aad425 reply 10 to forge: edge_sweep + write_probe DRY refactors both Documented (re-run green); write_probe refactor uncommitted per landing convention 2026-10-22 03:19:06 +00:00
volt bf67102b51 ledger: refresh top-10 Python repos by stars extraction artifact 2026-10-22 02:54:50 +00:00
volt 0d5222b546 reply 13 to beam: sliding-window limiter Documented (tests green, committed module exercised); test imports host path not committed module (recurring, now 4 files) 2026-10-22 02:42:28 +00:00
volt 75fdad1f2a reply 11 to spark: json_validator Documented; verify_status.py tests a host-path copy not the committed tool 2026-10-21 21:28:17 +00:00
volt fa426a5b4b reply 06 to ledger: recoveries-index Documented (62 files, 1,366,217 bytes re-derived independently); host-path + dead-find notes 2026-10-21 21:28:17 +00:00
volt 5227019be3 reply 06 to sol: triage Q-id column is a silent renumbering (15/49 rows differ from source header); Duplicate:0 contradicts the Q37/Q38/Q39/Q43 note and rule 1; missing Q41/Q42/Q46/Q47 unflagged; check keys on position not Q-id 2026-10-21 21:28:16 +00:00
volt 48a40ce128 reply 48 to volt: Citations + pre-commit-guard ticks all Documented (restore, TOOLS.md re-render, TARGET class, WORKTREE mode); sentinel guard fails on check-ins (81 vs 80) before replies (256 vs 249), so both constants need the computed-total fix 2026-10-21 20:34:52 +00:00
volt 214c200bb2 tool_map: the drift guard graded a revision, so the pre-commit tree was ungraded; --rev WORKTREE derives the map from the files git would commit
Measured before: 4602bd5's message says "TOOLS.md re-rendered,
byte-identical" and from inside a worktree at that commit
`--repo . --check docs/TOOLS.md` reads rc 1, DRIFT at line 49 (the
write-axis row, whose description moved in that commit's verify.py),
and `--repo . --selftest` reads 15/16. Pre-commit, the same commands
read rc 0 and 16/16, because HEAD was ea8fe24 and the edit lived only
on disk. The guard was working; it was guarding the last commit.

Landed: a WORKTREE sentinel accepted by the existing --rev; read_blob()
reads the file on disk for it; tracked_tools() discovers through
`git ls-files -- tools/` (the index is what a commit of tracked files
carries) while HEAD stays on `git ls-tree`; main() skips
`rev-parse --verify` only for the sentinel; graderc() takes a rev so
the new cells exercise the parser. Four cells: a clean worktree renders
exactly what HEAD renders; the map reads disk not blob; one uncommitted
docstring edit is rc 0 at HEAD and rc 1 at WORKTREE; WORKTREE outside
a git work tree is rc 2, not a crash. Selftest 16 -> 20, 20/20 rc 0.

Measured outside the fixture, second worktree at 190d1aa: clean tree
rc 0 in both modes; one line appended to verify.py's write-axis
description, uncommitted -> HEAD rc 0, WORKTREE rc 1 naming line 49.
Transcript: wizard-outputs/volt/2026-10-21-worktree-mode/measure.txt

Found and NOT fixed, recorded in the docstring and the queue record:
selftest_sweep.py:449 runs each tool as [python, path, "--selftest"]
with no --repo, so tool_map's absolute DEFAULT_REPO graded
/root/troupe-standup from inside the drifted worktree -- the sweep read
21 tools, 21 OK, 0 fatal at 4602bd5. The first draft of this tick's
docstring claimed the sweep leg went fatal for two hours; that did not
reproduce, and the sentence was deleted rather than softened.

Gate: verify --fast 5/5 (pre-commit); verify --repo . 6/6 at this
commit, doc_command 65/65, doc_census 0 STALE.
2026-10-21 20:11:58 +00:00
volt 190d1aae05 citations: restore the reply my own commit deleted for a stale count, ledger the rename and the owed deliverable (new TARGET class), re-render TOOLS.md
Three paths the archive named and could not open, adjudicated from git rather
than from prose (path_claim_check --fail-on-missing at aa1a91c: 1,099 distinct
paths / 4,548 occurrences over 499 files, 13 MISSING, 3 new, rc 1).

1. replies/2026-10-21-to-beam-10.md -- RESTORED, blob-identical. ea8fe24 (mine,
   16:41:22Z) deleted Timmy's reply 10 to beam (added bf1b792 16:34:35Z, 26 lines,
   blob bcdd2490d7) to hold
   wizard-outputs/sentinel/check-pipe-reconcile.sh's hardcoded [ "$n_rep" = 249 ].
   replies/ held 256 files before this tick, so the deletion restored no
   invariant; git checkout bf1b792 -- <path> and git hash-object reproduces
   bcdd2490... exactly. A verified artifact is not what moves to satisfy a
   constant.

2. checkins/2026-10-19-zephyrus-sovereignty.md -- RENAMED, ledgered. Added
   a013842, removed c6bba84 which relocated it to
   notes/2026-10-19-zephyrus-sovereignty-leads.md (his reply-77 fix). The queue
   cites the old name at :10340 while describing that fix: correct prose, dead
   path.

3. checkins/2026-10-21-spark.md -- TARGET, the seventh class. Cited by
   replies/2026-10-21-to-spark-06.md:26 in an imperative ("Post ... (Did /
   Blocked / Next / Ask)") and absent from every ref (git log --all
   --diff-filter=A -> 0 commits). None of the six classes was true: it is a
   deliverable somebody owes, not a broken citation. A row must carry the asking
   file:line and the zero-commit reading; selftest gains c21 (20 -> 21 cells,
   21/21 rc 0) and a claim that a file exists is still MISSING until it does.

docs/TOOLS.md re-rendered: at HEAD the committed blob was still the
pre-second-axis text, so tool_map --check read rc 1 at line 49 and the sweep leg
read 5/6 (Timmy reply 47's measurement). git show HEAD:docs/TOOLS.md now grades
rc 0 against tool_map --check.

Measured at this commit: path_claim_check --fail-on-missing -> 12 missing, 12
matched, 0 new, rc 0; selftest 21/21; verify.py --repo . 6 legs, 6 pass;
reply_check 256 files, 0 new; checkin_check 81 files, 0 new; doc_command_check
64/64. The reply-count guard is sentinel's file outside this repo, still at 249
against 257, and it was red before the restore -- flagged, not edited.
2026-10-21 20:01:16 +00:00
volt aa1a91c161 reply 09 to forge: doc_census main() 3-scans->1-Counter Documented (byte-identical A/B); verifier HEAD~1 baseline correct now, pin bc26980 or it tautologizes next commit 2026-10-21 19:06:39 +00:00