pipelines/WHOLEARC_FIRSTRUN_2026-07-27.md
Applied after scratchpad/cvw_wholearc_critique.md (VERDICT: FIXES). Every disputed number was
recomputed from scratch against the live tree at HEAD ed34aba with a third, independently
written extractor (scratchpad/fixagent_recip.py · fixagent_recip3.py · fixagent_misc.py),
not by importing either prior script. The repo was not edited; only this report was.
The headline correction is itself corrected, twice over, and in the same direction both times.
The recorded figure was 14/27. The first run said 8/21. The critic said 5/21. **The measured value
is 3/21** — and the reason all three prior numbers were wrong is one thing: *the corpus writes
chapter references in at least three dialects and every previous search spoke one or two of them.*
| finding | was | now | why |
|---|---|---|---|
| reciprocation debt | 14/27 → 8/21 (run) → 5/21 (critic) | 3/21 | tri-dialect recount, below |
CH_40→CH_75 UNRECIPROCATED | asserted | WITHDRAWN — paid | machine-dialect read, CH_75:105 |
CH_73→CH_75 INCIDENTAL | asserted | WITHDRAWN — paid | machine-dialect read, CH_75:105 |
CH_48→CH_65 INCIDENTAL | asserted | WITHDRAWN — paid | CH_65:95 reads two Ch-48 tokens |
CH_03→CH_63 UNRECIPROCATED | asserted | WITHDRAWN — paid | CH_63:100 beat objective names Ch-3 |
CH_72→CH_75 UNRECIPROCATED | asserted | WITHDRAWN — paid | 17 substantive lines; the *hyphen* dialect |
| "CH_65's only mention is a roster carry, *the Jaguar (Ch 48)*" | quoted as evidence | CUT — the quote is true, the word "only" is false | CH_65:95 carries qeqchi_ch48_mark + ch48_route_stored |
| "9 quote artifacts" | occurrence count | 6 artifact PAIRS (9 occurrences) | arithmetic shown in §3 |
| H4 — vocabulary crossover at Ch 58, stages 3-4 missed | asserted | CORRECTED — crossover at Ch 65, stage 4 only | "Child Familiar" spans 66 nodes |
| §2 amulet controls 5 · 6 · 5 | asserted | CORRECTED to 4 · 5 · 4 | duplicate-glob inflation; span unaffected |
§4 "nodes declaring forward_track 25/79" | asserted | CORRECTED — 38 any / 22 non-empty / 20 node-valued | 25 reproduces under no definition |
§5 "\brift\b 39 nodes" | mislabelled | 30 case-sensitive / 39 case-insensitive | convention now stated |
H6 "~44 beat-level ws.* reads" | asserted | CORRECTED — 41 tokens in 25 of 909 beats | in-block vs out-block split |
| W-6 citation | bare filename | CORRECTED to the full path | docs/proposals/whole_arc/… |
H2 site PRE_5090_BUILD_PLAN.md L415 | asserted | CORRECTED to L431 | verified in file |
| §9 item 1 — "write 8/21 into two canon docs" | recommended | WITHDRAWN as a standing recommendation | see §9 |
Protocol, marked honestly. Two of the three protocol constraints held and are re-verified:
freeze-order item 9 (CL-01 stays un-minted — no arc row exists anywhere) and item 10 (the meter —
no auditors launched, no fleet, the three Wave-5a numbers correctly reported unpublished). The
constraint this run breached is its own: the report's positive-control doctrine
(a-search-that-cannot-match-reports-zero) was applied in one dialect only, so five "zeros" were
searches that could not match. **§3, H2, H3 and W-4 are therefore marked as protocol-breached
findings below rather than defended** — the failure mode the run diagnosed in M2 reproduced inside
the correction written to catch it, and then reproduced *again* inside the critique that caught
that. Three passes, same defect, progressively smaller. That recursion is now finding H10.
Shared-tree note (disclosure). The working tree was clean at the start of this revision pass and
carried modifications to docs/PRE_5090_BUILD_PLAN.md, docs/scan_baseline.json,
harness/rag/index_manifest.json and three harness/*scorecard* files by its end. **None of them
were made by this pass** — it wrote only to scratchpad, and git diff attributes them to another
lane. The one citation that lives in a touched file (PRE_5090_BUILD_PLAN.md:431) was re-pinned
after the change and still resolves; every other line citation here is in an untouched file. Line
numbers in this report are HEAD-ed34aba-relative and should be re-pinned before being acted on.
What survives untouched: the §0 inversion (the holdout extracted cleanly, the hand-authored
chain came up short), the entire amulet measurement, M1, M3, the §4 thread table, the §5 population
table, H1, H5, H7, H8, H9, and the ranked shape of the worklist. Detail in §C of the critique and
re-verified here.
---
Instrument: docs/proposals/STORY_DEPTH_PROGRAM.md §3 (the four layers) + §5 WAVE 5 (the metered
pilot + the CL-01 holdout). Run posture: **read-only on the repo; zero canon edits; report to
scratchpad only.** Corpus at HEAD ed34aba (twelfth sitting), 79 spine nodes, 909 typed beats,
22 threads — all three re-verified exact.
Scope honored. The program forbids the 79-per-node-agent design (§3.1) and mandates the metered
pilot before the fleet (§5 Wave 5a, freeze-order item 10). This run is therefore **Layer 0 + the
acceptance test + the arithmetic** — not the fleet, not per-node opinions. No arc auditors were
launched. The three numbers Wave 5a must publish (tokens/auditor, findings/auditor, refuter
kill-rate) are still unpublished and remain the gate on Wave 5b.
Working artifacts (scratchpad, reproducible): extract_connections_v0.py · layer0_v0.json ·
reciprocation_v2.py · reciprocation_v2.json · **fixagent_recip.py · fixagent_recip3.py ·
fixagent_misc.py** (the revision's independent recount).
---
Per §5, the acceptance test requires both chains. Result (unchanged by the revision):
| chain | extracted unaided? | depth rubric | verdict |
|---|---|---|---|
| CL-01 (the holdout — childhood familiar) | YES — all four stages + band-gating + terminal consequence | 5/6 (1 UNSCORED) | PASS |
| The amulet chain (ARC_0001 candidate) | YES — but the corpus chain is 5 nodes and stops | 4/6 (1 UNSCORED) | FAIL (6/6 required) |
The failure is a CORPUS gap, not an extractor gap — and that inversion is the single most useful
thing this run produced. The holdout was designed to catch an instrument that only looks good because
humans hand-fed it rows. Instead the instrument found the holdout cleanly and the *hand-authored*
chain came up short, because the amulet arc genuinely terminates at Ch 13 with no downstream reader.
Every fix in the revision block leaves this intact; the amulet's silence was positive-controlled in
three vocabularies plus a word-sense control and it holds.
Read: Wave 4 (the amulet integration) is not finished. Do not run Wave 5b against this corpus
until the amulet chain has a disposition — sweeping now reproduces the 2026-07-13 staleness failure
the charter was written to prevent.
---
Extraction was run before WHOLE_ARC_CONNECTIVE_WEB.md was opened. Recovered from the corpus alone
(all four stages re-verified verbatim in the revision):
yet canonically escaped (Ch 58 reveal, Truly Good path only)"; the bite-and-bolt, watched dying from
the crack in the rock. Origin also carried in CH_PROLOGUE.
Truly-Good path"; machine layer at CH58_B10, `ws.familiar_bond_state: childhood_familiar_reunited
(on the truly-good trajectory) | loss-stands (otherwise)`. Band-gating captured.
legendary companion … Good-Enough — the familiar gifts a binding stone … Evil — the protagonist
defeats the [familiar]", resolving at the Finales (Ch 66-77), explicitly NOT staged at Ch 65.
the Last Coil about five minutes while she breaks the re-emergent withholder-second-front"; plus the
taming-and-breeding roster mustered as a WAR-HOST led by the childhood familiar (22nd slot, crossed
home). Terminal: ws.familiar_bond_state: childhood_familiar_home_in_realm (band-dependent, absent
on Evil), carried through Ch 76/77/Epilogue.
Depth rubric, computed: carrier PASS · cost UNSCORED (no cost_ledger column exists — Wave 4
unrun) · setup-before-payoff PASS · behavioural consequence PASS (ws.familiar_bond_state W24 R2,
written Ch 58 and read downstream) · ≥3 touches PASS (Ch 2, 33, 55, 58-65, 70, 75, 76, 77, Epi) ·
disposition PASS. = 5/6 (1 UNSCORED). Per §3.3 UNSCORED scores as a miss, so CL-01 is not DEEP —
but the one miss is a *missing data home*, not a missing story.
Disposition PASS, disambiguated (was in tension with W-6, now resolved). The PASS is scored on
the worldstate axis — ws.familiar_bond_state reaches a terminal band-dependent value and is
carried to the Epilogue. It is not a claim that TL-06 ("the 22nd familiar slot has no home
node") is closed: TL-06 is about a staged bonding beat in 66-77, which remains absent. A ws key
is not a home node. Both readings are true on their own axis and W-6 keeps TL-06 as open.
The extraction was NOT free — finding H4 below, with its magnitude CORRECTED. The chain is named
"Child Familiar" early and "childhood familiar" / "22nd slot" late, but the crossover is at
Ch 65, not Ch 58. Measured over the 79 nodes: "Child Familiar" appears in 66 nodes
(CH_PROLOGUE + CH_01..CH_65); "childhood familiar" in 6 (CH_65, 70, 75, 76, 77,
CH_EPILOGUE); "22nd slot" in 8 (CH_58..CH_65). CH_65 carries both spellings (2 and 2);
CH_75 carries "Child Familiar" 0 times and "childhood familiar" 20 times. So a single-string
extractor keyed to the early casing recovers stages 1, 2 and 3 and silently misses **stage 4
only**. The finding class stands — vocabulary drift defeats single-string extraction and an alias
table is required at mint time — the stated boundary and damage were overstated by one stage.
---
Span in the spine corpus: CH_PROLOGUE · CH_01 · CH_02 · CH_08 · CH_13. Five nodes. Then nothing.
Positive control run before recording the absence (per a-search-that-cannot-match-reports-zero),
with the control counts corrected — the first run's 5 · 6 · 5 were inflated by exactly one each
by a glob that matched CH_PROLOGUE.md twice. Measured over the 79 distinct nodes:
amulet 4 (CH_PROLOGUE, CH_01, CH_02, CH_13) · HL_0095 5 (those four + CH_08) ·
AMULET_PROVENANCE 4 · realm ward 1 (CH_13) · \bward\b 16 (none of the post-13 hits are
the object — they are the apotropaic, seam-ward, ward-renewal, ward-construct and gorge-pool senses) ·
control protagonist 80 files. The search can match, so the zeros are real. **The five-node span is
unchanged and correct** — CH_08 enters the chain via HL_0095 only; it contains zero instances of
the word "amulet".
Zero amulet edges across CH_14 → CH_77 → CH_EPILOGUE (66 nodes). CH_13's own end-state declares the
forward carry — *"at the departure beat the protagonist gives them the realm amulet, so the ward travels
on the healer's child from Ch 14 onward"* (docs/spine/CH_13.md:281, re-verified verbatim) — and
no node downstream ever reads it. This is a declared promise with no consumer anywhere: the
textbook UNPAID/DANGLING edge, on the chain Josh authored personally and knows cold.
Machine layer: the freshly-landed Ch-2 find-beat *is* typed —
in: {local.alone: true} → out: {local.ward_recovered: true} (CH_02.md:114, consumed at :159). But
local.* is node-scoped and dies at the chapter boundary, and **no ws.* key carries the amulet**
(only a single ws.item_instance_ledger mention, CH_01.md:271). The object cannot cross a seam today.
Depth rubric, computed: carrier PASS (concrete object; registry row unverified — no item registry
resolved) · cost UNSCORED · setup-before-payoff PASS · behavioural consequence PASS *within
CH_02 only* · ≥3 touches PASS (5 nodes) · disposition MISS. = 4/6 (1 UNSCORED) against a
required 6/6.
---
⚠ PROTOCOL-BREACH MARKER. This section's first version applied the positive-control rule in a
single dialect and produced five false debts. It is republished with the method that survives the
data, and the failure is recorded as H10 rather than argued away.
The recorded figure is wrong on the live tree, but not in the direction first reported.
STORYDEPTH_WHOLE_ARC_INSTRUMENT_2026-07-27.md:113 records *"14 of 27 declared pairs
unreciprocated"*; the number is quoted onward in docs/DOC_MAP.md:326 and
docs/PRE_5090_BUILD_PLAN.md:431 (not L415 — corrected). Three defects, not two.
Every forward_track [...] occurrence in docs/spine/CH_*.md (79 nodes; the glob's 80th file,
CH_57_BUILD_BRIEF.md, is not a node and is excluded):
raw distinct (containing-file → target) pairs ................. 31
− non-node inners ............................................ 4
[none yet authored] ×4 · [none documented] ×3
[none confirmed] ×2 · [SRC: T1_Integrity_Paths… # 5.5] ×1
− quote-artifact pairs ....................................... 6
4 self-pairs (a node quoting a declaration aimed at itself):
CH_41→41 (quoting CH_13) · CH_59→59 (quoting CH_08, CH_09)
CH_62→62 (quoting CH_39, CH_40) · CH_63→63 (quoting CH_02)
2 phantom forward pairs owned by other nodes:
CH_62→65 (owner CH_48) · CH_62→75 (owners CH_39, CH_40)
============================================================
OWNED PAIRS .................................................. 21
Defect A — quote artifacts inflate the pair count, and the artifact count was itself misreported.
A *target* node quoting the *source's* declaration was counted as a declaration owned by the target.
The first run reported "9 such artifacts"; 9 is the occurrence count, 6 is the pair count — the
distinction matters because only pairs enter the census. Two of M2's fourteen — **CH_62→65 and
CH_62→75 — do not exist**: CH_62.md:278-279 is quoting CH_39's, CH_40's and CH_48's declarations
verbatim ("*CH_48's own FORK_CH48_A also declares forward_track [CH_62, CH_65]*"), not making its own.
This defect is confirmed exactly; 21 owned pairs is the reproduced figure across all three
independent extractors.
Defect B — the reader test was searching the wrong dialects. The corpus states a paid promise in
three distinct notations, and no prior pass spoke all three:
| dialect | form | example |
|---|---|---|
| prose-space | Ch 40, CH_40, Chapter 40 | *"the ancient Ch 11 node behind it"* |
| prose-hyphen | Ch-40 (the adjectival form, and the corpus's dominant one) | *"branch-balanced on the Ch-72 kill/spare"* |
| machine | <community>_chNN_mark, chNN_route_stored inside a beat in: block | *ws.community_state_per_region: mbuti_ituri_ch40_mark* |
M2's CH_NN test read dialect 1 only. The first run's correction added prose variants but still could
not match ch40_mark (no re.IGNORECASE, and \b40\b cannot match 40_ because _ is a word
character). The critique added the machine dialect but kept a space-or-nothing separator, so
\bCh\.?\s?72\b structurally cannot match Ch-72 — which is how CH_72→CH_75, a pair with
seventeen substantive references, survived three passes as a zero.
| type | n | pairs |
|---|---|---|
| RECIPROCATED | 18 | 02→63, 03→63, 08→59, 09→59, 11→40, 12→39, 13→41, 14→15, 15→69, 39→62, 39→75, 40→62, 40→75, 48→62, 48→65, 59→65, 72→75, 73→75 |
| INCIDENTAL (named, debt unpaid) | 0 | — |
| UNRECIPROCATED (never named, any dialect) | 3 | 12→40, 28→65, 29→65 |
The real debt is 3 / 21. Not 14/27, not 8/21, not 5/21.
The five withdrawn debts, with the evidence that refutes each (cited-or-cut):
CH_40→CH_75 — PAID. docs/spine/CH_75.md:105, beat CH75_B04 in: block: ws.community_state_per_region: yoruba_fon_coast_ch39_mark+mbuti_ituri_ch40_mark+annwn_ch73_mark.
CH_40's declaration (CH_40.md:189/192, {mbuti_ituri: …, forward_track [CH_62 CH_75]}) is read by
name. It is a *read*, not a mention.
CH_73→CH_75 — PAID. Same line, same in: block: annwn_ch73_mark, against CH_73.md:243 `mark_carried: {annwn: [bucket-variant]-valence via arawn_faith_kept,
forward_track [CH_75]}` — which itself names *"the Ch-75 TL-25 coalition-return is the read node"*.
CH_48→CH_65 — PAID. docs/spine/CH_65.md:95, beat CH65_B03 in: block:`ws.convergence_node_state: ch48_route_stored, ws.community_state_per_region:
qeqchi_ch48_mark+african_scholarship_network_ch59_mark`. **The claim "CH_65's only mention is a
roster carry, *the Jaguar (Ch 48)*" is CUT** — the quoted string exists, the word "only" is false,
and the forward-tracked community mark it was cited to disprove is the very token on line 95.
CH_03→CH_63 — PAID. docs/spine/CH_63.md:100, beat CH63_B02 objective: *"read the Kelimutucarved mark carried from the origin node, its reception opening or altering the keepers' aid and
lore by the Ch-2/Ch-3 Manggarai valence — never a wall"*; restated in the seam assert at :271
(*"ws.community_state_per_region: carries the Ch-2/Ch-3 Manggarai valence read at CH63_B02"*).
Both CH_02 and CH_03 are paid by the same beat.
CH_72→CH_75 — PAID, and emphatically. 17 substantive lines in CH_75.md, including :277 *"the terminal Last Coil BRANCH-BALANCED on the Ch-72 kill-or-spare and
INTEGRITY-AND-BOND-GATED at FORK_CH75_A"* and :161 *"the locked band crossed with the Ch-72
withholder kill/spare (ws.nemesis_memory_per_boss at the Ch-72 dragon BE_0072)"*. An entire
terminal fork is a two-axis dispatch on this pair. Reported as a zero three times because the
corpus writes it with a hyphen.
The surviving correction stands. CH_11→CH_40 is RECIPROCATED, not unpaid — this was M2's
headline example (*"the single biggest missed web in the whole arc"*, *"thirteen days and one full v3
rewrite later, still unpaid"*), and it is paid on both dialects: CH_40.md:119 beat in: block reads
ws.community_state_per_region: mbuti_ituri_ch11_mark, and Ch-11 is named on 7 further lines
including *"the industrialized return to the Ch 11 Ituri forest — the ancient Ch 11 node behind it
(the same forest, the same peoples)"* and *"recognition-via-land §8.10.1 with Ch 11 the canonical
first instance"*. The rhetorical centrepiece of M2 is a false positive.
Every zero positive-controlled, in all three dialects, against the whole chapter range:
CH_12→CH_40 — 0. Control: CH_40.md names 21 other chapters (Ch 39 ×22, Ch 11 ×21,Ch 76 ×17, Ch 41 ×15, Ch 77 ×15, Ch 63 ×13, Ch 38 ×5 …) and never Ch 12. The file can match.
CH_28→CH_65 — 0. Control: CH_65.md names 27 other chapters (Ch 66 ×21, Ch 64 ×20,Ch 75 ×17, Ch 58 ×16, Ch 76 ×16, Ch 59 ×9, Ch 77 ×9 …) and never Ch 28.
CH_29→CH_65 — 0. Same control file, same 27 chapters, never Ch 29.CH_12→CH_40 survives as the single best instance of the "biggest missed web" claim — the only one of
the original fourteen that is both genuinely unpaid and narratively load-bearing.
M1 (the 64 empty forward_track [] cells) is UNCHANGED and confirmed — 64 cells across the same
17 nodes: CH_04(4), 20(4), 23(4), 26(4), 30(5), 31(4), 33(4), 34(4), 35(5), 41(3), 42(4), 44(4),
45(3), 47(4), 49(2), 51(3), 53(3). Reproduced per-node identically by all three extractors. Each is a
permanent durable community mark with no declared consumer. This is now, unambiguously, the largest
single block of unmade connections in the corpus — 64 against a real reciprocation debt of 3.
M3 (worldstate flow) recomputes EXACTLY as recorded — 30 distinct ws.* keys in beat in:/out:,
14 write-only, 4 read-only (12 both), identical key lists. That measure is healthy and current.
---
| measure | live value |
|---|---|
| spine nodes / typed beats / threads | 79 / 909 / 22 (re-verified exact) |
arc_id population | 0 corpus-wide — appears only in planning docs (DOC_MAP, FACTORY_CONTRACT, PRE_5090_BUILD_PLAN, STORY_DEPTH_PROGRAM, 3× pipeline_review); zero in docs/spine/, registries/, harness/** (control: chapter_id = 91 files) |
T0_Promise_Ledger / arc registry / T0_Persona_Index | do not exist |
promise: beat token | 0 / 909 beats (control: bare promise = 23 nodes) → v1 classes (UNEARNED · PATH_FLAT · DANGLING) cannot arm |
nodes carrying a forward_track cell — CORRECTED | 38 with any cell · 22 with a non-empty cell · 20 with a node-valued (CH_NN) cell · 16 with only empty cells. *The previously reported 25/79 reproduces under no definition and is withdrawn.* |
| owned forward edges / empty cells | 21 / 64 |
beat-level ws.* reads — CORRECTED | 41 tokens in 25 of 909 beats (in-block). For contrast, out: writes carry 189 tokens across 163 beats — the corpus writes worldstate freely and reads it almost never |
Thread GAPs (≥12 consecutive untouched nodes inside a declared span) — 12 threads affected
(table reproduced line-for-line by the independent critic; unchanged):
| thread | touches | span | worst hole |
|---|---|---|---|
| THREAD_15 | 4 | CH_02..CH_73 | CH_26→CH_73 (46 empty) |
| THREAD_19 | 6 | CH_07..CH_75 | CH_47→CH_74 (26); CH_24→CH_47 (22) |
| THREAD_09 | 11 | CH_07..CH_61 | CH_31→CH_48 (16); CH_48→CH_61 (12) |
| THREAD_20 | 16 | Pro..CH_77 | CH_38→CH_55 (16); CH_55→CH_69 (13) |
| THREAD_13 | 24 | CH_04..CH_67 | CH_32→CH_48 (15); CH_51→CH_67 (15) |
| THREAD_10 | 14 | CH_04..CH_55 | CH_26→CH_42 (15) |
| THREAD_04 | 17 | CH_08..CH_77 | CH_44→CH_60 (15) |
| THREAD_07 | 17 | CH_05..CH_55 | CH_30→CH_45 (14) |
| THREAD_08 · 11 · 16 · 21 | 22 · 18 · 9 · 10 | — | 12-13 each |
THREAD_14 (6 touches) and THREAD_15 (4) are the two thinnest arcs in the corpus. THREAD_15's
46-node hole is the largest connective void measured.
---
The director asked that the freshly-landed origin arc and the ruled Hollow/rift systems be treated as
connection surfaces. They are, and they are near-empty. Case convention is now stated on every row.
| surface | spine penetration | note |
|---|---|---|
| the amulet chain | 5 / 79 nodes, stops at Ch 13 | §2 above |
| vibrational gravity | CH_01 only | the concept has exactly one node |
rift | 30 nodes case-sensitive · 39 case-insensitive | healthy either way — the one well-spread new surface. *The earlier "39 under \brift\b" mislabelled the case-insensitive count under a case-sensitive regex; both are now published.* |
Hollow (case-SENSITIVE word boundary, named entity) | CH_02, CH_60 only | an earlier case-insensitive count of 25 was noise from "hollowing"/"hollowed" (e.g. CH_13's "the mine's hollowing"); case-insensitive \bhollow\b = 18 nodes, the named system is in 2 |
BLIGHT / CONTAIN_BLIGHT | 0 / 79 | positive-controlled: the vocabulary DOES exist in 6 docs/ files (PRE_5090_BUILD_PLAN, WS7_WIRING_BUILD_PLAN, 3× pipeline_review/HOLLOW_*) — so the search can match; the spine simply never uses it |
counts_toward_cleansing_meter | 0 / 281 rows populated on T0_Boss_Encounter_Registry | column minted, nothing in it |
ledger_axis | 0 / 281 | same |
manifestation_tier | 0 / 281 | same |
| the 20 bounded rift dungeons | 0 / 79 ("rift dungeon" absent) | ruled at ed34aba, no narrative consumer |
Population controls on neighbouring columns of the same registry (pip_count 13/281,
has_nonkill_path 16/281, ontology_class 2/281) confirm the file is genuinely sparse rather than
mis-read. All rows independently reproduced.
**This is exactly the class gate 33's E6 rule (unpopulated-is-a-HARD-FAIL) was specified to catch —
and gate 33 is not built.** Three schema riders landed at 0/281 with no tooth watching.
---
All items PROPOSAL-TIER. Reveal discipline holds: no pre-Ch-38 item carries a House-of-Velheim
pattern, name, or agent-noun. **Eight items; W-4 is materially reduced by the revision, none is
withdrawn entirely.**
W-1 · The amulet chain has no disposition (highest payoff).
*Ends:* CH_13 end-state carry-forward ↔ nothing, across 66 nodes.
*Verbatim evidence:* docs/spine/CH_13.md:281 — *"at the departure beat the protagonist gives them
the realm amulet, so the ward travels on the healer's child from Ch 14 onward"*; against zero
amulet / HL_0095 / AMULET_PROVENANCE hits in any node > 13, positive-controlled §2.
*Proposed weave:* mint a ws.amulet_bearer_state key (the object cannot cross a seam on local.*);
place readers at the existing convergence nodes the corpus already uses for Ntala — Ch 38 (the
journal-transfer midpoint), Ch 65 (the Departure/Continuation lock), Ch 75 (the war),
Ch 76/77/Epilogue (the return). Blocks the Wave-5 acceptance test; it is Wave 4's unfinished
remainder. *Proposal-tier; unaffected by the revision.*
W-2 · The Hollow / BLIGHT / cleansing-meter vocabulary has zero consumers.
*Ends:* T0_Boss_Encounter_Registry columns + the HOLLOW planning docs ↔ 79 spine nodes.
*Verbatim evidence:* counts_toward_cleansing_meter / ledger_axis / manifestation_tier all
0/281 rows, against live neighbours pip_count 13/281 and has_nonkill_path 16/281; BLIGHT
0/79 spine nodes against 6 docs/ files carrying the vocabulary (§5, positive-controlled).
*Proposed weave:* populate the three columns on the rift-and-Hollow encounter rows and name the
system in the slice nodes that already carry rift material (CH_02 and CH_60 are the only current
homes). Build gate 33's E6 arm at the same time or this recurs silently. *Proposal-tier.*
**W-3 · 64 empty forward_track [] cells across 17 nodes — now the corpus's largest connective hole
by an order of magnitude.**
*Ends:* 64 permanent community marks ↔ no declared consumer.
*Verbatim evidence:* forward_track [] ×64, per-node counts CH_04(4) 20(4) 23(4) 26(4) 30(5) 31(4)
33(4) 34(4) 35(5) 41(3) 42(4) 44(4) 45(3) 47(4) 49(2) 51(3) 53(3); reproduced identically by three
independent extractors. CH_41.md:177 states the pattern in the corpus's own voice: *"no later
chapter currently revisits South Africa modern, so forward_track stays empty here — a future revisit
wires the read then"*.
*Proposed weave:* the one-line extractor fix (match \[([^\]]*)\], type empty as UNCLAIMED,
route to the ledger as an open UNPAID row, never a hard FAIL — it is work, not a defect), then assign
consumers. Promoted in relative priority: with the reciprocation debt down to 3, this is where the
unmade connections actually live. *Proposal-tier.*
W-4 · The 3 genuinely unpaid forward pairs (REDUCED from 8 — five were refuted and withdrawn).
*Ends:* 12→40, 28→65, 29→65 — declared by the source, never named by the target in any of the
three dialects.
*Verbatim evidence:* CH_12.md:297/301 declares forward_track [CH_40]; CH_40.md names 21 other
chapters and never Ch 12. CH_28.md:107/301/316 and CH_29.md:284 declare forward_track [CH_65];
CH_65.md names 27 other chapters and never Ch 28 or Ch 29. Each zero positive-controlled in
prose-space, prose-hyphen and machine dialects.
*Proposed weave:* one reciprocating clause in each target naming the debt's origin — for CH_12→CH_40
the Dahomey-to-Ituri economic through-line the corpus already runs through ws.community_state_per_region.
CH_12→CH_40 is the surviving instance of the "biggest missed web". *Proposal-tier.*
*Withdrawn from this item as refuted: 03→63, 40→75, 72→75, 48→65, 73→75 — all paid, evidence in §3.2.*
W-5 · THREAD_15 (4 touches, a 46-node hole) and THREAD_19 (6 touches, 26- and 22-node holes).
*Ends:* a declared thread span ↔ the nodes inside it that never touch the thread.
*Verbatim evidence:* §4 table — THREAD_15 spans CH_02..CH_73 on 4 beat-level touches with
CH_26→CH_73 empty (46 nodes); THREAD_19 spans CH_07..CH_75 on 6 touches. Reproduced line-for-line by
the independent critic.
*Proposed weave:* mid-span anchors, or an explicit open_by_design with a stated reason. These two
are the strongest candidates for FORK J-2 (the fifteen threads that stop mid-arc), already pending
Josh. *Proposal-tier.*
W-6 · The register's own top three orphans — TL-08, TL-25, TL-06.
*Ends:* three declared setups ↔ no landing node.
*Verbatim evidence:* docs/proposals/whole_arc/through_line_callback_payoff.md §F at L443
(path corrected — the bare filename was not resolvable), ranked items 1-3: TL-08 *"the Ch-18
dragon promise never lands (ORPHANED SETUP, highest value)"*; TL-25 *"the Realm-Road allies never
return to the war (ORPHANED SETUP)"*; TL-06 *"the 22nd familiar slot has no home node (ORPHANED
SETUP). Deferred by every 66-77 node."* Re-verified present at HEAD ed34aba by direct read.
*Note, corrected:* the earlier "independently corroborated — CH_73→CH_75 types INCIDENTAL" support is
WITHDRAWN; that pair is reciprocated (§3.2). TL-25 remains open on the *prose* axis — the allies
are named in CH_75's muster beat but the register's claim is about seeded callable allies across
66-74, which is a different and still-unmet requirement. TL-06's relationship to §1's disposition PASS
is disambiguated in §1: a ws key is not a staged home node.
*Proposed weave:* per the register's own fixes — wire the Ch-69 lineage recognition and the Ch-75
fought stand (TL-08); seed callable allies at 66-74 (TL-25); land the bond at Ch 68 (TL-06).
*Proposal-tier.*
**W-7 · The 14 write-only ws.* keys.**
*Ends:* 14 keys written in beat out: blocks ↔ never read in any beat in: block.
*Verbatim evidence:* M3, reproduced exactly key-for-key — write-only set includes
relationship_history, companion_loyalty_transition_events, reputation_biography_propagation,
faction_standing_per_faction, integrity_score, six_option_cumulative_record,
trade_sovereignty_valence, worn_rune_loadout — the exact axis the companion/loyalty rulings made
load-bearing. Reinforced by the corrected §4 figure: 189 write tokens against 41 read tokens.
*Proposed weave:* type each as beat_consumed / runtime_consumed / genuinely unconsumed, and
only treat the third bucket as a finding. *Proposal-tier.*
W-8 · vibrational gravity exists in CH_01 alone.
*Ends:* a freshly-landed concept ↔ one node. *Verbatim evidence:* 1/79 nodes, independently
reproduced. *Proposed weave:* either place readers at the vril-physics nodes that already carry the
adjacent vocabulary, or record it as deliberately single-sited. *Proposal-tier.*
---
H1 · Layer 0 does not exist. harness/extract_connections.py is not built (file absent) and
not enrolled in run_gates.py (0 hits), though §3.5 schedules it "every commit, zero-token". The
prototype written for this run is scratchpad-only. Wave 0 is not done, and W0-2 (publish v0's
finding count by class before Wave 5 commits spend) has therefore not happened. This run supplies
that number provisionally.
**H2 · The recorded 14/27 is stale/incorrect and is propagating — but the correct value is 3/21,
not the 8/21 first published here.** *(PROTOCOL-BREACHED FINDING — first version's zeros were
single-dialect.)* The figure is quoted at docs/DOC_MAP.md:326 and
docs/PRE_5090_BUILD_PLAN.md:431 (line corrected from 415); origin
docs/pipeline_review/STORYDEPTH_WHOLE_ARC_INSTRUMENT_2026-07-27.md:113. M2's headline example
(CH_11→40, "the single biggest missed web") is a false positive, and two of its fourteen
(CH_62→65, CH_62→75) are phantom pairs from quote artifacts — both of those sub-findings survive
intact. What does *not* survive is the magnitude: eleven of M2's fourteen are paid.
H3 · The reader test failed on DIALECT, not on arity. *(RESTATED — the original H3 prescribed
three-way typing, and three-way typing did not save it: every one of the five refuted findings was
typed over the wrong corpus surface, not typed with too few buckets.)* The actionable requirement for
Layer 0:
Reciprocation must be searched in all three dialects — prose-space (Ch NN,CH_NN,
Chapter NN), prose-hyphen (Ch-NN, the corpus's dominant adjectival form), and machine
(<community>_chNN_mark,chNN_route_stored, anyws.*value token embedding a node number) —
all case-insensitive, with_handled explicitly because it is a word character and defeats\b.
A machine-dialect hit inside a beat in: block outranks any prose hit, because it is a *read*,
not a mention. Three-way typing (RECIPROCATED / INCIDENTAL / UNRECIPROCATED) is still correct, but
it is the second requirement, not the first.
Under the tri-dialect method the INCIDENTAL bucket empties entirely (0/21) — every pair the corpus
names at all, it also reads. That is itself a finding: this corpus does not do half-connections.
H4 · Vocabulary drift defeats single-string extraction — magnitude corrected. "Child Familiar"
(66 nodes, Prologue..CH_65) vs "childhood familiar" (6 nodes, CH_65..Epilogue) vs "22nd slot"
(8 nodes, CH_58..CH_65). The crossover is at Ch 65, not Ch 58, and CH_65 carries both spellings.
Keyed to one casing, the extractor recovers stages 1-3 and misses stage 4 only (CH_75:
"Child Familiar" ×0, "childhood familiar" ×20). The finding class stands unchanged — Layer 0 needs an
alias table per arc, populated at mint time — the damage estimate was one stage too pessimistic.
H5 · Section-heading collision — a live extraction hazard, and universal. All 79/79 nodes
carry `## Boss structure (§9 thin join index — phases are beats; the narrative lives in the beat
graph), which collides with ## §10 · Beat graph` under naive substring matching in every file. The
first run of the prototype reported 0 beats for all 79 nodes and looked plausible (it returned
clean numbers for every other class). Any Layer 0 implementation must anchor the section match and
assert a non-zero beat count per node — a silent 0 here is noisy-gate-conceals with the volume
turned all the way down.
**H6 · The behavioural-consequence criterion has almost no data — figure corrected, argument
strengthened. 41 ws.* read tokens across 25 of 909 beats** (the earlier "~44 reads" conflated
in-block reads with the whole in:/out: line). Against 189 write tokens in 163 beats, the
corpus writes worldstate roughly seven times as often as it reads it. Criterion 4 will therefore
report near-universally on local.* (node-scoped) rather than on ws.* (arc-scoped), grading
*within-chapter* chaining and calling it arc consequence. As specified it would have passed the
amulet on a local. key that dies at the Ch-2 boundary. **Recommend tightening criterion 4 to
require a ws.* key crossing at least one node boundary inside the arc span.** Under that tightening
the amulet scores 3/6 and CL-01 still scores 5/6 — the tightening discriminates correctly on the two
known chains. 25/909 is the honest denominator and it makes the case harder, not softer.
H7 · M3 is healthy. 30 / 14 / 4 recomputes exactly, key-for-key, across three independent
extractors. Where M2 rotted in 24 hours, M3 did not — the difference is that M3 counts tokens the
corpus owns, while M2 inferred narrative intent from a regex. Worth encoding as a rule about which
measures are safe to cache: count tokens, not intentions.
H8 · The v1 classes are correctly declared-and-not-armed. promise: = 0/909 (control: bare
promise = 23 nodes). UNEARNED, PATH_FLAT and DANGLING cannot fire, exactly as §3.2 predicts. No
false confidence found here.
H9 · The freeze order is holding on two items and slipping on one. Item 9 (CL-01 stays un-minted)
held — re-verified: CL-01 appears only in analysis/proposal docs, no arc row exists anywhere, and
no T0_Arc_Index exists to hold one. Item 10 (metered pilot before fleet) held — no auditor
artifacts on disk, no fleet launched. Item 6 (the amulet integration before sweep #1) has not
completed, and §2 is the measurement that proves it.
H10 · NEW — the single-dialect blind spot is recursive, and that is the transferable lesson.
a-search-that-cannot-match-reports-zero fired **three times in three consecutive passes over the
same data**: M2 (one dialect, 14 false debts), this run's first version (two dialects, 5 false
debts), the adversarial critique (two-and-a-half dialects, 2 false debts). Each pass caught its
predecessor's blind spot and introduced a smaller one. The pattern is not carelessness — it is that
a corrected search inherits the correcting author's model of how the corpus talks, and that model
is always narrower than the corpus. The operational rule for Layer 0: **enumerate the dialects from
the data, not from the author** — extract the distinct surface forms in which any node reference
appears anywhere in the corpus, then require the reader test to cover the enumerated set, and fail
the gate if a new form appears that no pattern covers. A zero is only publishable once the search has
been shown to match the same target in every enumerated dialect.
---
run_gates.py, no extract, no baseline emit. Therevision pass was likewise read-only on the repo — only this scratchpad report was edited.
unpublished — they require the pilot's 8-10 auditors, which is a director-authorized spend.
T0_Chapter_Index.cost_ledger does notexist. No arc in the corpus can score 6/6 until Wave 4 mints it — including CL-01. Worth
surfacing: the acceptance test as written cannot be passed by any chain today, independent of the
amulet's own gap.
built, enrolled, gated instrument.** All three passes were ad-hoc scripts. That is the actual
status, and it is why §9 item 2 outranks §9 item 1.
1. Do NOT write a reciprocation figure into DOC_MAP.md or PRE_5090_BUILD_PLAN.md yet.
*(Recommendation REVERSED from the first version, which proposed writing 8/21 — a number now known
to be wrong.)* The measured value is 3/21, but three consecutive ad-hoc passes have each
produced a confidently-wrong figure, and the correct posture is to let the built instrument
publish it. If the number must land before then, it lands as **3/21 with the tri-dialect method
and the H10 rule attached** — never as a bare figure. The one edit that is safe today is marking
the existing 14/27 sites as SUPERSEDED — under recount, which is true under every one of the
four candidate values.
2. Build Layer 0 for real — harness/extract_connections.py with H3's tri-dialect reader test,
H10's data-enumerated dialect discovery, H4's alias table, H5's beat-count assertion, and H6's
tightened criterion 4. Zero-token, enrolled in run_gates.py. This is the cheapest item on the
list, it converts the sweep into a diff, and it is now the *only* trustworthy way to publish
item 1's number.
3. Finish Wave 4's amulet remainder (W-1) before any Wave-5 spend.
4. Re-rank the worklist around W-3. With the reciprocation debt at 3 rather than 14, the 64 empty
forward_track [] cells are not one finding among several — they are ~95% of the corpus's
measurable unmade connections. The sweep's value was never the reciprocation number.
5. Then run Wave 5a metered, and publish its three numbers.
Holding items 2-4 first means the fleet, when it launches, runs against a corpus whose largest known
hole is already closed — and against an instrument that has been shown to fail honestly, three times,
in public, with the arithmetic attached.