clay-borg/workplans
tegwick 3a026b1e1f CB-WP-0025 T03: ADR-0013 -- one world after the game, and difficulty that
does not measure the bot

Seven decisions. Two are not what T03 expected, because the review moved
the ground under both.

D1: strategy fusion DOES NOT APPLY, and that is why the affordable option
is also the honest one. Fusion is a defect of aggregating over
determinizations to choose a move -- the search picking different actions
in states a player cannot distinguish. After the game there is ONE WORLD:
the deal is known, so a search over it yields a line executable in the
only world there is. The survey treated fusion as this pass's central
obstacle; it is an obstacle to a playing engine, which we are not
building. The tool answers "given the deal as it actually was, was there a
line that reached the threshold" and is labelled that way on screen --
never "how you should have played".

D4: difficulty is the WINNABLE FRACTION, not a bot's win rate. C4 killed
the bot rate -- two trivial policies span 0-100% on the same deals, and
improving the bot would make the game "easier" without a rule changing. A
measure that moves when the measurer improves is not measuring the thing.
The solver supplies the alternative: over N deals, in what proportion does
a winning line exist. That is a property of the deal distribution and the
threshold, which is what ground-game tunes and what GROUND-WP-0005 is
blocked on. Ships as a table -- winnable fraction, named reference policy,
skill gap -- never one number, with policy/N/seed-range/K in the number's
name. Stated as a LOWER BOUND, since a K-round search cannot see a line
that needed round 1.

D2: search GroundState. The survey's view-only structural boundary is not
implementable -- a view cannot fold events, and it said so in §6. The
guarantee moves to something checkable: every move in a witness is marked
visible or hidden, computed from project(). A witness reads "you could
have won, but two of these six moves needed a card you had no way to know
was coming" -- more useful than either extreme.

D3: bounded exhaustive over the last K rounds, table as one co-operative
agent, K=2 default. Affordable once C6 corrected the premise: joint
branching over the last two rounds is ~5x10^2 / 1.6x10^5 / 5.7x10^5 at
2/3/4 seats. Wording is normative: "no winning line found in the last K
rounds", never "unwinnable". PIMC and ISMCTS rejected -- they add strategy
fusion to a problem that does not have it.

D5: the harness becomes an instrument before any figure is quoted (C3) --
positive controls, --self-test in make self-tests, a make target, and a
PLURAL policy panel, because the spread between policies is what C4
exposed and hiding it would restore the error.

D6: no new crate and no port. The L declaration was an over-declaration
and is recorded as one. D7: the node cost is disputed 5x between author
and reviewer; T04 benchmarks it with criterion and neither existing figure
may be cited, including by this ADR.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 18:47:07 +02:00
..
CB-WP-0001-inner-loop.md CB-WP-0007 T01+T03: window the metric, budget it, cap meta at 25% 2026-08-01 14:12:07 +02:00
CB-WP-0002-cost-accounting.md CB-WP-0007 T01+T03: window the metric, budget it, cap meta at 25% 2026-08-01 14:12:07 +02:00
CB-WP-0003-loop-hardening.md CB-WP-0007 T01+T03: window the metric, budget it, cap meta at 25% 2026-08-01 14:12:07 +02:00
CB-WP-0004-mechanical-work.md CB-WP-0007 T01+T03: window the metric, budget it, cap meta at 25% 2026-08-01 14:12:07 +02:00
CB-WP-0005-assertion-coverage.md CB-WP-0007 T01+T03: window the metric, budget it, cap meta at 25% 2026-08-01 14:12:07 +02:00
CB-WP-0006-instrument-the-table.md CB-WP-0007 T01+T03: window the metric, budget it, cap meta at 25% 2026-08-01 14:12:07 +02:00
CB-WP-0007-session-shape.md CB-WP-0010-T01: close CB-WP-0007 2026-08-02 02:15:08 +02:00
CB-WP-0008-ship-stage-0.md CB-WP-0008-T04: CB-EV-0007 — stage 0 is shipped, and the spend curve is a V 2026-08-01 15:25:19 +02:00
CB-WP-0009-adaptive-gates.md CB-WP-0009-T04: CB-EV-0008 — the gate changes, measured 2026-08-01 15:45:08 +02:00
CB-WP-0010-consolidation.md CB-WP-0010-T03: record CommitWindow's second failed second-use 2026-08-02 02:19:23 +02:00
CB-WP-0011-inspectable-table.md CB-WP-0011-T03: evidence — the chaos roll fired, and it was right 2026-08-02 02:48:51 +02:00
CB-WP-0012-render-port.md Sync hub IDs and work-record index for CB-WP-0012 2026-08-02 04:30:45 +02:00
CB-WP-0013-instrument-corrections.md Sync hub IDs and work-record index for CB-WP-0013 2026-08-02 07:32:33 +02:00
CB-WP-0014-execute-the-javascript.md Sync hub IDs and work-record index for CB-WP-0014 2026-08-02 07:59:28 +02:00
CB-WP-0015-the-inert-clauses.md Sync hub IDs and work-record index for CB-WP-0015 2026-08-02 14:08:30 +02:00
CB-WP-0016-the-drop-target.md Sync hub IDs and work-record index for CB-WP-0016 2026-08-02 20:49:21 +02:00
CB-WP-0017-legible-interaction.md Sync hub IDs and work-record index for CB-WP-0017 2026-08-02 22:43:40 +02:00
CB-WP-0018-the-browser-is-a-client.md Sync hub IDs and work-record index for CB-WP-0018 2026-08-03 02:24:57 +02:00
CB-WP-0019-the-am4-family.md CB-WP-0019 T03/T04: the cost rule written down, and the lifecycle 2026-08-03 19:25:18 +02:00
CB-WP-0020-the-table-you-can-read.md Sync hub state for CB-WP-0020 2026-08-03 20:21:18 +02:00
CB-WP-0021-import-the-edition.md CB-WP-0021 T04: evidence -- the endings are tight, and the cost chain snapped 2026-08-05 15:56:31 +02:00
CB-WP-0022-the-design-instrument.md CB-WP-0022 T05/T06/T07: the register, and what its first run found 2026-08-05 15:22:33 +02:00
CB-WP-0023-solve-legality.md CB-EV-0020: a gate moved the rule, and the report was wrong 2026-08-04 00:21:21 +02:00
CB-WP-0024-the-table-you-can-watch.md CB-WP-0024: the table you can watch 2026-08-05 17:32:48 +02:00
CB-WP-0025-could-we-have-won.md CB-WP-0025 T03: ADR-0013 -- one world after the game, and difficulty that 2026-08-05 18:47:07 +02:00
CB-WP-0026-collect-the-rulings.md Sync hub state for CB-WP-0026 2026-08-05 16:15:22 +02:00