CB-WP-0028 T03/T08: one overhead table, and what the nine observations
Some checks failed
ci / check (push) Has been cancelled
Some checks failed
ci / check (push) Has been cancelled
turned out to be T03. One table_svg: seats around an elliptical table starting at the BOTTOM -- the viewer sits nearest the reader, as at a real table -- Problems and both stacks in the middle, each seat's played card between it and the centre, relations drawn between seats. Two renderers were DELETED: relations_svg and piles_svg. The task said one table not two diagrams, and leaving the old ones would have meant drawing the same thing twice and letting them drift. No coverage probe cost, through a restructure that merged three diagrams and removed two functions. Second confirmation of CB-WP-0027's finding: a probe naming a FACT survives a reflow, one naming a PRESENTATION does not. CB-WP-0024's "17 remaining" broke on a rendering change; this far larger reflow broke nothing. The new control is per seat count -- no two seat circles closer than 70px at 2 through 6 -- asserted rather than eyeballed at three, which is the only count anyone ever looks at. T08 (CB-EV-0026). Seven of nine observations were engine defects, one was a design finding, one was already true and nobody could tell. Observations 4 and 5 both dissolved and had ONE cause: nothing on the page said how drawing works, so a player built a mental model to fill the gap and reported the gap as two feature requests. The import gap was worse than "one of nineteen" -- 5 of 13 columns read from the file we DID vendor, discarded at parse time for eight days. Rule coverage was 59/59 throughout. The gate measures whether rules are EXERCISED; nothing measures whether a player can READ the game, and nothing cheaply could, which is why the person playing it is the instrument. TWO GATES WERE WRITTEN FOR A SMALLER WORLD, and neither was wrong when written. edition-check compared one recorded digest against Problems.csv regardless of which file it described -- correct with one vendored file, comparing across files with four. And a cb-play test asserted the literal "game over" and went red when a won game said "solved", which was T06 working; it now asserts the heading against the OUTCOME and covers the no-outcome case the original never touched. Chaos window 2 closes with zero overrides in eleven declarations at d8. Third and final statement of it: d8 bought rarity by spending evidence, and a mechanism producing no data across a full window cannot be evaluated by that window. make all: exit 0. 57 render tests, 26 cb-play, loop-lint clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
4d3e30eda4
commit
eb8aa64c56
5 changed files with 459 additions and 122 deletions
163
evidence/CB-EV-0026-the-table-you-sit-at.md
Normal file
163
evidence/CB-EV-0026-the-table-you-sit-at.md
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
# 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue