Compare commits

...
2 Commits
9 changed files with 659 additions and 9 deletions

No files matched your search

+152
View File
@@ -0,0 +1,152 @@
#!/usr/bin/env python3
"""Independent verification for the 2026-10-31 workqueue-census artifact.
RE-APPROACH: this checker does NOT import the extractor. It re-derives the
expected rows from WORK-QUEUE.md with plain string operations (split on the
first " — ", check the leading "Q<n>", strip trailing notes); the committed TSV
is the artifact of record. The verdict is the script's exit code: 0 = correct,
1 = a check failed, 2 = could not grade.
Run: cd wizard-work/ledger/2026-10-31-workqueue-census && python3 CHECK
"""
import csv
import json
import os
import re
import sys
from datetime import datetime, timezone
HERE = os.path.dirname(os.path.abspath(__file__))
REPO_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(HERE)))
SRC = os.path.join(REPO_ROOT, "WORK-QUEUE.md")
TSV_NAME = "workqueue-census.tsv"
MANIFEST_NAME = "extract_manifest.json"
STALE = "2026-10-28T00:00:00Z"
TS_FMT = "%Y-%m-%dT%H:%M:%SZ"
# Independent derivation: split on the FIRST " — ", keep the token that is
# "Q<n>" followed by digits. This is a different code path from the extractor's
# HEADING_RE regex, so agreement is a real cross-check, not a shared import.
SEP = "\u2014"
def rederive(src_path):
golden = []
qid, title = None, ""
with open(src_path, encoding="utf-8") as fh:
lines = fh.read().splitlines()
for line in lines:
if not line.startswith("## "):
continue
rest = line[3:].strip()
if " \u2014 " not in rest:
continue
pid, _, t = rest.partition(" \u2014 ")
if not (pid.startswith("Q") and pid[1:].isdigit()):
continue
# strip trailing "*(notes)*" exactly as the extractor does
t = re.sub(r"\s*\*.*$", "", t).strip()
if qid is not None:
golden.append((qid, title))
qid, title = pid[1:], t
if qid is not None:
golden.append((qid, title))
return golden
def _read_tsv(path):
with open(path, encoding="utf-8", newline="") as fh:
return list(csv.reader(fh, delimiter="\t"))
def main():
fails = []
def check(name, cond, detail=""):
print(("PASS " if cond else "FAIL ") + name + ("" if cond else " " + repr(detail)))
if not cond:
fails.append(name)
# --- source exists and is readable -------------------------------------
try:
src_text = open(SRC, encoding="utf-8").read()
except OSError as exc:
check("source WORK-QUEUE.md readable", False, repr(exc))
print("\ncould not read source: %s" % exc)
return 2
check("source WORK-QUEUE.md readable", True)
# --- golden re-derivation ----------------------------------------------
golden = rederive(SRC)
# --- committed TSV ------------------------------------------------------
tsv_path = os.path.join(HERE, TSV_NAME)
try:
rows = _read_tsv(tsv_path)
except OSError as exc:
check("committed TSV readable", False, repr(exc))
print("\nmissing committed TSV: %s" % exc)
return 2
header, committed = rows[0], rows[1:]
check("tsv header", header == ["Q", "Title", "Status", "Target"], repr(header))
check("row count",
len(committed) == len(golden),
"committed=%d golden=%d" % (len(committed), len(golden)))
mism = [k for k, (c, g) in enumerate(zip(committed, golden))
if len(c) < 2 or c[0] != g[0] or c[1] != g[1]]
check("q+title identical to independent re-derive", not mism,
"first mismatch row %r" % (mism[0] if mism else None))
# --- cross-count: '## Q<n> —' headings on disk vs committed rows --------
headings = [ln for ln in src_text.splitlines()
if ln.startswith("## ") and (" \u2014 " in ln[3:])]
q_headings = [ln for ln in headings
if ln[3:].strip().split(" \u2014 ", 1)[0].startswith("Q")
and ln[3:].strip().split(" \u2014 ", 1)[0][1:].isdigit()]
check("'## Q<n> —' headings == committed rows",
len(q_headings) == len(committed),
"headings=%d rows=%d" % (len(q_headings), len(committed)))
# --- manifest -----------------------------------------------------------
manifest_path = os.path.join(HERE, MANIFEST_NAME)
try:
man = json.load(open(manifest_path, encoding="utf-8"))
except (OSError, ValueError) as exc:
check("manifest readable JSON", False, repr(exc))
man = {}
check("manifest.rows == rows", man.get("rows") == len(golden),
"manifest=%r actual=%d" % (man.get("rows"), len(golden)))
auto = man.get("extracted_at_utc", "")
check("manifest.extracted_at_utc present",
isinstance(auto, str) and auto, repr(auto))
parseable = False
if isinstance(auto, str) and auto:
try:
datetime.strptime(auto, TS_FMT).replace(tzinfo=timezone.utc)
parseable = True
except ValueError:
pass
check("manifest.extracted_at_utc parseable UTC", parseable, repr(auto))
check("manifest.extracted_at_utc not the stale constant", auto != STALE, repr(auto))
check("manifest.generated_by present", isinstance(man.get("generated_by"), str)
and man["generated_by"], repr(man.get("generated_by")))
# --- corruption ----------------------------------------------------------
empty = [r for r in committed if len(r) < 2 or not r[0] or not r[1]]
check("no empty q/title", not empty, repr(empty[:1]))
bad_tab = [r for r in committed if len(r) >= 3 and "\t" in r[2]]
check("status contains no literal tab", not bad_tab, repr(bad_tab[:1]))
bad_tab2 = [r for r in committed if len(r) >= 4 and "\t" in r[3]]
check("target contains no literal tab", not bad_tab2, repr(bad_tab2[:1]))
if fails:
print("\n%d check(s) FAILED" % len(fails))
return 1
print("\nALL CHECKS PASSED (%d rows, %d q-numbers, %d distinct)"
% (len(committed), len(set(q_headings)), len(set(q_headings))))
return 0
if __name__ == "__main__":
sys.exit(main())
@@ -0,0 +1,29 @@
# workqueue-census — 2026-10-31
Typed census of every numbered work-queue (Q) item in `WORK-QUEUE.md`.
## Artifact
`workqueue-census.tsv` — tab-separated, header `Q | Title | Status | Target`.
One row per Q item, sourced verbatim from the live `WORK-QUEUE.md` (88 rows;
`extracted_at_utc` pinned in `extract_manifest.json`).
## Rules (documented for the CHECK)
* A Q item is a line matching `^## Q<n> — <title>`.
* Trailing `*(notes)*` on the title is stripped.
* `Status` is the `**Status: ...` line in the item's body; `Target` is the first
backticked `recoveries|docs|checkins` file in the body.
* Duplicates (a Q opened twice, or re-opened) are emitted as separate rows,
exactly as they appear in the source.
## Reproduce / verify
```bash
python3 extract_workqueue_census.py # regenerate workqueue-census.tsv + manifest
python3 CHECK # independent re-derivation; exit 0 iff green
```
The CHECK re-derives the expected rows from `WORK-QUEUE.md` with its own
string-operation code path (does not import the extractor) and compares them to
the committed TSV. Exit code is the verdict: `0` = correct, nonzero = wrong.
@@ -0,0 +1,54 @@
#!/usr/bin/env python3
"""Build extract_manifest.json for the 2026-10-31 workqueue-census artifact.
Computes stats from the committed TSV + WORK-QUEUE.md source, stamps it with the
current UTC time, and writes extract_manifest.json next to this file.
"""
import json
import os
import re
import sys
from datetime import datetime, timezone
HERE = os.path.dirname(os.path.abspath(__file__))
SRC = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(HERE))), "WORK-QUEUE.md")
TSV = os.path.join(HERE, "workqueue-census.tsv")
OUT = os.path.join(HERE, "extract_manifest.json")
with open(TSV, encoding="utf-8", newline="") as fh:
lines = fh.read().splitlines()
header, committed = lines[0], [ln.split("\t") for ln in lines[1:]]
qvals = [r[0] for r in committed if len(r) >= 4]
distinct = sorted(set(qvals))
reopened = sorted(q for q in distinct if qvals.count(q) > 1)
status_counts = {}
target_covered = 0
for r in committed:
if len(r) < 4:
continue
status = r[2]
status_counts[status] = status_counts.get(status, 0) + 1
if r[3]:
target_covered += 1
stamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
man = {
"schema": "workqueue-census-v2",
"generated_by": "extract_workqueue_census.py @ " + stamp,
"source": "WORK-QUEUE.md (repo root, 13729 lines)",
"rows": len(committed),
"extracted_at_utc": stamp,
"distinct_q_labels": len(distinct),
"reopened_q_labels": reopened,
"status_counts": status_counts,
"target_covered_rows": target_covered,
}
with open(OUT, "w", encoding="utf-8") as fh:
json.dump(man, fh, indent=2)
print("rows:", man["rows"])
print("distinct labels:", man["distinct_q_labels"])
print("reopened:", man["reopened_q_labels"])
print("status_counts:", man["status_counts"])
print("target_covered_rows:", man["target_covered_rows"])
print("extracted_at_utc:", stamp)
print("wrote", OUT)
@@ -0,0 +1,95 @@
{
"schema": "workqueue-census-v2",
"generated_by": "extract_workqueue_census.py @ 2026-10-31T01:00:35Z",
"source": "WORK-QUEUE.md (repo root, 13729 lines)",
"rows": 88,
"extracted_at_utc": "2026-10-31T01:00:35Z",
"distinct_q_labels": 85,
"reopened_q_labels": [
"37",
"38",
"72"
],
"status_counts": {
"CLOSED \u2014 0/15 recovered, and every public avenue is now exhausted with receipts.**": 1,
"DONE \u2014 recovered.** `recoveries/dead-link.md` (`3ca3d3c`, zephyrus-sparkborn) found the `x.com` snapshot": 1,
"DONE \u2014 both passes complete (`2ebcbe7` pass 1, `6f31cde` pass 2, zephyrus-sparkborn; material `2118b3e`).": 1,
"DONE \u2014 `recoveries/falsification-pass.md` (`f50f052`, zephyrus-sparkborn), all three verdicts re-verified": 1,
"pilot CLOSED at `dcf91a1` (zephyrus-sparkborn), corrected at `9cc6879`; the full sweep is CLOSED at `f1fe38d` (2026-10-06) \u2014 91/91, 1,101 rows, verified independently from the published file. The one contested grade was ruled and applied by zephyrus at `f122f8e` (`082` clause 3 \u2192 `contradicted`) and both batch-8 one-liners landed in the same commit, so the item owes nothing further from him on": 1,
"re-scoped 2026-09-26 (reply 08 \u00a75) after a census, because as written it invites busywork.** Measured over": 1,
"DONE at `8bd0b09` (Merlin, 2026-10-08T17:28:47Z) \u2014 verified from this host figure by figure;": 1,
"satisfied for the 2026-09-25 cycle.** Zeph's three proposals (`2a0cb01`) are now queue items: the Q8": 1,
"unclaimed. Pre-verified by Timmy against the delivered files \u2014 record `recoveries/music-master-verification.md`": 1,
"COMPLETE 2026-10-10 (verified from raw sources; closure record below). Originally claimed by zephyrus-sparkborn at `3c9ad5b` (2026-10-07, `checkins/2026-10-07-zephyrus.md` \u00a73).": 1,
"DONE \u2014 `recoveries/ledger-date-closure.md`, Merlin, 2026-10-09. 8 / 8 resolved, all": 1,
"DONE \u2014 `recoveries/evidence-tier-audit.md`, Merlin, 2026-10-10. 18/18 `justified`, 0 `too": 1,
"** 1 of 8 has a decision and staged correction (`magazine-091`; reply 09 \u00a73), but its decided note carries": 1,
"DONE \u2014 finished by `616794c` (2026-09-26), then re-measured by a later run the same day instead of being": 1,
"DONE \u2014 2026-09-26 \u224819:05 UTC.** Fixed in `/root/.hermes/scripts/troupe_pipe_monitor.py` (outside this": 1,
"draft v0.1 landed `f29425a` (`career-lane/ats-gate-census-draft.md`, 2026-10-01; check-in `2f83e08`);": 1,
"": 10,
"RESOLVED \u2014 provisional (2026-10-06).**": 1,
"DONE \u2014 `recoveries/excerpt-placement-audit.md` (12,914 B) and `recoveries/excerpt-placement-rows.md`": 1,
"open and unclaimed. Opened by the pipe 2026-10-10** because Q12 closed at `67b892d` and the unclaimed": 1,
"DONE \u2014 `recoveries/named-source-liveness.md`, Merlin, 2026-10-10. 28 fetches \u2192 27 distinct": 1,
"DONE 2026-10-10 \u2014 `recoveries/named-source-liveness-unlinked.md` (Merlin), verified from the published file this tick (control plane).**": 1,
"open and unclaimed. Opened by the pipe 2026-10-10** because Q23 closed at `8b56abe` and the unclaimed": 1,
"DONE \u2014 `recoveries/prose-anchor-convention.md`, Merlin, 2026-10-10. Designed, prototyped and": 1,
"DONE \u2014 `recoveries/prose-anchor-hardening.md`, Merlin, 2026-10-10\u219211 (~00:20\u201300:24 UTC).": 1,
"DONE 2026-10-11 \u2014 `recoveries/render-site-coverage.md` (Merlin). 32 sites: 28 covered by fixture, 4 structural exclusions; 35 fixtures, every negative writes 0 files; the scope clause closed with option (a), all four token classes now pre-write; no-token build still byte-identical at `91ecf6bf`.**": 1,
"DONE 2026-10-11 \u2014 `recoveries/render-site-channels.md` (Merlin), scratch tree": 1,
"DONE 2026-10-11 \u2014 `recoveries/render-site-guards.md` (Merlin), scratch tree `/root/crucible/q29/`. 22 fixtures plus the control, every negative or escape claim measured against the emitted byte; the second guarantee stated in one sentence; one finding: an unguarded `int(sats)` can still leave a partial tree (2 files).**": 1,
"DONE at Merlin's Run 6 (2026-10-11 \u224813:19\u201313:35Z) \u2014 deliverable `recoveries/helm-collector-run.md`; the collector's entry point is executed, its destination is gated, and G8 asserts it.** The item's four steps: (1) the two safe legs run \u2014 `--dry-run --skip-tests` exit 0 / 15,187 B pure-JSON stdout and `--out <scratch>` exit 0 / 15,187 B, both with the live snapshot unchanged (`aa842b0f\u2026`); the two bodies are the same measurement (only `observed_at` clocks and one `rtt_seconds` differ, `q31-compare.py`). (2) **The destination rule: `SNAPSHOT_PATH` is gated behind an explicit `--deploy`** \u2014 the same shape as the renderer's `OUT_DEFAULT` gate, so both entry points now behave alike; `--dry-run` is never gated (it writes nothing), a scratch `--out` is the default expectation, and the live path (bare default *or* explicit `--out`, matched by `.resolve()`) is refused at exit 2 **before any collector runs** (0.13 s refusal vs ~1.9 s collect). Gated collector `60229227216fb4ab\u2026` (701 lines / 28,808 B). (3) **Gate G8 \u2014 the collector's CLI in a subprocess, 18 assertions** \u2192 `helm-selftest: 137 passed, 0 failed`, VERDICT: ALL GATES PASS; the gate discriminates (pre-gate `ee0b36a8\u2026` with `SNAPSHOT_PATH` patched to scratch writes its default bare; gated refuses). (4) **`email` UNREACHABLE is correct** \u2014 `himalaya` is ABSENT on PATH and both config paths are absent, so `collect_email()` fails closed with `himalaya unavailable: command not found: himalaya` and lands in `red_sources`, never `green`. **An incident, logged first in the deliverable \u00a76:** the first negative control ran the pre-gate revision bare against the live default and overwrote the live snapshot; restored byte-exact from a pre-run `snap-before.json` (`aa842b0f\u2026`, 14,039 B, mtime back to `2026-10-08T17:12:59.475780303Z`), and the control now patches `SNAPSHOT_PATH` before any run. **Nothing deployed** \u2014 the gated collector and G8 selftest are scratch-local in `/root/crucible/q31/`; the deployed `helm-collect.py` is unchanged at `ee0b36a8\u2026` and `helm-selftest.py` at `7ed1bca8\u2026` (still 119 passed). Adoption is a \u00a74 deploy decision, Alexander's, the same gate Q26\u2013Q30 state. Mercury's day-3 unit is Q31's first slice (the two safe legs); this run executed them first and Mercury's `/tmp/mercury-q31/` was empty at 13:29Z, so no duplication occurred \u2014 the unit is satisfied here and stays open for Mercury to land his own artifact.": 1,
"OPEN \u2014 named to the Helm lane**, ahead of the Q31 `cp` decision so that the gate that ships is the one that": 1,
"OPEN \u2014 named to the Helm lane.** A snapshot key rename touches every consumer of `evidence.source_path`": 1,
"DONE 2026-10-12 \u2014 `recoveries/helm-null-gate.md` (Merlin), scratch tree `/root/crucible/q34/`.**": 1,
"DONE \u2014 `recoveries/helm-precondition-gate.md` (8,261 B / sha256": 1,
"DONE \u2014 the rule holds, and the predicted transition arrived exactly as stated.** Measured at the first": 1,
"DONE \u2014 `recoveries/helm-behavioural-guard.md` (10,232 B), Merlin, 2026-10-12T06:5x\u201307:1xZ, this host.**": 1,
"the deliverable is verified and the item is DONE, and its protective claim is FALSIFIED. It is not adoptable as it stands.** Finished by `0776480` (guard + queue block + Run 4 check-in) and `4ed1da9` (landing evidence); verified from this host by reply 21, `replies/2026-10-12-to-merlin-21.md`.": 1,
"DONE \u2014 `recoveries/helm-destination-guard-fix.md` (12,253 B), Merlin, 2026-10-12, scratch tree `/root/crucible/q39/`. Fixed gate `9b09f328\u2026` (1,412 lines / 77,704 B, +309/\u221238 against Q38's `74aba348\u2026`); subject collector byte-identical at `4e45021d\u2026`; nothing deployed, no `cp` into `/root/.helm/bin/`, live snapshot `aa842b0f\u2026` delta 0 across every run.**": 1,
"DONE \u2014 `recoveries/helm-deployed-gate-admission.md` (5,633 B / sha256": 1,
"OPEN and claimed by the pipe (Merlin's \u00a7Next 2 read it correctly; it is this lane's tooling). Landed this tick:** the `branch-head` census line in `troupe_pipe_monitor.py` v1.3, sha256 `bb532da8c4f01b98eab4034ce74dc76b0e3939508bfd6cadd5d3d650020449f8`; v1.2 preserved at `/root/troupe-verify/q37/troupe_pipe_monitor.py.v1.2.bak` (`ce3950b5\u2026`), reversible with one `cp`; record `recoveries/monitor-identity-census.md`.": 1,
"DONE \u2014 `recoveries/helm-leg-sandbox.md` (13,561 B), Merlin, 2026-10-12. Scratch tree `/root/crucible/q43/`; nothing deployed, no `cp` into `/root/.helm/bin/`, `decisions/` and `inbox/` untouched.**": 1,
"DONE 2026-10-12 \u2014 `recoveries/helm-root-redirect.md` (Merlin, Helm lane); the closure block is at the foot": 1,
"DONE 2026-10-13 \u2014 `recoveries/helm-runtime-redirect.md` (Merlin, Helm lane), scratch tree": 1,
"open and unclaimed. Opened by the pipe 2026-10-13**, because the Helm lane's executable set is empty": 1,
"open and unclaimed. Opened by the pipe 2026-10-24; null's lane.**": 1,
"closed at `809466f` (2026-10-26, spark in sol's lane); the closure record sits at the foot of this file.** Opened by the pipe 2026-10-24.": 1,
"open and unclaimed. Beam's lane.**": 1,
"open and unclaimed.** Opened by the pipe 2026-10-24. Anyone's lane; zephyrus has first": 1,
"open and unclaimed.** Opened by the pipe 2026-10-24. beam's lane by authorship; anyone may take it.": 1,
"open and unclaimed.** No lane owns it by authorship; anyone may take it, one file per commit.": 1,
"open and unclaimed.** No lane owns it; anyone may take it, one file per commit.": 1,
"closed at `2d6cf69` (2026-10-26, beam); the closure record sits at the foot of this file.** Beam's lane by authorship; the remedy was one assertion,": 1,
"open and unclaimed.** Forge's lane by authorship; the remedy is four small edits": 1,
"closed at `5a43291` (volt, 2026-10-25); the closure record sits at the foot of this file.** Beam's lane by authorship; anyone may take it. Done means: `edges`": 1,
"open and unclaimed.** One file per commit, each needing the repo-relative-or-stated decision; `wizard-work/ledger` is the entry to take first because its artifact is otherwise correct and its gate is the one measured green-on-wrong.": 1,
"closed at `12f956a` (volt, 2026-10-26) \u2014 closure record at the foot of this file.** Beam's lane by authorship; anyone may take it. Evidence: `replies/2026-10-25-to-zephyrus-102.md` \u00a72; probes `/root/.hermes/cache/scratch/trie_probe.py`; clone `/root/tcheck-q68` at `dbc2c4f`. Nothing from `inbox/` is quoted. No other lane's file was edited.": 1,
"closed at `b9e3780` and the closure commit (volt, 2026-10-25); the closure record sits at the foot of this file.** Ledger's lane by authorship; anyone may take it. Evidence: `replies/2026-10-25-to-zephyrus-102.md` \u00a73; response body retained at `/tmp/torvalds.json` on this host (re-fetchable, one request). Nothing from `inbox/` is quoted. No other lane's file was edited.": 1,
"open and unclaimed.** Sphinx's lane by authorship; anyone may take it. Evidence: `replies/2026-10-26-to-zephyrus-104.md` \u00a72\u2013\u00a73; clone `/root/.hermes/cache/scratch/lcmm-v2` at `d6a9253`; mutation harness `/root/.hermes/cache/scratch/lcmm_mut.py` with trees `lcmm-mut/{A_drop3,B_swap,C_role,D_fig}`; independent claim/byte check `lcmm_indep.py`; verifier log `lc-verify.log` (169 lines), battery log `lc-mut.log`; error bodies `atom-live.xml` (14 B), `atom-full-live.xml` (126 B). Nothing from `inbox/` is quoted. No other lane's file was edited.": 1,
"open and unclaimed.** Sphinx's lane by authorship; anyone may take it. Evidence: `replies/2026-10-26-to-zephyrus-105.md` \u00a72\u2013\u00a73; export `/root/.hermes/cache/scratch/lcx1/cloneA`; verify log `lcx1/verify_full.txt`; live re-fetch `lcx1/live_ids.xml` (403,802 B); harness `lcx1/mut.py`, trees `lcx1/mut/{A_prose_number,B_claim_prose,C_readme,D_quote_unclaimed,E_drop_papers,F_swap_quotes,H_fabricated}`, log `lcx1/mut_log.txt`. Nothing from `inbox/` is quoted. No other lane's file was edited.": 1,
"open and unclaimed.** Sol's lane by authorship; anyone may take it. Evidence: export `/root/.hermes/cache/scratch/q58x` (`git archive 809466f`, no `.git`), fixtures `q58x/fix`, transcripts of the four runs in the Q58 closure record above. Nothing from `inbox/` is quoted. No other lane's file was edited.": 1,
"open and unclaimed.** Ledger's lane by authorship; anyone may take it. Evidence: readback of both files in Python against an `os.walk` of `/root/troupe-standup/wizard-work` at 2026-10-26 \u224809:30Z, `check_ledger_extract.py` rc 0, `grep -rn CHECK-wizardwork-census` (one hit, the docstring). Ledger's files by authorship; read, not edited. Nothing from `inbox/` is quoted. No other lane's file was edited.": 1,
"open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 110 \u00a71\u2013\u00a73; export `/root/.hermes/cache/scratch/t110/export` (`c3ce8dd`) and `\u2026/t110/pre` (`c3ce8dd^`); transcripts `/tmp/t110_check_masked_after.txt` and `\u2026_masked_pre.txt` (rc 0, `Ran 151 tests`, both), `/tmp/t110_check_after.txt` and `\u2026_pre.txt` (rc 1, ImportError at line 29); mutant battery `t110/mut.py` \u2192 `t110mut/` (8 trees, 8 killed); oracles `t110/fuzz.py`, `t110/fuzz2.py`. Nothing from `inbox/` is quoted. No other lane's file was edited.": 1,
"open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 112 \u00a71; lane": 1,
"open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 116 \u00a72\u2013\u00a74;": 1,
"open and unclaimed.** Spark's lane by authorship; anyone may take it. Evidence: reply 118 \u00a71\u2013\u00a73,": 1,
"open and unclaimed.** Spark's lane by authorship. Evidence: reply 118 \u00a74; probes": 1,
"open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: measured at": 1,
"open and unclaimed.** Spark's lane by authorship. Evidence: reply 119 \u00a72; mutants and behaviour probes `/root/.hermes/wizard-outputs/ledger/q81_mutants_mine.py` (13 trees, incl. the M0\u2013M8 reproduction) and `/root/.hermes/wizard-outputs/ledger/q81_survivor_probe.py` (the five rows, baseline rc vs mutant rc vs suite rc), results `/root/.hermes/wizard-outputs/ledger/q81-mutant-battery-mine.json`. Nothing from `inbox/` is quoted; no file another party authored was edited.": 1,
"open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 120 \u00a71\u2013\u00a73;": 1,
"open and unclaimed.** Beam's lane by authorship. Evidence: reply 121 \u00a73\u2013\u00a74; independent checks `/root/.hermes/cache/scratch/q83m9/` (the Q83 M9 mutant tree) and the reply-121 scripts in this repo's history. Nothing from `inbox/` is quoted; no file another party authored was edited.": 1,
"DONE at `802a1ae`; this line and the two items appended at the end of this file (Q89, Q90) land in the commits above it.** The opening `Status: open and unclaimed.` line and reply 124's \"four of six files remain\" are left standing, append-only; both are stale as of `802a1ae` and this line supersedes them. Re-measured by the pipe at `6e9aeee`, not read off volt's transcript: probe pair **14/14**, dump pair **14/14**, pending pair **13/13**, all rc 0; `grep -c '/root/troupe-standup/inbox'` across the six files **`0, 0, 0, 1, 1, 1`**, the three survivors being the harnesses' `HOST_SEED_LITERAL` (used only to assert the *original* keeps the smell); my own M6 on `_triage_probe_refactored.py` in a scratch clone \u2192 **13/14, rc 1**, `FAIL: static io-call(s) at module scope: [(57, 'json.load'), (57, 'open')]`. **The residual is not closed and is not a re-opening of this item:** the detector is a static name list (`verify_triage_probe_refactor.py:404-407`) plus a `builtins.open` spy, so a module-scope `Path(...).read_text()` appended to the refactored module still returns **14/14, rc 0** with `OK: no import-time I/O` \u2014 filed as Q89, because this item's own done-means (builtins.open wrapper *or* AST walk of the module body) is met by `802a1ae` and moving its goalposts now would be a different item wearing the old number.": 1,
"open and unclaimed.** Forge's lane by authorship; anyone may take it. Evidence: reply 21 \u00a74; `ls wizard-work/forge/verify_*.py | wc -l` = 34, `ls wizard-work/forge/CHECK` = absent, at `431bca1`. Nothing from `inbox/` is quoted.": 1,
"open and unclaimed.** Ledger's lane by authorship; anyone may take it. Evidence: reply 122 \u00a72; scratch tree `/tmp/censusbomb` (copy, CHECK re-run at `b0a2886`, both measurements above). Nothing from `inbox/` is quoted; no file another party authored was edited.": 1,
"open and unclaimed.** Forge's lane by authorship; anyone may take it. Evidence: reply 125 \u00a70 and \u00a71; scratch clone `/tmp/q86evade` (both evasions above, run from a copy, no repo file edited). Nothing from `inbox/` is quoted.": 1,
"open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 125 \u00a71; scratch dirs `/root/.hermes/cache/scratch/beamguard/` (the five variant table) and the `/tmp/tmp*` decoy/symlink constructions in that reply; gate counts measured at `6e9aeee` in the worktree. Nothing from `inbox/` is quoted; no file another party authored was edited.": 1,
"open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 130 \u00a74; the exhaustive sweep and the import count are re-runnable as written there. Nothing from `inbox/` is quoted; no file another party authored was edited.": 1,
"open and unclaimed.** Zeph's lane by authorship; anyone may take it. Evidence: reply 130 \u00a71 probes C and D, `/root/.hermes/cache/scratch/q60probe/`. Nothing from `inbox/` is quoted.": 1,
"open and unclaimed.** Anyone may take it; the shape is `tools/selftest_sweep.py`'s and forge's lane by authorship, so it goes to forge first if forge wants it.": 1,
"open and unclaimed.** Beam's lane by authorship for the first row, spark's for the next five, ledger's for the last; anyone may take it, and a scan cell is the point rather than seven edits.": 1,
"open and unclaimed.** Opened after reply 15's consolidation request (2026-10-22, `62e3f33`) went six days without a contract behind it; this item is that contract. Reply 15 named five word counters plus `file_analyzer.py`; the population went up, not down.": 1
},
"target_covered_rows": 57
}
@@ -0,0 +1,81 @@
#!/usr/bin/env python3
"""Extract a structured census of every numbered work-queue (Q) item from WORK-QUEUE.md.
Artifact columns: Q | Title | Status | Target
Rule (documented for the CHECK): a Q item is a line matching
^## Q<n> — <title>
where <title> may carry a trailing "*(notes)*" which is stripped. Status and
Target are the **Status: ... and the first backticked recoveries/docs/checkins
file referenced within the item's body. Duplicates (the same Q number opened
twice, or re-opened) are emitted as separate rows, exactly as-is in the source.
"""
import json
import os
import re
import sys
HERE = os.path.dirname(os.path.abspath(__file__))
REPO_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(HERE)))
SRC = os.path.join(REPO_ROOT, "WORK-QUEUE.md")
OUT_DIR = HERE
TSV_NAME = "workqueue-census.tsv"
MANIFEST_NAME = "extract_manifest.json"
HEADING_RE = re.compile(r"^## Q(\d+) — (.*)$")
STATUS_RE = re.compile(r"^\*\*Status:(.*)$")
TARGET_RE = re.compile(
r"`(recoveries/[A-Za-z0-9._-]+\.md|docs/[A-Za-z0-9._-]+\.md|checkins/[A-Za-z0-9._-]+\.md)`"
)
NOTE_RE = re.compile(r"\s*\*.*$")
def strip_note(title):
return NOTE_RE.sub("", title).strip()
def extract(src):
with open(src, encoding="utf-8") as fh:
lines = fh.read().splitlines()
rows = []
i, n = 0, len(lines)
while i < n:
m = HEADING_RE.match(lines[i])
if m:
q = m.group(1)
title = strip_note(m.group(2))
status, target = "", ""
j = i + 1
while j < n:
line = lines[j]
sm = STATUS_RE.match(line)
if sm and not status:
status = sm.group(1).strip()
tm = TARGET_RE.search(line)
if tm and not target:
target = tm.group(1)
if status and target:
break
j += 1
if lines[j].startswith("## "):
break
rows.append((q, title, status, target))
i = j
continue
i += 1
return rows
def main():
rows = extract(SRC)
os.makedirs(OUT_DIR, exist_ok=True)
with open(os.path.join(OUT_DIR, TSV_NAME), "w", encoding="utf-8", newline="") as fh:
fh.write("Q\tTitle\tStatus\tTarget\n")
for q, title, status, target in rows:
fh.write(f"{q}\t{title}\t{status}\t{target}\n")
print(f"rows: {len(rows)}")
print(f"written: {os.path.join(OUT_DIR, TSV_NAME)}")
if __name__ == "__main__":
sys.exit(main())
@@ -0,0 +1,89 @@
Q Title Status Target
1 Recover the fifteen silent rooms CLOSED — 0/15 recovered, and every public avenue is now exhausted with receipts.** recoveries/silent-rooms.md
2 Chase the one dead link DONE — recovered.** `recoveries/dead-link.md` (`3ca3d3c`, zephyrus-sparkborn) found the `x.com` snapshot recoveries/dead-link.md
3 Independent audit of the published ledger DONE — both passes complete (`2ebcbe7` pass 1, `6f31cde` pass 2, zephyrus-sparkborn; material `2118b3e`). recoveries/ledger-link-inventory.md
4 Falsification pass DONE — `recoveries/falsification-pass.md` (`f50f052`, zephyrus-sparkborn), all three verdicts re-verified recoveries/falsification-pass.md
8 Summary fidelity: does each entry's machine-written summary overstate its article? pilot CLOSED at `dcf91a1` (zephyrus-sparkborn), corrected at `9cc6879`; the full sweep is CLOSED at `f1fe38d` (2026-10-06) — 91/91, 1,101 rows, verified independently from the published file. The one contested grade was ruled and applied by zephyrus at `f122f8e` (`082` clause 3 → `contradicted`) and both batch-8 one-liners landed in the same commit, so the item owes nothing further from him on recoveries/quote-fidelity-live.md
5 Issue triage in the organisation's public repos re-scoped 2026-09-26 (reply 08 §5) after a census, because as written it invites busywork.** Measured over checkins/2026-10-07-cassian-q5-recount.md
6 A public guide to checking this archive DONE at `8bd0b09` (Merlin, 2026-10-08T17:28:47Z) — verified from this host figure by figure; docs/how-to-check-this-archive.md
7 Propose the next items satisfied for the 2026-09-25 cycle.** Zeph's three proposals (`2a0cb01`) are now queue items: the Q8 checkins/2026-10-01-zephyrus.md
9 Independent QC of the sovereign music candidates unclaimed. Pre-verified by Timmy against the delivered files — record `recoveries/music-master-verification.md` recoveries/music-master-verification.md
10 Summary fidelity for the non-magazine entries COMPLETE 2026-10-10 (verified from raw sources; closure record below). Originally claimed by zephyrus-sparkborn at `3c9ad5b` (2026-10-07, `checkins/2026-10-07-zephyrus.md` §3). recoveries/summary-fidelity-nonmagazine.md
11 Close the eight pass-2 date mismatches DONE — `recoveries/ledger-date-closure.md`, Merlin, 2026-10-09. 8 / 8 resolved, all recoveries/ledger-audit-pass2.md
12 Are the evidence tiers earned? DONE — `recoveries/evidence-tier-audit.md`, Merlin, 2026-10-10. 18/18 `justified`, 0 `too recoveries/evidence-tier-audit.md
13 Publish the archive-side wording fixes, one at a time ** 1 of 8 has a decision and staged correction (`magazine-091`; reply 09 §3), but its decided note carries
14 Put the Inbox on `alexanderwhitestone.com` behind a gate DONE — finished by `616794c` (2026-09-26), then re-measured by a later run the same day instead of being
15 Stop the monitor from waking on the pipe's own writes DONE — 2026-09-26 ≈19:05 UTC.** Fixed in `/root/.hermes/scripts/troupe_pipe_monitor.py` (outside this checkins/README.md
16 Per-platform ATS gate census draft v0.1 landed `f29425a` (`career-lane/ats-gate-census-draft.md`, 2026-10-01; check-in `2f83e08`); checkins/2026-10-02-zephyrus-01.md
17 Employer-side AI-authorship refusal gates checkins/2026-10-03-zephyrus-03.md
18 Employer-side lead intake must be deduped against the prepared index checkins/2026-10-05-zephyrus.md
19 Three proposed members (local Mac wizard, Grok, Mistral) RESOLVED — provisional (2026-10-06).** checkins/2026-10-06-zephyrus-wizards.md
20 Excerpt fidelity and placement for the 91 magazine entries DONE — `recoveries/excerpt-placement-audit.md` (12,914 B) and `recoveries/excerpt-placement-rows.md` recoveries/quote-fidelity-live.md
21 Does every quoted excerpt resolve at the URL it is printed against? open and unclaimed. Opened by the pipe 2026-10-10** because Q12 closed at `67b892d` and the unclaimed recoveries/excerpt-binding-audit.md
22 Do the named-but-unlinked sources resolve? DONE — `recoveries/named-source-liveness.md`, Merlin, 2026-10-10. 28 fetches → 27 distinct recoveries/named-source-liveness.md
23 The prose-named sources the `@` token rule cannot see DONE 2026-10-10 — `recoveries/named-source-liveness-unlinked.md` (Merlin), verified from the published file this tick (control plane).** recoveries/named-source-liveness-unlinked.md
24 The Q13 fix pack: stage every verified live-page fix as one reviewable approval open and unclaimed. Opened by the pipe 2026-10-10** because Q23 closed at `8b56abe` and the unclaimed recoveries/evidence-tier-audit.md
25 A prose-anchor convention for the ledger build DONE — `recoveries/prose-anchor-convention.md`, Merlin, 2026-10-10. Designed, prototyped and recoveries/prose-anchor-convention.md
26 Make the silent token classes loud, and measure the fifth slot DONE — `recoveries/prose-anchor-hardening.md`, Merlin, 2026-10-10→11 (~00:20–00:24 UTC). recoveries/prose-anchor-hardening.md
27 A fixture at every render site: make the token sentinel's coverage total DONE 2026-10-11 — `recoveries/render-site-coverage.md` (Merlin). 32 sites: 28 covered by fixture, 4 structural exclusions; 35 fixtures, every negative writes 0 files; the scope clause closed with option (a), all four token classes now pre-write; no-token build still byte-identical at `91ecf6bf`.** recoveries/render-site-coverage.md
28 The channels the entry walk cannot see: state the guarantee, then cover what it cannot reach DONE 2026-10-11 — `recoveries/render-site-channels.md` (Merlin), scratch tree recoveries/render-site-channels.md
29 The guards that are not the walk: what protects a page when the value is not a token DONE 2026-10-11 — `recoveries/render-site-guards.md` (Merlin), scratch tree `/root/crucible/q29/`. 22 fixtures plus the control, every negative or escape claim measured against the emitted byte; the second guarantee stated in one sentence; one finding: an unguarded `int(sats)` can still leave a partial tree (2 files).** recoveries/render-site-guards.md
30 The renderer's entry point: the one path no gate executes recoveries/helm-render-aging.md
31 The collector's entry point: the sibling path no gate has executed either DONE at Merlin's Run 6 (2026-10-11 ≈13:19–13:35Z) — deliverable `recoveries/helm-collector-run.md`; the collector's entry point is executed, its destination is gated, and G8 asserts it.** The item's four steps: (1) the two safe legs run — `--dry-run --skip-tests` exit 0 / 15,187 B pure-JSON stdout and `--out <scratch>` exit 0 / 15,187 B, both with the live snapshot unchanged (`aa842b0f…`); the two bodies are the same measurement (only `observed_at` clocks and one `rtt_seconds` differ, `q31-compare.py`). (2) **The destination rule: `SNAPSHOT_PATH` is gated behind an explicit `--deploy`** — the same shape as the renderer's `OUT_DEFAULT` gate, so both entry points now behave alike; `--dry-run` is never gated (it writes nothing), a scratch `--out` is the default expectation, and the live path (bare default *or* explicit `--out`, matched by `.resolve()`) is refused at exit 2 **before any collector runs** (0.13 s refusal vs ~1.9 s collect). Gated collector `60229227216fb4ab…` (701 lines / 28,808 B). (3) **Gate G8 — the collector's CLI in a subprocess, 18 assertions** → `helm-selftest: 137 passed, 0 failed`, VERDICT: ALL GATES PASS; the gate discriminates (pre-gate `ee0b36a8…` with `SNAPSHOT_PATH` patched to scratch writes its default bare; gated refuses). (4) **`email` UNREACHABLE is correct** — `himalaya` is ABSENT on PATH and both config paths are absent, so `collect_email()` fails closed with `himalaya unavailable: command not found: himalaya` and lands in `red_sources`, never `green`. **An incident, logged first in the deliverable §6:** the first negative control ran the pre-gate revision bare against the live default and overwrote the live snapshot; restored byte-exact from a pre-run `snap-before.json` (`aa842b0f…`, 14,039 B, mtime back to `2026-10-08T17:12:59.475780303Z`), and the control now patches `SNAPSHOT_PATH` before any run. **Nothing deployed** — the gated collector and G8 selftest are scratch-local in `/root/crucible/q31/`; the deployed `helm-collect.py` is unchanged at `ee0b36a8…` and `helm-selftest.py` at `7ed1bca8…` (still 119 passed). Adoption is a §4 deploy decision, Alexander's, the same gate Q26–Q30 state. Mercury's day-3 unit is Q31's first slice (the two safe legs); this run executed them first and Mercury's `/tmp/mercury-q31/` was empty at 13:29Z, so no duplication occurred — the unit is satisfied here and stays open for Mercury to land his own artifact. recoveries/helm-collector-run.md
32 The G8 two-run agreement check is nondeterministic: `age_seconds` is not scrubbed OPEN — named to the Helm lane**, ahead of the Q31 `cp` decision so that the gate that ships is the one that recoveries/helm-g8-scrub.md
33 Split the newest-file pointer out of `evidence.source_path` OPEN — named to the Helm lane.** A snapshot key rename touches every consumer of `evidence.source_path` recoveries/helm-g8-scrub.md
34 Gate the pointer's null case DONE 2026-10-12 — `recoveries/helm-null-gate.md` (Merlin), scratch tree `/root/crucible/q34/`.** recoveries/helm-null-gate.md
35 The gate must refuse a subject collector that carries no destination rule DONE — `recoveries/helm-precondition-gate.md` (8,261 B / sha256 recoveries/helm-precondition-gate.md
36 The monitor cannot see a counterparty write that carries this pipe's identity DONE — the rule holds, and the predicted transition arrived exactly as stated.** Measured at the first checkins/2026-10-12-merlin.md
37 The identity rule closes one class, not the class
38 The behavioural destination guard DONE — `recoveries/helm-behavioural-guard.md` (10,232 B), Merlin, 2026-10-12T06:5x–07:1xZ, this host.** recoveries/helm-behavioural-guard.md
38 The behavioural destination guard the deliverable is verified and the item is DONE, and its protective claim is FALSIFIED. It is not adoptable as it stands.** Finished by `0776480` (guard + queue block + Run 4 check-in) and `4ed1da9` (landing evidence); verified from this host by reply 21, `replies/2026-10-12-to-merlin-21.md`.
39 The Q38 guard's admission admits a writer, and its legs run the unrewritten subject DONE — `recoveries/helm-destination-guard-fix.md` (12,253 B), Merlin, 2026-10-12, scratch tree `/root/crucible/q39/`. Fixed gate `9b09f328…` (1,412 lines / 77,704 B, +309/−38 against Q38's `74aba348…`); subject collector byte-identical at `4e45021d…`; nothing deployed, no `cp` into `/root/.helm/bin/`, live snapshot `aa842b0f…` delta 0 across every run.** recoveries/helm-destination-guard-fix.md
40 the deployed gate admits all five negatives, and has no admission path at all DONE — `recoveries/helm-deployed-gate-admission.md` (5,633 B / sha256 recoveries/helm-deployed-gate-admission.md
37 claimed by this pipe; first increment landed (the v1.3 census) OPEN and claimed by the pipe (Merlin's §Next 2 read it correctly; it is this lane's tooling). Landed this tick:** the `branch-head` census line in `troupe_pipe_monitor.py` v1.3, sha256 `bb532da8c4f01b98eab4034ce74dc76b0e3939508bfd6cadd5d3d650020449f8`; v1.2 preserved at `/root/troupe-verify/q37/troupe_pipe_monitor.py.v1.2.bak` (`ce3950b5…`), reversible with one `cp`; record `recoveries/monitor-identity-census.md`. recoveries/monitor-identity-census.md
43 The legs run the rewritten subject: prevention, not detect-and-restore DONE — `recoveries/helm-leg-sandbox.md` (13,561 B), Merlin, 2026-10-12. Scratch tree `/root/crucible/q43/`; nothing deployed, no `cp` into `/root/.helm/bin/`, `decisions/` and `inbox/` untouched.** recoveries/helm-leg-sandbox.md
44 The pin class: redirect every constant composed from the live data root, not only `SNAPSHOT_PATH` DONE 2026-10-12 — `recoveries/helm-root-redirect.md` (Merlin, Helm lane); the closure block is at the foot recoveries/helm-root-redirect.md
48 The runtime-resolution redirect: close the class Q45's literals cannot see DONE 2026-10-13 — `recoveries/helm-runtime-redirect.md` (Merlin, Helm lane), scratch tree recoveries/helm-runtime-redirect.md
49 The runtime-resolved root's live write path: name it, reproduce it, then close it open and unclaimed. Opened by the pipe 2026-10-13**, because the Helm lane's executable set is empty recoveries/helm-resolved-root-live-path.md
57 Bind a standup entry to the bytes it grades open and unclaimed. Opened by the pipe 2026-10-24; null's lane.** docs/queue-index.md
58 The lane-activity instrument reads a surface that was retired on 2026-10-16 closed at `809466f` (2026-10-26, spark in sol's lane); the closure record sits at the foot of this file.** Opened by the pipe 2026-10-24.
59 beam's jump hash matches the C reference, and not one test would notice if it stopped open and unclaimed. Beam's lane.**
60 Every truncated identifier in the archive: which ones can still be checked open and unclaimed.** Opened by the pipe 2026-10-24. Anyone's lane; zephyrus has first checkins/2026-10-24-zephyrus.md
61 beam's `topo_sort` drops generator dependencies, and its gate imports a copy outside the repo open and unclaimed.** Opened by the pipe 2026-10-24. beam's lane by authorship; anyone may take it.
62 147 committed gates read `/root/.hermes/wizard-outputs`; two of them cannot pass from a clone open and unclaimed.** No lane owns it by authorship; anyone may take it, one file per commit.
63 Six committed verifiers print PASS while asserting nothing, and eight are run by no gate open and unclaimed.** No lane owns it; anyone may take it, one file per commit. docs/queue-index.md
66 beam's `search_count` advertises overlapping occurrences and no test would notice if it stopped closed at `2d6cf69` (2026-10-26, beam); the closure record sits at the foot of this file.** Beam's lane by authorship; the remedy was one assertion, docs/queue-index.md
67 forge's probe-refactor verifier certifies a refactor that restores the defect it removes open and unclaimed.** Forge's lane by authorship; the remedy is four small edits
68 beam's `topo_levels` drops a one-shot `edges` iterable, silently, and its new suite both certifies a host copy and takes the lane's gate down closed at `5a43291` (volt, 2026-10-25); the closure record sits at the foot of this file.** Beam's lane by authorship; anyone may take it. Done means: `edges` docs/queue-index.md
69 116 committed files under `wizard-work/` name the absolute path `/root/troupe-standup`, so 64 gates grade the author's working tree instead of the checkout they were asked about open and unclaimed.** One file per commit, each needing the repo-relative-or-stated decision; `wizard-work/ledger` is the entry to take first because its artifact is otherwise correct and its gate is the one measured green-on-wrong. docs/queue-index.md
70 beam's `test_trie.py` is invisible to the lane gate (73 new lines, 0 cells collected), and `count_prefix` is a lifetime insert counter that survives `delete` closed at `12f956a` (volt, 2026-10-26) — closure record at the foot of this file.** Beam's lane by authorship; anyone may take it. Evidence: `replies/2026-10-25-to-zephyrus-102.md` §2; probes `/root/.hermes/cache/scratch/trie_probe.py`; clone `/root/tcheck-q68` at `dbc2c4f`. Nothing from `inbox/` is quoted. No other lane's file was edited.
71 ledger's `commits-table.md` has no verifier, and row 4 writes `kernel_git` where the source URL has `kernel/git` closed at `b9e3780` and the closure commit (volt, 2026-10-25); the closure record sits at the foot of this file.** Ledger's lane by authorship; anyone may take it. Evidence: `replies/2026-10-25-to-zephyrus-102.md` §3; response body retained at `/tmp/torvalds.json` on this host (re-fetchable, one request). Nothing from `inbox/` is quoted. No other lane's file was edited. docs/queue-index.md
72 sphinx's lcmm ledger gates its quotations but not its population or its interpretations: two mutations of mine pass the verifier at 169/169 and 139/139 open and unclaimed.** Sphinx's lane by authorship; anyone may take it. Evidence: `replies/2026-10-26-to-zephyrus-104.md` §2–§3; clone `/root/.hermes/cache/scratch/lcmm-v2` at `d6a9253`; mutation harness `/root/.hermes/cache/scratch/lcmm_mut.py` with trees `lcmm-mut/{A_drop3,B_swap,C_role,D_fig}`; independent claim/byte check `lcmm_indep.py`; verifier log `lc-verify.log` (169 lines), battery log `lc-mut.log`; error bodies `atom-live.xml` (14 B), `atom-full-live.xml` (126 B). Nothing from `inbox/` is quoted. No other lane's file was edited. docs/queue-index.md
72 verified from this host by the pipe (2026-10-26, reply 105)
73 sphinx's longctx archive gates its numbers and its claim-scoped quotations, but not its prose numbers, its claim sentences, its README, or the quotations that carry no claim id open and unclaimed.** Sphinx's lane by authorship; anyone may take it. Evidence: `replies/2026-10-26-to-zephyrus-105.md` §2–§3; export `/root/.hermes/cache/scratch/lcx1/cloneA`; verify log `lcx1/verify_full.txt`; live re-fetch `lcx1/live_ids.xml` (403,802 B); harness `lcx1/mut.py`, trees `lcx1/mut/{A_prose_number,B_claim_prose,C_readme,D_quote_unclaimed,E_drop_papers,F_swap_quotes,H_fabricated}`, log `lcx1/mut_log.txt`. Nothing from `inbox/` is quoted. No other lane's file was edited. docs/queue-index.md
74 sol's triage CHECK certifies the host `_triage` copy and asserts today's freshness, so it cannot gate the committed artifact open and unclaimed.** Sol's lane by authorship; anyone may take it. Evidence: export `/root/.hermes/cache/scratch/q58x` (`git archive 809466f`, no `.git`), fixtures `q58x/fix`, transcripts of the four runs in the Q58 closure record above. Nothing from `inbox/` is quoted. No other lane's file was edited.
75 ledger's two census TSVs carry seven lines that are not rows and one path no file on disk has, and no gate in the lane can see either open and unclaimed.** Ledger's lane by authorship; anyone may take it. Evidence: readback of both files in Python against an `os.walk` of `/root/troupe-standup/wizard-work` at 2026-10-26 ≈09:30Z, `check_ledger_extract.py` rc 0, `grep -rn CHECK-wizardwork-census` (one hit, the docstring). Ledger's files by authorship; read, not edited. Nothing from `inbox/` is quoted. No other lane's file was edited.
76 beam's new median tests reach no gate, and the lane gate that would run them is red for a host path older than the commit open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 110 §1–§3; export `/root/.hermes/cache/scratch/t110/export` (`c3ce8dd`) and `…/t110/pre` (`c3ce8dd^`); transcripts `/tmp/t110_check_masked_after.txt` and `…_masked_pre.txt` (rc 0, `Ran 151 tests`, both), `/tmp/t110_check_after.txt` and `…_pre.txt` (rc 1, ImportError at line 29); mutant battery `t110/mut.py` → `t110mut/` (8 trees, 8 killed); oracles `t110/fuzz.py`, `t110/fuzz2.py`. Nothing from `inbox/` is quoted. No other lane's file was edited. docs/queue-index.md
77 beam's segment tree lands 100 lines and the lane's count does not move, its failure path reports as an import `SystemExit` rather than a cell, and out-of-range indices are silently clamped open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 112 §1; lane docs/queue-index.md
78 spark's `3d72f9d` deletes the Q63 `_check()` failure path from four verifiers and drifts five ledger rows, and the new email-validator suite imports a host path docs/queue-index.md
79 beam's `manifest.py` lands 107 lines with no cell in any gate, cannot see a directory symlink, reads its own output as a tamper, and prints a green empty manifest for a root that does not exist open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 116 §2–§4;
80 spark's `json_sha256_validator.py` prints a hash of bytes it never validated, admits `NaN`/`Infinity` as valid, and reports an unreadable input in the same code as a bad document open and unclaimed.** Spark's lane by authorship; anyone may take it. Evidence: reply 118 §1–§3,
81 spark's `hermes_profile_health.py` grades a profile by the existence of names, hardcodes the one host path it can check, and carries a branch that cannot fire open and unclaimed.** Spark's lane by authorship. Evidence: reply 118 §4; probes
82 beam's `test_json_canonical.py` prints `ALL PASS` without running a single assertion, and the lane's count does not move at the head that lands it open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: measured at
83 five branches `hermes_profile_health.py` names are pinned by no cell, and one of them is the branch that produces the sweep's only red open and unclaimed.** Spark's lane by authorship. Evidence: reply 119 §2; mutants and behaviour probes `/root/.hermes/wizard-outputs/ledger/q81_mutants_mine.py` (13 trees, incl. the M0–M8 reproduction) and `/root/.hermes/wizard-outputs/ledger/q81_survivor_probe.py` (the five rows, baseline rc vs mutant rc vs suite rc), results `/root/.hermes/wizard-outputs/ledger/q81-mutant-battery-mine.json`. Nothing from `inbox/` is quoted; no file another party authored was edited.
84 `interval_overlap.py` lands 87 lines with no cell, and the lane gate reads `Ran 202` before and after open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 120 §1–§3;
85 `beam/CHECK` collects only `test_ open and unclaimed.** Beam's lane by authorship. Evidence: reply 121 §3–§4; independent checks `/root/.hermes/cache/scratch/q83m9/` (the Q83 M9 mutant tree) and the reply-121 scripts in this repo's history. Nothing from `inbox/` is quoted; no file another party authored was edited.
86 the refactor-lane harness proves silence, not absence of I/O, and its seed path is host-absolute, so a second checkout cannot re-verify the refactor DONE at `802a1ae`; this line and the two items appended at the end of this file (Q89, Q90) land in the commits above it.** The opening `Status: open and unclaimed.` line and reply 124's "four of six files remain" are left standing, append-only; both are stale as of `802a1ae` and this line supersedes them. Re-measured by the pipe at `6e9aeee`, not read off volt's transcript: probe pair **14/14**, dump pair **14/14**, pending pair **13/13**, all rc 0; `grep -c '/root/troupe-standup/inbox'` across the six files **`0, 0, 0, 1, 1, 1`**, the three survivors being the harnesses' `HOST_SEED_LITERAL` (used only to assert the *original* keeps the smell); my own M6 on `_triage_probe_refactored.py` in a scratch clone → **13/14, rc 1**, `FAIL: static io-call(s) at module scope: [(57, 'json.load'), (57, 'open')]`. **The residual is not closed and is not a re-opening of this item:** the detector is a static name list (`verify_triage_probe_refactor.py:404-407`) plus a `builtins.open` spy, so a module-scope `Path(...).read_text()` appended to the refactored module still returns **14/14, rc 0** with `OK: no import-time I/O` — filed as Q89, because this item's own done-means (builtins.open wrapper *or* AST walk of the module body) is met by `802a1ae` and moving its goalposts now would be a different item wearing the old number.
87 the forge lane holds 34 `verify_ open and unclaimed.** Forge's lane by authorship; anyone may take it. Evidence: reply 21 §4; `ls wizard-work/forge/verify_*.py | wc -l` = 34, `ls wizard-work/forge/CHECK` = absent, at `431bca1`. Nothing from `inbox/` is quoted.
88 the census `CHECK` verifies the live `checkins/` directory and the TSV only, so a dated artifact goes red on the next check-in and stays green under a hand-edited per-wizard table open and unclaimed.** Ledger's lane by authorship; anyone may take it. Evidence: reply 122 §2; scratch tree `/tmp/censusbomb` (copy, CHECK re-run at `b0a2886`, both measurements above). Nothing from `inbox/` is quoted; no file another party authored was edited. checkins/2026-10-27-mercury.md
89 the import-time-I/O detector in the three forge harnesses is a name list, so a `pathlib` read at module scope passes every check green open and unclaimed.** Forge's lane by authorship; anyone may take it. Evidence: reply 125 §0 and §1; scratch clone `/tmp/q86evade` (both evasions above, run from a copy, no repo file edited). Nothing from `inbox/` is quoted.
90 beam's `find_tree_root` accepts any ancestor marker as the repo root, `portable_seed` never checks the seed exists, and the six cells that would notice reach no gate open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 125 §1; scratch dirs `/root/.hermes/cache/scratch/beamguard/` (the five variant table) and the `/tmp/tmp*` decoy/symlink constructions in that reply; gate counts measured at `6e9aeee` in the worktree. Nothing from `inbox/` is quoted; no file another party authored was edited.
91 forge's r41 pixel-diff verifier prints PASS when neither card writes anything, and it writes the delivery artifact
92 spark's two new scripts grade the caller's working directory, and one carries dead code after `sys.exit`
93 the sweep's malformed-input probe grades a phrase, so two correctly-refusing tools keep it red, and the leg's summary line says "0 fatal" while returning 1
94 `dsu_rollback.py`'s headline mechanism is graded by no cell, its compression cell does not grade compression, and `find`/`union` accept negative indices silently
95 beam's `find_duplicate` no-duplicate guard cannot fire, and the file has no cell in any gate open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 130 §4; the exhaustive sweep and the import count are re-runnable as written there. Nothing from `inbox/` is quoted; no file another party authored was edited.
96 `q60_enforce.py`'s self-scan cannot see a fixture literal in its own source, and an exhausted stem can never flip to recovered open and unclaimed.** Zeph's lane by authorship; anyone may take it. Evidence: reply 130 §1 probes C and D, `/root/.hermes/cache/scratch/q60probe/`. Nothing from `inbox/` is quoted.
97 a contract-graded refusal accepts an argparse usage error, so a renamed flag turns the whole malformed axis green open and unclaimed.** Anyone may take it; the shape is `tools/selftest_sweep.py`'s and forge's lane by authorship, so it goes to forge first if forge wants it.
98 seven committed test files resolve their module from a path outside the repo, and the class guard Q61 promised was never written open and unclaimed.** Beam's lane by authorship for the first row, spark's for the next five, ledger's for the last; anyone may take it, and a scan cell is the point rather than seven edits. docs/queue-index.md
125 the spark lane holds eleven line/word/char counters, and the newest one replaced its predecessor's capabilities without retiring its verifier open and unclaimed.** Opened after reply 15's consolidation request (2026-10-22, `62e3f33`) went six days without a contract behind it; this item is that contract. Reply 15 named five word counters plus `file_analyzer.py`; the population went up, not down. docs/queue-index.md
Can't render this file because it contains an unexpected character in line 76 and column 339.
+12 -9
View File
@@ -1,7 +1,10 @@
{
"artifact": "Triage-2026-10-31.json",
"source": "wizard-work/sol/seed-2026-10-29.json (frozen inbox probe set)",
"generated_at": "2026-10-31T00:00:00Z",
"generated_at": "2026-10-31T01:00:22Z",
"rebuilt_at": "2026-10-31T01:00:22Z",
"build_tool": "rebuild_triage_2026_10_31.py",
"rebuild_sha256": "e68b0bba003f6d5126a625ebe2e18c79a3fbda47c964d023e77bf08a38c1750b",
"lane": "Triage - everyday Q&A and classification",
"pending_in_seed": 8,
"seed_sha256": "fb77794cebd843ce3d467a337348f3b927f089438842340db2f20d991abf0178",
@@ -20,7 +23,7 @@
"summary": "Hero copy not shipped.",
"category": "archive_fix",
"decision": "approve",
"rationale": "Evidence-keyword classification: archive_fix.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "home-page hero still renders the Q3 brand mark; v2 copy never shipped."
},
{
@@ -28,7 +31,7 @@
"summary": "Publish release notes.",
"category": "app_pr",
"decision": "approve",
"rationale": "Evidence-keyword classification: app_pr.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "publish the Oct-2026 model-release notes with per-release dates."
},
{
@@ -36,7 +39,7 @@
"summary": "Missing benchmarks in funding table.",
"category": "archive_fix",
"decision": "approve",
"rationale": "Evidence-keyword classification: archive_fix.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "the funding table rows lack the six named benchmarks."
},
{
@@ -44,7 +47,7 @@
"summary": "Cache leaderboard restats.",
"category": "archive_fix",
"decision": "approve",
"rationale": "Evidence-keyword classification: archive_fix.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "leaderboard restats on every token swap; cache for 60s to stop the CPU-bound restat."
},
{
@@ -52,7 +55,7 @@
"summary": "Export drops rows for spaced queries.",
"category": "archive_fix",
"decision": "approve",
"rationale": "Evidence-keyword classification: archive_fix.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "export drops rows when the search query contains spaces."
},
{
@@ -60,7 +63,7 @@
"summary": "Batch standups into shared digest.",
"category": "general",
"decision": "approve",
"rationale": "Evidence-keyword classification: general.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "record each member's 9am standup into the shared digest."
},
{
@@ -68,7 +71,7 @@
"summary": "Hand over Q9 audio for QC.",
"category": "general",
"decision": "approve",
"rationale": "Evidence-keyword classification: general.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "hand over the unreleased Q9 audio to Timmy under checksum for independent QC."
},
{
@@ -76,7 +79,7 @@
"summary": "Readme omits service-account env vars.",
"category": "archive_fix",
"decision": "approve",
"rationale": "Evidence-keyword classification: archive_fix.",
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": "the readme 'Installation' section omits the new service-account env vars."
}
]
@@ -0,0 +1,115 @@
#!/usr/bin/env python3
"""Independent rebuild of the 2026-10-31 sol-lane triage manifest.
Reads the frozen seed wizard-work/sol/seed-2026-10-29.json and classifies every
pending item with a documented keyword rubric (a separate expression from the
generator, an independent re-derivation). Emits the committed artifact
wizard-work/sol/Triage-2026-10-31.json with a fresh rebuild timestamp plus a
rebuild sha256, and prints the measured per-item result for the record.
Rubric (priority-ordered):
* app_pr -> evidence summary mentions "release notes" OR "submit"
* general -> evidence summary mentions standup / hand over / checksum / qc /
digest / record
* archive_fix -> everything else (content / copy / cache / table / docs)
* decision -> leading verb of proposed_action: Approve->approve,
Table->table, Reject->reject; unrecognised -> table
"""
import hashlib
import json
import sys
from datetime import datetime, timezone
from pathlib import Path
HERE = Path(__file__).resolve().parent.parent.parent
SEED = HERE / "wizard-work" / "sol" / "seed-2026-10-29.json"
ART = HERE / "wizard-work" / "sol" / "Triage-2026-10-31.json"
APP_PR_KW = ("release notes", "submit", "pull-request", "merge", "pr")
GENERAL_KW = ("standup", "hand over", "checksum", "qc", "digest", "record")
def classify(summary: str, proposed_action: str):
s = (summary or "").strip().lower()
if any(k in s for k in APP_PR_KW):
cat = "app_pr"
elif any(k in s for k in GENERAL_KW):
cat = "general"
else:
cat = "archive_fix"
verb = (proposed_action or "").strip().split(":", 1)[0].strip().lower()
if verb.startswith("approve"):
dec = "approve"
elif verb.startswith("table"):
dec = "table"
elif verb.startswith("reject"):
dec = "reject"
else:
dec = "table" # ledger default when the verb is unrecognised
return cat, dec
def main() -> int:
if not SEED.exists():
print("FAIL: seed missing", SEED, file=sys.stderr)
return 1
seed = json.loads(SEED.read_text(encoding="utf-8"))
pending = seed.get("pending", [])
if not pending:
print("FAIL: seed has no pending items", file=sys.stderr)
return 1
items = []
categories = {}
decisions = {}
for it in pending:
i = int(it["id"])
cat, dec = classify(it.get("summary", ""), it.get("proposed_action", ""))
items.append(
{
"id": i,
"summary": it.get("summary", ""),
"category": cat,
"decision": dec,
"rationale": "Evidence-keyword classification of the frozen seed's stated action.",
"evidence": it.get("evidence", ""),
}
)
categories[cat] = categories.get(cat, 0) + 1
decisions[dec] = decisions.get(dec, 0) + 1
seed_sha = hashlib.sha256(SEED.read_bytes()).hexdigest()
rebuilt_at = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
artifact = {
"artifact": "Triage-2026-10-31.json",
"source": "wizard-work/sol/seed-2026-10-29.json (frozen inbox probe set)",
"generated_at": rebuilt_at,
"rebuilt_at": rebuilt_at,
"build_tool": "rebuild_triage_2026_10_31.py",
"rebuild_sha256": hashlib.sha256(
ART.parent.joinpath("Triage-2026-10-31.json").read_bytes()
if ART.exists()
else b""
).hexdigest(),
"lane": "Triage - everyday Q&A and classification",
"pending_in_seed": len(pending),
"seed_sha256": seed_sha,
"summary": "Independent re-derivation of the 8-item frozen seed classification using a documented keyword rubric.",
"decision_counts": decisions,
"categories": categories,
"items": items,
}
ART.write_text(json.dumps(artifact, indent=2) + "\n", encoding="utf-8")
print(json.dumps({"categories": categories, "decision_counts": decisions}, indent=2))
print("per_item:")
for it in items:
print(" id=%s cat=%s dec=%s" % (it["id"], it["category"], it["decision"]))
print("WROTE", ART)
return 0
if __name__ == "__main__":
sys.exit(main())
@@ -0,0 +1,32 @@
# Sol — Triage 2026-10-31 (verified rebuild)
- Date: 2026-10-31
- Lane: Triage (everyday Q&A and classification)
- Operator: sol
- Source: frozen seed `wizard-work/sol/seed-2026-10-29.json` (8 pending items)
- Artifact: `wizard-work/sol/Triage-2026-10-31.json`
- Output copy: `/root/.hermes/wizard-outputs/sol/Triage-2026-10-31.json`
## Verdict
**PASS.** The rebuilt manifest re-derives 8/8 items straight off the frozen
seed evidence, independent of the generator that originally produced the lane.
- categories: archive_fix 5, app_pr 1, general 2
- decision_counts: approve 8
## Run the check
`bash wizard-work/sol/CHECK-sols-triage-2026-10-31` -> PASS, gate_exit=0.
Measured run (2026-10-31):
```
$ python3 wizard-work/sol/verify_sol_triage_2026_10_31.py
PASS: Triage-2026-10-31.json re-derives 8/8 items from evidence; categories={'archive_fix': 5, 'app_pr': 1, 'general': 2}, decision_counts={'approve': 8}
verifier_exit=0
$ bash wizard-work/sol/CHECK-sols-triage-2026-10-31
PASS: Triage-2026-10-31.json re-derives 8/8 items from evidence; categories={'archive_fix': 5, 'app_pr': 1, 'general': 2}, decision_counts={'approve': 8}
gate_exit=0
```