CB-WP-0049 T02/T03: a seat that plays its objective, and F27 splits in two
Some checks failed
ci / check (push) Has been cancelled

objective() reads GroundState::score (now public) rather than restating
what winning is; a copy in the bot would disagree with the kernel the
first time ground-game rules on F28.

Working out WHERE the modes can differ was most of the task and it
bounds the result: SOLVE always claims for the actor, so own-score and
group-score want the same SOLVE nearly everywhere. That is a fact about
GROUND's action set, not a shortcoming of the bot. Two real divergences,
both readable off the table: SUPPORT regulates someone else (worth less
against a rival, worth MORE under coalitions where a Bond merges them
into my side), and SOLVE's value is the card's value, which greedy
ignores entirely.

THE RESULT — F27 splits in two:
  group success  UNCHANGED in 34 of 36 cells
  who wins       MOVES: BONDED COALITIONS at 4p goes 2.04 -> 2.98,
                 2.12 -> 3.29, 2.05 -> 3.01 winning seats per game

So "the competitive modes are scoring lenses over cooperative play" was
too strong and is withdrawn. The sharper claim: GROUND's scoring modes
change WHO WINS, not WHETHER THE GROUP SUCCEEDS. And the effect is
seat-band dependent -- 2p none, 4p largest, 6p none under coalitions;
two relation slots capping network growth is a candidate explanation and
is untested.

The panel now prints BOTH policies side by side. That was a correction
mid-task: the first version printed only the new one and I compared it
against a figure remembered from CB-WP-0047 -- a comparison against a
board nobody re-ran.

Control that makes the numbers mean anything: under SHARED GROUND the
two policies agree at all but <=2 decision points across 12 boards, so a
moving column is mode-awareness and not simply a different bot.

Also: two T01 tests keyed on `status: proposed`, which ground-game
renamed to `ready-for-implement` mid-session. They now find the module
by asking resolve() -- the structural property is ours and does not move
when another repo edits its vocabulary.

Also: `make vendor` replaces three hand re-vendors with a tool that
regenerates digests by walking editions/, and reports one-sided files
rather than resolving them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-08 23:31:11 +02:00
parent 82b9e7df31
commit 3045eb03f8
16 changed files with 859 additions and 94 deletions

View file

@ -152,14 +152,16 @@ modules:
path: editions/modules/end_condition/hybrid_clear_collapse
is_default: false
selectable: true
status: proposed
status: ready-for-implement
rules_delta: editions/modules/end_condition/hybrid_clear_collapse/rules_delta.yaml
hypothesis_ref: history/260808-deal-end-sequences-design.md
summary: >
End on board clear, group collapse, or round ceiling (draft rules).
utility_estimate: Unimplemented — draft only.
End on board clear, group collapse, or round-5 ceiling (v0 frozen).
utility_estimate: Unimplemented in kernel — package ready for clay-borg.
decision: none
clay_borg_notes: Kernel pending; do not claim measured until implemented.
clay_borg_notes: >
v0 frozen in MODULE.md. Implement alone then profile scoped_plus_hybrid_end.
allow_proposed/ready-for-implement: refuse measure-as-green until kernel ships.
# --- problem_deal ---
- module_id: problem_deal.fixed_setup
@ -177,16 +179,16 @@ modules:
path: editions/modules/problem_deal/pressure_deck
is_default: false
selectable: true
status: proposed
status: ready-for-implement
rules_delta: editions/modules/problem_deal/pressure_deck/rules_delta.yaml
hypothesis_ref: history/260808-deal-end-sequences-design.md
summary: >
Small start set + mid-game draws from Pressure deck (draft).
utility_estimate: Unimplemented — draft only.
Reduced starters + Pressure deck draws; drawn cards 0 points (v0 frozen).
utility_estimate: Unimplemented in kernel — package ready for clay-borg.
decision: none
clay_borg_notes: >
Kernel pending. Recommended compose with problem_stress.scoped.
v0 draft uses 0-point drawn cards.
v0 frozen in MODULE.md. Drawn point_value 0; thresholds unchanged.
Compose with problem_stress.scoped via profile scoped_plus_pressure_deck.
# ---------------------------------------------------------------------------
# Profiles — named compositions (convenience; not a second rules source)