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>
256 lines
9.7 KiB
YAML
256 lines
9.7 KiB
YAML
# GROUND edition catalog — schema 2: composable modules
|
||
# Docs: CATALOG.md
|
||
# clay-borg: select baseline + 0..N modules (≤1 per aspect), or a named profile.
|
||
|
||
schema_version: 2
|
||
# terminology: aspect (human) = former axis; modules remain module_id
|
||
updated: "2026-08-08"
|
||
default_baseline: ground-darvo-r0
|
||
default_profile: baseline
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Aspects — orthogonal design dimensions (formerly "axes"). At most one non-default module per aspect.
|
||
# ---------------------------------------------------------------------------
|
||
aspects:
|
||
- id: problem_stress
|
||
# legacy key: axis (same meaning)
|
||
title: Problem → Stress routing
|
||
default_module: problem_stress.none
|
||
summary: >
|
||
Whether and how unclaimed Problems raise Stress at Round End.
|
||
|
||
- id: attack_relief
|
||
title: ATTACK self-soothing
|
||
default_module: attack_relief.none
|
||
summary: >
|
||
Whether resolving ATTACK can reduce the attacker's Stress.
|
||
|
||
- id: end_condition
|
||
title: How the game ends
|
||
default_module: end_condition.fixed_rounds_5
|
||
summary: >
|
||
Fixed round clock vs clear-board / collapse / hybrid ends.
|
||
|
||
- id: problem_deal
|
||
title: How Problems enter play
|
||
default_module: problem_deal.fixed_setup
|
||
summary: >
|
||
Fixed setup deal only vs mid-game influx (pressure deck, etc.).
|
||
|
||
# Future aspects (not yet registered): setup_difficulty, sequence_pacing,
|
||
# ground_as_sequence, status_stress, competence_track.
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Baseline content package (CSV edition data)
|
||
# ---------------------------------------------------------------------------
|
||
baselines:
|
||
- baseline_id: ground-darvo-r0
|
||
path: editions/ground-darvo-r0
|
||
selectable: true
|
||
status: baseline
|
||
dataset_id: GROUND-DARVO-CORE-0.1
|
||
title: "GROUND DARVO Edition — core r0"
|
||
summary: >
|
||
Print/playtest content. Modes, deal 6/9/12, thresholds 5/7/9.
|
||
Default modules on all aspects = r0 printed behaviour.
|
||
utility_estimate: >
|
||
Ship-default content. Stress has no problem pressure until a
|
||
problem_stress module is selected.
|
||
decision: none
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Modules — independent variations (one directory each)
|
||
# ---------------------------------------------------------------------------
|
||
modules:
|
||
# --- problem_stress ---
|
||
- module_id: problem_stress.none
|
||
aspect: problem_stress
|
||
path: editions/modules/problem_stress/none
|
||
is_default: true
|
||
selectable: true
|
||
status: baseline-default
|
||
rules_delta: null
|
||
summary: Unclaimed Problems do not raise Stress (r0).
|
||
decision: none
|
||
|
||
- module_id: problem_stress.flat_any_open
|
||
aspect: problem_stress
|
||
path: editions/modules/problem_stress/flat_any_open
|
||
is_default: false
|
||
selectable: true
|
||
status: measured
|
||
rules_delta: editions/modules/problem_stress/flat_any_open/rules_delta.yaml
|
||
legacy_experiment_ids: [h1-problem-stress]
|
||
measurement_ref: reports/260808-clay-borg-h1-measured.md
|
||
summary: >
|
||
+1 Stress to every seat if any Problem unclaimed (former H1-A).
|
||
utility_estimate: >
|
||
Reject as sole pressure: greedy 3–4p wins → 0. Keep for A/B control.
|
||
decision: reject-as-baseline
|
||
clay_borg_notes: Former H1-A; implement without H1-B unless attack_relief also selected.
|
||
|
||
- module_id: problem_stress.scoped
|
||
aspect: problem_stress
|
||
path: editions/modules/problem_stress/scoped
|
||
is_default: false
|
||
selectable: true
|
||
status: measured
|
||
rules_delta: editions/modules/problem_stress/scoped/rules_delta.yaml
|
||
data_overlays: [Problems.csv, Rules_Text.csv]
|
||
legacy_experiment_ids: [h2-scoped-problem-stress]
|
||
measurement_ref: reports/260808-clay-borg-h2-measured.md
|
||
hypothesis_ref: history/260808-h2-scoped-problem-stress.md
|
||
summary: >
|
||
+1 Stress per unclaimed Problem to stress_scope (personal/bond/global).
|
||
utility_estimate: >
|
||
Scoping works (RPT-0005). Keep; candidate promote with other axes later.
|
||
decision: keep-as-experiment
|
||
clay_borg_notes: >
|
||
Prefer path editions/modules/problem_stress/scoped. Use with_variant()/owners.
|
||
legacy_experiment_id h2-scoped-problem-stress remains an alias profile.
|
||
|
||
# --- attack_relief ---
|
||
- module_id: attack_relief.none
|
||
aspect: attack_relief
|
||
path: editions/modules/attack_relief/none
|
||
is_default: true
|
||
selectable: true
|
||
status: baseline-default
|
||
rules_delta: null
|
||
summary: ATTACK does not self-soothe (r0).
|
||
decision: none
|
||
|
||
- module_id: attack_relief.self_soothe_ge4
|
||
aspect: attack_relief
|
||
path: editions/modules/attack_relief/self_soothe_ge4
|
||
is_default: false
|
||
selectable: true
|
||
status: measured-as-combo
|
||
rules_delta: editions/modules/attack_relief/self_soothe_ge4/rules_delta.yaml
|
||
legacy_experiment_ids: [h1-problem-stress]
|
||
measurement_ref: reports/260808-clay-borg-h1-measured.md
|
||
summary: Uncancelled ATTACK at Stress ≥4 → attacker −1 Stress (former H1-B).
|
||
utility_estimate: >
|
||
Alone unmeasured. With flat problem stress, dead for competent play.
|
||
Re-measure with problem_stress.scoped via profile scoped_plus_attack_soothe.
|
||
decision: none
|
||
clay_borg_notes: Independent of problem_stress; compose explicitly.
|
||
|
||
# --- end_condition ---
|
||
- module_id: end_condition.fixed_rounds_5
|
||
aspect: end_condition
|
||
path: editions/modules/end_condition/fixed_rounds_5
|
||
is_default: true
|
||
selectable: true
|
||
status: baseline-default
|
||
rules_delta: null
|
||
summary: Always 5 rounds then threshold scoring (r0).
|
||
decision: none
|
||
|
||
- module_id: end_condition.hybrid_clear_collapse
|
||
aspect: end_condition
|
||
path: editions/modules/end_condition/hybrid_clear_collapse
|
||
is_default: false
|
||
selectable: true
|
||
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-5 ceiling (v0 frozen).
|
||
utility_estimate: Unimplemented in kernel — package ready for clay-borg.
|
||
decision: none
|
||
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
|
||
aspect: problem_deal
|
||
path: editions/modules/problem_deal/fixed_setup
|
||
is_default: true
|
||
selectable: true
|
||
status: baseline-default
|
||
rules_delta: null
|
||
summary: Surface + hidden 1..k at setup only (r0).
|
||
decision: none
|
||
|
||
- module_id: problem_deal.pressure_deck
|
||
aspect: problem_deal
|
||
path: editions/modules/problem_deal/pressure_deck
|
||
is_default: false
|
||
selectable: true
|
||
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: >
|
||
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: >
|
||
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)
|
||
# Selection = baseline + modules list. Defaults fill missing axes.
|
||
# ---------------------------------------------------------------------------
|
||
profiles:
|
||
- profile_id: baseline
|
||
title: Pure r0
|
||
modules: []
|
||
summary: All aspect defaults — printed ground-darvo-r0 behaviour.
|
||
|
||
- profile_id: h1
|
||
title: Legacy H1 (flat problem stress + attack soothe)
|
||
modules:
|
||
- problem_stress.flat_any_open
|
||
- attack_relief.self_soothe_ge4
|
||
legacy_experiment_id: h1-problem-stress
|
||
summary: Equivalent to old monolithic experiment h1-problem-stress.
|
||
decision: reject-as-baseline
|
||
|
||
- profile_id: h2
|
||
title: Legacy H2 (scoped problem stress only)
|
||
modules:
|
||
- problem_stress.scoped
|
||
legacy_experiment_id: h2-scoped-problem-stress
|
||
summary: Equivalent to old monolithic experiment h2-scoped-problem-stress.
|
||
decision: keep-as-experiment
|
||
|
||
- profile_id: scoped_plus_attack_soothe
|
||
title: Scoped stress + ATTACK self-soothe
|
||
modules:
|
||
- problem_stress.scoped
|
||
- attack_relief.self_soothe_ge4
|
||
summary: First intentional multi-aspect combo after modular catalog.
|
||
status: unmeasured
|
||
|
||
- profile_id: scoped_plus_hybrid_end
|
||
title: Scoped stress + hybrid end (when end module ships)
|
||
modules:
|
||
- problem_stress.scoped
|
||
- end_condition.hybrid_clear_collapse
|
||
summary: Requires end_condition.hybrid_clear_collapse kernel support.
|
||
status: proposed
|
||
|
||
- profile_id: scoped_plus_pressure_deck
|
||
title: Scoped stress + pressure deck (when deal module ships)
|
||
modules:
|
||
- problem_stress.scoped
|
||
- problem_deal.pressure_deck
|
||
summary: Requires problem_deal.pressure_deck kernel support.
|
||
status: proposed
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Legacy experiment paths (still on disk; prefer modules + profiles)
|
||
# ---------------------------------------------------------------------------
|
||
legacy_experiments:
|
||
- experiment_id: h1-problem-stress
|
||
path: editions/experiments/h1-problem-stress
|
||
equivalent_profile: h1
|
||
note: Prefer profile h1 or modules problem_stress.flat_any_open + attack_relief.self_soothe_ge4
|
||
|
||
- experiment_id: h2-scoped-problem-stress
|
||
path: editions/experiments/h2-scoped-problem-stress
|
||
equivalent_profile: h2
|
||
note: Prefer profile h2 or module problem_stress.scoped
|