CRITIC_knowledge-progression-decipherment.md

pipelines/CRITIC_knowledge-progression-decipherment.md

CRITIC PASS — lens knowledge-progression-decipherment

Fresh-context adversarial refutation of

LENS_knowledge-progression-decipherment_DRAFT.md (KPD-1..KPD-10 + COVERED ×7 + DIVERGENT ×4 +

REFUTED-AND-DROPPED ×7).

Method: every citation opened; every registry number recomputed independently with csv (not

grep); every "zero" re-run with my own positive control and, where the author scoped narrowly,

BROADENED to _source / registries / harness / the engine tree; every MISSING vs

DESIGNED-UNBUILT boundary re-searched against docs/PRE_5090_BUILD_PLAN.md (incl. the ranked-30

open-items list), VOL2 (incl. §A.0), docs/factory_contract.json and

docs/DESIGN_GAP_REGISTER.md before accepting. Devil's-advocate-against-timidity run on every

recommendation.

---

HEADLINE

The arithmetic is flawless. Every registry figure I recomputed matched to the row:

184 / 122 blank reward_class / 98 blank primary_source / 88 needs_research / 86 primary / 10

blank / 0 blank evidence_basis / exactly the 16 named exposed link_ids; 79 clue files / 10

rows / all CH_02; Thread_Grid 666 rows, 22 threads, histogram exact to all nine stage values; 30

gates by name; RingCap = 16; FieldSenseLines = 5. Independent recomputation found zero

counting errors. The method notes (escaped-underscore trap, csv-not-grep, programmatic gate

enumeration) are real, reproducible, and worth promoting into the program's shared method file.

Two systemic defects, in opposite directions.

1. Scope failure on the absence side. The author positive-controlled every *registry/code*

zero rigorously but did not search the build plan's ranked-30 open-items list, VOL2 §A.0,

or factory_contract.json before minting its two most prominent framings. The journal-IA gap

(KPD-1) and the clue-density gap (KPD-4) are already named, ranked, open items. Verdict

classes stay right; novelty does not.

2. Truncated histograms converted into "no blanks" claims. Three separate places state or

imply full population from a histogram the author cut short. Actual: mastery_tier_threshold

has 2 blanks (not 0); trade_9_tier_gate has 3 blanks and eleven distinct values,

not the six listed; payoff_chapter has 18 literal N/A rows. This is the repo's own

"a search that cannot match reports zero" failure in histogram clothing.

**One finding carries a canon-authority error serious enough to block its recommendation as

written** (KPD-3 rec-2: an await_josh_confirm recommendation is cited as "ratified").

---

PER-FINDING VERDICTS

KPD-1 — journal has no information architecture · AMENDED (survives narrowed; novelty refuted)

Citations — all real. CVD Pillar 6 executable test verbatim ✔ (read directly).

T1_UI_UX_Spec [DRAFT v0.1].md = 35 bytes, 2 lines, title-only ✔ (# T1\_UI\_UX\_Spec \[DRAFT v0.1\]);

T1_Audio_Spec = 34 bytes ✔. WS_010 journal_entries_unlocked with consumers

journal_renderer, save_state_system ✔. Source/Humanity/Public/UI/ = exactly 4 headers, no

journal widget ✔. Pipeline Contracts §1.9 L222 "UI display routes through T1\_UI\_UX\_Spec" ✔

and L224 deferral clause verbatim ✔. The escaped-underscore trap is REAL — I reproduced it

(literal grep = 0; tolerant pattern finds CVD + Contracts). Promote to the program method file.

REFUTED — "the ENTRY ARCHITECTURE is genuinely absent … that is what this finding asks for."

Four artifacts the draft never cites:

from decision flags + path-band template selection; hard-anchored Ch13/38/57 entries;

healer's-child voice; Evil sparse/cold → Good rich/warm texture. |`** Auto-assembly + template

selection is structure, not only content.

information architecture (L1/L2/L3 layers, journal/Grimoire/map screens) … None exist as

specs today.**" — the exact gap, already ranked and self-declared absent.

vs empty before deep implementation." — the empty-stub observation is itself a registered item.

container"), both BUILD-NOW.

REFUTED — the slice-criticality argument as a discovery. VOL2 §A.0 already carries it:

"U11.18 (journal slice stub, empty-state by design) … **Q3.6's Ch-13 activation was OUTSIDE the

old slice and is now its TERMINAL nodeRe-derive whether the journal ships as a

correctly-empty shell or as an activating system.**" The draft presents this as its own

deduction. It is a vote in an already-open re-derive.

What survives — and it is worth landing. None of the four artifacts specifies an **entry-state

enum, an evidence back-link, or a "more here" flag**. Obra Dinn's fill-in-the-blank and

Outer Wilds' rumor-vs-fact edge distinction are a genuine, un-held import.

AMENDED VERDICT: DESIGNED-UNBUILT (class unchanged) · HIGH → MEDIUM-HIGH · retitle

"*Q3.6 specs journal assembly and voice but not the deduction-workspace information

architecture*" · must cite Q3.6, plan items 26 + 29, U11.18/U11.20, VOL2 §A.0 · reframe as

comparator input to the open §A.0 re-derive (evidence for "activating system", not

"correctly-empty shell"). Recommendation moves 1-3 all name existing homes — reuse-first ✔, keep.

---

KPD-2 — the link action has no wrong-answer design · SURVIVES (strengthened)

Zero re-run and BROADENED — this is now the most heavily positive-controlled zero in the audit.

The author searched docs/ only. Three independent re-runs:

23 hits across 9 files.

(.md/.csv/.json/.h/.cpp/.py) → one hit, and it is a false positive:

_source/02_Tier_2_Region_Pages/flores_island.md L1706 — "re-targeted from the stale Ch-39

mis-link (Ch 39 is West Africa modern, not Flores)", i.e. a stale chapter cross-reference,

not a player wrong-link mechanic. Control in the same sweep = 24 hits.

The zero survives a materially stronger search than the author ran, across both repos.

Citations. CVD Pillar 5 verbatim ✔ (read directly). Q3.8 BUILD-NOW spec verbatim ✔.

VOL2 U11.19 slice stub ✔. NATURAL_VOICE_DOCTRINE §4 non-gating ruling verbatim ✔ — the divergence

check was genuinely done, not asserted.

Reuse-first ✔ — quorum on existing link_type / link_strength / evidence_basis columns;

evidence_basis blank on 0/184 confirmed ✔ (so the acquire-the-source gate is buildable today).

LINK_0001's lore_pointer quote verbatim ✔.

DEVIL'S-ADVOCATE / TIMIDITY FLAG (the one substantive objection). The finding equates "never

gate progression" with "never cost anything". Those are different. NATURAL_VOICE_DOCTRINE §4

bars hard progression gates; it does not bar a non-gating cost. At the R-17 AAA bar a

wrong link can legitimately cost vril, time, a cooldown, or standing with a scholar NPC without

gating a single beat — and a cost-free unbounded action is exactly what invites the enumeration

the finding is trying to prevent. **AMENDMENT: widen the recommendation's option space to

quorum + optional non-gating cost, and let the Q3.8 spec choose.** Do not ship "costs nothing"

as the only option — that is the defanged read of the ruling.

VERDICT: SURVIVES, priority HIGH confirmed, recommendation AMENDED (add the cost option).

---

KPD-3 — 122 edges rewardless; 16 fail Pillar 5's own test · SPLIT: half SURVIVES, half KILLED

The 16-row exposure — SURVIVES, fully verified, this is the audit's single best finding.

Recomputed independently: exactly 16 rows with a reward_class, blank primary_source, and

evidence_tier != primary — and the id list matches the draft's exactly

(LINK_0001, 0002, 0006, 0009, 0010, 0011, 0012, 0013, 0030, 0039, 0088, 0092, 0100, 0104, 0116,

0118). I additionally verified the draft's unstated-but-load-bearing claim that **all 16 carry a

MECHANICAL class**: INTUITION_TIER ×4, DISCOVERY_UNLOCK ×5, PUZZLE_UNLOCK ×4, SCHOOL_TECHNIQUE

×3 — zero LORE. ✔ Against CVD Pillar 5's "Cross-cultural reward without primary-source

documentation = pillar violation" (verbatim ✔), these are violations today.

The no-gate claim — SURVIVES, and I strengthened it. The author checked the 30-gate list.

I went further and grepped the column names across all of harness/*.py: reward_class /

primary_source appear only in apply_t03_extensions.py (an applier, and there only on the

QUEST_65 family) and enrich.py (a pack builder) — neither is a gate.

Cross_Cultural_Link_Graph is read by check_region_page.py only for link_type lookup and

LINK_\d+ FK validation, never for reward/source coverage. check_source_anchors.py docstring

verbatim ✔; check_weave_lifecycle.py scoped to story_seed_tags on

T0_Source_Material_Registry, WARN-tier ✔. No gate watches this.

KILLED — the ratification claim, and with it recommendation 2 as written.

The draft states: "*docs/DECISION_DOSSIER.md L534-547 ratified Option A … the apply is only

34% landed. This is a deterministic-transform commit (the proven O-1 method), not an authoring

wave.*"

Decisive counter-evidence, docs/DECISION_DOSSIER.md §9, the header line of that very entry:

- Key: CCLG_REWARD_TAXONOMY Type: creative Disposition: await_josh_confirm

CCLG_REWARD_TAXONOMY appears nowhere else in docs/ (single hit, that line). The dossier's

disposition histogram is 20 × await_josh_confirm vs 1 × apply_now — this entry is in the

first bucket. Option A is the recommendation, not a ruling. The draft mistook a

recommendation section for a ratification.

This matters beyond pedantry: the same dossier rejects Option C explicitly because per

CLAUDE.md "Claude does not decide weapon/ability/school assignments; those are

numerical/naming canon Josh authors." Running rec-2 as written would apply an unratified

mechanical-reward rule across 122 rows — a cardinal-rule breach dressed as a mechanical transform.

This also RESOLVES the draft's own contested note (it flagged rather than guessed — correct

instinct, and it lands on the right answer): the 122 blanks are not a stalled apply, they are

awaiting Josh's confirmation of the taxonomy. Verdict on the 122 accordingly softens to

DESIGNED-UNBUILT / awaiting-ruling, exactly as the note hedged.

AMENDED VERDICT: split the finding.

check_link_rewards.py gate modelled on check_weave_lifecycle.py) is reuse-first and sound —

land it.

written**; the correct ask is to surface CCLG_REWARD_TAXONOMY for Josh's confirmation via the

standing decision protocol, not to run a transform. The 88 needs_research → book-pipeline

routing is fine and unaffected.

---

KPD-4 — clue lane built and empty (10 rows, all Ch 2) · AMENDED — fully pre-registered

Every fact verified. 79 files / 10 rows / all CH_02 ✔ (recomputed with csv.DictReader).

extract_spine_rows.py reject-at-emit verbatim ✔ including the three sys.exit branches

(illegal source_kind, illegal status, empty clue_id/player_text/src) ✔. CLUE_FIELDS

list matches FClueRow field-for-field ✔. ClueRow.h "DT_Clue is still unimported (TODO_CANON)"

✔. docs/spine/clues/README.md OR-together rule verbatim ✔ — **the author's self-correction was

right**, and publishing the wrong first draft alongside the correction is exactly the honesty the

program wants. Credit it.

REFUTED — that anything here is un-registered. docs/factory_contract.json already carries

both halves, and its FR-026 evidence field states the draft's headline fact verbatim:

"evidence": "CH_03-05 clues.csv are header-only; 10 clue rows exist across 79 nodes"

and FR-037 (status: PARTIAL) carries the authoring obligation with

tooth: "NONE(the clue surface has no registry home until rank 29 re-homes it into DT_Clue)".

The draft's surviving ask — "when rank 29 re-homes DT_Clue, arm FR-037 with a per-chapter

presence count" — is FR-037's own declared routing. And the README already declares chain =

"the read this clue makes legible", which the draft concedes, leaving the answers column with

almost nothing to add.

AMENDED VERDICT: DESIGNED-UNBUILT (class ✔) · HIGH → MEDIUM · **demote from a finding to a

PRIORITY ARGUMENT on an existing rider.** Its real contribution is the comparator claim that clue

density is *the minimum viable substrate* of a knowledge loop, not polish — which argues FR-037

should outrank ordinary authoring backlog. That is a legitimate lens contribution; a new gap it

is not. Drop the answers column ask (subsumed by chain).

---

KPD-5 — 10-chapter mystery vs a 16-slot ring · SURVIVES (amended, and strengthened by me)

Citations verified to the line. T3_Core_Characters §3.3 verbatim — "The game's first extended

mystery about a human character" and "The Ch 13 revelation retroactively contextualizes every

note" ✔. CH_03.md L160-161 systems: [journal:healers_child_unsigned_marks] /

ws.journal_status: +healers_child_unsigned_record_begunexact lines. CH_11 L201 + L283 ✔

exact; CH_12 L217 + L286 ✔ exact. RingCap = 16 ✔; FieldSenseLines = 5 ✔;

"NOT a journal (HL_0070/HL_0096)" ✔. grep clue Source/Humanity/Public/WorldState/*.h0

(my re-run: exit 1, no hits), control FieldSense over UI headers → 10 hits ✔ exactly as

claimed. VOL2 R3 owner "WS-C runtime clue-state + W10 (display)" ✔.

AMENDMENT 1 (weakens one clause). "The mystery is fully authored and it spans the whole

slice" overstates. I counted the arc across CH_04-CH_13: the token unsigned appears in **CH_03

(8), CH_11 (2), CH_12 (3), CH_13 (6) — and ZERO in CH_04 through CH_10**. The ws.journal_status

write exists in CH_03 only. So the arc is *declared* at its endpoints and carried in Ch 11/12

cast lists, but the seven middle chapters carry no unsigned-note artifact and no worldstate

write. The mystery is structurally asserted, not authored through. This does not weaken the

finding's conclusion — it strengthens it (there is even less evidence for Ch 13 to

recontextualise than the draft assumed) — but the sentence must be corrected, and the Ch 4-10

authoring gap is a real second-order catch the lens missed.

AMENDMENT 2 (technical, on rec-1). "The fired set, not the ring, is the natural evidence

store … a small change inside the existing subsystem." I read the .cpp: FiredClues is indeed

uncapped and — correctly — not reset by LoadCluesFromTable ✔. **But CluePlayerTextById

*is* Reset() at the top of every load and is chapter-filtered**, so the fired set retains

clue_ids whose player_text is no longer resident once the player leaves the chapter. Rendering

chain-bearing clues from the fired set therefore needs an unfiltered text map (or a second

persistent store) — a somewhat larger change than "small". State it honestly; the recommendation

is still right and still reuse-first.

VERDICT: SURVIVES · WEAKER · HIGH ✔ · slice ✔ · two amendments. No timidity issue.

---

KPD-6 — retroactive legibility promised, no surfacing mechanic · AMENDED — MISSING is over-strong

Quotes verbatim ✔ — Ch 41 "Drakensberg /Xam rock art now at full adult-inscription-mastery

reading" ✔ (actual L68, draft cited L79 — quote right, line wrong); Ch 65 "…have grown clearer

since Ch 58" ✔ L89 exact; Tier 9 Magister Templi "Palimpsest mastery becomes available — every

palimpsest in every visited location becomes readable…" ✔ L261 exact. law-side zero: no

player-facing surfacing mechanic found ✔ — my own searches agree. Q3.7 covers decode-on-encounter,

not decode-what-you-passed ✔.

FACTUAL ERROR (truncated histogram → false "0 blanks"). The draft: "trade_9_tier_gate is

populated on all 98 rows — 0 blanks in the tier histogram above." Recomputed: 3 blanks

(FAIRY_REALM_PROLOGUE_BASELINE, INSC_77H_CH01_FRAGMENT, INSC_77H_CH02_FRAGMENT) and

eleven distinct values, not the six listed — the draft's six sum to 86 of 98, omitting

ZELATOR 4, NEOPHYTE 3, MAGISTER_TEMPLI 1, MAGUS 1, blank 3. The proposed flip rule

(player_trade9_tier >= trade_9_tier_gate) is therefore **undefined on 3 rows, two of which are

the Ch 1 and Ch 2 fragments — inside the slice.** Correct the histogram and handle the 3.

Also unstated: payoff_chapter is "0 blanks" only literally — **18 rows carry the string

N/A**, and the column has just 6 distinct values (76.0 ×73, N/A ×18, 15.0 ×2, 38.0 ×2, 8.0 ×2,

57.0 ×1). Not a defect (the 77 fragments converge at Ch 76 by design), but the draft's COVERED

bullet "payoff_chapter set" reads richer than the data.

STRUCK — the argument that carries the MISSING verdict. "The Magister Templi promise … is

unsatisfiable by return-travel across 79 nodes and therefore requires a remote surface that no

document names." Two refutations: (a) the same §7.3 sentence the draft quotes begins

"Quest-unlocked through prestige questline available only after Main Story Ch 77 completion" —

this is post-story endgame, where revisiting *is* the content (Epilogue = completionist/MMO

endgame); (b) the arc already ships the return vehicle structurally — **Ch 59-65 continental

revisits, Ch 40 Congo, Ch 41 South Africa Modern, Ch 65 Antarctica Return** — and the draft's own

per-site citations are *instances of that vehicle working*, not evidence of its absence. Remote

re-read is a convenience, not a necessity.

AMENDED VERDICT: MISSING → DESIGNED-UNBUILT, narrowed to the one sliver that genuinely has no

home: the player-facing NOTIFICATION that something previously illegible has become legible.

Registry rows exist (trade_9_tier_gate 95/98), the build item exists (Q3.7), the screen home

exists (plan item 26), and the world-side vehicle exists (revisit chapters) — the wave rule's own

test ("a spec/ruling/registry row exists but nothing is built") is met for everything except the

notification. Priority MEDIUM-HIGH → MEDIUM (the headline payoff is post-Ch-77). Rec is

otherwise sound; strike the "cap it honestly at a bounded 98" clause — see the timidity flag

below.

DEVIL'S-ADVOCATE FLAG (reverse direction — unflagged canon narrowing). The recommendation

proposes: "'every visited location' means every location with an inscription-spine row, which is a

bounded 98." That quietly re-reads a T1 promise downward to fit current data. If 98 rows

under-serve "every palimpsest in every visited location", the answer is *author more rows*, not

*narrow the promise in the spec*. An audit recommendation must not shrink ratified canon to match

a registry's current population. Flag to the director.

---

KPD-7 — no player-model state in decipherment · SURVIVES (amended)

Verified. decipherment_status histogram exact to all 7 values ✔.

inscription_limit_zone = True on 10 of 84 ✔ exact. system_type,

inscription_application_class, decipherment_status, inscription_limit_zone,

layer_1/2/3_* all 0 blanks ✔. CVD Pillar 7 "puzzle engagement always available" verbatim ✔.

The divergence-check zero is CONFIRMED and is the audit's cleanest positive control: searching

auto-decode|auto_decode|automatic decoding|puzzle engagement repo-wide returns exactly **2 real

hits — CVD Pillar 7 and Q3.7** — every other hit is the draft quoting itself. ✔

FACTUAL ERROR (same truncation class). "mastery_tier_threshold is the character gate:

PRACTICUS 27, THEORICUS 12, ADEPTUS_MAJOR 12, ADEPTUS_MINOR 11, ZELATOR 6, PHILOSOPHUS 6,

ADEPTUS_EXEMPTUS 5." Those sum to 79 of 84; omitted are NEOPHYTE 3 and 2 blanks. This also

falsifies the COVERED bullet's "no blanks in the histograms I ran (… mastery_tier_threshold …)".

Correct both.

Reuse-first ✔player_gloss on the KPD-1 journal entry; validation at

fragment_index/fragment_assembly_role (I verified both columns exist; fragment_index blank

on 21, fragment_assembly_role N/A on 21 — the assembly unit is real but only ~77 rows carry

it, worth stating). Targeting the 10 inscription_limit_zone rows is a ready-made list ✔.

Timidity check — PASSES, and this is the audit's boldest and best-judged recommendation. A

never-validated player gloss at Meroitic/Harappan delivers §3.1's "cognitive dissonance" as a

mechanic instead of a stat roll. I checked it against the anti-decoder-ring rule ("No

invented-semantic-content … Cultural-sensitivity violation"): a *player's private notebook guess*

is not the *game asserting* a semantic content, so the rule is respected. No care inflation.

VERDICT: SURVIVES · WEAKER · MEDIUM ✔ · histogram corrections required.

---

KPD-8 — FR-026 is a SEED rider with no arming data · SURVIVES (reframed)

Verified field-for-field against docs/factory_contract.json (not the .md view): FR-026

obligation string verbatim ✔, lane: canon-author ✔, scope: all ✔, status: SEED ✔,

ruling_src: docs/NATURAL_VOICE_DOCTRINE.md#3-clues-mysterious-is-allowed-unfun-is-not ✔,

data_home: path:build/spine_rows/CH_*/clues.csv ✔. Scorecard: "**Gate: PASS (0 FAIL, 7 WARN;

fixtures 73/73)**" ✔ and "34 SEED riders are ADVISORY by design: they surface in every checklist

and never fail this gate" ✔ verbatim; R2 FR-024 line ✔ verbatim; the R3 rule ✔ verbatim.

NATURAL_VOICE_DOCTRINE §3 solvability ruling ✔ verbatim.

REFRAME (the finding is better than the draft realised). The draft's rec — "when rank 29

re-homes DT_Clue, promote FR-026 from SEED to a real check" — reads as new, but the contract

already sets consumption_point: "plan:rank29". What is genuinely new is that the draft

contradicts FR-026's own stated tooth rationale, and is right to:

"tooth": "NONE(solvability is proven by the QA loop's attempt budget; no static assertion can prove it)"

The draft's counter — a presence assertion (≥1 active clue row whose chain matches each

puzzle/clue-routed beat) is not a solvability proof but *does* catch the actual failure mode (a

puzzle authored with no clue at all) — defeats that rationale. **That rebuttal, not the rank-29

sequencing, is the finding.** Retitle and lead with it.

VERDICT: SURVIVES · DESIGNED-UNBUILT ✔ · MEDIUM-HIGH ✔ (slice-relevant under THE JOSH GATE:

the QA loop is the only player). ENGINE-vs-CANON split ✔ per standing reuse order. No timidity

issue.

---

KPD-9 — realm ruleset has no law_state · SURVIVES (best-supported finding in the audit)

Every citation verbatim ✔ from docs/proposals/REALM_DESIGN_PROGRAM.md §2.3: the

PER-FEATURE/PER-WORLD rejection ✔; the METAPHYSICAL LAWS sub-row group with taught_at,

**`EXPLOIT, how a clever player turns the law into a tool rather than only suffering it, which is

what keeps the realms from reading as corridors of rulesword-for-word**; reprise_of` ✔;

violation_consequence, never a progression stop ✔; the D-RR.5 bound ✔; "Proposal-tier concept,

not a mint" ✔; the V-ADEQUACY POSITIVE CONTROL as "a required tooth and not an optional one" ✔.

The gap is real and positive-controlled. law_state0 hits in the doc.

T0_Realm_Ruleset_Registry absent from registries/ ✔ (control: T0_Inscription_Spine present

✔). The taboo sub-row's layer (L1 action, L2 completionist, L3 connection) field exists ✔, so

the proposed exploit_tier genuinely reuses a ratified vocabulary rather than minting an enum.

Divergence guard correctly applied — routes the knowledge lock to the prize tier

NATURAL_VOICE_DOCTRINE §4 names, never the critical path. Not a re-litigation ✔.

Timing claim holds: proposal-tier + pre-mint = the cheapest possible moment. **VERDICT:

SURVIVES UNCHANGED. Land it before the Wave-2 schema mint.** Highest confidence in the set.

---

KPD-10 — thread ladder tracks story, not player-derivability · SURVIVES

Verified exactly. Thread_Grid 666 rows, 22 threads, columns as listed ✔, and the

progression_stage histogram matches all nine values to the row (ANCHOR 443 / ESCALATION 106

/ NOT_PRESENT 49 / CONFRONTATION 45 / RESOLUTION_FINAL 15 / RESOLUTION_PARTIAL 4 / CONVERGENCE 2 /

CONFRONTATION_DIRECT 1 / CAPSTONE 1) ✔. The rec's "68 rows total" arithmetic checks

(45+15+4+2+1+1) ✔. Both reveal gates present in the 30-gate config ✔.

Note (not a defect): PRE_5090's Q3.8 says Thread_Grid(664); live is 666. The draft correctly

quoted the plan verbatim in KPD-2 and used the live 666 in KPD-10 — right call both times. **The

plan's 664 is stale by 2 and is worth a one-line correction in the landing commit.**

Reuse-first ✔ — the rule-not-a-column first move (checkable today from three existing tables,

zero schema change) is exactly the right order, and landing it on check_reveal_discipline.py as

the positive twin of the leak axis is the correct home. VERDICT: SURVIVES · WEAKER · MEDIUM ✔.

---

COVERED / DIVERGENT / REFUTED-AND-DROPPED sections

mastery_tier_threshold …)" is false (2 blanks); "trade_9_tier_gate populated across all

six tier values" is false (eleven values, 3 blank). Everything else — the Inscription Limit

praise, the Trade-9 paradox home base, the reveal-leak gates, the V-adequacy probe, the

reject-at-emit rule — I verified verbatim and endorse. The reject-at-emit praise is

particularly well-placed: I read all three sys.exit branches.

(locked 79-node spine; non-gating puzzles; auto-decode; markerless navigation already at

DESIGN_GAP_REGISTER L207). No re-litigation. ✔

the KPD-4 chain_min self-correction was published rather than buried. This section did real

work and saved me re-derivation. Keep the practice.

lens ✔ — scope is honest.

---

CROSS-CUTTING NOTES FOR THE DIRECTOR

1. Line numbers in this audit will drift; anchor by section/id. PRE_5090_BUILD_PLAN.md

moved 35 lines between the draft's authoring and my pass (Q3.7 was L1794, now L1829) — the

repo is being written by other lanes concurrently. The draft's numbers were right when written.

The Languages doc (unmodified since Jul 20) has one genuinely wrong number: Ch 41 is L68,

not L79. **Landing recommendation: convert every citation to doc §section form before this

goes into the register.**

2. New method rule earned this pass: never state "0 blanks" from a printed histogram. Three

errors here share one cause — the author printed a top-N histogram, then read absence of a

blank *row in the printout* as absence of blanks *in the data*. This is the repo's own

"a search that cannot match reports zero" failure in a new costume. Propose adding to the

program method file: blank counts are computed and stated separately from histograms.

3. The absence-search must include the ranked-30 and the factory contract. The wave rule says

check PRE_5090_BUILD_PLAN.md before minting MISSING; in practice the author checked the

*build-item tables* but not the ranked open-items list (items 26/29) or

factory_contract.json. Both KPD-1 and KPD-4 lost their novelty there. Worth making explicit

in the runbook for the remaining lenses.

4. One cardinal-rule near-miss. KPD-3 rec-2 would have run a 122-row mechanical-reward apply

on a rule whose disposition is await_josh_confirm. Do not land it. Route

CCLG_REWARD_TAXONOMY to Josh via the standing decision protocol instead.

---

LANDING RECOMMENDATION

GO-WITH-FIXES. This is a strong audit — the best-verified numbers I have checked in this

program, with genuine method contributions and an honest self-correction. Land it after these

mandatory edits:

1. KPD-3 rec-2 STRUCK and the finding split into 3a (16 rows, land the gate) / 3b (122 rows,

blocked on Josh). *Non-negotiable — cardinal-rule exposure.*

2. KPD-6 reclassed MISSING → DESIGNED-UNBUILT, narrowed to the notification surface; the

"unsatisfiable by return-travel" argument struck; the "bounded 98" canon-narrowing struck.

3. Three histogram corrections (trade_9_tier_gate 3 blanks / 11 values;

mastery_tier_threshold 2 blanks; payoff_chapter 18 × N/A) and the two COVERED bullets

that depend on them.

4. KPD-1 and KPD-4 re-cited and re-priced against Q3.6, plan items 26 + 29, U11.18/U11.20,

VOL2 §A.0, and FR-026/FR-037 — KPD-1 reframed as input to the open §A.0 re-derive, KPD-4

demoted from finding to priority argument on FR-037.

5. KPD-2 recommendation widened to include a non-gating cost option (timidity fix).

6. KPD-5 amended — "fully authored" corrected (Ch 4-10 carry no unsigned-note artifact and no

worldstate write), and rec-1's cost restated (the chapter-filtered CluePlayerTextById reset

makes it more than "a small change").

7. KPD-8 reframed to lead with its rebuttal of FR-026's tooth: NONE rationale.

8. All citations converted to doc §section anchors before entering the register.

Land unchanged: KPD-9 (highest confidence; land before the Wave-2 mint), KPD-10, KPD-7

(pending its histogram fix), KPD-3a, and the DIVERGENT + REFUTED-AND-DROPPED sections in full.

---

CLOSING VERDICT

Killed: 2 · Survived: 5 · Amended: 5 · Contested: 2

MISSING class and its "unsatisfiable by return-travel" supporting argument.

findings surviving with their verdict class intact (KPD-3a carried under Amended for the split).

to priority argument), KPD-5 (two corrections), KPD-6 (reclassed + narrowed). Plus the three

histogram corrections propagating into KPD-7 and COVERED.

under the wave rule's strict reading (I rule DESIGNED-UNBUILT; the director may disagree since

no artifact names the notification itself); and whether KPD-2's wrong-attempt design may carry

a non-gating COST — my timidity flag says the option must be on the table, but "never punish"

is arguably the safer read of Josh's non-gating ruling and is his call, not the loop's.

Generated by harness/site/structure_site.py — the URL path is the repo path. review root