F18 was the only open finding clay-borg owns, the only register row lacking a reproduction, and the only off-target metric. It is also understated: it reads as display data, but among the 14 unvendored files are DARVO.csv (mandatory_effect, advance), Relations.csv (formation, breaking) and Scenarios.csv — rules the engine already implements from a secondary source and has never checked against the primary one. The reproduction records column reads AT THE ACCESSOR rather than counting them from the source: a list beside the code would be a second copy of a fact the get calls already carry, and grepping would over-count because six column names are shared between vendored files. The first version was wrong in this repo's signature way — it watched Table::at only, so it called visibility, required_solution and point_value unread when the engine reads all three through problems_of's own index lookups. Correct about the accessor, wrong about the engine: the ADR-0018 family, committed inside the artifact built to measure it. Problems.csv went 7/13 to 10/13 once the manual reader was recorded too. F24 raised: solution_deck() is a Rust literal that never opens Solutions.csv. It agrees today, which is the point — the engine is right by maintenance coincidence rather than by reading. Role `default`, with a test that goes red the moment either side moves. open, lacking a reproduction: 1 -> 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.5 KiB
| id | kind | title | status |
|---|---|---|---|
| CB-WP-0037 | product | The fourteen unread files | active |
Purpose
structural tier M (imports more of an external dataset under AM-4's
budgets, and gives an open register row its first
reproduction)
chaos d8 = 1 → no override
declared tier M
Declaration 9 of chaos window 3.
Why this, and why now
F18 is the only open finding clay-borg owns, the only row in the
register lacking a reproduction, and the only metric off target
(open, lacking a reproduction: 1, target 0). F17 is with ground-game.
And F18 is understated. Its prose describes display data — "the cards cannot say what they do" — and calls itself fixed by CB-WP-0028. Measured now: 5 of 19 files vendored, and among the 14 unread are
| file | what is in it |
|---|---|
DARVO.csv |
mandatory_effect, target_memory, advance — the DARVO sequence, as rules |
Relations.csv |
formation, breaking, rules_text — how Bonds and Rivalries form and break |
Scenarios.csv |
four scenarios with their setups — the engine hardcodes one |
Rules_Text.csv |
21 sections of the rules themselves |
Player_Mats.csv |
includes choice_rule and stress_track |
The engine implements DARVO and relation behaviour without ever having read the edition's statement of them. That is not inert display data; it is rules taken from a secondary source and never checked against the primary one.
A spot check is reassuring — REVERSE's engine path flips Focus to Blame,
gives the target +1 Stress, takes a Protection and reduces the owner's
Stress by 2, exactly as DARVO.csv states. Reassuring is not checked,
and the whole point of this repo is the difference.
Task: give F18 a reproduction
id: CB-WP-0037-T01
status: done
priority: high
An artifact that measures the gap instead of asserting it: per edition file, columns present against columns the engine reads.
Controls:
- it can go red and green — improving coverage must move it, or it is not measuring coverage (ADR-0006 D3);
- it reports per file, never a single ratio: "5 of 19" is the sum shape GameDesign §1.2 exists to refuse;
- an absent upstream is reported absent, never as a pass — the shape
edition-checkalready uses.
Done 2026-08-07. the_engine_reads_only_part_of_what_it_vendored.
F18 has a reproduction, and the register's one off-target metric —
open, lacking a reproduction: 1 — is now 0.
Recorded at the accessor, not counted from the source. A list of
column names beside the code would be a second copy of a fact the get
calls already carry; grepping the source would over-count, because six
column names are shared between vendored files.
And the first version was wrong in this repo's signature way. It
watched Table::at only, so it reported visibility, required_solution
and point_value as unread when the engine reads all three —
problems_of predates Table and resolves its own indices. Correct about
the accessor, wrong about the engine: the ADR-0018 family, committed
inside the artifact built to measure it. Problems.csv went 7/13 → 10/13
once the manual reader was recorded too.
Measured, per file, never as a ratio:
| file | read | unread |
|---|---|---|
| Problems.csv | 10/13 | problem_id, symbol_id, back_design_id |
| Actions.csv | 4/9 | symbol_id, resolution_order, target, stress_restriction, designer_note |
| Solutions.csv | 4/8 | suit, symbol_id, quantity, back_design_id |
| Modes.csv | 5/7 | mode_type, back_design_id |
| Tokens.csv | 6/9 | shape, size, symbol_id |
resolution_order, target and stress_restriction are rules, and
the engine implements all three from GroundRules.md without reading the
edition's statement of them. That is T02's work.
F24 raised: solution_deck() is a Rust literal — six of each suit,
never opening Solutions.csv. It agrees today (24 rows, six per
suit), which is why it is inert with role default rather than a
counterexample: right by maintenance coincidence, not by reading.
the_hardcoded_deck_still_matches_the_edition is the guard until T02
deletes the literal, and it turns red the moment either side moves.
Task: vendor what carries rules, and check it against the engine
id: CB-WP-0037-T02
status: todo
priority: high
DARVO.csv, Relations.csv, Scenarios.csv first — they carry
mechanism.
Controls:
- every divergence between the edition's text and the engine is a
finding, raised, not quietly fixed: the edition is
ground-game's to rule on; - agreement is recorded too. A survey that finds nothing and leaves no trace cannot be told apart from one never run (CB-EV-0027 §3);
- AM-4's dependency and size budgets hold, or the pass says what it cost.
Task: classify the rest
id: CB-WP-0037-T03
status: todo
priority: medium
Symbols, Design_Tokens, Back_Designs, BOM, Print_Manifest are
production and visual identity.
Control: each becomes either a vendored file or an ornament
declaration with a falsifier (OrnamentRegister.md).
O4 already says nothing may be declared about Player_Mats or
Glossary until they are read — so read them or leave O4 alone.
Task: evidence
id: CB-WP-0037-T04
status: todo
priority: medium
evidence/CB-EV-*.md. Did the engine's rules match the edition's?
Say so either way, per rule, not as a count.