clay-borg/evidence/CB-EV-0026-the-table-you-sit-at.md
tegwick eb8aa64c56
Some checks failed
ci / check (push) Has been cancelled
CB-WP-0028 T03/T08: one overhead table, and what the nine observations
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>
2026-08-06 17:33:57 +02:00

7.3 KiB
Raw Blame History

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, 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
67 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.