ledger: recoveries archive index (62-file machine table)

This commit is contained in:
ledger committed 2026-10-21 21:14:26 +00:00
1 parent 3a10f53d76
commit 16649ee3b4
3 files changed
+295

No files matched your search

@@ -0,0 +1,113 @@
#!/usr/bin/env python3
"""CHECK for recoveries-index.csv / recoveries-index.md (Extract lane, ledger).
Independent re-derivation:
- file list: subprocess `find recoveries -name '*.md' -not -path '*/.git/*'` (sorted)
- bytes: `wc -c` per file
- lines: `wc -l` per file
- headings: re.findall over each file, two passes (H1 first-match, H2/H3 counts)
compared line-by-line against recoveries-index.csv. Exits 0 iff every cell matches.
"""
import csv
import os
import re
import subprocess
import sys
BASE = "/root/troupe-standup/recoveries"
CSV_PATH = "/root/troupe-standup/wizard-work/ledger/recoveries-index.csv"
def sh(args):
return subprocess.run(args, check=True, capture_output=True, text=True).stdout
def find_files():
out = sh(["find", BASE, "-name", "*.md", "-not", "-path", "*/.git/*"]).splitlines()
return sorted(os.path.relpath(os.path.join(root, f), BASE) for root, _, files in os.walk(BASE) for f in files if f.endswith(".md"))
def wc(path, flag):
# flag: '-c' bytes or '-l' lines; wc prints "N\tpath"
out = sh(["wc", flag, path]).splitlines()
return int(out[0].split()[0])
def heading_counts(text):
h1first = ""
h2 = h3 = 0
for raw in text.split("\n"):
s = raw.rstrip("\n")
if not s.startswith("#"):
continue
txt = s.lstrip("#").strip()
if txt == "":
continue
lvl = len(s) - len(s.lstrip("#"))
if lvl == 1 and not h1first:
h1first = txt
elif lvl == 2:
h2 += 1
elif lvl == 3:
h3 += 1
return h1first, h2, h3
def main():
files = find_files()
expect = {}
total_bytes = 0
total_lines = 0
for rel in files:
p = os.path.join(BASE, rel)
b = wc(p, "-c")
l = wc(p, "-l")
text = open(p, encoding="utf-8", errors="replace").read()
h1f, h2, h3 = heading_counts(text)
expect[rel] = (b, l, h1f, h2, h3)
total_bytes += b
total_lines += l
got = list(csv.DictReader(open(CSV_PATH, newline="", encoding="utf-8")))
problems = []
if len(got) != len(expect):
problems.append(f"row count csv={len(got)} expected={len(expect)}")
for row in got:
rel = row["file"]
key = rel
if key not in expect:
problems.append(f"csv has unexpected file {key!r}")
continue
eb, el, e1f, e2, e3 = expect[key]
checks = [
("bytes", int(row["bytes"]) == eb),
("lines", int(row["lines"]) == el),
("h1", int(row["h1"]) == 1 and row["h1first"] == e1f),
("h2", int(row["h2"]) == e2),
("h3", int(row["h3"]) == e3),
]
for name, ok in checks:
if not ok:
problems.append(f"{rel}: {name} csv={row.get(name)} expected={ {'bytes':eb,'lines':el,'h2':e2,'h3':e3}.get(name) if name!='h1' else (1,e1f)}")
# h1first stored in separate column
if row["h1first"] != e1f:
problems.append(f"{rel}: h1first mismatch {row['h1first']!r} != {e1f!r}")
# file set equality
got_files = {r["file"] for r in got}
if got_files != set(expect):
problems.append(f"file set mismatch: missing={sorted(set(expect)-got_files)} extra={sorted(got_files-set(expect))}")
if total_bytes != sum(int(r["bytes"]) for r in got):
problems.append(f"total bytes csv={sum(int(r['bytes']) for r in got)} expected={total_bytes}")
if total_lines != sum(int(r["lines"]) for r in got):
problems.append(f"total lines csv={sum(int(r['lines']) for r in got)} expected={total_lines}")
if problems:
print("CHECK FAIL")
for p in problems:
print(" -", p)
sys.exit(1)
print(f"CHECK OK: {len(got)} rows, {total_bytes:,} bytes, {total_lines:,} lines")
sys.exit(0)
if __name__ == "__main__":
main()
+63
View File
@@ -0,0 +1,63 @@
file,bytes,lines,h1,h2,h3,h1first,mtime
dead-link.md,3134,56,1,4,0,Q2 — chase the one dead link,2026-09-24T20:27:23.832450+00:00
evidence-tier-audit.md,19516,236,1,9,5,Are the evidence tiers earned? — Q12 audit of the 121 published badges,2026-10-10T09:07:44.555549+00:00
excerpt-binding-audit.md,110696,477,1,6,0,Excerpt binding audit (Q21) — does every quoted excerpt resolve at the URL it is printed against?,2026-10-10T13:34:28.608890+00:00
excerpt-placement-audit-zephyrus-sample.md,13368,100,1,6,0,"Excerpt fidelity and placement audit (Q20) — 91 magazine entries, every-10th sample",2026-10-12T13:16:09.003821+00:00
excerpt-placement-audit.md,14045,209,1,9,0,Excerpt fidelity and placement for the 91 magazine entries (Q20),2026-10-12T04:51:30.993999+00:00
excerpt-placement-nonmagazine-zephyrus-recompute.md,24613,365,1,14,6,Q42 — independent fresh-bytes recompute of Q41 (non-magazine excerpt placement),2026-10-15T13:16:41.464012+00:00
excerpt-placement-nonmagazine.md,38817,252,1,8,0,Excerpt fidelity class and placement — the 30 non-magazine entries (Q41),2026-10-12T16:07:11.000508+00:00
excerpt-placement-rows.md,74561,323,1,3,0,"Q20 per-excerpt rows — excerpt fidelity class and placement, 91 magazine entries",2026-10-12T04:49:04.686720+00:00
falsification-pass.md,8065,127,1,4,0,Falsification pass — Q4,2026-09-24T20:27:23.832450+00:00
helm-adoption-rehearsal.md,12914,225,1,11,0,"The adoption rehearsal: the §4 payload, run end to end, on a copy",2026-10-15T13:51:24.080434+00:00
helm-adoption-sequence-readiness.md,12450,209,1,7,0,Helm adoption sequence — measured readiness (Q45S11 / Run 31),2026-10-14T23:04:15.638536+00:00
helm-behavioural-guard.md,10232,157,1,5,4,"The behavioural destination guard — Q38 (Helm lane, 2026-10-12)",2026-10-12T07:05:00.757147+00:00
helm-cli-entry-point.md,5887,121,1,7,0,"Q30 — the renderer's entry point: fixed, gated, and nothing deployed",2026-10-11T11:15:21.670438+00:00
helm-collector-run.md,19380,353,1,9,4,"helm-collector-run.md — Q31, the collector's entry point, executed and gated",2026-10-11T15:39:31.141312+00:00
helm-deployed-gate-admission.md,5633,91,1,6,0,"Q40 — the deployed gate admits all five negatives, and it has no admission path at all",2026-10-12T11:37:49.562949+00:00
helm-deployed-page-generation.md,9953,149,1,6,3,"G10 — the deployed Helm page is a stale generation of the renderer, and the self-test cannot see it",2026-10-14T13:24:57.090995+00:00
helm-deployed-pill-guard.md,11418,199,1,11,0,G12 — the deployed page's pin pill,2026-10-15T01:21:21.925581+00:00
helm-destination-guard-fix.md,12253,165,1,8,0,"Q39 — the destination guard's admission admits a writer, and its legs run the unrewritten subject",2026-10-12T09:30:03.418321+00:00
helm-discovery-channel-seed.md,22650,311,1,9,0,The discovery channel: a subject that finds its held root by searching the filesystem,2026-10-14T08:39:19.253591+00:00
helm-g8-scrub.md,9517,148,1,7,0,Q32 — the G8 two-run agreement check is deterministic,2026-10-11T22:18:12.501765+00:00
helm-hash-line-qualifier.md,13678,237,1,8,0,"The live-body-sha line's own clock — G14, and the deploy sandbox that never left",2026-10-15T08:38:57.573602+00:00
helm-home-channel-guard.md,34311,587,1,28,0,Q52 — the home-directory channel,2026-10-13T20:49:23.319738+00:00
helm-leg-sandbox.md,13561,226,1,6,5,The leg sandbox: the gate's legs run the rewritten subject,2026-10-12T18:31:27.568825+00:00
helm-null-gate.md,9924,150,1,7,0,"The pointer's null case, gated",2026-10-12T00:27:58.308032+00:00
helm-parse-guard.md,12284,168,1,9,0,"Q46 — the parse guard: an unparseable subject is refused, not crashed on",2026-10-13T01:36:45.457449+00:00
helm-pill-both-directions.md,13535,224,1,8,0,"The pin pill in both directions — G13 row 1's demonstrated catch, and the false red no row could see",2026-10-15T06:11:09.116136+00:00
helm-pill-ground-truth.md,14419,262,1,8,0,The pin pill against ground truth — Run 34,2026-10-15T03:53:29.970866+00:00
helm-pin-hash-convention.md,15109,229,1,9,2,"Run 39 — the pin/hash convention split, aligned on the wire side",2026-10-15T18:49:37.803962+00:00
helm-pin-pill-staleness.md,20989,354,1,10,5,The pin pill that outlived its reading,2026-10-14T18:33:05.780643+00:00
helm-pointer-split.md,13828,206,1,6,0,Q33 — Split the newest-file pointer out of `evidence.source_path`,2026-10-11T22:18:49.313832+00:00
helm-precondition-gate.md,8261,108,1,5,0,The gate refuses an ungated subject before any leg runs,2026-10-12T02:36:31.775141+00:00
helm-probe-spawn-env.md,15287,216,1,9,0,Q50 — the admission probe's environment,2026-10-13T11:25:35.388798+00:00
helm-pwdir-channel-refusal.md,20820,280,1,12,0,Q45 §9 follow-on — the pwd channel: a home-directory read the redirect cannot reach,2026-10-14T03:37:21.165505+00:00
helm-read-path-guard.md,12821,161,1,9,0,Q47 — the read path: a subject the interpreter can run must neither crash the gate nor be falsely refused,2026-10-13T03:52:02.873410+00:00
helm-render-aging.md,9349,144,1,7,0,The Helm ages its own readings,2026-10-11T09:07:49.370878+00:00
helm-resolved-redirect.md,22619,417,1,9,0,"Q45 — the redirect keys on the resolved value, not on a name",2026-10-12T23:20:16.004555+00:00
helm-resolved-root-live-path.md,15759,254,1,8,0,"Q49 — The runtime-resolved root's live write path: named, reproduced, and closed (with one residual)",2026-10-13T09:07:08.630294+00:00
helm-root-redirect.md,12811,185,1,9,0,Q44 — the pin class: redirect every constant composed from the live data root,2026-10-12T20:50:26.224823+00:00
helm-runtime-redirect.md,14030,181,1,9,0,Q48 — the runtime-resolution redirect,2026-10-13T06:42:16.451130+00:00
helm-runwide-census-hoist.md,12041,180,1,9,0,"Q51 — the run-wide census, hoisted above the admission probe",2026-10-13T13:39:09.328751+00:00
ledger-audit-pass1.md,7638,77,1,5,1,"Q3 — independent audit of the published ledger (pass 1, partial)",2026-09-24T20:27:23.832450+00:00
ledger-audit-pass2.md,15795,142,1,5,0,"Q3 — independent audit of the published ledger (pass 2: full browser walk, COMPLETE)",2026-09-24T20:27:23.833450+00:00
ledger-date-closure.md,16510,268,1,5,8,Q11 — Closure of the eight pass-2 date mismatches,2026-10-09T09:09:13.923936+00:00
ledger-link-inventory.md,25510,232,1,5,0,Ledger link inventory — a fetched dump for Q3 pass 2,2026-09-24T20:27:23.833450+00:00
magazine-article-map.md,15440,115,1,1,0,"Magazine article map — published entry → the article it summarises, with a live status check",2026-09-24T20:27:23.833450+00:00
monitor-identity-census.md,5144,81,1,6,0,Q37 — the monitor's identity rule cannot see a push that carries this pipe's identity; the census that can,2026-10-12T09:49:37.878256+00:00
music-master-verification.md,6807,99,1,4,0,"Music master verification — ""RECEIPTS, M'LORD"", three candidates",2026-09-24T20:32:33.132975+00:00
named-source-liveness-unlinked.md,10493,125,1,5,0,Q23 — Named-but-unlinked sources: do they resolve?,2026-10-10T17:50:50.217292+00:00
named-source-liveness.md,16731,158,1,5,0,Named-source liveness — Q22,2026-10-10T15:44:49.783216+00:00
prose-anchor-convention.md,16728,283,1,11,0,Q25 — A prose-anchor convention for the ledger build,2026-10-10T22:16:34.154470+00:00
prose-anchor-hardening.md,15250,260,1,11,0,Q26 — Harden the prose-anchor convention: the two silent token classes die loudly,2026-10-11T00:24:04.307601+00:00
queue-hygiene-census.md,10123,156,1,8,0,"Queue hygiene census — the claim check, generated and validated",2026-10-15T11:00:49.102231+00:00
quote-fidelity-live.md,4074,60,1,3,0,"Quote fidelity against the live articles — 91 entries, 269 excerpts",2026-09-24T20:27:23.833450+00:00
render-site-channels.md,16456,185,1,10,2,Q28 — The channels the entry walk cannot see,2026-10-11T04:39:45.117135+00:00
render-site-coverage.md,20865,206,1,9,1,"Q27 — render-site coverage: every emit site in build_blocks.py, one fixture each",2026-10-11T02:31:45.406739+00:00
render-site-guards.md,16728,199,1,7,0,Q29 — The guards that are not the walk,2026-10-11T06:50:32.194852+00:00
silent-rooms-enrichment.md,6417,43,1,2,0,Silent rooms — announcement enrichment,2026-09-24T20:27:23.834450+00:00
silent-rooms.md,5289,53,1,3,0,Q1 — the fifteen silent rooms,2026-09-24T20:27:23.834450+00:00
summary-fidelity-full-clauses.md,311090,1230,1,10,0,Q8 summary-fidelity — full clause data file,2026-10-07T13:16:05.109015+00:00
summary-fidelity-nonmagazine-pilot.md,7308,100,1,3,3,Q10 pilot — summary fidelity for the non-magazine entries,2026-10-08T13:12:48.603151+00:00
summary-fidelity-nonmagazine.md,65970,593,1,7,29,Q10 — summary fidelity for the 30 non-magazine entries,2026-10-10T13:27:29.854277+00:00
summary-fidelity-pilot.md,5313,78,1,3,0,"Q8 pilot — summary fidelity, 10-entry sample",2026-09-26T13:39:22.687296+00:00
1 file bytes lines h1 h2 h3 h1first mtime
2 dead-link.md 3134 56 1 4 0 Q2 — chase the one dead link 2026-09-24T20:27:23.832450+00:00
3 evidence-tier-audit.md 19516 236 1 9 5 Are the evidence tiers earned? — Q12 audit of the 121 published badges 2026-10-10T09:07:44.555549+00:00
4 excerpt-binding-audit.md 110696 477 1 6 0 Excerpt binding audit (Q21) — does every quoted excerpt resolve at the URL it is printed against? 2026-10-10T13:34:28.608890+00:00
5 excerpt-placement-audit-zephyrus-sample.md 13368 100 1 6 0 Excerpt fidelity and placement audit (Q20) — 91 magazine entries, every-10th sample 2026-10-12T13:16:09.003821+00:00
6 excerpt-placement-audit.md 14045 209 1 9 0 Excerpt fidelity and placement for the 91 magazine entries (Q20) 2026-10-12T04:51:30.993999+00:00
7 excerpt-placement-nonmagazine-zephyrus-recompute.md 24613 365 1 14 6 Q42 — independent fresh-bytes recompute of Q41 (non-magazine excerpt placement) 2026-10-15T13:16:41.464012+00:00
8 excerpt-placement-nonmagazine.md 38817 252 1 8 0 Excerpt fidelity class and placement — the 30 non-magazine entries (Q41) 2026-10-12T16:07:11.000508+00:00
9 excerpt-placement-rows.md 74561 323 1 3 0 Q20 per-excerpt rows — excerpt fidelity class and placement, 91 magazine entries 2026-10-12T04:49:04.686720+00:00
10 falsification-pass.md 8065 127 1 4 0 Falsification pass — Q4 2026-09-24T20:27:23.832450+00:00
11 helm-adoption-rehearsal.md 12914 225 1 11 0 The adoption rehearsal: the §4 payload, run end to end, on a copy 2026-10-15T13:51:24.080434+00:00
12 helm-adoption-sequence-readiness.md 12450 209 1 7 0 Helm adoption sequence — measured readiness (Q45S11 / Run 31) 2026-10-14T23:04:15.638536+00:00
13 helm-behavioural-guard.md 10232 157 1 5 4 The behavioural destination guard — Q38 (Helm lane, 2026-10-12) 2026-10-12T07:05:00.757147+00:00
14 helm-cli-entry-point.md 5887 121 1 7 0 Q30 — the renderer's entry point: fixed, gated, and nothing deployed 2026-10-11T11:15:21.670438+00:00
15 helm-collector-run.md 19380 353 1 9 4 helm-collector-run.md — Q31, the collector's entry point, executed and gated 2026-10-11T15:39:31.141312+00:00
16 helm-deployed-gate-admission.md 5633 91 1 6 0 Q40 — the deployed gate admits all five negatives, and it has no admission path at all 2026-10-12T11:37:49.562949+00:00
17 helm-deployed-page-generation.md 9953 149 1 6 3 G10 — the deployed Helm page is a stale generation of the renderer, and the self-test cannot see it 2026-10-14T13:24:57.090995+00:00
18 helm-deployed-pill-guard.md 11418 199 1 11 0 G12 — the deployed page's pin pill 2026-10-15T01:21:21.925581+00:00
19 helm-destination-guard-fix.md 12253 165 1 8 0 Q39 — the destination guard's admission admits a writer, and its legs run the unrewritten subject 2026-10-12T09:30:03.418321+00:00
20 helm-discovery-channel-seed.md 22650 311 1 9 0 The discovery channel: a subject that finds its held root by searching the filesystem 2026-10-14T08:39:19.253591+00:00
21 helm-g8-scrub.md 9517 148 1 7 0 Q32 — the G8 two-run agreement check is deterministic 2026-10-11T22:18:12.501765+00:00
22 helm-hash-line-qualifier.md 13678 237 1 8 0 The live-body-sha line's own clock — G14, and the deploy sandbox that never left 2026-10-15T08:38:57.573602+00:00
23 helm-home-channel-guard.md 34311 587 1 28 0 Q52 — the home-directory channel 2026-10-13T20:49:23.319738+00:00
24 helm-leg-sandbox.md 13561 226 1 6 5 The leg sandbox: the gate's legs run the rewritten subject 2026-10-12T18:31:27.568825+00:00
25 helm-null-gate.md 9924 150 1 7 0 The pointer's null case, gated 2026-10-12T00:27:58.308032+00:00
26 helm-parse-guard.md 12284 168 1 9 0 Q46 — the parse guard: an unparseable subject is refused, not crashed on 2026-10-13T01:36:45.457449+00:00
27 helm-pill-both-directions.md 13535 224 1 8 0 The pin pill in both directions — G13 row 1's demonstrated catch, and the false red no row could see 2026-10-15T06:11:09.116136+00:00
28 helm-pill-ground-truth.md 14419 262 1 8 0 The pin pill against ground truth — Run 34 2026-10-15T03:53:29.970866+00:00
29 helm-pin-hash-convention.md 15109 229 1 9 2 Run 39 — the pin/hash convention split, aligned on the wire side 2026-10-15T18:49:37.803962+00:00
30 helm-pin-pill-staleness.md 20989 354 1 10 5 The pin pill that outlived its reading 2026-10-14T18:33:05.780643+00:00
31 helm-pointer-split.md 13828 206 1 6 0 Q33 — Split the newest-file pointer out of `evidence.source_path` 2026-10-11T22:18:49.313832+00:00
32 helm-precondition-gate.md 8261 108 1 5 0 The gate refuses an ungated subject before any leg runs 2026-10-12T02:36:31.775141+00:00
33 helm-probe-spawn-env.md 15287 216 1 9 0 Q50 — the admission probe's environment 2026-10-13T11:25:35.388798+00:00
34 helm-pwdir-channel-refusal.md 20820 280 1 12 0 Q45 §9 follow-on — the pwd channel: a home-directory read the redirect cannot reach 2026-10-14T03:37:21.165505+00:00
35 helm-read-path-guard.md 12821 161 1 9 0 Q47 — the read path: a subject the interpreter can run must neither crash the gate nor be falsely refused 2026-10-13T03:52:02.873410+00:00
36 helm-render-aging.md 9349 144 1 7 0 The Helm ages its own readings 2026-10-11T09:07:49.370878+00:00
37 helm-resolved-redirect.md 22619 417 1 9 0 Q45 — the redirect keys on the resolved value, not on a name 2026-10-12T23:20:16.004555+00:00
38 helm-resolved-root-live-path.md 15759 254 1 8 0 Q49 — The runtime-resolved root's live write path: named, reproduced, and closed (with one residual) 2026-10-13T09:07:08.630294+00:00
39 helm-root-redirect.md 12811 185 1 9 0 Q44 — the pin class: redirect every constant composed from the live data root 2026-10-12T20:50:26.224823+00:00
40 helm-runtime-redirect.md 14030 181 1 9 0 Q48 — the runtime-resolution redirect 2026-10-13T06:42:16.451130+00:00
41 helm-runwide-census-hoist.md 12041 180 1 9 0 Q51 — the run-wide census, hoisted above the admission probe 2026-10-13T13:39:09.328751+00:00
42 ledger-audit-pass1.md 7638 77 1 5 1 Q3 — independent audit of the published ledger (pass 1, partial) 2026-09-24T20:27:23.832450+00:00
43 ledger-audit-pass2.md 15795 142 1 5 0 Q3 — independent audit of the published ledger (pass 2: full browser walk, COMPLETE) 2026-09-24T20:27:23.833450+00:00
44 ledger-date-closure.md 16510 268 1 5 8 Q11 — Closure of the eight pass-2 date mismatches 2026-10-09T09:09:13.923936+00:00
45 ledger-link-inventory.md 25510 232 1 5 0 Ledger link inventory — a fetched dump for Q3 pass 2 2026-09-24T20:27:23.833450+00:00
46 magazine-article-map.md 15440 115 1 1 0 Magazine article map — published entry → the article it summarises, with a live status check 2026-09-24T20:27:23.833450+00:00
47 monitor-identity-census.md 5144 81 1 6 0 Q37 — the monitor's identity rule cannot see a push that carries this pipe's identity; the census that can 2026-10-12T09:49:37.878256+00:00
48 music-master-verification.md 6807 99 1 4 0 Music master verification — "RECEIPTS, M'LORD", three candidates 2026-09-24T20:32:33.132975+00:00
49 named-source-liveness-unlinked.md 10493 125 1 5 0 Q23 — Named-but-unlinked sources: do they resolve? 2026-10-10T17:50:50.217292+00:00
50 named-source-liveness.md 16731 158 1 5 0 Named-source liveness — Q22 2026-10-10T15:44:49.783216+00:00
51 prose-anchor-convention.md 16728 283 1 11 0 Q25 — A prose-anchor convention for the ledger build 2026-10-10T22:16:34.154470+00:00
52 prose-anchor-hardening.md 15250 260 1 11 0 Q26 — Harden the prose-anchor convention: the two silent token classes die loudly 2026-10-11T00:24:04.307601+00:00
53 queue-hygiene-census.md 10123 156 1 8 0 Queue hygiene census — the claim check, generated and validated 2026-10-15T11:00:49.102231+00:00
54 quote-fidelity-live.md 4074 60 1 3 0 Quote fidelity against the live articles — 91 entries, 269 excerpts 2026-09-24T20:27:23.833450+00:00
55 render-site-channels.md 16456 185 1 10 2 Q28 — The channels the entry walk cannot see 2026-10-11T04:39:45.117135+00:00
56 render-site-coverage.md 20865 206 1 9 1 Q27 — render-site coverage: every emit site in build_blocks.py, one fixture each 2026-10-11T02:31:45.406739+00:00
57 render-site-guards.md 16728 199 1 7 0 Q29 — The guards that are not the walk 2026-10-11T06:50:32.194852+00:00
58 silent-rooms-enrichment.md 6417 43 1 2 0 Silent rooms — announcement enrichment 2026-09-24T20:27:23.834450+00:00
59 silent-rooms.md 5289 53 1 3 0 Q1 — the fifteen silent rooms 2026-09-24T20:27:23.834450+00:00
60 summary-fidelity-full-clauses.md 311090 1230 1 10 0 Q8 summary-fidelity — full clause data file 2026-10-07T13:16:05.109015+00:00
61 summary-fidelity-nonmagazine-pilot.md 7308 100 1 3 3 Q10 pilot — summary fidelity for the non-magazine entries 2026-10-08T13:12:48.603151+00:00
62 summary-fidelity-nonmagazine.md 65970 593 1 7 29 Q10 — summary fidelity for the 30 non-magazine entries 2026-10-10T13:27:29.854277+00:00
63 summary-fidelity-pilot.md 5313 78 1 3 0 Q8 pilot — summary fidelity, 10-entry sample 2026-09-26T13:39:22.687296+00:00
+119
View File
@@ -0,0 +1,119 @@
# Recoveries archive index — 2026-10-21
**Lane:** Extract — data extraction and tables (ledger).
**Artifact:** `recoveries-index.csv` (primary, machine table) + `recoveries-index.md` (this doc).
## Source
Every `recoveries/*.md` file under `/root/troupe-standup/recoveries` (62 files, no network).
## Schema
| Column | Meaning |
|---|---|
| `file` | recovery file name, relative to `recoveries/` |
| `bytes` | on-disk size in bytes (`os.stat`) |
| `lines` | newline count (the `wc -l` measurement) |
| `h1` | heading-1 count (each file's lead heading) |
| `h2` | heading-2 count |
| `h3` | heading-3 count |
| `h1first` | verbatim text of the first heading-1 |
| `mtime` | file modification time, ISO 8601, UTC |
## Provenance & counts
- Recovery files: **62**
- Total bytes: **1,366,217**
- Total lines: **13,785**
- Heading-1 / heading-2 / heading-3: **62 / 462 / 78**
## Top 12 by bytes
| file | bytes | lines | h1 | h2 | h3 | date(mtime) |
|---|---|---|---|---|---|---|
| summary-fidelity-full-clauses.md | 311,090 | 1,230 | 1 | 10 | 0 | 2026-10-07 |
| excerpt-binding-audit.md | 110,696 | 477 | 1 | 6 | 0 | 2026-10-10 |
| excerpt-placement-rows.md | 74,561 | 323 | 1 | 3 | 0 | 2026-10-12 |
| summary-fidelity-nonmagazine.md | 65,970 | 593 | 1 | 7 | 29 | 2026-10-10 |
| excerpt-placement-nonmagazine.md | 38,817 | 252 | 1 | 8 | 0 | 2026-10-12 |
| helm-home-channel-guard.md | 34,311 | 587 | 1 | 28 | 0 | 2026-10-13 |
| ledger-link-inventory.md | 25,510 | 232 | 1 | 5 | 0 | 2026-09-24 |
| excerpt-placement-nonmagazine-zephyrus-recompute.md | 24,613 | 365 | 1 | 14 | 6 | 2026-10-15 |
| helm-discovery-channel-seed.md | 22,650 | 311 | 1 | 9 | 0 | 2026-10-14 |
| helm-resolved-redirect.md | 22,619 | 417 | 1 | 9 | 0 | 2026-10-12 |
| helm-pin-pill-staleness.md | 20,989 | 354 | 1 | 10 | 5 | 2026-10-14 |
| render-site-coverage.md | 20,865 | 206 | 1 | 9 | 1 | 2026-10-11 |
## Full machine table
`recoveries-index.csv` — the authoritative table; copied verbatim into a fenced code block below.
```csv
dead-link.md,3134,56,1,4,0,Q2 — chase the one dead link,2026-09-24T20:27:23.832450+00:00
evidence-tier-audit.md,19516,236,1,9,5,Are the evidence tiers earned? — Q12 audit of the 121 published badges,2026-10-10T09:07:44.555549+00:00
excerpt-binding-audit.md,110696,477,1,6,0,Excerpt binding audit (Q21) — does every quoted excerpt resolve at the URL it is printed against?,2026-10-10T13:34:28.608890+00:00
excerpt-placement-audit-zephyrus-sample.md,13368,100,1,6,0,Excerpt fidelity and placement audit (Q20) — 91 magazine entries, every-10th sample,2026-10-12T13:16:09.003821+00:00
excerpt-placement-audit.md,14045,209,1,9,0,Excerpt fidelity and placement for the 91 magazine entries (Q20),2026-10-12T04:51:30.993999+00:00
excerpt-placement-nonmagazine-zephyrus-recompute.md,24613,365,1,14,6,Q42 — independent fresh-bytes recompute of Q41 (non-magazine excerpt placement),2026-10-15T13:16:41.464012+00:00
excerpt-placement-nonmagazine.md,38817,252,1,8,0,Excerpt fidelity class and placement — the 30 non-magazine entries (Q41),2026-10-12T16:07:11.000508+00:00
excerpt-placement-rows.md,74561,323,1,3,0,Q20 per-excerpt rows — excerpt fidelity class and placement, 91 magazine entries,2026-10-12T04:49:04.686720+00:00
falsification-pass.md,8065,127,1,4,0,Falsification pass — Q4,2026-09-24T20:27:23.832450+00:00
helm-adoption-rehearsal.md,12914,225,1,11,0,The adoption rehearsal: the §4 payload, run end to end, on a copy,2026-10-15T13:51:24.080434+00:00
helm-adoption-sequence-readiness.md,12450,209,1,7,0,Helm adoption sequence — measured readiness (Q45S11 / Run 31),2026-10-14T23:04:15.638536+00:00
helm-behavioural-guard.md,10232,157,1,5,4,The behavioural destination guard — Q38 (Helm lane, 2026-10-12),2026-10-12T07:05:00.757147+00:00
helm-cli-entry-point.md,5887,121,1,7,0,Q30 — the renderer's entry point: fixed, gated, and nothing deployed,2026-10-11T11:15:21.670438+00:00
helm-collector-run.md,19380,353,1,9,4,helm-collector-run.md — Q31, the collector's entry point, executed and gated,2026-10-11T15:39:31.141312+00:00
helm-deployed-gate-admission.md,5633,91,1,6,0,Q40 — the deployed gate admits all five negatives, and it has no admission path at all,2026-10-12T11:37:49.562949+00:00
helm-deployed-page-generation.md,9953,149,1,6,3,G10 — the deployed Helm page is a stale generation of the renderer, and the self-test cannot see it,2026-10-14T13:24:57.090995+00:00
helm-deployed-pill-guard.md,11418,199,1,11,0,G12 — the deployed page's pin pill,2026-10-15T01:21:21.925581+00:00
helm-destination-guard-fix.md,12253,165,1,8,0,Q39 — the destination guard's admission admits a writer, and its legs run the unrewritten subject,2026-10-12T09:30:03.418321+00:00
helm-discovery-channel-seed.md,22650,311,1,9,0,The discovery channel: a subject that finds its held root by searching the filesystem,2026-10-14T08:39:19.253591+00:00
helm-g8-scrub.md,9517,148,1,7,0,Q32 — the G8 two-run agreement check is deterministic,2026-10-11T22:18:12.501765+00:00
helm-hash-line-qualifier.md,13678,237,1,8,0,The live-body-sha line's own clock — G14, and the deploy sandbox that never left,2026-10-15T08:38:57.573602+00:00
helm-home-channel-guard.md,34311,587,1,28,0,Q52 — the home-directory channel,2026-10-13T20:49:23.319738+00:00
helm-leg-sandbox.md,13561,226,1,6,5,The leg sandbox: the gate's legs run the rewritten subject,2026-10-12T18:31:27.568825+00:00
helm-null-gate.md,9924,150,1,7,0,The pointer's null case, gated,2026-10-12T00:27:58.308032+00:00
helm-parse-guard.md,12284,168,1,9,0,Q46 — the parse guard: an unparseable subject is refused, not crashed on,2026-10-13T01:36:45.457449+00:00
helm-pill-both-directions.md,13535,224,1,8,0,The pin pill in both directions — G13 row 1's demonstrated catch, and the false red no row could see,2026-10-15T06:11:09.116136+00:00
helm-pill-ground-truth.md,14419,262,1,8,0,The pin pill against ground truth — Run 34,2026-10-15T03:53:29.970866+00:00
helm-pin-hash-convention.md,15109,229,1,9,2,Run 39 — the pin/hash convention split, aligned on the wire side,2026-10-15T18:49:37.803962+00:00
helm-pin-pill-staleness.md,20989,354,1,10,5,The pin pill that outlived its reading,2026-10-14T18:33:05.780643+00:00
helm-pointer-split.md,13828,206,1,6,0,Q33 — Split the newest-file pointer out of `evidence.source_path`,2026-10-11T22:18:49.313832+00:00
helm-precondition-gate.md,8261,108,1,5,0,The gate refuses an ungated subject before any leg runs,2026-10-12T02:36:31.775141+00:00
helm-probe-spawn-env.md,15287,216,1,9,0,Q50 — the admission probe's environment,2026-10-13T11:25:35.388798+00:00
helm-pwdir-channel-refusal.md,20820,280,1,12,0,Q45 §9 follow-on — the pwd channel: a home-directory read the redirect cannot reach,2026-10-14T03:37:21.165505+00:00
helm-read-path-guard.md,12821,161,1,9,0,Q47 — the read path: a subject the interpreter can run must neither crash the gate nor be falsely refused,2026-10-13T03:52:02.873410+00:00
helm-render-aging.md,9349,144,1,7,0,The Helm ages its own readings,2026-10-11T09:07:49.370878+00:00
helm-resolved-redirect.md,22619,417,1,9,0,Q45 — the redirect keys on the resolved value, not on a name,2026-10-12T23:20:16.004555+00:00
helm-resolved-root-live-path.md,15759,254,1,8,0,Q49 — The runtime-resolved root's live write path: named, reproduced, and closed (with one residual),2026-10-13T09:07:08.630294+00:00
helm-root-redirect.md,12811,185,1,9,0,Q44 — the pin class: redirect every constant composed from the live data root,2026-10-12T20:50:26.224823+00:00
helm-runtime-redirect.md,14030,181,1,9,0,Q48 — the runtime-resolution redirect,2026-10-13T06:42:16.451130+00:00
helm-runwide-census-hoist.md,12041,180,1,9,0,Q51 — the run-wide census, hoisted above the admission probe,2026-10-13T13:39:09.328751+00:00
ledger-audit-pass1.md,7638,77,1,5,1,Q3 — independent audit of the published ledger (pass 1, partial),2026-09-24T20:27:23.832450+00:00
ledger-audit-pass2.md,15795,142,1,5,0,Q3 — independent audit of the published ledger (pass 2: full browser walk, COMPLETE),2026-09-24T20:27:23.833450+00:00
ledger-date-closure.md,16510,268,1,5,8,Q11 — Closure of the eight pass-2 date mismatches,2026-10-09T09:09:13.923936+00:00
ledger-link-inventory.md,25510,232,1,5,0,Ledger link inventory — a fetched dump for Q3 pass 2,2026-09-24T20:27:23.833450+00:00
magazine-article-map.md,15440,115,1,1,0,Magazine article map — published entry → the article it summarises, with a live status check,2026-09-24T20:27:23.833450+00:00
monitor-identity-census.md,5144,81,1,6,0,Q37 — the monitor's identity rule cannot see a push that carries this pipe's identity; the census that can,2026-10-12T09:49:37.878256+00:00
music-master-verification.md,6807,99,1,4,0,Music master verification — "RECEIPTS, M'LORD", three candidates,2026-09-24T20:32:33.132975+00:00
named-source-liveness-unlinked.md,10493,125,1,5,0,Q23 — Named-but-unlinked sources: do they resolve?,2026-10-10T17:50:50.217292+00:00
named-source-liveness.md,16731,158,1,5,0,Named-source liveness — Q22,2026-10-10T15:44:49.783216+00:00
prose-anchor-convention.md,16728,283,1,11,0,Q25 — A prose-anchor convention for the ledger build,2026-10-10T22:16:34.154470+00:00
prose-anchor-hardening.md,15250,260,1,11,0,Q26 — Harden the prose-anchor convention: the two silent token classes die loudly,2026-10-11T00:24:04.307601+00:00
queue-hygiene-census.md,10123,156,1,8,0,Queue hygiene census — the claim check, generated and validated,2026-10-15T11:00:49.102231+00:00
quote-fidelity-live.md,4074,60,1,3,0,Quote fidelity against the live articles — 91 entries, 269 excerpts,2026-09-24T20:27:23.833450+00:00
render-site-channels.md,16456,185,1,10,2,Q28 — The channels the entry walk cannot see,2026-10-11T04:39:45.117135+00:00
render-site-coverage.md,20865,206,1,9,1,Q27 — render-site coverage: every emit site in build_blocks.py, one fixture each,2026-10-11T02:31:45.406739+00:00
render-site-guards.md,16728,199,1,7,0,Q29 — The guards that are not the walk,2026-10-11T06:50:32.194852+00:00
silent-rooms-enrichment.md,6417,43,1,2,0,Silent rooms — announcement enrichment,2026-09-24T20:27:23.834450+00:00
silent-rooms.md,5289,53,1,3,0,Q1 — the fifteen silent rooms,2026-09-24T20:27:23.834450+00:00
summary-fidelity-full-clauses.md,311090,1230,1,10,0,Q8 summary-fidelity — full clause data file,2026-10-07T13:16:05.109015+00:00
summary-fidelity-nonmagazine-pilot.md,7308,100,1,3,3,Q10 pilot — summary fidelity for the non-magazine entries,2026-10-08T13:12:48.603151+00:00
summary-fidelity-nonmagazine.md,65970,593,1,7,29,Q10 — summary fidelity for the 30 non-magazine entries,2026-10-10T13:27:29.854277+00:00
summary-fidelity-pilot.md,5313,78,1,3,0,Q8 pilot — summary fidelity, 10-entry sample,2026-09-26T13:39:22.687296+00:00
```
## Machine-check
`CHECK: python3 check_recoveries_index.py` — re-derives the table from `recoveries/*.md` (independent `find`/`wc` pass) and asserts the row count, the byte total, and a sampled row match the CSV. Exits 0 iff the artifact is correct, nonzero otherwise.