# Composable rules modules by aspect (catalog schema 2) **Date:** 2026-08-08 **Status:** adopted as catalog contract **Catalog:** [`editions/CATALOG.md`](../editions/CATALOG.md), [`editions/catalog.yaml`](../editions/catalog.yaml) **Aspect map:** [`editions/ASPECTS.md`](../editions/ASPECTS.md) **Simulator research:** clay-borg `research/CB-RES-0010-game-aspects-and-design-space.md` --- ## Decision Rules variations are **independent modules on named aspects** (design dimensions), not only monolithic experiments. Each module can be measured **alone** or in a **profile** (explicit combination). | Aspect | Examples | |--------|----------| | `problem_stress` | none / flat_any_open / scoped | | `attack_relief` | none / self_soothe_ge4 | | `end_condition` | fixed_rounds_5 / hybrid_clear_collapse (proposed) | | `problem_deal` | fixed_setup / pressure_deck (proposed) | Full aspect inventory (including fixed-in-r0 dimensions): **ASPECTS.md**. H1 becomes profile `h1` = flat + attack soothe. H2 becomes profile `h2` = scoped only. New work prefers new modules + profiles over `experiments/mega-bundle`. **Terminology:** *aspect* replaces earlier *axis* in human docs; YAML field is `aspect:`. ## Why Maintainer: end-of-game, setup, dealing, stress-boosters should be tryable alone and in combination. Monolithic H1/H2 hid that H1 mixed two aspects and that end/deal work should not force a rewrite of stress routing. ## clay-borg Resolve `profile` or `modules[]` → apply deltas in catalog **aspect** order; record full module list in game state / replays. Evolve selection UI and panels around **aspects × modules × profiles** (CB-RES-0010).