Skip to content

docs(game): Canonical Model — single source of truth (DD-006/008/009/010)#68

Merged
hyperpolymath merged 1 commit into
mainfrom
worktree-game-canonical-model
Jul 9, 2026
Merged

docs(game): Canonical Model — single source of truth (DD-006/008/009/010)#68
hyperpolymath merged 1 commit into
mainfrom
worktree-game-canonical-model

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Adds docs/game-design/CANONICAL-MODEL.adoc — the single source of truth for the rules, from which the tabletop kit and any future digital edition both derive. Follows the Way-Forward plan (#67).

What it does

Reconciles the whole docs/game-design/ corpus into one contradiction-free spec, baking in the design rulings we made this session:

  • DD-006 — living figures → archetypes-with-a-nod: The Financier-Sovereign, The Great-Soul Steward, The Warden, The Prometheus.
  • DD-008scalable weight via modular layers (Core ~2.0 → all layers ~4.5). Philosophy: emergent depth, not simulation; corridor above Monopoly, below Grigsby; the "decision not bookkeeping" filter.
  • DD-009Short / Standard / Extended as scenario presets of one model (length dial), independent of the weight dial.
  • DD-010 — cascade trigger 8 / spill +1 (+2 Extended) / chaining capped once-per-boundary-per-turn; collapse at 4+ Black.

Reconciliations (supersedes stale corpus text)

  • Turn Phase 1 = Leontief Production (retires the "passive collect" text).
  • Crisis-draw stress sampled at start of turn (closes the recovery-spam exploit).
  • Canonical boundary count = 9 (the 11 rows were sub-components).

Still open (flagged, not settled)

  • DD-011 — are treaties mechanically binding or breakable-at-a-cost?
  • DD-012 — how random is the research roll?
  • Plus a machine-readable data-file manifest (data/*.a2ml) for the derive-both-surfaces spine — to be authored in Phase 1.

Left un-armed for your review — it's foundational and two decisions remain open.

🤖 Generated with Claude Code

…009/010 baked in)

The authoritative ruleset from which the tabletop kit and any future digital
edition derive. Reconciles the design corpus into a contradiction-free spec.

Owner rulings baked in (this session):
- DD-006 named living figures -> archetypes-with-a-nod (Financier-Sovereign,
  Great-Soul Steward, Warden, Prometheus)
- DD-008 scalable weight via modular layers (~2.0 Core -> ~4.5 all layers);
  philosophy = emergent depth not simulation; corridor above Monopoly, below Grigsby
- DD-009 Short/Standard/Extended as scenario presets of one model (length dial)
- DD-010 cascade trigger 8 / spill +1 (+2 Extended) / chaining capped once-per-turn

Reconciled: Phase 1 = Leontief Production (retires stale "collect"); crisis-draw
sampled start-of-turn (closes recovery-spam exploit); canonical boundary count = 9.

Open holes flagged: DD-011 (treaty binding), DD-012 (research randomness).
Machine-readable data-file manifest defined for the derive-both-surfaces spine.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sonarqubecloud

sonarqubecloud Bot commented Jul 9, 2026

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath merged commit 017ab17 into main Jul 9, 2026
30 of 34 checks passed
@hyperpolymath
hyperpolymath deleted the worktree-game-canonical-model branch July 9, 2026 08:23
hyperpolymath added a commit that referenced this pull request Jul 16, 2026
…ation budget (#70)

Follow-on to #69. Two bookkeeping fixes and one genuinely new proposal
for you and Joshua to rule on.

## DD-009 was stale, not open

I reported to Jonathan that DD-009 (game length) was the unruled blocker
on Phase 1. **That was wrong, and this PR corrects it.** The ruling had
already been made — `CANONICAL-MODEL.adoc` landed the three-preset
**length dial** in #68, whose title even claims DD-009. The DD entry and
tracker just never recorded it.

| Preset | Eras | Turns | Time target |
|---|---|---|---|
| Short — "Skirmish" | 2 | ~5–6 | 60–90 min |
| Standard — "Ascent" | 3 | ~9–10 | 120–180 min |
| Extended — "Legacy" | 4 | 32 | 4–6 hr, multi-session |

The original entry asked "how many turns?" as if one number had to serve
every table. Length is a *dial*, like complexity (DD-008). 32 turns was
never wrong — it was the *Extended* preset, mislabelled as the only one.
**No new decision is taken here**; this is the log catching up with the
model.

## The half of the risk that survives

The 25–35 min/turn figure (`gameplay-storyboard.adoc:463`) is a
**full-weight Industrial** turn. Short targets 60–90 min over ~5–6 turns
= **10–15 min/turn**, i.e. a **~2–3× reduction**, expected from
Core-only weight plus the leaner-turn levers.

**That ~2–3× is assumed, not measured** — the most load-bearing untested
number in the design. If the levers only deliver 1.5×, Short lands at
100–140 min and the target is gone. So: *time a Core-weight turn first,
before balance, before content.* Now flagged in DD-009 and WAY-FORWARD.

## Contradiction fixed

WAY-FORWARD said Short = "2 eras / **~12 turns**"; CANONICAL-MODEL says
"**~5–6**". Canonical is the declared single source of truth, so it
wins. Phase 0 also marked DONE — its bullets were pending
recommendations that #68/#69 have since executed.

## DD-014 — The Information Budget (OPEN, ruling pending)

The one new idea, deliberately logged as **proposed, not decided**.

Hidden information is a *budget*, not a free good. DD-013 spent most of
it on characters (hidden aspects + private objective). So DD-011
("agreements public or private?") and DD-012 ("research public or
private?") should lean **public** — each further hidden layer is charged
to the same account.

Bayes–Nash needs *both*: enough hidden information to make types
uncertain, and enough public information to update from. Hide everything
and an opponent watching you defect cannot tell _thin-skinned_ from
_research failed_ from _private objective paid_. Priors never move;
inference becomes guesswork. **More hidden information does not mean
more Bayes–Nash — past a point it means less.** `player-roles.adoc` §8
already says hidden aspects must create *inference, not confusion*;
DD-014 generalises that from characters to the whole design.

If adopted, it **constrains** DD-011/DD-012 rather than resolving them —
binding duration, defection penalty, and randomness model all stay open.

Also logged: **do private objectives (DD-006) and eXperiment (DD-012)
collapse into one subsystem?** Both are hidden, asymmetric-payoff
machinery existing to obscure your payoff function. Unresolved — worth
settling before either is drafted in Phase 1.

## Verification

Installed `asciidoctor` (it was missing, which is why #69 shipped
without a render check) and rendered all four docs — **zero warnings**.
Confirmed the DD-009 table, DD-014 section, 9 tracker rows, and that the
WAY-FORWARD NOTE renders as a real admonition without swallowing the
following bullet. This also retroactively validates the #69 files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant