CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
---
|
|
|
|
|
|
id: CB-WP-0037
|
|
|
|
|
|
kind: product
|
|
|
|
|
|
title: "The fourteen unread files"
|
2026-08-08 00:33:24 +02:00
|
|
|
|
status: done
|
2026-08-07 23:12:03 +02:00
|
|
|
|
state_hub_workstream_id: "c8425c0e-51e9-445f-802c-9ff38935fd5a"
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 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
|
2026-08-07 23:12:03 +02:00
|
|
|
|
state_hub_task_id: "5ff5cbda-0deb-4078-a552-f5e757abb95c"
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
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
|
CB-WP-0037 T02: the engine's rules against the edition's
Vendored DARVO.csv, Relations.csv and Scenarios.csv — the three unread
files that carry mechanism. The engine has implemented the DARVO sequence
and relation formation/breaking from GroundRules.md since the beginning,
and had never read the game owner's statement of them.
Every checkable clause agrees, and agreement is recorded rather than
noted: a survey that finds nothing and leaves no trace cannot be told from
one never run. The two hardest clauses to notice were already right —
Focus placed "even if the Attack was cancelled", and Focus removed when
the sequence ends before REVERSE.
The tests are tripwires, not derivations. The match was made by a person
reading prose, and that reading goes stale in silence when the prose
changes; each behaviour pins the phrase it was read from, so a reworded
edition goes red and asks for a human. Mutation-proven by rewording the
cancelled-Attack clause.
F25 raised, and it is the real yield: Scenarios.csv carries
threshold_2_players/3_4/5_6, starting_stress and round_track, and the
engine hardcodes all three — a match returning 5/7/9, stress: 2 at setup,
five rounds. They agree on all four scenarios. These are the most
contested numbers in the project; the whole 4/6/9 vs 5/7/9 episode turned
on them, and the engine has been right by maintenance coincidence rather
than by reading the file that owns them.
Also pinned: Problems.csv and Scenarios.csv both state the deal and the
engine reads only the first. They agree; nothing was checking.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 00:21:40 +02:00
|
|
|
|
status: done
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
priority: high
|
2026-08-07 23:12:03 +02:00
|
|
|
|
state_hub_task_id: "625b51fd-8af1-46bf-8b91-087760259dd6"
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
`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.
|
|
|
|
|
|
|
CB-WP-0037 T02: the engine's rules against the edition's
Vendored DARVO.csv, Relations.csv and Scenarios.csv — the three unread
files that carry mechanism. The engine has implemented the DARVO sequence
and relation formation/breaking from GroundRules.md since the beginning,
and had never read the game owner's statement of them.
Every checkable clause agrees, and agreement is recorded rather than
noted: a survey that finds nothing and leaves no trace cannot be told from
one never run. The two hardest clauses to notice were already right —
Focus placed "even if the Attack was cancelled", and Focus removed when
the sequence ends before REVERSE.
The tests are tripwires, not derivations. The match was made by a person
reading prose, and that reading goes stale in silence when the prose
changes; each behaviour pins the phrase it was read from, so a reworded
edition goes red and asks for a human. Mutation-proven by rewording the
cancelled-Attack clause.
F25 raised, and it is the real yield: Scenarios.csv carries
threshold_2_players/3_4/5_6, starting_stress and round_track, and the
engine hardcodes all three — a match returning 5/7/9, stress: 2 at setup,
five rounds. They agree on all four scenarios. These are the most
contested numbers in the project; the whole 4/6/9 vs 5/7/9 episode turned
on them, and the engine has been right by maintenance coincidence rather
than by reading the file that owns them.
Also pinned: Problems.csv and Scenarios.csv both state the deal and the
engine reads only the first. They agree; nothing was checking.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 00:21:40 +02:00
|
|
|
|
**Done 2026-08-08.** `DARVO.csv`, `Relations.csv` and `Scenarios.csv`
|
|
|
|
|
|
vendored with digests; `make edition-check` green both ways.
|
|
|
|
|
|
|
|
|
|
|
|
**Every checkable clause agrees.** Recorded rather than merely noted,
|
|
|
|
|
|
because a survey that finds nothing and leaves no trace cannot be told
|
|
|
|
|
|
from one never run:
|
|
|
|
|
|
|
|
|
|
|
|
| the edition says | the engine does |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| Bond Support: −2 Stress, ready Freedom, **cancel the target's DARVO stage** | −2, `FreedomReadied`, `DarvoEnded` |
|
|
|
|
|
|
| Bond Attack: +2 and **flip** to Rivalry | +2, `RelationFormed(Rivalry)` |
|
|
|
|
|
|
| Rivalry Support: −1, **target chooses** flip or break | −1, `FlipToBond` / `BreakRivalry` |
|
|
|
|
|
|
| Rivalry Attack: +2 and **break** | +2, `RelationBroken` |
|
|
|
|
|
|
| no-relation Attack forms a Rivalry **automatically** | forms without consent, both slots free |
|
|
|
|
|
|
| DARVO ATTACK places Focus **even if the Attack was cancelled** | `FocusPlaced` after `resolve_attack` regardless |
|
|
|
|
|
|
| **remove Focus if the sequence ends before REVERSE** | `focus.remove` on `DarvoEnded` |
|
|
|
|
|
|
| REVERSE: flip to Blame, +1 to target, take a Protection, −2 to self | exactly that, with GROUND—ND rejection |
|
|
|
|
|
|
|
|
|
|
|
|
**The two hardest clauses to notice were already right**, which is the
|
|
|
|
|
|
part worth saying: nobody had read the file, and they were right anyway.
|
|
|
|
|
|
|
|
|
|
|
|
**These are tripwires, not derivations.** The match was made by a person
|
|
|
|
|
|
reading prose, and that reading goes stale in silence when the prose
|
|
|
|
|
|
changes. Each behaviour pins the phrase it was read from, so a reworded
|
|
|
|
|
|
edition turns the test red and asks for a human — mutation-proven by
|
|
|
|
|
|
rewording *"even if the Attack was cancelled"*, which fails naming the
|
|
|
|
|
|
exact engine branch that depends on it.
|
|
|
|
|
|
|
|
|
|
|
|
**F25 raised, and it is the real yield.** `Scenarios.csv` carries
|
|
|
|
|
|
`threshold_2_players/3_4/5_6`, `starting_stress` and `round_track` — and
|
|
|
|
|
|
the engine **hardcodes all three**: a `match` returning 5/7/9, `stress: 2`
|
|
|
|
|
|
at setup, five rounds. They agree on all four scenarios. **These are the
|
|
|
|
|
|
most contested numbers in the project** — the entire 4/6/9 versus 5/7/9
|
|
|
|
|
|
episode turned on them — and the engine has been right about them by
|
|
|
|
|
|
maintenance coincidence rather than by reading the file that owns them.
|
|
|
|
|
|
Same shape as F24; `inert`, role `default`.
|
|
|
|
|
|
|
|
|
|
|
|
**A second pair that could drift silently**: `Problems.csv` and
|
|
|
|
|
|
`Scenarios.csv` both state the deal, and the engine reads only the first.
|
|
|
|
|
|
`the_two_files_that_state_the_deal_agree` checks all four scenarios; they
|
|
|
|
|
|
match today, and nothing was checking.
|
|
|
|
|
|
|
|
|
|
|
|
**Coverage, re-measured** — the earlier figure would otherwise have
|
|
|
|
|
|
understated the gap by three files: `DARVO.csv` 5/6, `Relations.csv` 4/6,
|
|
|
|
|
|
`Scenarios.csv` 4/13.
|
|
|
|
|
|
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
## Task: classify the rest
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CB-WP-0037-T03
|
2026-08-08 00:33:24 +02:00
|
|
|
|
status: done
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
priority: medium
|
2026-08-07 23:12:03 +02:00
|
|
|
|
state_hub_task_id: "a09c8738-f38f-414a-a986-ba224396903e"
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
`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.
|
|
|
|
|
|
|
2026-08-08 00:33:24 +02:00
|
|
|
|
**Done 2026-08-08.** Read them, and **O4 was wrong**: `Player_Mats.csv`
|
|
|
|
|
|
carries GR-R03 in `choice_rule`. Both files are vendored as mechanism, the
|
|
|
|
|
|
stress gate has a tripwire, and O4 is rewritten and re-grounded from
|
|
|
|
|
|
`provisional` to `rule`.
|
|
|
|
|
|
|
|
|
|
|
|
**O5, O6, O7 declared** with falsifiers — symbols and glyphs, colours and
|
|
|
|
|
|
design tokens, card backs / BOM / print manifest. O7's falsifier is not
|
|
|
|
|
|
theoretical: `back_design_id` is unread in four vendored files and hidden
|
|
|
|
|
|
information is what card backs are *for*.
|
|
|
|
|
|
|
|
|
|
|
|
**`Ornamentation.md` §1.3 added**: the unit is a column, not a file.
|
|
|
|
|
|
Discovered by doing the work rather than predicted by the plan.
|
|
|
|
|
|
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
## Task: evidence
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: CB-WP-0037-T04
|
2026-08-08 00:33:24 +02:00
|
|
|
|
status: done
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
priority: medium
|
2026-08-07 23:12:03 +02:00
|
|
|
|
state_hub_task_id: "e15a9ada-263a-4fce-8975-b5d88b9ac08a"
|
CB-WP-0037 T01: F18 gets a reproduction, and F24 falls out of it
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>
2026-08-07 23:11:17 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
`evidence/CB-EV-*.md`. **Did the engine's rules match the edition's?**
|
|
|
|
|
|
Say so either way, per rule, not as a count.
|
2026-08-08 00:33:24 +02:00
|
|
|
|
|
|
|
|
|
|
**Done 2026-08-08.**
|
|
|
|
|
|
[CB-EV-0029](../evidence/CB-EV-0029-the-fourteen-unread-files.md).
|
|
|
|
|
|
**Yes, every checkable clause** — stated per rule, and with the reading
|
|
|
|
|
|
that result does *not* support said out loud: it shows `GroundRules.md`
|
|
|
|
|
|
was a faithful secondary source for the clauses that have behaviour to
|
|
|
|
|
|
check, not that the engine is correct.
|