CB-WP-0008-T01: bots — the kernel's first non-scenario consumer
Some checks failed
ci / check (push) Failing after 4s

A Policy trait, a seeded random policy and a greedy one with a stated
heuristic, a legal-command generator that filters candidates through
validate, and a driver that runs a 3-player all-bot game to GameEnded.
Same-seed runs are hash-identical (K8), and a different policy seed
produces a different game — without that second assertion the first is
satisfied by a bot that ignores its RNG.

Every failure is loud, because the one a bot driver must not have is the
silent one: no legal move, passing where an action is required, an
out-of-range index (not clamped), a rejected command, and a stall guard.

What the second consumer found, none of it fixed here:
- GR-A13 admits SOLVE against an already-claimed Problem and resolution
  then does nothing — the action is silently wasted. The policy avoids
  it; the rule is left for a ruling.
- The 3-player standard fixture cannot reach GR-E01's threshold of 7:
  three Problems valued 1,2,3 cap the total at 6. No scenario noticed
  because none plays to scoring.
- K13's Project trait still has zero implementors. T02 is its first.

Mutation-checked by hand. The first mutation was a no-op and survived;
removing the Resolve call outright turned three tests red for the stated
reason. Third instance of the weak-mutation class.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-01 14:29:45 +02:00
parent be2d7a3e5a
commit 6197677126
4 changed files with 926 additions and 2 deletions

View file

@ -2,7 +2,7 @@
id: CB-WP-0008
kind: product
title: "Ship INTENT stage 0: a GROUND game you can actually play"
status: proposed
status: in_progress
state_hub_workstream_id: "ee960213-ffc9-4654-a962-35017a231fe2"
---
@ -34,7 +34,7 @@ and the `LogStore` port are the right shapes.
```task
id: CB-WP-0008-T01
status: todo
status: done
priority: high
state_hub_task_id: "832d934d-a239-4392-a649-b8bb736ef07f"
```
@ -55,6 +55,11 @@ because a stalled bot looks like a finished game.
rounds) with every command legal, and two runs at the same seed produce
identical state hashes (K8).
**Done 2026-08-01.** `games/ground/src/bot.rs`, 8 tests, both policies
finish. Three findings from the second consumer — a wasted-action gap in
GR-A13, an unwinnable 3-player fixture, and K13 with zero implementors —
are in `history/260801-cb-wp-0008-log.md`.
## Task: `cb-play` — the CLI player
```task