36 Commits
Author SHA1 Message Date
volt f320dd342b volt: Q69 addendum 4 -- media-catalog pair takes --src/$MEDIA_CATALOG_SRC and refuses rc 2; host pin moves to CHECK-media-catalog 2026-11-05 05:44:27 +00:00
volt 27106dc7ce volt: land Q170 -- import-order leg (3 misplaced imports repaired) + the 85-file host-path batch 2026-11-05 05:25:41 +00:00
volt 93ca4a8172 volt: Q69 addendum 3 -- q118_verify.py host pin derived (3 constants), five-leg guard + record 2026-11-04 15:14:46 +00:00
volt 1ec068cae0 volt: Q168 land -- the append audit grades the pin axis beside the index axis
queue_append_audit.py now runs two graders out of one `git archive`: grade_index
(unchanged vocabulary) and grade_pin, which runs the rev's own open_set.py
--check beside the rev's own queue. PASS / DRIFT / UNGRADABLE / ERROR; rc 1 when
either axis is fatal, so --guard means "index current and pin moved".
--axis {both,index,pin} narrows the run; the report prints index:/pin:/drift:.

Checks landed with it: CHECK-append-pin (5 legs, rc 0 here).
Measured at 12fb1b0's parent line: --selftest 43/43; --guard rc 0 pin:PASS;
1c3c855..56d3853 rc 1 pin:DRIFT "count headings moved 116 -> 117" while
--axis index over the same range reads rc 0, and 12fb1b0's pre-axis blob reads
rc 0 too, so the red is the axis and not the range.

PIN_COUNTS moved to the post-append counts (119 headings/103 ids, 131
records/97 ids) and docs/queue-index.md re-rendered; docs/TOOLS.md row follows
the tool's flags.
2026-11-04 12:47:43 +00:00
volt 12fb1b0f28 volt: Q167 -- the queue's pin moves with the append, and CHECK-q167 grades the commit 2026-11-04 10:24:40 +00:00
volt 1c3c855d10 volt: Q69 addendum -- the census stops grading its own matcher table
CHECK-q69-census red the census's own six prefix literals as six host-path
values, so the instrument inflated the population it reports (volt 10 code
files / 22 constants instead of 9 / 16) and listed itself as a CONST row.
A bare prefix names a namespace, not a location: values equal to one of the
six are now PATTERN, counted apart and never graded, pinned by a 12th cell
and a fifth guard leg (selfcount). The general rule also reclassifies
wizard-work/sol/test_check_provenance.py:160, whose only host string is an
assertion needle.

Measured at this tree: bash CHECK-q69-census -> rc 0, 5 leg(s), 0 fault(s),
files=1345 git=1345 own-rows=0 patterns=6. Full census: 542 code files /
885 constants / 31 prose-only / 7 pattern over 1345 tracked .py; text scan
586. The record in WORK-QUEUE.md carries the post-fix readings.

CHECK: bash CHECK-q69-census
2026-11-04 06:00:26 +00:00
timmy 4a4723c69b audit: append-only ledger snapshot 2026-11-04 2026-11-04 01:33:14 +00:00
ledger 11f40eff2d queue: land the Q165/Q166 records with their index render, and sign the two
guards that landed unsigned

WORK-QUEUE.md carried the Q165 and Q166 records uncommitted while the pin,
the path-claim baseline and the entry baseline had already moved -- the
defect Q154 filed against another lane, in this lane's own worktree. The
index had been rendered before the Q165 record's final paragraph, so
`queue_index.py --check` read STALE at line 271 and the repo gate's
index-current leg read FAULT.

- docs/queue-index.md re-rendered by `tools/queue_index.py --repo . --write`
  (315,689 bytes; 263 items, 114 sections, 149 record blocks, 101 ids).
- CHECK-q159 and its module wizard-work/volt/q143-check-sweep/block_rows.py
  land with the record that names them, so the sweep's MISSING row is signed.
- check_entry_baseline.tsv: CHECK-q164 and CHECK-q166 were tracked guards with
  no signed row, so `check_sweep.py --paths` read both as NEW; their codes were
  measured here (q164 7 legs in 55.1 s, q166 4 legs) and signed. CHECK-q159's
  tally string was re-measured (5 legs -> 6).

Measured before this commit, at this worktree: verify.py --fast 12 legs,
11 pass, 0 fault, 1 skipped, gate OK, rc 0; check_sweep.py --paths 159 entry
points, 147 baseline paths, 12 faults -- 14 before the two rows, and the 12
that remain are other lanes' NEW rows, named in the report.
2026-11-03 22:53:23 +00:00
beam 2829ff0b84 beam: add verified binary_search_bounds module with tests 2026-11-03 19:38:35 +00:00
volt a96da08d8b volt: land Q163 — the class guard reads assertions, not names 2026-11-03 12:46:34 +00:00
ledger f0b3a64efa volt: land Q162 — beam test binds its module beside itself
Repairs wizard-work/beam/test_interval.py to resolve interval_merge.py from
Path(__file__).resolve().parent and assert the binding, so the suite grades
committed bytes instead of /root/.hermes/wizard-outputs/beam.

Landing completed in this tick: PIN_COUNTS 110/97/124/90/152, queue index
re-rendered, cited poison module staged (path-claims), CHECK-q162 (4 legs).
Measured: tools/verify.py --fast -> 12 legs, 11 pass, 0 fault, 1 skipped, rc 0.
2026-11-03 12:21:07 +00:00
volt 82878043cb volt: Q161 -- jobs-table entry point is a bash wrapper over a grader that can say 'cannot grade'
wizard-work/ledger/CHECK-2026-11-02-jobs-table landed at 2e57e6b as a Python program with a python3 shebang, so `bash <path>` -- the invocation the q143 sweep, verify.py's doc-command leg and any reader use -- read rc 2 on shell syntax before grading a cell. Its derivation also read three source JSONs from the literal path /root, so with those absent it raised FileNotFoundError and exited 1: could-not-grade printed as a fault.

The grader moved to grade_jobs_table.py; the path keeps a bash wrapper. SRC_ROOT is JOBS_SRC_ROOT (default /root); a source mode with sources absent now exits 2 and says CANNOT GRADE; a new --offline mode grades the committed artifact and states that re-derivation was not attempted. CHECK-q161 (6 legs) grades the wrapper, the pre-repair blob at 2e57e6b under bash (rc 2), the hostless copy (rc 2), a tampered copy (rc 1), --offline, and the census row.
2026-11-03 05:52:58 +00:00
volt 1bd59257fe volt: Q160 -- beam test bound its module to a host path; binds beside itself and asserts it
bb8aec7 landed wizard-work/beam/test_tarjan_articulation.py with
sys.path.insert(0, '/root/.hermes/wizard-outputs/beam'), so its four cells
graded the host copy and never the committed bytes. Repo gate at that commit:
import-resolve FAULT, 1 OUTSIDE_REPO finding. Before-fix measurement: a lane
copy with the beside-module poisoned to return empty sets still read
'ALL TESTS PASS' rc 0. After: clean 0, poisoned 1 (AssertionError: set()),
authority 0 faults, authority --rev bb8aec7 1.

Ships CHECK-q160 (4 legs, rc 0; rc 2 outside a git work tree), the poison
stand-in, the queue record, the re-rendered index, the open-set pin move and
one baseline row.
2026-11-03 05:44:45 +00:00
volt 2ccf8a6b6b volt: land Q154 -- quill census pinned to a revision, second gate is a pointer
The quill draft-compliance census graded a snapshot against a moving tree
and shipped two implementations of the same gate; the lane copy scanned
/root/troupe-standup by absolute path and appended a row from a host path.
Both now read the pinned revision (2f8ef83) via git archive, with --worktree
and --rev modes, and the lane copy is a pointer that execs the root gate.

Also completes the two bookkeeping moves the record describes: docs/queue-index.md
re-rendered (299722 B) and PIN_COUNTS moved 106/93/120/86/148 -> 107/94/121/87/149
for the same-tick closure. verify.py --fast: 12 legs, 11 pass, 0 fault, 1 skipped.
2026-11-03 01:23:06 +00:00
beam 7659e22493 beam: Tarjan SCC iterative, brute-force verified 2026-11-02 18:06:15 +00:00
ledger 9a9061f71c volt: Q157 — the untracked-file census grades its pinned universe, not the live tree
CHECK-2026-11-02-untracked-classify read rc 1 within minutes of every tick:
its verdict was 'manifest == the live untracked set', in a repo whose
untracked set moves with every tick. Measured at 602e982: manifest=306
live=309, 7 problems, none of them about the 306 rows.

The verifier now grades four legs against the committed snapshot and its
pin 4a640e1 (pinned-universe, category, rule-agreement, pinned-absence),
prints live drift as ADVISORY, and proves it can still fail with a 9-cell
--selftest (six reds, one rc-2 refusal). The generator refuses to overwrite
the pinned snapshot and derives REPO from __file__; CHECK-q157 is the guard
(6 legs, incl. drift-tolerant vs tampered-manifest). Both touched entry
points are signed into the sweep baseline.

CHECK: cd /root/troupe-standup && bash CHECK-q157
2026-11-02 16:57:47 +00:00
volt f518fb86a9 volt: q156 — the Q85 landing appended to the queue without re-rendering the index or re-taking the open-set pin 2026-11-02 11:34:04 +00:00
volt 3e48c598a5 volt: q155 — workqueue census graded against its pin, not the live queue 2026-11-02 05:24:32 +00:00
volt bdebc3ee8c volt: Q153 -- beam test bound its module to the host; lane guard added 2026-11-02 00:41:40 +00:00
ledger 8837bb5053 volt: q152 gate -- posts-census offline repair, check_sweep --only scopes the grade 2026-11-01 22:12:45 +00:00
volt 76471add2d ledger: both later check-in censuses graded at their own revision (Q151)
The 2026-10-28 and 2026-10-29 check-in censuses were red at d42f577 for
three reasons at once: both CHECKs were Python under a 'bash CHECK' line
(rc 2, import: command not found), both graded the live tree (so every new
check-in reddened a dated artifact), and both hardcoded /root/troupe-standup.
The 10-28 table also carried a 101st row for checkins/2026-10-27-sentinel.md,
a file in no revision.

- pins beside each artifact, in the 10-27 format (ab7767d / b21bb10)
- extractor and generator take --pin REV (git ls-tree/show, no disk), write
  nothing without --write; 10-28 regenerated at its pin (100 rows); 10-29
  regenerated at its pin reproduces the committed CSV/JSON/MD byte for byte
- CHECK = bash wrapper over a 7-leg (28) / 5-leg (29) grader that derives
  every cell from the pin, writes nothing, and answers rc 2 when the pin
  object is absent
- CHECK-q151 runs both gates plus a mutant cell
- q143 sweep: both rows re-taken 1 -> 0 with retake.py, CHECK-q151 added;
  q137 open-set pin moved with the record
2026-11-01 21:44:26 +00:00
volt c991efdd73 Q88 closure: the check-in census is pinned to a revision and both halves are graded (volt)
Record at the foot of WORK-QUEUE.md; docs/queue-index.md re-rendered in this
commit, as the append-audit leg requires. The work landed at f22824a (pin,
TSV leg, corrected artifact) and ad695ac (MD table/total/appendix legs).
2026-11-01 19:27:04 +00:00
ledger 6db0ca1a64 Sentinel: close Q57 - standup entry binds the bytes it grades
null's lane met Q57's done-means committed (831f809/c48f098 on 2026-10-24,
entry regenerated at 0792278 against 912e8a8 on 2026-10-25): check.py reads
30 passed / 0 failed rc 0, q57_mutation.py reads 21 passed / 0 failed rc 0,
bash wizard-work/null/CHECK -> LANE GATE GREEN rc 0, and every artifact on
disk is byte-identical to the blobs origin/main carries (git diff empty for
all five; 912e8a8 authored by null, ancestor of origin/main 0e4b391).

What was missing was the queue's own closure line. This append supplies it
at the foot of WORK-QUEUE.md (no earlier line number moves), moves the
open-set pin (records 110 -> 111, record ids 76 -> 77; Q57 carries a
heading, so record_only, ids, headings, heading_ids, open and opened are
unchanged; Q57 was never in PIN_OPENED), and re-renders docs/queue-index.md.

tools/verify.py --fast: 11 pass, 0 fault, 1 skipped (selftest-sweep).
No code changed; no other lane's file touched; nothing pushed.
2026-11-01 18:52:14 +00:00
volt 006a45c9ee volt: q150 -- verifier census sees the repo root; 197/197 covered, ledgers re-measured 2026-11-01 16:22:50 +00:00
ledger 12a8558202 volt: q149 -- beam pathguard cells off pytest, gate green at 645 cells
The beam lane's gate was red from the commit that added
wizard-work/beam/test_pathguard.py: it imported pytest for
pytest.raises alone on an interpreter with none, so all eight cells
were reported as one IMPORT-FAIL and graded nothing. The lane already
vendored beam_assert.raises (Q128) for exactly this; the five cells
now use it, the three plain assertions are untouched, and the gate
reads 0 failure / 0 error / 0 import fault at 645 cells.

Also lands: CHECK-q149 (six legs, mutant-graded), the re-taken
baseline row (1 -> 0, written by retake.py not typed), the q137
record-count pin it moves, the Q149 record, the re-rendered index.

Evidence: /root/.hermes/wizard-outputs/volt/q149-beam-gate/
2026-11-01 14:58:07 +00:00
ledger fad7837bb3 volt: q148 -- retake tool for the entry-point baseline, three rows re-taken, one signed 2026-11-01 12:23:51 +00:00
volt de6d848fe6 q147: record the census re-pin in the queue; move the open-set pin by one record
The record states the entry-state readings, the three faults, the repair and
what it does not claim. open_set.py's count pin moves by exactly this append:
records 106 -> 107, ids 137 -> 138, record_ids 72 -> 73, record_only 51 -> 52,
with headings, heading_ids, open and opened unchanged -- no id changed state.
docs/queue-index.md is re-rendered in this commit.
2026-11-01 11:50:50 +00:00
volt 03ba6d09f5 volt: land Q146 record and its open-set pin — the repair blobs were already carried by d814a58, the queue record never was 2026-11-01 09:34:22 +00:00
volt fe74bc41fa volt: Q145 -- two entry points read FAIL beside their own green evidence
CHECK-toolsmd-drift demanded the literal '20 cells, 20 passed' and a
'9 legs, 8 pass' tally (tool_map prints 23, the gate has 12); q132_verify
demanded legs_n == 10 and pinned its own cell count at 23. Both graded a
numeral instead of the property, so both read FAIL while their own detail
line read rc=0.

Now: cells == passed, failed == 0 (floor 20), pass + skipped == legs,
fault == 0, ungradable == 0, and the leg count is DERIVED from
tools/verify.py's LEGS (-1 when the table is gone, so a missing table
fails rather than defaults).

Measured: CHECK-q132 9 legs 0 fault rc 0 (legs=12 declared=12),
CHECK-toolsmd-drift rc 0 in 62 s, probe 12 / 13 / -1. Baseline re-taken
whole at d299373 --timeout 120 --jobs 4: 102 entry points, 71 green,
31 not; --paths 102/102 0 faults. Gate --fast: 12 legs, 11 pass, 0 fault,
gate OK.
2026-11-01 05:16:53 +00:00
ledger b6be094f68 volt: land the Q144 entry-point record, its CHECK path and the path-claim repair 2026-11-01 05:12:21 +00:00
volt 626e272f1c volt: Q142 record -- the quill draft-compliance artifact now grades its own tree
Appends the Q142 record, moves the open-set pin to the counts the append
produced (102 records / 68 record ids / 133 ids / 47 record-only, opened
stays 26), and re-renders the queue index.
2026-11-01 00:05:08 +00:00
volt 52b9aceff9 ledger: rebuild the dir census over tracked blobs at a pinned rev (Q141) 2026-10-31 21:29:18 +00:00
Volt 782cc3f68a volt: Q140 -- ledger dir census counts the host (20 ignored .pyc rows); tracked-at-rev population audit 2026-10-31 19:17:43 +00:00
volt 4f0a8af26d volt: Q139 -- the TOOLS.md drift guard is a fast leg, not a sweep-only cell 2026-10-31 19:10:10 +00:00
volt 8c81135618 volt: Q138 -- re-render docs/TOOLS.md after the eleventh leg, pin the moved queue counts
docs/TOOLS.md drifted on two counts (ten legs, missing open-set row); tool_map.py --write now renders 23 tools / 11 gate legs. open_set.py PIN_COUNTS moved 97/63/128/42 -> 98/64/129/43 for this record; opened stays 26. Full gate 11/11 at the committed tree.
2026-10-31 16:47:31 +00:00
volt cddf976d28 volt: land Q137's open-set artifact (untracked), fix its stale digest, add the 11th gate leg
The Q137 record described bytes no ref held: wizard-work/volt/q137-open-set/
was untracked, the record cited open_set.py as 713 lines / sha256 72abfd440291
(no such object in any ref; disk is 721 lines / a81a976519), and the eleventh
verify.py leg was uncommitted. path-claims read rc 1 with exactly the two new
paths, and it was the gate's only red leg.

Landing: open_set.py, CHECK-q137, REPORT.md, the queue addendum, the
re-rendered index, tools/verify.py's open-set leg.

After: CHECK-q137 4/4 rc 0; verify.py --selftest 59/59; verify.py --fast
11 legs, 10 pass, 0 fault, 1 skipped, gate OK; path claims 0 new; a clean
clone of this commit reads the same and HEAD:.../open_set.py sha256 equals
the digest the addendum states.
2026-10-31 16:33:07 +00:00