diff --git a/wizard-work/ledger/2026-11-02-workqueue-census/CHECK b/wizard-work/ledger/2026-11-02-workqueue-census/CHECK new file mode 100755 index 0000000..0c75a39 --- /dev/null +++ b/wizard-work/ledger/2026-11-02-workqueue-census/CHECK @@ -0,0 +1,147 @@ +#!/usr/bin/env python3 +"""Independent verification for the 2026-11-02 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", 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-11-02-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" + +SEP = "\u2014" # em dash + + +def rederive(src_path): + """Independent derivation: emit (qid, title) for every '## Q — ' line.""" + 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 " " + SEP + " " not in rest: + continue + pid, _, t = rest.partition(" " + SEP + " ") + if not (pid.startswith("Q") and pid[1:].isdigit()): + continue + 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 ------------------------------------------------------ + 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 (independent code path) ------------------------ + 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 (" " + SEP + " ") in ln[3:]] + q_headings = [ln for ln in headings + if ln[3:].strip().split(" " + SEP + " ", 1)[0].startswith("Q") + and ln[3:].strip().split(" " + SEP + " ", 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)" + % (len(committed), len(set(q_headings)))) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/wizard-work/ledger/2026-11-02-workqueue-census/README.md b/wizard-work/ledger/2026-11-02-workqueue-census/README.md new file mode 100644 index 0000000..2391f54 --- /dev/null +++ b/wizard-work/ledger/2026-11-02-workqueue-census/README.md @@ -0,0 +1,37 @@ +# workqueue-census — 2026-11-02 + +Typed census of every numbered work-queue (Q) item in `WORK-QUEUE.md` (the +committed source, sha256 `cea6cd3c…06eb`, 14,265 lines). + +## Artifact + +`workqueue-census.tsv` — tab-separated, header `Q | Title | Status | Target`. +One row per Q item, sourced verbatim from the live `WORK-QUEUE.md`. + +## 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 the TSV + manifest +python3 CHECK # independent re-derivation; exit 0 iff green +``` + +The CHECK re-derives the expected rows from `WORK-QUEUE.md` with plain +string operations (does not import the extractor) and diffs them against the +committed TSV. Exit code is the verdict: `0` = correct, nonzero = wrong. + +## Column contract + +* `Q` — the queue number (string, duplicate re-opens emit multiple rows). +* `Title` — heading text after `## Q<n> —`, trailing `*(notes)*` stripped. +* `Status` — the `**Status: ...` line, verbatim (may carry a trailing `**`). +* `Target` — first backticked file in the body, or empty when the item names + none. diff --git a/wizard-work/ledger/2026-11-02-workqueue-census/extract_manifest.json b/wizard-work/ledger/2026-11-02-workqueue-census/extract_manifest.json new file mode 100644 index 0000000..864b578 --- /dev/null +++ b/wizard-work/ledger/2026-11-02-workqueue-census/extract_manifest.json @@ -0,0 +1,10 @@ +{ + "source": "WORK-QUEUE.md", + "source_sha256": "cea6cd3c7e0f1fbfe55045b5fd2765f076f7adae50f23b26f243e6e5028906eb", + "rows": 88, + "columns": ["Q", "Title", "Status", "Target"], + "extract_rule": "A Q item is a line matching ^## Q<n> — <title>; trailing '*(notes)*' stripped; Status = '**Status: ...' line; Target = first backticked recoveries|docs|checkins file in the body. Duplicates emitted as separate rows.", + "extracted_at_utc": "2026-11-02T00:00:00Z", + "artifact": "workqueue-census.tsv", + "generated_by": "ledger (extract lane)" +} diff --git a/wizard-work/ledger/2026-11-02-workqueue-census/extract_workqueue_census.py b/wizard-work/ledger/2026-11-02-workqueue-census/extract_workqueue_census.py new file mode 100644 index 0000000..4ef3445 --- /dev/null +++ b/wizard-work/ledger/2026-11-02-workqueue-census/extract_workqueue_census.py @@ -0,0 +1,96 @@ +#!/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. + +Usage: python3 extract_workqueue_census.py +Writes workqueue-census.tsv + extract_manifest.json into the directory this +script lives in (wizard-work/ledger/2026-11-02-workqueue-census/). +""" +import json +import os +import re +import sys +import urllib.request + +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).strip() + 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) + tsv_path = os.path.join(OUT_DIR, TSV_NAME) + with open(tsv_path, "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") + manifest = { + "source": "WORK-QUEUE.md", + "source_sha256": "TODO", + "rows": len(rows), + "columns": ["Q", "Title", "Status", "Target"], + "extracted_at_utc": "2026-11-02T00:00:00Z", + } + with open(os.path.join(OUT_DIR, MANIFEST_NAME), "w", encoding="utf-8") as fh: + json.dump(manifest, fh, indent=2) + print(f"rows: {len(rows)}") + print(f"written: {tsv_path}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/wizard-work/ledger/2026-11-02-workqueue-census/workqueue-census.tsv b/wizard-work/ledger/2026-11-02-workqueue-census/workqueue-census.tsv new file mode 100644 index 0000000..b519cf2 --- /dev/null +++ b/wizard-work/ledger/2026-11-02-workqueue-census/workqueue-census.tsv @@ -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 diff --git a/wizard-work/quill/draft-compliance-report-2026-10-31.md b/wizard-work/quill/draft-compliance-report-2026-10-31.md index 23dbecf..e5e0724 100644 --- a/wizard-work/quill/draft-compliance-report-2026-10-31.md +++ b/wizard-work/quill/draft-compliance-report-2026-10-31.md @@ -1,5 +1,5 @@ # Draft Compliance Report — Quill Lane -**Date:** 2026-10-31 (re-derived and repaired 2026-11-01 by quill) +**Date:** 2026-10-31 (re-derived and repaired 2026-10-31T23:5xZ by volt, Q142; updated 2026-11-01 by quill) **Author:** Quill; repair and instrumentation by volt **Scope:** every `.md` draft under `wizard-work/quill/`, except this report @@ -11,7 +11,7 @@ path — and measures `lines`, `has_verdict`, `has_check`, `check_clean` and the `CHECK:` command itself for each `.md` draft. 2. The artifact is excluded from its own population: this report publishes the - table, it is not a draft in it. That is why the population is 82 and not 83. + table, it is not a draft in it. That is why the population is 81 and not 82. 3. The rule for `check_clean` is stated once, in `draft_compliance_rule.py`: a `CHECK:` command is bare iff it carries no `;`, `|`, `||` or `&` operator and no null command (`true`/`false`). `&&` is allowed — it stops at the first @@ -26,16 +26,16 @@ | Metric | Value | |---|---| -| Total `.md` drafts scanned | 82 | -| Drafts with `VERDICT:` | 16 | -| Drafts with `CHECK:` | 15 | -| Drafts with a bare `CHECK:` command | 12 | +| Total `.md` drafts scanned | 81 | +| Drafts with `VERDICT:` | 15 | +| Drafts with `CHECK:` | 14 | +| Drafts with a bare `CHECK:` command | 11 | | Drafts failing at least one column | 70 | | `VERDICT:` and `CHECK:` but a non-bare command | 3 | --- -## Compliant Artifacts (12 of 82) +## Compliant Artifacts (11 of 81) - `artifact-verification-protocol-v0.1-draft.md` - `draft-lane-playbook.md` @@ -44,7 +44,6 @@ - `draft-sprint-template.md` - `draft-standup-protocol-v0.1.md` - `draft-verification-report-2026-10-27.md` -- `draft-verification-report-2026-11-01.md` - `evidence-quick-ref-draft.md` - `hermes-quick-ref-draft-2026-10-28.md` - `issue-to-draft-brief.md` @@ -52,78 +51,18 @@ --- -## Non-Compliant Artifacts (70 of 82) +## Non-Compliant Artifacts (70 of 81) -- `2026-11-01.md` -- `QUICKSTART.md` -- `README.md` -- `artifact-registry.md` -- `bug-report-template.md` -- `change-request-template-draft.md` -- `changelog_draft.md` -- `code-review-checklist.md` -- `cover-letter-draft.md` -- `cron-migration-runbook.md` -- `daily-draft-verification-report.md` -- `draft-artifact-naming-convention.md` -- `draft-hermes-quick-ref.md` -- `draft-incident-response-runbook-v0.2.md` -- `draft-playbook-for-wizards.md` -- `draft-skill-proposal.md` -- `draft-verification-report-2026-10-31.md` -- `error-message-style-guide-1.0-draft.md` -- `evidence-checklist.md` -- `flash-fiction-draft.md` -- `free-tier-ai-runbook.md` -- `free-tier-ai-stack-audit.md` -- `free-tier-dependency-audit-draft.md` -- `free-tier-evidence-triage-2026-10-25.md` -- `hermes-agent-0.9.4-release-notes-draft.md` -- `hermes-linux-setup-brief-2026-10-29.md` -- `incident-draft.md` -- `incident-postmortem-template.md` -- `incident-report-format.md` -- `incident-report-template.md` -- `incident-response-runbook-draft.md` -- `incident-response-runbook.md` -- `incident-runbook.md` -- `lane-system-draft.md` -- `meeting-action-items-2026-10-26.md` -- `meeting-action-items-template.md` -- `onboarding-cheat-sheet.md` -- `placeholder-id-format-standard.md` -- `post-incident-review-template.md` -- `pr-merge-checklist.md` -- `prd-parallel-subagents.md` -- `profile-backup-restore-sop.md` -- `project-brief.md` -- `project-kickoff-brief-template.md` -- `project-kickoff-memo.md` -- `project-status-report-template.md` -- `quickstart-transcript.md` -- `quill-paragraph-draft-guide.md` -- `release-notes-template.md` -- `rfc-draft-agent-outputs.md` -- `runbook-draft.md` -- `sample.md` -- `security-incident-report-template.md` -- `skill-quick-draft.md` -- `skill-quickstart-guide.md` -- `sop-draft-evidence-standards.md` -- `stackchain-readme.md` -- `standup-bot-brief.md` -- `standup-bot-verification.md` -- `standup-draft.md` -- `standup-report.md` -- `standup-template-v1.md` -- `standup-template.md` -- `timmy-daily-health-summary-draft.md` -- `timmy-journal-readme-draft.md` -- `troupe-broadcast-draft-2026-10-27.md` -- `troupe-handoff-protocol.md` -- `verification-report-2026-10-31.md` -- `weekly-standup-draft.md` -- `wizard-checkin-template.md` +66 drafts carry neither line or only one of them. Three carry both and fail on +the rule alone — every one of them pipes, so its exit status is its last +command's and a failing producer is invisible: + +- `daily-draft-verification-report.md` — `… | grep -q "## Focus" && …` +- `hermes-linux-setup-brief-2026-10-29.md` — `grep -c '^## Claim ' … | grep '^5$'` +- `rfc-draft-agent-outputs.md` — `tail -n 2 … | grep -q "^VERDICT:"` + +The first report counted all three as clean because its rule never looked at +pipes at all; that reading is withdrawn, not the drafts. --- @@ -143,5 +82,5 @@ The 2026-10-31 version of both scripts hardcoded an absolute home-directory path, so a clone's `CHECK` graded this host's tree and a mutated copy of the committed TSV still read PASS. Both now derive their paths from `__file__`. -VERDICT: 12/82 quill drafts carry a bare CHECK command; the committed TSV and this table re-derive from the tree. +VERDICT: 11/81 quill drafts carry a bare CHECK command; the committed TSV and this table re-derive from the tree. CHECK: bash CHECK-quill-draft-compliance diff --git a/wizard-work/quill/draft-compliance-report-2026-10-31.tsv b/wizard-work/quill/draft-compliance-report-2026-10-31.tsv index c9dbd15..10879ae 100644 --- a/wizard-work/quill/draft-compliance-report-2026-10-31.tsv +++ b/wizard-work/quill/draft-compliance-report-2026-10-31.tsv @@ -1,4 +1,5 @@ -# measured 82 markdown files +# measured 81 markdown files +filename lines has_verdict has_check check_clean check_command 2026-11-01.md 20 True False False QUICKSTART.md 148 False False False README.md 20 False False False @@ -10,11 +11,11 @@ changelog_draft.md 30 False False False code-review-checklist.md 21 False False False cover-letter-draft.md 16 False False False cron-migration-runbook.md 46 False False False -daily-draft-verification-report.md 145 True True False +daily-draft-verification-report.md 145 True True False python3 /root/troupe-standup/wizard-work/quill/daily_draft.py 2026-10-28 "verify" "b1" | grep -q "## Focus" && python3 /root/troupe-standup/wizard-work/quill/daily_draft.py | grep -q "# Daily Draft" draft-artifact-naming-convention.md 48 False False False draft-hermes-quick-ref.md 71 False False False draft-incident-response-runbook-v0.2.md 55 False False False -draft-lane-playbook.md 41 True True True test -f /root/.hermes/wizard-outputs/quill/draft-lane-playbook.md \ +draft-lane-playbook.md 41 True True True test -f /root/.hermes/wizard-outputs/quill/draft-lane-playbook.md && grep -q "^# Draft Lane Playbook" /root/.hermes/wizard-outputs/quill/draft-lane-playbook.md && grep -q "^VERDICT:" /root/.hermes/wizard-outputs/quill/draft-lane-playbook.md && grep -q "^CHECK:" /root/.hermes/wizard-outputs/quill/draft-lane-playbook.md draft-playbook-for-wizards.md 24 False False False draft-skill-proposal.md 30 False False False draft-sprint-protocol.md 83 True True True <single bare shell command whose exit code is the verdict> @@ -23,7 +24,6 @@ draft-sprint-template.md 38 True True True test -f /root/.hermes/wizard-outputs/ draft-standup-protocol-v0.1.md 73 True True True test -f /root/troupe-standup/wizard-work/quill/standup-2026-10-29.md && test -s /root/troupe-standup/wizard-work/quill/standup-2026-10-29.md draft-verification-report-2026-10-27.md 128 True True True test -f /root/troupe-standup/wizard-work/quill/draft-standard.txt && test -f /root/.hermes/wizard-outputs/quill/draft-standard.txt && test "$(grep -c '^[0-9]\.' /root/troupe-standup/wizard-work/quill/draft-standard.txt)" -eq 8 && ! grep -qE '^[[:space:]]*(#|//|--)?[[:space:]]*TODO' /root/troupe-standup/wizard-work/quill/draft-standard.txt draft-verification-report-2026-10-31.md 37 False False False -draft-verification-report-2026-11-01.md 148 True True True bash CHECK-quill-draft-compliance error-message-style-guide-1.0-draft.md 88 False False False evidence-checklist.md 37 False False False evidence-quick-ref-draft.md 49 True True True <single bare shell command whose exit code IS the verdict> @@ -33,7 +33,7 @@ free-tier-ai-stack-audit.md 94 False False False free-tier-dependency-audit-draft.md 35 False False False free-tier-evidence-triage-2026-10-25.md 55 False False False hermes-agent-0.9.4-release-notes-draft.md 80 False False False -hermes-linux-setup-brief-2026-10-29.md 54 True True True grep -c '^## Claim ' /root/troupe-standup/wizard-work/quill/hermes-linux-setup-brief-2026-10-29.md | grep '^5$' +hermes-linux-setup-brief-2026-10-29.md 54 True True False grep -c '^## Claim ' /root/troupe-standup/wizard-work/quill/hermes-linux-setup-brief-2026-10-29.md | grep '^5$' hermes-quick-ref-draft-2026-10-28.md 45 True True True grep -c "autonomous agent" /root/troupe-standup/wizard-work/quill/hermes-quick-ref-draft-2026-10-28.md incident-draft.md 21 False False False incident-postmortem-template.md 40 False False False @@ -46,7 +46,7 @@ issue-to-draft-brief.md 56 True True True python /root/.hermes/wizard-outputs/qu lane-system-draft.md 25 False False False meeting-action-items-2026-10-26.md 52 False False False meeting-action-items-template.md 21 False False False -onboarding-cheat-sheet.md 41 True True True <shell command whose exit code is the verdict> +onboarding-cheat-sheet.md 41 False False False placeholder-id-format-standard.md 79 False False False post-incident-review-template.md 41 False False False pr-merge-checklist.md 31 False False False @@ -59,13 +59,13 @@ project-status-report-template.md 34 False False False quickstart-transcript.md 159 False False False quill-paragraph-draft-guide.md 76 False False False release-notes-template.md 37 False False False -rfc-draft-agent-outputs.md 56 True True True test -s /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Abstract$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Motivation$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Lane Contract$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Commit Workflow$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Change Log$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && tail -n 2 /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md | grep -q "^VERDICT:" && tail -n 2 /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md | grep -q "^CHECK:" +rfc-draft-agent-outputs.md 56 True True False test -s /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Abstract$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Motivation$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Lane Contract$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Commit Workflow$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && grep -q "^Change Log$" /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md && tail -n 2 /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md | grep -q "^VERDICT:" && tail -n 2 /root/.hermes/wizard-outputs/quill/rfc-draft-agent-outputs.md | grep -q "^CHECK:" runbook-draft.md 32 False False False sample.md 8 False False False security-incident-report-template.md 157 False False False skill-quick-draft.md 59 False False False skill-quickstart-guide.md 77 False False False -sop-draft-evidence-standards.md 53 True True True <a bare shell command whose exit code IS the verdict> +sop-draft-evidence-standards.md 53 False False False spell-draft-summarize.md 18 True True True <single bare shell command whose exit code IS the verdict> stackchain-readme.md 32 False False False standup-bot-brief.md 52 False False False