CB-WP-0028 T01/T02: the cards say what they do

ADR-0015 and the import. F18's fix: "I don't understand the GROUND card"
was never a design gap -- the card explains itself in the edition and we
never imported the explanation.

THE MEASUREMENT IS THE DECISION, and the gap is bigger than "one file of
nineteen". Of the file we DID vendor, the engine reads 5 of 13 columns:
title, problem_text, front_rules, reveal_effect and unresolved_effect were
discarded at parse time. The cheapest part of this pass costs no new bytes
and was sitting in the repo for eight days. And SCN_01 is hardcoded at
lib.rs:1824 -- the edition ships FOUR scenarios and the engine has never
dealt three of them. Nobody had said so.

ADR-0011's revisit condition is measurably absent, so the dependency
argument does not get re-run: across Actions, Solutions, Modes and
Scenarios there are ZERO doubled quotes and ZERO embedded newlines. The
hand reader's only job is comma-in-quoted-field, which it already did.
Refusing csv on a measurement rather than on a preference.

Vendored Actions, Solutions and Modes -- the text a player reads. Not the
production artifacts (BOM, Print_Manifest, Back_Designs, Symbols). NOT
Extensions.csv, which names content the designer placed outside the core;
importing it would break the claim that this engine plays the edition as
printed. It is now known to exist, which was the real risk.

One Table reader with four callers, because a per-file copy is how a
parser acquires four subtly different bugs. The GROUND card now shows
"Regulate. Restore the frame. Decide." with its GR/OU/ND text on demand;
Problems show their own titles where a priority number used to be.

The load-bearing test asserts the text is a SUBSTRING OF THE VENDORED
FILE rather than equal to a Rust literal -- a test comparing against a
hardcoded expectation would pass for a hand-copied string, which is the
drift this ends.

`edition` came out from behind #[cfg(feature = "scenarios")]. It was gated
because its only consumer was; the edition is the game's own data and the
shipped runtime now reads it. Test machinery and game content are
different things and only one of them is optional.

And edition-check was written for a single-file world: it compared the
first recorded digest against Problems.csv regardless of which file that
digest described. It now checks every file both ways -- a vendored file
with no digest fails, a digest naming an absent file fails -- and asserts
ADR-0015 D3's falsifier directly rather than trusting it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-06 17:22:04 +02:00
parent efe9f8f1a9
commit 4b5b601ce0
11 changed files with 767 additions and 42 deletions

View file

@ -0,0 +1,25 @@
solution_id,suit,symbol_id,title,microcopy,rules_text,quantity,back_design_id
SOL_C01,Clarify,SYM_CLARIFY,Ask What Happened,Invite a concrete account before judging.,Discard with SOLVE to resolve one revealed Problem requiring Clarify.,1,BACK_SOLUTION
SOL_C02,Clarify,SYM_CLARIFY,Compare Accounts,Place different perspectives side by side.,Discard with SOLVE to resolve one revealed Problem requiring Clarify.,1,BACK_SOLUTION
SOL_C03,Clarify,SYM_CLARIFY,Check the Evidence,"Use records, observations, or agreed facts.",Discard with SOLVE to resolve one revealed Problem requiring Clarify.,1,BACK_SOLUTION
SOL_C04,Clarify,SYM_CLARIFY,Name the Assumption,Turn an unspoken belief into a testable statement.,Discard with SOLVE to resolve one revealed Problem requiring Clarify.,1,BACK_SOLUTION
SOL_C05,Clarify,SYM_CLARIFY,Separate the Issues,Keep a counterclaim from replacing the original problem.,Discard with SOLVE to resolve one revealed Problem requiring Clarify.,1,BACK_SOLUTION
SOL_C06,Clarify,SYM_CLARIFY,Confirm the Agreement,Restate what each person understood.,Discard with SOLVE to resolve one revealed Problem requiring Clarify.,1,BACK_SOLUTION
SOL_R01,Repair,SYM_REPAIR,Acknowledge Impact,Name what the action changed for others.,Discard with SOLVE to resolve one revealed Problem requiring Repair.,1,BACK_SOLUTION
SOL_R02,Repair,SYM_REPAIR,Own Your Part,Accept the part that belongs to you.,Discard with SOLVE to resolve one revealed Problem requiring Repair.,1,BACK_SOLUTION
SOL_R03,Repair,SYM_REPAIR,Correct the Record,Replace a misleading account with an accurate one.,Discard with SOLVE to resolve one revealed Problem requiring Repair.,1,BACK_SOLUTION
SOL_R04,Repair,SYM_REPAIR,Make a Specific Apology,"Name the act, impact, and responsibility.",Discard with SOLVE to resolve one revealed Problem requiring Repair.,1,BACK_SOLUTION
SOL_R05,Repair,SYM_REPAIR,Offer Restitution,"Restore value, time, opportunity, or standing.",Discard with SOLVE to resolve one revealed Problem requiring Repair.,1,BACK_SOLUTION
SOL_R06,Repair,SYM_REPAIR,Follow Through,Make repair visible through completed action.,Discard with SOLVE to resolve one revealed Problem requiring Repair.,1,BACK_SOLUTION
SOL_B01,Boundary,SYM_BOUNDARY,State the Limit,Say clearly what will and will not continue.,Discard with SOLVE to resolve one revealed Problem requiring Boundary.,1,BACK_SOLUTION
SOL_B02,Boundary,SYM_BOUNDARY,Pause the Interaction,Create time before pressure removes choice.,Discard with SOLVE to resolve one revealed Problem requiring Boundary.,1,BACK_SOLUTION
SOL_B03,Boundary,SYM_BOUNDARY,Refuse the False Frame,Return to the original issue without accepting misdirection.,Discard with SOLVE to resolve one revealed Problem requiring Boundary.,1,BACK_SOLUTION
SOL_B04,Boundary,SYM_BOUNDARY,Set a Consequence,Connect repeated conduct to a known response.,Discard with SOLVE to resolve one revealed Problem requiring Boundary.,1,BACK_SOLUTION
SOL_B05,Boundary,SYM_BOUNDARY,Bring a Witness,"Add support, memory, or fair process.",Discard with SOLVE to resolve one revealed Problem requiring Boundary.,1,BACK_SOLUTION
SOL_B06,Boundary,SYM_BOUNDARY,Leave the Relation,End a relation that cannot support safe engagement.,Discard with SOLVE to resolve one revealed Problem requiring Boundary.,1,BACK_SOLUTION
SOL_X01,Change,SYM_CHANGE,Clarify Roles,"Assign authority, responsibility, and expectations.",Discard with SOLVE to resolve one revealed Problem requiring Change.,1,BACK_SOLUTION
SOL_X02,Change,SYM_CHANGE,Define a New Process,Replace improvisation with a shared method.,Discard with SOLVE to resolve one revealed Problem requiring Change.,1,BACK_SOLUTION
SOL_X03,Change,SYM_CHANGE,Add a Checkpoint,Detect problems before they become crises.,Discard with SOLVE to resolve one revealed Problem requiring Change.,1,BACK_SOLUTION
SOL_X04,Change,SYM_CHANGE,Document the Agreement,Create a durable shared reference.,Discard with SOLVE to resolve one revealed Problem requiring Change.,1,BACK_SOLUTION
SOL_X05,Change,SYM_CHANGE,Change the Incentive,Stop rewarding the behaviour that creates the problem.,Discard with SOLVE to resolve one revealed Problem requiring Change.,1,BACK_SOLUTION
SOL_X06,Change,SYM_CHANGE,Review the Pattern,Use repeated events to change the system.,Discard with SOLVE to resolve one revealed Problem requiring Change.,1,BACK_SOLUTION
1 solution_id suit symbol_id title microcopy rules_text quantity back_design_id
2 SOL_C01 Clarify SYM_CLARIFY Ask What Happened Invite a concrete account before judging. Discard with SOLVE to resolve one revealed Problem requiring Clarify. 1 BACK_SOLUTION
3 SOL_C02 Clarify SYM_CLARIFY Compare Accounts Place different perspectives side by side. Discard with SOLVE to resolve one revealed Problem requiring Clarify. 1 BACK_SOLUTION
4 SOL_C03 Clarify SYM_CLARIFY Check the Evidence Use records, observations, or agreed facts. Discard with SOLVE to resolve one revealed Problem requiring Clarify. 1 BACK_SOLUTION
5 SOL_C04 Clarify SYM_CLARIFY Name the Assumption Turn an unspoken belief into a testable statement. Discard with SOLVE to resolve one revealed Problem requiring Clarify. 1 BACK_SOLUTION
6 SOL_C05 Clarify SYM_CLARIFY Separate the Issues Keep a counterclaim from replacing the original problem. Discard with SOLVE to resolve one revealed Problem requiring Clarify. 1 BACK_SOLUTION
7 SOL_C06 Clarify SYM_CLARIFY Confirm the Agreement Restate what each person understood. Discard with SOLVE to resolve one revealed Problem requiring Clarify. 1 BACK_SOLUTION
8 SOL_R01 Repair SYM_REPAIR Acknowledge Impact Name what the action changed for others. Discard with SOLVE to resolve one revealed Problem requiring Repair. 1 BACK_SOLUTION
9 SOL_R02 Repair SYM_REPAIR Own Your Part Accept the part that belongs to you. Discard with SOLVE to resolve one revealed Problem requiring Repair. 1 BACK_SOLUTION
10 SOL_R03 Repair SYM_REPAIR Correct the Record Replace a misleading account with an accurate one. Discard with SOLVE to resolve one revealed Problem requiring Repair. 1 BACK_SOLUTION
11 SOL_R04 Repair SYM_REPAIR Make a Specific Apology Name the act, impact, and responsibility. Discard with SOLVE to resolve one revealed Problem requiring Repair. 1 BACK_SOLUTION
12 SOL_R05 Repair SYM_REPAIR Offer Restitution Restore value, time, opportunity, or standing. Discard with SOLVE to resolve one revealed Problem requiring Repair. 1 BACK_SOLUTION
13 SOL_R06 Repair SYM_REPAIR Follow Through Make repair visible through completed action. Discard with SOLVE to resolve one revealed Problem requiring Repair. 1 BACK_SOLUTION
14 SOL_B01 Boundary SYM_BOUNDARY State the Limit Say clearly what will and will not continue. Discard with SOLVE to resolve one revealed Problem requiring Boundary. 1 BACK_SOLUTION
15 SOL_B02 Boundary SYM_BOUNDARY Pause the Interaction Create time before pressure removes choice. Discard with SOLVE to resolve one revealed Problem requiring Boundary. 1 BACK_SOLUTION
16 SOL_B03 Boundary SYM_BOUNDARY Refuse the False Frame Return to the original issue without accepting misdirection. Discard with SOLVE to resolve one revealed Problem requiring Boundary. 1 BACK_SOLUTION
17 SOL_B04 Boundary SYM_BOUNDARY Set a Consequence Connect repeated conduct to a known response. Discard with SOLVE to resolve one revealed Problem requiring Boundary. 1 BACK_SOLUTION
18 SOL_B05 Boundary SYM_BOUNDARY Bring a Witness Add support, memory, or fair process. Discard with SOLVE to resolve one revealed Problem requiring Boundary. 1 BACK_SOLUTION
19 SOL_B06 Boundary SYM_BOUNDARY Leave the Relation End a relation that cannot support safe engagement. Discard with SOLVE to resolve one revealed Problem requiring Boundary. 1 BACK_SOLUTION
20 SOL_X01 Change SYM_CHANGE Clarify Roles Assign authority, responsibility, and expectations. Discard with SOLVE to resolve one revealed Problem requiring Change. 1 BACK_SOLUTION
21 SOL_X02 Change SYM_CHANGE Define a New Process Replace improvisation with a shared method. Discard with SOLVE to resolve one revealed Problem requiring Change. 1 BACK_SOLUTION
22 SOL_X03 Change SYM_CHANGE Add a Checkpoint Detect problems before they become crises. Discard with SOLVE to resolve one revealed Problem requiring Change. 1 BACK_SOLUTION
23 SOL_X04 Change SYM_CHANGE Document the Agreement Create a durable shared reference. Discard with SOLVE to resolve one revealed Problem requiring Change. 1 BACK_SOLUTION
24 SOL_X05 Change SYM_CHANGE Change the Incentive Stop rewarding the behaviour that creates the problem. Discard with SOLVE to resolve one revealed Problem requiring Change. 1 BACK_SOLUTION
25 SOL_X06 Change SYM_CHANGE Review the Pattern Use repeated events to change the system. Discard with SOLVE to resolve one revealed Problem requiring Change. 1 BACK_SOLUTION