264 lines
10 KiB
YAML
264 lines
10 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
|
|||
|
|
# packages declare files consumers must read (consumed_files / data_overlays)
|
|||
|
|
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]
|
|||
|
|
# files a consumer must open to implement this module (RPT-0006 §5b)
|
|||
|
|
consumed_files:
|
|||
|
|
- editions/modules/problem_stress/scoped/rules_delta.yaml
|
|||
|
|
- editions/modules/problem_stress/scoped/Problems.csv
|
|||
|
|
- editions/modules/problem_stress/scoped/Rules_Text.csv
|
|||
|
|
- editions/modules/problem_stress/scoped/MODULE.md
|
|||
|
|
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
|