Every workplan is done and nothing is in flight -- the session stopped at
a boundary, not mid-change -- so the risk on pick-up is not lost context
but MISREAD context.
Records the three findings most likely to be misread (attack_relief is
unreachable-then-real, not null; H1's rejection covers half of H1; the
scope module is inert in round one), what is waiting on ground-game
versus what is ours, the conventions a new session trips over (hub is a
read model; workplan status is active not in_progress; make vendor;
replays/ is gitignored), and the two habits that paid for themselves
repeatedly -- mutate every control, and test the path a player takes.
Linked from the README above the gates, since it should be read before
design — the finding register
QUEUE (open findings)
repro F17 degenerate raised 6d ground-game
repro F18 inert raised 6d clay-borg
repro F24 inert raised 5d clay-borg
repro F25 inert raised 4d clay-borg
repro F26 inert ruled 4d ground-game
repro F27 unplayed reported 4d clay-borg
repro F31 unplayed reported 4d clay-borg
repro F30 degenerate ruled 4d ground-game
NOTES (not reportable — GameDesign §3.1)
F12 degenerate 11d
F15 underdetermined 7d
F21 degenerate 6d
findings 28 (+3 note(s))
with a resolving reproduction 19/28 = 67% target 100%
open, lacking a reproduction 0 target 0
reproductions green while open 0 target 0
notes past 30 days 0 target 0
closed (log) 20 [U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, F11, F13, F14, F16, F19, F20, F23, F22, F29, F28].
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.3 KiB
Handoff — 2026-08-09
Written at the end of the session that landed CB-WP-0043 through
CB-WP-0050. .custodian-brief.md is generated; this is not. It says
what a generated index cannot: what is true, what is merely reported, and
what would be a mistake to assume.
Start with make all (expect green), then make design for the finding
queue and make panels for the current measurements.
1. Where the work stands
Nothing is in flight. Every workplan is done; no task is todo.
That is deliberate — the session was stopped at a boundary, not
mid-change.
The last four passes built one capability, in this order, and each depends on the one before it:
| pass | what it made possible |
|---|---|
| CB-WP-0047 | all four Scenarios and all three Modes are selectable |
| CB-WP-0048 | a configuration is a point in aspect space, not a package name |
| CB-WP-0049 | policies that can see an objective and a module |
| CB-WP-0050 | a panel that sweeps configurations and says what it could not measure |
Before this, the engine dealt SCN_01 and only SCN_01, and Variant
was a three-armed enum that could not name a two-module configuration.
2. The three things most likely to be misread
(a) attack_relief.self_soothe_ge4 is not "measured, no effect". It
is unreachable in the printed game — peak Stress never exceeds 2 and
the gate is at 4 — and real once a problem_stress module supplies
pressure (F31). Its panel row carries ← never fired: UNMEASURED for
exactly this reason. Do not read that row's numbers as a verdict on it.
(b) H1's rejection covers half of H1. CB-EV-0030 measured H1 with bots that never attacked, so H1-B had no opportunity in any of those games. The rejection stands on flat pressure alone. Corrected to ground-game as GROUND-RPT-0007.
(c) problem_stress.scoped is inert in round one. Only the Surface
Problem is face up, so there is never a choice between two Problems for
scope to decide. Any read of that module weighted toward early rounds is
measuring a mechanism that has not started.
3. What is waiting on ground-game
Not ours to move, and worth not pre-empting:
- F17 — ATTACK's degeneracy; a design judgement, open longest.
- F26, F30 —
ruled, tracked on their side (GROUND-WP-0008). - Unanswered asks: the two in GROUND-RPT-0006 §5 and the reachability question in GROUND-RPT-0007 §4.
Reports are written into ../ground-game/reports/ and left
uncommitted — their maintainer commits them. That is the established
pattern, not an oversight.
4. What is ours
Blocked on capability, not effort
F27 — no policy models a rival playing their objective. This is the whole of what keeps F27 open. The competitive modes are measured by seats that never anticipate an opponent, and no amount of additional measurement fixes that. Opponent modelling is the largest single item on the board.
Debt, small and dull
- F18 / F24 / F25 — the "engine hardcodes what the edition states" family. F25 shrank when the threshold moved to the Scenario card (CB-WP-0047); F24 is the Solution deck as a Rust literal.
- 62 untagged literals in
make facts-check— reported, not failing. - 11 trial notes read
unrecorded. Permanent by choice: they predate CB-WP-0046's marker stamp, and inventing provenance is the defect that pass existed to avoid.
Named in workplans, never started
- A second game.
clay-borgclaims to be a general engine and has exercised exactly one. Everything built this week assumed that claim without testing it. My recommendation for what to do first. - Mode × module is unswept.
module-panelruns SHARED GROUND only, and CB-EV-0033 showed the modes move who wins. - Per-round effect is unreported, which is where
scopedlives.
5. Conventions a new session will trip over
- The State Hub is a read model. Never
create_workplanorcreate_taskby hand: write the file, commit, runfix-consistency(its C-06 check registers it and writes the ids back). - Workplan status is
active | done | paused.in_progressis a task status; using it on a workplan 422s on every sync. make vendorre-syncs the edition mirror from../ground-gameand regenerates the digest block by walkingeditions/. Upstream changes several times a day; a rededition-checkusually means run this.replays/is gitignored — a build artifact, not a fixture.- Reports to ground-game are
GROUND-RPT-####, written into theirreports/, with a clay-borgevidence/CB-EV-####as the upstream.
6. Two habits this session paid for repeatedly
Mutate every control before trusting it. Three separate controls in this session were vacuous and said so only under mutation: a peek detector whose variation was invariant under what a violator reads; a "module-aware seat is ordinary under the baseline" check that swept positions where no ranking term could change the answer; and a panel that printed real-looking numbers for a module that had never fired. Each looked correct and proved nothing.
Test the path a player takes, not the helper. --module problem_deal.pressure_deck played a full baseline game and reported
success while every unit test of resolve() passed. CB-WP-0033 found the
same shape and said it plainly: only the integration test proves the
driver.