CB-WP-0011-T01: the inspector shows everything, and a gate says so

The renderer moves out of the play loop into inspect.rs and grows from
24 to 42 of the 43 leaf paths a populated GroundView carries. What it
had been dropping was the whole DARVO state machine, the whole GROUND
practice, the scoring mode, Focus tokens, the discard pile, per-seat
protection, and every part of the outcome except the headline.

The load-bearing half is every_view_field_is_classified, which walks
the serialized view for leaf paths and requires each to be listed as
rendered (with a token the output must contain) or omitted (with a
reason). Paths rather than keys: 'problem' occurs under a DARVO target,
a GROUND choice and a Selection, and a key-set walk would let one of
the three vouch for the other two.

Four M-D1-MUT controls, each red for its stated reason. The
unclassified-field control fired for real on the first run --
players.*.hand, a field the gate's own author had missed.
This commit is contained in:
tegwick 2026-08-02 02:38:38 +02:00
parent c1d140626e
commit d2ca1046c0
5 changed files with 624 additions and 125 deletions

View file

@ -3,6 +3,7 @@ id: CB-WP-0011
kind: product
title: "Stage 1, first slice: an inspector that shows everything"
status: todo
state_hub_workstream_id: "1142442a-65f1-483a-800d-6ca8490c5f1a"
---
# Purpose
@ -75,8 +76,9 @@ form.
```task
id: CB-WP-0011-T01
status: todo
status: done
priority: high
state_hub_task_id: "b8cb4c20-9d06-47a4-890c-bf8390015439"
```
Extend `render` to cover every field of `GroundView`, and — the load-
@ -107,12 +109,33 @@ deal: most of the missing fields are empty at deal time, and a coverage
test run against a state where the fields are absent is the same lie in a
different costume.
**Done 2026-08-02.** The renderer moved to `tools/cb-play/src/inspect.rs`
and now covers **42 of the 43 leaf paths** in a populated `GroundView`,
up from 24. The one omission is `players.*.hand``null` for a
non-viewer seat, where the absence is what `hand N card(s)` renders.
`every_view_field_is_classified` walks the serialized view for leaf
*paths* (not keys — `problem` occurs under a DARVO target, a GROUND
choice and a Selection, and a key-set walk would let one vouch for the
other two). Four controls, each run and each red for its stated reason:
| control | result |
|---|---|
| a field deleted from `render` | `players.*.protection is claimed rendered, but the output has no "protect 2"` |
| a field present in neither list | fired **for real on the first run**`players.*.hand` |
| the walk returns no paths (EXPECT-VACUOUS) | `the walk found 0 leaf path(s) — it is not walking the view` |
| a classified path that no longer exists | `classified path(s) no longer exist in GroundView: ["outcome.nonexistent"]` |
The second is the one worth keeping: the gate caught a field I had missed
while writing the gate, before it had ever been committed.
## Task: `cb-play --inspect` walks a recorded game
```task
id: CB-WP-0011-T02
status: todo
priority: high
state_hub_task_id: "08f8a9c7-3dfe-4f72-b510-df9efa457370"
```
Stage 1 asks for a *debug inspector*. The inspector above renders one
@ -143,6 +166,7 @@ hidden thing is actually hidden.
id: CB-WP-0011-T03
status: todo
priority: medium
state_hub_task_id: "db722865-1233-4918-952d-0bf4761199e4"
```
Write `evidence/CB-EV-0009-inspectable-table.md` covering: