200 lines
10 KiB
Markdown
200 lines
10 KiB
Markdown
|
|
# CB-EV-0007 — INTENT stage 0, and whether the loop earns its keep
|
|||
|
|
|
|||
|
|
CB-WP-0008 T04. Measured 2026-08-01, at `HEAD` after T03.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. Is stage 0 shipped?
|
|||
|
|
|
|||
|
|
> **INTENT 0. Headless GROUND** — *full authoritative state, 2–6 players,
|
|||
|
|
> commit/reveal, relationships, DARVO, GROUND practice, CLI player, replay
|
|||
|
|
> and scenario tests, simple bots. No rendering, no physics.*
|
|||
|
|
|
|||
|
|
| item | state | where |
|
|||
|
|
|---|---|---|
|
|||
|
|
| full authoritative state | **met** | event-sourced aggregate, K1–K3; `state_hash_hex` |
|
|||
|
|
| 2–6 players | **met, with a caveat below** | CB-WP-0008 T03: all five counts play out, both policies, reproducible |
|
|||
|
|
| commit/reveal | **met** | GR-R02/R04 face-down selections; hidden in the projection |
|
|||
|
|
| relationships | **met** | Bond/Rivalry, GR-L01..L05, slots enforced |
|
|||
|
|
| DARVO | **met** | GR-D02..D07 resolve; `gr-d01`…`gr-d06` |
|
|||
|
|
| GROUND practice | **met** | GR/OU/ND with sub-choices, GR-A10..A12 |
|
|||
|
|
| **CLI player** | **met (new)** | `tools/cb-play`, `make play` |
|
|||
|
|
| replay and scenario tests | **met** | 24 scenarios, K10 `.cbreplay`, `make replay-test` |
|
|||
|
|
| **simple bots** | **met (new)** | `games/ground/src/bot.rs`, random + greedy |
|
|||
|
|
| no rendering, no physics | **met** | nothing in the tree draws |
|
|||
|
|
|
|||
|
|
**Stage 0 is shipped.** The two items that were missing at the start of
|
|||
|
|
this pass — the CLI player and the bots — are the two the workplan was
|
|||
|
|
opened for.
|
|||
|
|
|
|||
|
|
Three qualifications, none of which I will hide behind a checkmark:
|
|||
|
|
|
|||
|
|
1. **GR-E01's threshold is unreachable below five seats** with the
|
|||
|
|
standard preset's placeholder Problem values. Best possible total is
|
|||
|
|
3 / 6 / 6 / 10 / 10 against thresholds 5 / 7 / 7 / 9 / 9. The rules
|
|||
|
|
work at every count; the *fixture* cannot be won at 2–4 players. Pinned
|
|||
|
|
by `gr-e01-threshold-unreachable-2p`, an arithmetic test, and a
|
|||
|
|
provisional marker owned by `ground-game`.
|
|||
|
|
2. **GR-A13 admits SOLVE against an already-claimed Problem**, which then
|
|||
|
|
resolves to nothing — a silently wasted action. Found by the greedy
|
|||
|
|
bot in its first game.
|
|||
|
|
3. **The scoring modes are not equally exercised.** Every full game ever
|
|||
|
|
played — scenario, bot or CLI — scored under **SHARED GROUND**.
|
|||
|
|
GR-E04 is reached only from a patched round-5 state, and **GR-E03
|
|||
|
|
(COMMON PROBLEM) has no scenario at all**: it is implemented,
|
|||
|
|
unreferenced by any test, and would not fail if deleted.
|
|||
|
|
|
|||
|
|
## 2. What did the second consumer reveal?
|
|||
|
|
|
|||
|
|
INTENT: *"No concept becomes canonical merely because it looks general. It
|
|||
|
|
becomes canonical after surviving a second concrete use."* Before this
|
|||
|
|
pass every abstraction here had survived exactly one use — the scenario
|
|||
|
|
runner. The bots and the CLI are the second.
|
|||
|
|
|
|||
|
|
| abstraction | verdict from the second use |
|
|||
|
|
|---|---|
|
|||
|
|
| `Aggregate` (validate → fold) | **fits.** Bots drive it unchanged; nothing needed widening. |
|
|||
|
|
| `Project` / K13 | **fits, and was untested.** Six passes with zero implementors; `GroundView` is the first. Writing it is what exposed that `seed` must not project — it is not secret content, but a seat holding it can compute the deck. |
|
|||
|
|
| `ScenarioGame::parse_command` | **fits, and gained an inverse.** `record::to_step` round-trips every command shape, so a played session becomes a scenario. |
|
|||
|
|
| K10 replay bundles | **fits.** `cb-play --replay` writes one with no change to the writer. |
|
|||
|
|
| `Policy` (new) | one use each by bots and by the CLI's human seat — a human and a bot are the same interface, which is the strongest evidence in this table that the seam is in the right place. |
|
|||
|
|
| **`CommitWindow`** | **still zero non-test users.** The bot pass was its best chance to acquire a second one and did not: GROUND implements the same contract inline. Delete-by 2026-12-31 stands. |
|
|||
|
|
| `LogStore` | unchanged by this pass; still one real consumer. |
|
|||
|
|
|
|||
|
|
The load-bearing finding: **the abstractions that had a consumer fit; the
|
|||
|
|
one that had none is still unused.** `CommitWindow` was extracted because
|
|||
|
|
it looked general. It has now survived two passes that could have used it
|
|||
|
|
and did not.
|
|||
|
|
|
|||
|
|
## 3. Meta share under InnerLoop v1.5
|
|||
|
|
|
|||
|
|
This pass is `kind: product` and is the first run under the soft 25% cap.
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
meta budget [OVER] 61% of $92.32 attributed (soft 25%, InnerLoop v1.5)
|
|||
|
|
product $12.02 meta $32.85 mixed $47.46 (split 50/50)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**This pass alone is 100% product** — every dollar in it closed a stage-0
|
|||
|
|
item. The 61% is cumulative and falling (68% → 61%).
|
|||
|
|
|
|||
|
|
> **And that is a defect in the instrument I built two tasks ago.** The
|
|||
|
|
> meta budget aggregates over *every attributed task ever closed*, which
|
|||
|
|
> is exactly the disease CB-RES-0005 §1 named for SH-1/SH-2: **a
|
|||
|
|
> cumulative mean cannot detect the present, because the history outvotes
|
|||
|
|
> it.** A pass that is 100% product reads `OVER`. A pass that is 100% meta
|
|||
|
|
> would also read `OVER` and look no different.
|
|||
|
|
|
|||
|
|
The fix is the same one T01 of CB-WP-0007 applied to session shape: window
|
|||
|
|
it. **It is not built here**, because meta is at 61% and v1.5 forbids
|
|||
|
|
opening new meta work above the line — the budget's first real act was to
|
|||
|
|
stop me from improving the budget. Recorded as the top candidate for the
|
|||
|
|
next meta pass.
|
|||
|
|
|
|||
|
|
## 4. Cost per unit of product
|
|||
|
|
|
|||
|
|
Per-window, measured with `cb-cost --since <pass boundary>`:
|
|||
|
|
|
|||
|
|
| pass | kind | responses | cost | $/response |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| CB-WP-0004 | meta | 165 | $20.28 | **0.123** |
|
|||
|
|
| CB-WP-0005 | meta | 98 | $22.32 | 0.228 |
|
|||
|
|
| CB-WP-0006 | meta | 158 | $57.22 | **0.362** |
|
|||
|
|
| CB-WP-0007 | meta | 31 | $9.24 | 0.298 |
|
|||
|
|
| **CB-WP-0008** | **product** | **103** | **$12.66** | **0.123** |
|
|||
|
|
|
|||
|
|
Per task, as `task-done` measured them: T01 **$4.29**, T02 **$5.60**;
|
|||
|
|
T03 and this file make up the balance. **Three stage-0 deliverables and
|
|||
|
|
22 new tests for $12.66** — less than any single task in CB-WP-0006,
|
|||
|
|
whose T04 alone cost $10.06. The window is measured at `HEAD` after T03,
|
|||
|
|
so T04's own cost is not in it.
|
|||
|
|
|
|||
|
|
Session shape, same window, the first pass to satisfy both context targets
|
|||
|
|
since they were written:
|
|||
|
|
|
|||
|
|
| metric | this pass | target | previous pass |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| SH-1 mean context | **161,994** | ≤ 200,000 | 503,464 |
|
|||
|
|
| SH-2 p90 context | **215,664** | ≤ 300,000 | 607,105 |
|
|||
|
|
| SH-3 batching | 6.9% | ≥ 20% | 0.0% |
|
|||
|
|
|
|||
|
|
## 5. The retrospective: six passes in, is the loop earning its keep?
|
|||
|
|
|
|||
|
|
**Answer with the spend curve.** It is a V, and both arms are informative.
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
$/response 0.123 ── 0.228 ── 0.362 ── 0.298 ── 0.123
|
|||
|
|
pass 0004 0005 0006 0007 0008
|
|||
|
|
kind meta meta meta meta PRODUCT
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Three readings, and only the third survives:
|
|||
|
|
|
|||
|
|
1. *"Meta work is expensive, product work is cheap."* Tempting and wrong:
|
|||
|
|
CB-WP-0004 was meta and matched this pass exactly.
|
|||
|
|
2. *"Compaction did it."* Partly true and not sufficient. Context fell
|
|||
|
|
3.1× (503,464 → 161,994) and cost fell 2.9× (0.362 → 0.123), so the
|
|||
|
|
two move together here. But CB-WP-0004 reached the same $0.123 in a
|
|||
|
|
stretch running at **≈209,000** mean context — derived from
|
|||
|
|
CB-RES-0005 §1's cumulative rows, not measured directly — which is
|
|||
|
|
above this pass and well above the target. Cost and context are
|
|||
|
|
correlated, not locked.
|
|||
|
|
3. **"Cost per response tracks how far the work is from a runnable
|
|||
|
|
check."** CB-WP-0004 (tooling with self-tests) and CB-WP-0008 (code
|
|||
|
|
with tests) both had a green/red answer within seconds of each edit.
|
|||
|
|
CB-WP-0005 through CB-WP-0007 were arguing about what a number *means*
|
|||
|
|
— whether a mutation is strong, whether a window is the right window,
|
|||
|
|
whether a target should move — and every one of those questions is
|
|||
|
|
settled by prose, in context, at the top of the price curve.
|
|||
|
|
|
|||
|
|
That is the honest general finding, and it is not "stop doing meta work".
|
|||
|
|
The meta passes produced the mutation harness that caught six real
|
|||
|
|
defects, the windowed metric, and the budget that stopped me in §3. It is:
|
|||
|
|
|
|||
|
|
> **Loop work should be cashed out into something runnable in the same
|
|||
|
|
> pass that invents it, or it will be paid for in context.**
|
|||
|
|
> `mutation-check` did this (a command, five controls, verdicts) and cost
|
|||
|
|
> $0.228/response. The taxonomy of instrument failures around it did not,
|
|||
|
|
> and cost $0.362.
|
|||
|
|
|
|||
|
|
**Is the loop earning its keep?** On this evidence, yes — but its return
|
|||
|
|
is *lumpy and lagging*. CB-WP-0004's tooling is used in every pass since.
|
|||
|
|
CB-WP-0005's mutation harness caught six defects in CB-WP-0006. CB-WP-0006
|
|||
|
|
corrected five published verdicts. CB-WP-0007's window and budget both
|
|||
|
|
fired within one pass. None of that appeared as a cost saving in the pass
|
|||
|
|
that produced it, and the spend review at the start of this pass — which
|
|||
|
|
scored CB-WP-0005 and CB-WP-0006 at "$74 for zero measured efficiency
|
|||
|
|
gain" — was measuring too early with too narrow a definition of gain.
|
|||
|
|
|
|||
|
|
The correction to that review is this pass itself: the same loop, pointed
|
|||
|
|
at product, ran at its best recorded cost per response and its lowest
|
|||
|
|
recorded context, and shipped a stage.
|
|||
|
|
|
|||
|
|
## 6. Prediction discipline, fourth outing
|
|||
|
|
|
|||
|
|
| pass | prediction | measured | error |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| CB-WP-0004 | 25–30 points recovered | 6 | 4–5× |
|
|||
|
|
| CB-WP-0005 | ≥10 of 14 rows | 4 | 2.5× |
|
|||
|
|
| CB-WP-0006 | 9 per-task outcomes | 7 met, 2 restated | small |
|
|||
|
|
| **CB-WP-0008** | *stage 0 ships; meta reads under 25%* | **stage 0 shipped; meta reads 61%** | **half right, and the miss is the finding in §3** |
|
|||
|
|
|
|||
|
|
The workplan said: *"the budget should read comfortably under the line; if
|
|||
|
|
it does not, the evidence file says so and names what was displaced."*
|
|||
|
|
Nothing was displaced. The budget is measuring the wrong window.
|
|||
|
|
|
|||
|
|
## 7. Open, carried forward
|
|||
|
|
|
|||
|
|
- **`CommitWindow`** — still zero non-test users; delete-by 2026-12-31.
|
|||
|
|
- **The meta budget is cumulative** and cannot see the present (§3).
|
|||
|
|
- **GR-E01 unreachable below 5 seats**; **GR-A13 wasted SOLVE** — both
|
|||
|
|
need a ground-game ruling, not a kernel change.
|
|||
|
|
- **GR-E03 / GR-E04 have never been played to the end.**
|
|||
|
|
- **AM-3 blocked**; **AM-7/AM-8 PARTIAL**; kernel gate binds 2026-08-31 at
|
|||
|
|
18/18 green.
|
|||
|
|
- **SH-3 at 6.9%** against a 20% floor, unfalsified — nobody has yet tried
|
|||
|
|
to hit it (CB-WP-0007 T04, cancelled).
|
|||
|
|
- **A stale doc comment** claimed DARVO was unimplemented for weeks after
|
|||
|
|
it shipped. `make facts-check` gates duplicated *numbers*; nothing gates
|
|||
|
|
a prose claim about code. Fixed in place; the class is open.
|