clay-borg/research/CB-RES-0010-game-aspects-and-design-space.md
tegwick bff64053ca ADR-0022 + CB-WP-0048 T00: the selector decision, and the mirror held
The maintainer's observation decided the design: aspects partition the
GAME, strata partition our apparatus, and they are orthogonal. A module
is one coordinate change in aspect space with an obligation in every
stratum. So aspect identity must NOT be Rust types -- an aspect
ground-game adds would make clay-borg fail to parse a configuration
rather than fail to run it, welding the two coordinate systems at the
one place they must stay independent.

Chosen: identity as data (Configuration round-trips anything the catalog
names), behaviour exhaustive (Rules, no catch-all), resolve() between.
Decisive argument: the catalog ALREADY ships modules with a rules_delta
and status: proposed, so a per-aspect enum would report them as "unknown
module" -- indistinguishable from a typo, a false statement about the
edition, and this project's signature failure shape. Two facts need two
errors. Federating design authority is permanent, so the representation
must outlive the implementation.

Legacy ids alias forever through the catalog's own legacy_experiment_id,
on the standard-Np precedent: 26 recordings name them and the expansion
is exact, so there is nothing to deprecate.

T00 done: the schema-2 mirror had arrived with no digests (19 files) and
edition-check was red. Digests are now generated by WALKING editions/,
not typed -- two reviews already found hand-written lists that made
their own controls vacuous, and a mirror that grows a directory is what
breaks a maintained list. PROVENANCE-catalog.md was a file inside the
mirrored tree that upstream does not have; folded into our own
PROVENANCE.md, since provenance about the mirror does not belong inside
the thing it describes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 22:07:57 +02:00

262 lines
11 KiB
Markdown
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.

---
id: CB-RES-0010
capability: design.space.aspects
status: adopted — terminology and structure for ground-game catalog schema 2
tier: M
date: 2026-08-08
upstream: ground-game editions/ASPECTS.md, editions/CATALOG.md
related: CB-RES-0009 (extensive form), CB-RES-0007 (design instrument), ADR-0012
---
# CB-RES-0010 — Game aspects, design space, and composable rules modules
Research digest for **clay-borg** as the simulator and design environment.
ground-game owns edition content and the normative catalog; this note
records the **concepts and sources** so selection APIs, panels, and
recordings evolve around a shared model of **design dimensionality**.
---
## 1. Problem this solves
GROUND rules experiments began as **monolithic packages** (H1, H2): each
bundled several independent design decisions. That blocked:
- measuring one change at a time;
- combining two good ideas without rewriting a third package;
- naming *what point in design space* a trial actually played.
ground-game schema 2 replaces mega-experiments with:
```text
configuration = baseline content
× aspect₁ (one module)
× aspect₂ (one module)
×
```
clay-borg must select, apply, record, and report configurations in those
terms.
---
## 2. Core vocabulary (normative for this fleet)
| Term | Meaning | Clay-borg duty |
|------|---------|----------------|
| **Aspect** | Orthogonal **design dimension** of the game (e.g. end condition, problem→stress routing) | List known aspects; enforce ≤1 module each |
| **Module** | One concrete design on one aspect (`problem_stress.scoped`) | Load `rules_delta` + overlays; implement kernel deltas |
| **Default module** | Printed / r0 answer when no experiment is selected | Implicit when aspect omitted from selection |
| **Profile** | Named list of modules (`h2`, `scoped_plus_attack_soothe`) | Expand to modules; do not treat as separate rules source |
| **Baseline** | Content package (`ground-darvo-r0`) | Vendor CSVs; pin digests (ADR-0011) |
| **Configuration** | Baseline + **resolved** module list | **Persist on every game / replay / panel cell** |
**Independence rule:** a module owns only its aspect. Cross-aspect
behaviour is an explicit profile (or a new aspect), never a hidden
dependency.
**Synonym:** early ground-game drafts said *axis* for aspect. Prefer
**aspect** in UI, docs, and state fields; accept `axis` only as a deprecated
alias when reading old configs.
Authoritative inventory for GROUND:
`../ground-game/editions/ASPECTS.md` (sibling checkout) or the vendored
copy when present under `editions/`.
---
## 3. Is there an established concept? (sources)
There is **no single standard named “aspects of a game”** with a fixed ISO
list. Several traditions describe the same idea: **games as a point in a
multi-dimensional design space**.
### 3.1 Game design (primary fit)
| Source | Idea | Use for us |
|--------|------|------------|
| **Tracy Fullerton**, *Game Design Workshop* — formal elements | Players, objectives, procedures, rules, resources, conflict, boundaries, outcome | Coarse checklist; maps to Structure / Economy groups in ASPECTS.md |
| **Hunicke, LeBlanc, Zubek****MDA** (MechanicsDynamicsAesthetics) | Mechanics generate dynamics; dynamics produce aesthetics | Module = mechanic change; panel = dynamics; design intent = aesthetics. Findings (ADR-0012) sit on dynamics. |
| **Elias, Garfield, Gutschera***Characteristics of Games* | Games differ along **independent dimensions** (player count, outcome type, information, length, skill/chance, diplomacy, …) | Closest published match to “dimensionality of a game” as separable choices |
| **Design space / possibility space** (common practice; e.g. Salen & Zimmerman *Rules of Play* discourse; modern “explore the design space”) | Varying parameters yields a space of games | Configuration = coordinates; modules = values on coordinates |
| **BoardGameGeek mechanics taxonomy** | Named mechanisms (worker placement, …) | Vocabulary only — overlapping, not an orthogonal basis |
### 3.2 Game theory (analysis substrate, not the aspect list)
| Source | Idea | Use for us |
|--------|------|------------|
| **Extensive-form games** (von NeumannMorgenstern lineage; modern texts e.g. Osborne, *An Introduction to Game Theory*) | Histories, information sets, chance, terminal payoffs | Formal object for *analysis* (see CB-RES-0009). Simultaneous moves = sequenced + hidden. |
| **Normal / strategic form** | Players, action sets, payoff matrices | Too coarse for multi-round DARVO sequences and hidden Problems |
| **Mechanism design** | Choosing rules to induce outcomes | Useful metaphor for “we design modules to shift incentives”; not a list of aspects |
**Do not** derive the aspect list from game theory alone. Derive aspects
from **what designers vary**; use game theory to **measure incentives**
inside a fixed configuration (e.g. “does ATTACK pay?”).
### 3.3 AI / general game playing (implementation relatives)
| Source | Idea | Use for us |
|--------|------|------------|
| **Ludii GDL** / general game systems | Declarative game description; universality results for extensive form | Confirms EFG as lingua franca (CB-RES-0009); not a substitute for aspect modularity |
| **OpenSpiel**, **RBG**, etc. | Multi-game research APIs | Comparable “game + parameters” thinking; our parameters are *design modules*, not only RNG seeds |
### 3.4 What we claim (and do not)
**Claim:** Treating GROUND rules variation as **modules on aspects** is
consistent with design-space practice and *Characteristics of Games*
dimensional thinking, operationalized for edition + simulator work.
**Do not claim:** That “aspect” is a reserved term in game theory, or that
our aspect list is complete for all games forever.
---
## 4. GROUND aspect groups (summary)
Full tables live in ground-game `editions/ASPECTS.md`. Groups:
| Group | Examples | Modular today? |
|-------|----------|----------------|
| **A. Structure** | end condition, turn structure, setup, information | `end_condition` modular; others mostly fixed r0 |
| **B. Content economy** | problem deal, solution economy, action set | `problem_deal` modular (proposed pressure deck) |
| **C. Pressure & regulation** | problem_stress, attack_relief, DARVO, GROUND | `problem_stress`, `attack_relief` modular |
| **D. Relationships** | bonds, rivalry, network scoring | fixed r0; bond-scope via problem_stress.scoped |
| **E. Product / frame** | scenario fiction, safety, difficulty, medium | mostly content / process |
Registered modular aspects (must be in selection validation):
1. `problem_stress` — default `none`; also `flat_any_open`, `scoped`
2. `attack_relief` — default `none`; also `self_soothe_ge4`
3. `end_condition` — default `fixed_rounds_5`; also `hybrid_clear_collapse` (proposed)
4. `problem_deal` — default `fixed_setup`; also `pressure_deck` (proposed)
---
## 5. Implications for clay-borg (design environment)
### 5.1 Selection API
Prefer:
```yaml
baseline: ground-darvo-r0
modules: [problem_stress.scoped]
# or
profile: h2
```
Legacy experiment ids (`h1-problem-stress`, `h2-scoped-problem-stress`)
remain aliases → expand to profiles. Prefer module/profile ids in new code.
### 5.2 Application order
Apply module `rules_delta` in the order of `aspects:` in
`ground-game/editions/catalog.yaml`. Refuse two modules on the same aspect.
### 5.3 Recording and panels
Every trial cell, replay, and `cb-play` session should store:
- `baseline_id`
- `modules: [ ... ]` fully resolved (defaults filled or explicit)
- optional `profile_id` if one was requested
Panel reports should **facet by aspect** when comparing (e.g. all configs
with `problem_stress.scoped` vs `none`), not only by legacy experiment
name.
### 5.4 Measurement hygiene (ties to design instrument)
- Prefer **one non-default module** when isolating a mechanism (alone).
- Use **profiles** when the hypothesis is interaction (scoped × hybrid end).
- Criterion tables in evidence should name **module ids**, not only “H2”.
- Policies that cannot see an aspect (e.g. bots that ignore bond scope)
cannot test aspect-specific *motivation* claims — report untested, not
failed (CB-EV-0032 criterion 4 pattern).
### 5.5 Kernel / UI evolution
| Surface | Direction |
|---------|-----------|
| `cb-play` / trials | `--profile` / `--module` flags; show active modules on the table |
| State hash / recordings | include configuration identity |
| HTML table | label which modules are live (CB-WP-0044 family) |
| Finding register | findings may be scoped to an aspect or module |
| Future | aspect-aware policy panel; “compose and sweep” harness |
### 5.6 Proposed modules (draft only)
Until `status` leaves `proposed` and a kernel path exists:
- `end_condition.hybrid_clear_collapse`
- `problem_deal.pressure_deck`
Do not report measurements for unimplemented modules. `allow_proposed`
should refuse or no-op loudly.
---
## 6. Legacy map
| Legacy experiment | Profile | Modules |
|-------------------|---------|---------|
| `h1-problem-stress` | `h1` | `problem_stress.flat_any_open` + `attack_relief.self_soothe_ge4` |
| `h2-scoped-problem-stress` | `h2` | `problem_stress.scoped` |
H1 mixed two aspects; H2 was already one aspect. Schema 2 makes that
decomposition explicit so the next change is not H3-the-blob.
---
## 7. Relation to other clay-borg research
| Doc | Relationship |
|------|----------------|
| **CB-RES-0007** design instrument | Findings attach to configurations; aspects name *which* rules class moved |
| **CB-RES-0008** could-we-have-won | Winnability is one dynamic; hold aspect coords when comparing |
| **CB-RES-0009** extensive form | Formal analysis language *under* a fixed configuration |
| **ADR-0011** vendor edition | Baseline content; modules add deltas on top |
| **ADR-0012** design instrument | Admissible findings still need failing reproductions |
---
## 8. Bibliography (digest-level)
Primary design:
1. Fullerton, T. *Game Design Workshop* — formal elements of games.
2. Hunicke, R., LeBlanc, M., Zubek, R. “MDA: A Formal Approach to Game Design and Game Research.”
3. Elias, G. S., Garfield, R., Gutschera, K. R. *Characteristics of Games*. MIT Press.
4. Salen, K., Zimmerman, E. *Rules of Play* — rules, play, culture; design space discourse.
Game theory / GGP (analysis, not aspect inventory):
5. Osborne, M. J. *An Introduction to Game Theory*.
6. Piette et al. / Ludii literature on GDL universality and extensive form (see CB-RES-0009).
7. OpenSpiel documentation — multi-game research environments.
Fleet documents:
8. ground-game `editions/ASPECTS.md`, `editions/CATALOG.md`, `editions/catalog.yaml` (schema_version: 2).
9. ground-game `history/260808-modular-variants.md`.
---
## 9. Adoption checklist (clay-borg)
- [ ] Parse ground-game catalog schema 2 (`aspects`, `modules`, `profiles`).
- [ ] Selection: `profile` or `modules[]` + baseline; fill defaults.
- [ ] Validate one module per aspect.
- [ ] Apply deltas in aspect order; `with_variant`-style setup for modules that assign owners.
- [ ] Persist resolved module list on state / replay / panel output.
- [ ] UI: show active modules.
- [ ] Deprecate bare experiment-only APIs only after alias coverage.
- [ ] Optional: panel sweep “hold all aspects fixed, vary one.”
---
## 10. One-sentence summary
**A GROUND rules configuration is a point in a multi-aspect design space;
clay-borgs job is to select, run, record, and compare those points
without collapsing independent aspects into opaque experiment blobs.**