HANDOFF.md: what a generated brief cannot say
Some checks failed
ci / check (push) Failing after 4s

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>
This commit is contained in:
tegwick 2026-08-12 00:00:50 +02:00
parent 4ec165c991
commit 18c57f2e9d
2 changed files with 137 additions and 0 deletions

130
HANDOFF.md Normal file
View file

@ -0,0 +1,130 @@
# 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.*

View file

@ -4,6 +4,13 @@ A rebuild from scratch simulation and games engine framework set up to assimilat
Licensed under the Target Revenue Source License (TRSL V1C1) — see [LICENSE](LICENSE); canonical text lives in the org's `target-revenue` repository.
## Picking the work back up
**[`HANDOFF.md`](HANDOFF.md)** — written by hand at the end of each
working session, unlike the generated `.custodian-brief.md`. It records
what is true, what is only *reported*, and what would be a mistake to
assume. Read it before `make design`.
## Running the gates
```sh