Some checks failed
ci / check (push) Failing after 4s
vendor tool that covers what the gate checks
They ruled on all seven items the same day. Two were actionable here.
F28 RULED: points. Modes.csv MODE_COOP clarified upstream to say
"penalties apply to points, not card count"; mastery is now
total - blame - denied. A recorded scenario went red on it --
gr-e02-shared-ground pinned 0 (2 claimed CARDS - 1 - 1) and now expects
2 (4 POINTS - 1 - 1). The number moved because the rule was decided, not
because the engine drifted, and the scenario records both rulings; its
schema has no field for a second one, so both live in ruled_note with
`ruled` carrying the LATEST date.
F29 RULED not-intended and APPLIED upstream: SCN_02's suits re-tuned the
same day. The characterisation test is how we found out -- it pinned the
duplication, went red on the re-tune, and that red WAS the notification.
It now asserts every pair distinct, the stronger statement the
duplication had made unavailable. SCN_02 re-measures at 73 at 2p, not
67: its own board now.
F26/F30 ruled and recorded. F30's ruling incidentally confirms our
reading -- they name priority-2's suit as the first lever, which is the
difference we identified without having measured causation.
vendor-editions grew twice, both times because it covered less than the
gate it exists to satisfy:
- It refused to touch ground-darvo-r0/ on the reasoning that the
baseline is "a separate record". That was wrong within the hour:
ground-game clarified Modes.csv and `make vendor` reported a clean
sync while edition-check went red. A sync tool that covers less than
its check reports success into a red gate.
- Its two-block rewrite DETECTED which fence held which set and
preserved the arrangement -- faithfully preserving a swap an earlier
write had introduced, leaving each fence under a heading describing
the other. edition-check reads every sha256 line flat and passed
throughout: a document can be self-consistently wrong and green.
Order is now asserted, with a control that goes red on a swap.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
263 lines
10 KiB
YAML
263 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
|