164 lines
7.3 KiB
Markdown
164 lines
7.3 KiB
Markdown
|
|
# CB-EV-0026 — the table you sit at
|
|||
|
|
|
|||
|
|
CB-WP-0028 T08. Tier M (structural M — imports more of an external
|
|||
|
|
dataset under AM-4's budgets; chaos d8=1 → no override). Declaration 11 of
|
|||
|
|
chaos window 2. Closed 2026-08-06.
|
|||
|
|
|
|||
|
|
**Delivered:** [ADR-0015](../decisions/ADR-0015-the-cards-own-words.md),
|
|||
|
|
three vendored edition files, a generic reader, the cards' own words on
|
|||
|
|
the page, one overhead table replacing three diagrams, controls and log in
|
|||
|
|
the meta column, *"game solved"*, and rankings that cite their source.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. Nine observations, and where they actually came from
|
|||
|
|
|
|||
|
|
**Seven of nine were engine defects. One was a design finding. One was
|
|||
|
|
already true and nobody could tell.**
|
|||
|
|
|
|||
|
|
| # | observation | what it turned out to be |
|
|||
|
|
|---|---|---|
|
|||
|
|
| 1 | no incentive to attack | a **design finding** (F17), and still a note |
|
|||
|
|
| 2 | *"I don't understand the GROUND card"* | **a data-import gap** — the card explains itself and we never read it |
|
|||
|
|
| 3 | overhead view | three diagrams the player had to assemble |
|
|||
|
|
| 4 | click the deck to draw | **not a legal move**; built nothing |
|
|||
|
|
| 5 | auto-draw option | **already automatic**, and always was |
|
|||
|
|
| 6–7 | controls and log on the right | layout |
|
|||
|
|
| 8 | *"Game Over"* on a win | wrong vocabulary for a co-operative game |
|
|||
|
|
| 9 | rankings | a place where the game defines *not to rank* |
|
|||
|
|
|
|||
|
|
**Observations 4 and 5 are the most useful pair in the set**, because both
|
|||
|
|
dissolved. Clicking the deck is not a move — `GroundCommand` has no
|
|||
|
|
standalone draw, and the edition's INVESTIGATE text says *"…reveal it.
|
|||
|
|
**Then draw one Solution.**"* Drawing is a consequence. And auto-draw was
|
|||
|
|
asked for a thing that has **never been manual**.
|
|||
|
|
|
|||
|
|
**Both had one cause: nothing on the page said how drawing works.** The
|
|||
|
|
INVESTIGATE card's own words were in a file we had not imported. So a
|
|||
|
|
player invented a mental model to fill the gap, and reported the gap as
|
|||
|
|
two feature requests.
|
|||
|
|
|
|||
|
|
**No finding was raised.** An instinct differing from a *legible* rule is
|
|||
|
|
a comprehension gap; an instinct differing from an *invisible* one is our
|
|||
|
|
defect. Whether it recurs now that the card says it is a testable question
|
|||
|
|
and was not before.
|
|||
|
|
|
|||
|
|
## 2. The import gap was worse than "one file of nineteen"
|
|||
|
|
|
|||
|
|
Measured before deciding:
|
|||
|
|
|
|||
|
|
| | |
|
|||
|
|
|---|---|
|
|||
|
|
| edition files upstream | 19 |
|
|||
|
|
| vendored | **1** |
|
|||
|
|
| columns in that one file | 13 |
|
|||
|
|
| columns the engine read | **5** |
|
|||
|
|
| scenarios in the file | 4 |
|
|||
|
|
| scenarios the engine deals | **1**, hardcoded |
|
|||
|
|
|
|||
|
|
`title`, `problem_text`, `front_rules`, `reveal_effect` and
|
|||
|
|
`unresolved_effect` were vendored on 2026-08-04 and **discarded at parse
|
|||
|
|
time for eight days**. The page showed `Repair 2` for a card that reads
|
|||
|
|
*"Missed Deadline"*. Fixing that cost no new bytes, no dependency and no
|
|||
|
|
budget — it was the cheapest thing in the pass and the one nothing had
|
|||
|
|
found.
|
|||
|
|
|
|||
|
|
**Rule coverage was 59/59 throughout.** The gate measures whether rules
|
|||
|
|
are exercised, and every rule was. **Nothing measures whether a player can
|
|||
|
|
read the game**, and nothing cheaply could — which is why the person
|
|||
|
|
playing it is the instrument.
|
|||
|
|
|
|||
|
|
## 3. The dependency question was answered by measurement, not preference
|
|||
|
|
|
|||
|
|
ADR-0011 refused the `csv` crate and named its own revisit condition:
|
|||
|
|
*"nested quoting, embedded newlines, multiple dialects."*
|
|||
|
|
|
|||
|
|
Across every candidate file — Actions, Solutions, Modes, Scenarios —
|
|||
|
|
**zero doubled quotes and zero embedded newlines.** The hand reader's only
|
|||
|
|
job is comma-in-quoted-field, which it already did.
|
|||
|
|
|
|||
|
|
So the argument was not re-run, **and the reason is a measurement rather
|
|||
|
|
than the inconvenience of re-running it.** `edition-check` now asserts
|
|||
|
|
that condition on every vendored file, so the day it stops being true the
|
|||
|
|
gate says so instead of a parser mangling a card.
|
|||
|
|
|
|||
|
|
**One reader, four callers.** A per-file copy is how a parser acquires
|
|||
|
|
four subtly different bugs.
|
|||
|
|
|
|||
|
|
## 4. Two gates were written for a smaller world
|
|||
|
|
|
|||
|
|
**`edition-check` compared the first recorded digest against
|
|||
|
|
`Problems.csv` regardless of which file that digest described.** With one
|
|||
|
|
vendored file it was correct; with four it was comparing across files. It
|
|||
|
|
now checks both directions — a vendored file with no digest fails, and a
|
|||
|
|
digest naming an absent file fails.
|
|||
|
|
|
|||
|
|
**A `cb-play` test asserted the literal string `"game over"`** and went
|
|||
|
|
red when a won game began saying *"solved"* — the feature working. Fixed
|
|||
|
|
by asserting the heading **against the outcome** rather than against a
|
|||
|
|
word, which also covers the no-outcome case the original never touched.
|
|||
|
|
|
|||
|
|
**Both are the same shape:** an assertion that encoded a world with one
|
|||
|
|
file, or one ending. Neither was wrong when written.
|
|||
|
|
|
|||
|
|
## 5. What T07 decided not to do
|
|||
|
|
|
|||
|
|
`Modes.csv` gives `scoring_tiebreak` per mode. For SHARED GROUND it is
|
|||
|
|
**"Not applicable"** — the table succeeds or fails together.
|
|||
|
|
|
|||
|
|
So the co-operative mode shows contributions and **refuses to order
|
|||
|
|
them**, and says why on the page. A leaderboard would have been easy,
|
|||
|
|
looked good, and invented scoring the game does not have — the same defect
|
|||
|
|
class as canonising a provisional default, which this project has already
|
|||
|
|
committed once.
|
|||
|
|
|
|||
|
|
Where a mode *does* rank, the ordering is the game's own words. The single
|
|||
|
|
derived superlative is labelled **"clay-borg's reading, not a rule."**
|
|||
|
|
|
|||
|
|
**This is the first time the project has had the game's own tiebreak to
|
|||
|
|
cite**, and it only had it because §2's import brought `Modes.csv` in. The
|
|||
|
|
alternative was inventing one.
|
|||
|
|
|
|||
|
|
## 6. The overhead view cost no coverage probe
|
|||
|
|
|
|||
|
|
All existing probes passed through a restructure that **deleted two
|
|||
|
|
renderers** (`relations_svg`, `piles_svg`) and merged three diagrams into
|
|||
|
|
one.
|
|||
|
|
|
|||
|
|
**Second confirmation of CB-WP-0027's finding**: a probe that names a
|
|||
|
|
*fact* survives a reflow; one that names a *presentation* does not.
|
|||
|
|
CB-WP-0024's `17 remaining` probe broke on a rendering change;
|
|||
|
|
CB-WP-0027's and this pass's did not, and this reflow was far larger.
|
|||
|
|
|
|||
|
|
The new control is per-seat-count: **2 through 6 seats all lay out with no
|
|||
|
|
two seat circles closer than 70px**, asserted rather than eyeballed at
|
|||
|
|
three — which is the only count anyone ever looks at.
|
|||
|
|
|
|||
|
|
## 7. Chaos window 2 — closed
|
|||
|
|
|
|||
|
|
**Declaration 11 of 12**, structural M, d8 = 1, no override.
|
|||
|
|
|
|||
|
|
The window has now produced **zero overrides in eleven declarations at
|
|||
|
|
d8**. Its retirement condition — *retire if an override changes nothing
|
|||
|
|
twice running* — was never testable, and CB-EV-0024 and CB-EV-0025 both
|
|||
|
|
said so. This is the third and final statement of it.
|
|||
|
|
|
|||
|
|
**The window's verdict should be that d8 bought rarity by spending
|
|||
|
|
evidence.** Window 1 at d4: two overrides, both changed the outcome.
|
|||
|
|
Window 2 at d8: none. **A mechanism that produces no data across a full
|
|||
|
|
window cannot be evaluated by that window**, which is a stronger
|
|||
|
|
conclusion than "the rate is too low" and belongs in whatever closes it.
|
|||
|
|
|
|||
|
|
## Open after this pass
|
|||
|
|
|
|||
|
|
- **F17 needs an artifact.** Counting ATTACK selections across the policy
|
|||
|
|
panel against hand quality is cheap and nobody has done it.
|
|||
|
|
- **Three of four scenarios have never been dealt** (ADR-0015 D5). Now
|
|||
|
|
visible, still true.
|
|||
|
|
- **`Relations`, `DARVO`, `Tokens`, `Glossary` are deferred, not refused.**
|
|||
|
|
If a seat's DARVO stage needs its own words, that is the trigger.
|
|||
|
|
- **Nobody has written a trial note in anger** — carried forward from
|
|||
|
|
CB-EV-0025, and the note channel only started working today.
|
|||
|
|
- **Whether the card text changed what the maintainer understood** is this
|
|||
|
|
pass's real acceptance test and has a person attached to it.
|