CB-WP-0037 T02: the engine's rules against the edition's
Some checks failed
ci / check (push) Failing after 3s
Some checks failed
ci / check (push) Failing after 3s
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>
This commit is contained in:
parent
d98580fb4c
commit
53109ec5e5
7 changed files with 423 additions and 1 deletions
|
|
@ -108,7 +108,7 @@ deletes the literal, and it turns red the moment either side moves.
|
|||
|
||||
```task
|
||||
id: CB-WP-0037-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "625b51fd-8af1-46bf-8b91-087760259dd6"
|
||||
```
|
||||
|
|
@ -124,6 +124,52 @@ mechanism.
|
|||
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.
|
||||
|
||||
**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.
|
||||
|
||||
## Task: classify the rest
|
||||
|
||||
```task
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue