clay-borg/HANDOFF.md

131 lines
5.3 KiB
Markdown
Raw Normal View History

HANDOFF.md: what a generated brief cannot say 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>
2026-08-12 00:00:50 +02:00
# 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.*