clay-borg/editions/catalog.yaml
tegwick d30938b259
Some checks failed
ci / check (push) Failing after 3s
CB-WP-0047: all four boards, and every mode named on the page
The modes were already implemented; nothing had ever COMPARED them. The
scenarios were not implemented at all: edition::deal has taken a
scenario_id since it was written and the only caller passed the literal
"SCN_01", so 15 of 20 Problem cards had never been dealt by anything.
The seam was the whole mechanism and it sat unused, with nothing red
because nothing asked.

Scenario is now state (serde default SCN_01, so all 26 recordings replay
unchanged), selected by preset `scn-03-4p` with `standard-Np` still
meaning SCN_01, and by --scenario/SCENARIO= accepting ids, numbers or
titles, validated against the edition rather than a pattern.

The threshold now comes off the Scenario card, closing F25's hardcoded
5/7/9. The first version of that control was worthless and mutation said
so: all four scenarios print 5/7/9, so reverting to the bands left it
green. Split threshold_from() so it can be handed a card that disagrees.

The header read `scoring CommonProblem` where the Mode card is titled
COMMON PROBLEM, PERSONAL EDGE -- the defect CB-WP-0034 deleted from the
move buttons, still standing on the line that says what winning means.
The coverage probe was matching that Debug output and went red when it
was fixed: third instance (CB-WP-0024, CB-WP-0034). Page now carries the
premise, the mode's rules text, and the tiebreak.

scenario-panel plays 4x3x3. Findings: SCN_01 and SCN_02 are the same
board (identical cells, pinned by a characterisation test); SCN_04 is
the hard board at 2p (52% vs 67/73%, the only deck needing two Repair);
and group success is EXACTLY equal across all three modes in all 36
cells, because greedy never reads state.mode -- filed F27, the two
competitive modes are scoring lenses over cooperative play.

F28: SHARED GROUND's mastery subtracts penalties from the claimed COUNT
where the mode card's shared score is claimed VALUE. Raised, not fixed;
scoring is ground-game's to rule on.

Also fixes design.py reporting a backticked path as no reproduction.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 20:51:46 +02:00

252 lines
9.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GROUND edition catalog — schema 2: composable modules
# Docs: CATALOG.md
# clay-borg: select baseline + 0..N modules (≤1 per axis), or a named profile.
schema_version: 2
updated: "2026-08-08"
default_baseline: ground-darvo-r0
default_profile: baseline
# ---------------------------------------------------------------------------
# Axes — orthogonal dimensions. At most one non-default module per axis.
# ---------------------------------------------------------------------------
axes:
- id: problem_stress
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 axes (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 axes = 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
axis: 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
axis: 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 34p 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
axis: 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
axis: 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
axis: 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
axis: 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
axis: end_condition
path: editions/modules/end_condition/hybrid_clear_collapse
is_default: false
selectable: true
status: proposed
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.
decision: none
clay_borg_notes: Kernel pending; do not claim measured until implemented.
# --- problem_deal ---
- module_id: problem_deal.fixed_setup
axis: 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
axis: problem_deal
path: editions/modules/problem_deal/pressure_deck
is_default: false
selectable: true
status: proposed
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.
decision: none
clay_borg_notes: >
Kernel pending. Recommended compose with problem_stress.scoped.
v0 draft uses 0-point drawn cards.
# ---------------------------------------------------------------------------
# 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 axis 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-axis 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