CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
Some checks failed
ci / check (push) Failing after 4s
Some checks failed
ci / check (push) Failing after 4s
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>
This commit is contained in:
parent
bd9e168af5
commit
e5b805c185
3 changed files with 328 additions and 2 deletions
149
workplans/CB-WP-0037-the-fourteen-unread-files.md
Normal file
149
workplans/CB-WP-0037-the-fourteen-unread-files.md
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
---
|
||||
id: CB-WP-0037
|
||||
kind: product
|
||||
title: "The fourteen unread files"
|
||||
status: 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
|
||||
|
||||
```task
|
||||
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-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
|
||||
|
||||
```task
|
||||
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
|
||||
|
||||
```task
|
||||
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`](../specs/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
|
||||
|
||||
```task
|
||||
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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue