# 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-borg` claims 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-panel` runs SHARED GROUND only, and CB-EV-0033 showed the modes move *who wins*. - **Per-round effect** is unreported, which is where `scoped` lives. --- ## 5. Conventions a new session will trip over - **The State Hub is a read model.** Never `create_workplan` or `create_task` by hand: write the file, commit, run `fix-consistency` (its C-06 check registers it and writes the ids back). - **Workplan status is `active | done | paused`.** `in_progress` is a *task* status; using it on a workplan 422s on every sync. - **`make vendor`** re-syncs the edition mirror from `../ground-game` and regenerates the digest block by walking `editions/`. Upstream changes several times a day; a red `edition-check` usually means run this. - **`replays/` is gitignored** — a build artifact, not a fixture. - **Reports to ground-game** are `GROUND-RPT-####`, written into their `reports/`, with a clay-borg `evidence/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.*