clay-borg/workplans/CB-WP-0037-the-fourteen-unread-files.md
tegwick 54e2886bb9
Some checks failed
ci / check (push) Failing after 3s
Sync hub ids for CB-WP-0037
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 23:12:03 +02:00

5.8 KiB

id kind title status state_hub_workstream_id
CB-WP-0037 product The fourteen unread files active c8425c0e-51e9-445f-802c-9ff38935fd5a

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, advancethe DARVO sequence, as rules
Relations.csv formation, breaking, rules_texthow 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
state_hub_task_id: "5ff5cbda-0deb-4078-a552-f5e757abb95c"

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-check already 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
state_hub_task_id: "625b51fd-8af1-46bf-8b91-087760259dd6"

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
state_hub_task_id: "a09c8738-f38f-414a-a986-ba224396903e"

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
state_hub_task_id: "e15a9ada-263a-4fce-8975-b5d88b9ac08a"

evidence/CB-EV-*.md. Did the engine's rules match the edition's? Say so either way, per rule, not as a count.