clay-borg/specs/Positioning.md

214 lines
10 KiB
Markdown
Raw Normal View History

CB-WP-0040: name the stratum before naming the defect The maintainer could not tell whether "error", "failure", "finding" or "correction" referred to the game's design, our formalisation of it, the code, the measuring apparatus, or the sentences we wrote. Three review rounds produced twenty-odd defect statements spanning five systems, all called errors. The confusion was ours. specs/Taxonomy.md, grounded in named canon rather than invented here: six strata from Sargent's problem entity / conceptual model / computerized model, extended where a simulation-V&V frame stops — we also own an instrument and an account. The two relations are what was missing: GAME<->MODEL is validation, MODEL<->ENGINE is verification, and nearly every argument about "our bug or their gap" was that distinction going unnamed. Fault/error/failure from Avizienis et al., applied within a stratum, plus the rule that explains the review history: a failure in one stratum is a fault in the next. And it finally defines the family ADR-0018 could only point at — a wrong-subject error is an ACCOUNT failure with no INSTRUMENT fault, which is why tests never catch them. MDA supplies the game-facing layers and one hard limit: our panels measure dynamics, our trial logs sample aesthetics, and a win rate does not answer "is it fun". specs/Positioning.md names the field fairly — Ludii is the closest relative and the right benchmark — and the four differentiators, each already built rather than aspired to. Clay-borg is a design-evidence instrument; anyone can produce the number. Three tracks named and none started: a second game, game theory as the lens on dynamics, and assimilated knowledge about why games work. Track A is the falsifier for the whole positioning: every abstraction here has exactly one instance, which by our own rule may mean invented rather than observed. Chaos window 3 closes at 12 declarations with one override that changed nothing. Its verdict is due and is deliberately not written here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:41:16 +02:00
# Positioning — what clay-borg is for, and what it does that others do not
Status: **draft**. A working answer to *"where does this sit, and what is
the point of it"*, written against the field rather than in isolation.
Companion to [`../INTENT.md`](../INTENT.md) (what we are building),
[`Taxonomy.md`](Taxonomy.md) (the vocabulary), and
simulators/: persist the survey, and let it shrink two of the three tracks Eight profiles on a common schema, each marking what was checked against a source this session and what is background recollection. Three are marked unverified in full — Machinations, the play substrates, most of RBG — and say so rather than reading as evaluations. Written straight after three review rounds whose entire yield was claims outrunning what had been checked, so the confidence rule is the first thing in the README. The survey changed the plan, which is what a survey is for. Track C was described in Positioning as open ground. It is not: Browne published 57 criteria for game quality, and Ai Ai already computes designer-facing measures — drama, lead changes, branching factor, completion, duration — from played games. The track becomes adopt, credit and find the gap. The gap looks real: those measures presume a leader, and SHARED GROUND has none — Modes.csv gives its tiebreak as "Not applicable". Track B probably adopts rather than builds. OpenSpiel implements CFR, best-response and exploitability over games that are simultaneous-move, imperfect-information and co-operative, which is all four of GROUND's awkward properties. "Does ATTACK ever pay" is a best-response question, and we spent three review rounds refining a two-policy sweep for it. The first Track B task is now one question — is exploitability meaningful for a co-operative game with a shared threshold — not a build. The cost of not surveying earlier is therefore measurable, and is recorded rather than glossed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:56:27 +02:00
[`Ornamentation.md`](Ornamentation.md) (the boundary). The systems named
below have profiles in [`../simulators/`](../simulators), each marking
what was checked and what is background recollection.
> **Revised 2026-08-08 after the survey**, and §4 changed. Two of the
> three tracks were described as more open than they are — see §4.0.
CB-WP-0040: name the stratum before naming the defect The maintainer could not tell whether "error", "failure", "finding" or "correction" referred to the game's design, our formalisation of it, the code, the measuring apparatus, or the sentences we wrote. Three review rounds produced twenty-odd defect statements spanning five systems, all called errors. The confusion was ours. specs/Taxonomy.md, grounded in named canon rather than invented here: six strata from Sargent's problem entity / conceptual model / computerized model, extended where a simulation-V&V frame stops — we also own an instrument and an account. The two relations are what was missing: GAME<->MODEL is validation, MODEL<->ENGINE is verification, and nearly every argument about "our bug or their gap" was that distinction going unnamed. Fault/error/failure from Avizienis et al., applied within a stratum, plus the rule that explains the review history: a failure in one stratum is a fault in the next. And it finally defines the family ADR-0018 could only point at — a wrong-subject error is an ACCOUNT failure with no INSTRUMENT fault, which is why tests never catch them. MDA supplies the game-facing layers and one hard limit: our panels measure dynamics, our trial logs sample aesthetics, and a win rate does not answer "is it fun". specs/Positioning.md names the field fairly — Ludii is the closest relative and the right benchmark — and the four differentiators, each already built rather than aspired to. Clay-borg is a design-evidence instrument; anyone can produce the number. Three tracks named and none started: a second game, game theory as the lens on dynamics, and assimilated knowledge about why games work. Track A is the falsifier for the whole positioning: every abstraction here has exactly one instance, which by our own rule may mean invented rather than observed. Chaos window 3 closes at 12 declarations with one override that changed nothing. Its verdict is due and is deliberately not written here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:41:16 +02:00
---
## 1. The field, honestly
There are mature systems here and we are not first.
| system | what it optimises for | what it does not do |
|---|---|---|
| **Ludii** (Digital Ludeme Project) | *generality of representation*. Games as **ludemes** — composable, human-readable concepts. Fast, broad, a game fits in a QR code | it is not built to argue with the designer about the rules, and its evidence is not auditable by a third party |
| **GDL / General Game Playing** (Stanford) | *agent generality* — an agent that plays a game it has never seen | verbose, slow relative to Ludii, and aimed at AI research rather than design support |
| **Machinations** | *economy and feedback-loop simulation*, diagrammatic and immediate | not rules-complete; a model of flows, not of a played game |
| **Tabletop Simulator / boardgame.io** | *play*, human or networked | no analysis; the rules are a script, not a claim |
| **RL self-play stacks** | *strength* | a strong agent tells you what beats what, not why a rule is undecided |
**Ludii is the closest relative and the right benchmark.** If clay-borg's
answer to *"why not Ludii"* is only "ours is in Rust", there is no answer.
## 2. What we do differently
Four things, and each is already visible in the repo rather than aspired
to.
### 2.1 The measurement is under suspicion by construction
Every other system in §1 treats its own output as data. **This one treats
its own output as a claim that has to survive an attempt to break it** —
`GameDesign.md` §1 admissibility, the finding register, mutation-proof as
a condition for a control, and mandatory adversarial review at tier L.
**This is not a posture; it is measured.** Three review rounds on one
measurement found twelve fatal defects, **every one in our instrument and
none in the game** — including two that inverted a verdict already written
down. A tool that reports game-design conclusions without that machinery
is reporting its own bugs at the same volume as its results.
### 2.2 Authority is federated, and the simulator is not the authority
The game's owner rules; we report. A rule we cannot execute becomes a
**finding** carried back with the artifact that produced it — never a
default we quietly pick.
**Ludii's model is a description someone wrote. Ours is a claim about
somebody else's artifact**, with digests and tripwires against their
source of truth, and a queue of open questions that belong to them. That
is a different relationship to the designer than any system above has.
### 2.3 What is *not* mechanism is modelled too
[`Ornamentation.md`](Ornamentation.md). Materials, ceremony, typography,
timing — declared, with falsifiers, and separated from the rules by a test
something can run (does the state hash move?).
Every system in §1 either ignores this or treats it as presentation
config. **We treat "this does not matter" as a claim that can be wrong**,
because our own register is a list of times it was.
### 2.4 A hypothesis is a package, not a patch
A design experiment arrives as a selectable variant — a catalog entry,
a machine-readable `rules_delta`, declared success criteria — and is
measured against those criteria, with the results reported including the
parts that fail. The variant is in the game state, so a recording says
which rules it was played under.
## 3. What that adds up to
> **Clay-borg is a design-evidence instrument, not a game engine and not a
> game-playing AI.** Its product is an auditable answer to *"what does this
> rule actually do at the table, and how much should you trust that?"*
The second half of that sentence is the differentiator. Anyone can produce
the number.
## 4. Where it has to go
Three tracks, in dependency order. None started.
simulators/: persist the survey, and let it shrink two of the three tracks Eight profiles on a common schema, each marking what was checked against a source this session and what is background recollection. Three are marked unverified in full — Machinations, the play substrates, most of RBG — and say so rather than reading as evaluations. Written straight after three review rounds whose entire yield was claims outrunning what had been checked, so the confidence rule is the first thing in the README. The survey changed the plan, which is what a survey is for. Track C was described in Positioning as open ground. It is not: Browne published 57 criteria for game quality, and Ai Ai already computes designer-facing measures — drama, lead changes, branching factor, completion, duration — from played games. The track becomes adopt, credit and find the gap. The gap looks real: those measures presume a leader, and SHARED GROUND has none — Modes.csv gives its tiebreak as "Not applicable". Track B probably adopts rather than builds. OpenSpiel implements CFR, best-response and exploitability over games that are simultaneous-move, imperfect-information and co-operative, which is all four of GROUND's awkward properties. "Does ATTACK ever pay" is a best-response question, and we spent three review rounds refining a two-policy sweep for it. The first Track B task is now one question — is exploitability meaningful for a co-operative game with a shared threshold — not a build. The cost of not surveying earlier is therefore measurable, and is recorded rather than glossed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:56:27 +02:00
### 4.0 What the survey changed
**Two tracks were overclaimed and are now smaller.** Writing the
[`simulators/`](../simulators) profiles found prior art where this
document had assumed open ground:
- **Track C is not open ground.** **Browne published 57 criteria for game
quality**, and **Ai Ai** already computes designer-facing measures —
drama, lead changes, branching factor, completion, duration — from
played games. The track moves from *invent a theory of fun* to **adopt
an existing vocabulary, credit it, and locate the gap**. The gap is
plausibly real (co-operative and hidden-role games), and it is a far
smaller and more defensible claim.
- **Track B probably adopts rather than builds.** **OpenSpiel** implements
CFR, best-response and **exploitability** over games that are
simultaneous-move, imperfect-information and cooperative — all four of
GROUND's awkward properties. *"Does ATTACK ever pay"* is a
best-response question, and we have been answering it with two
hand-written policies.
**This is what a survey is for**, and it is worth noting that the cost of
not doing it earlier was measurable: we spent three review rounds refining
a two-policy sweep for a question that has a standard instrument.
CB-WP-0040: name the stratum before naming the defect The maintainer could not tell whether "error", "failure", "finding" or "correction" referred to the game's design, our formalisation of it, the code, the measuring apparatus, or the sentences we wrote. Three review rounds produced twenty-odd defect statements spanning five systems, all called errors. The confusion was ours. specs/Taxonomy.md, grounded in named canon rather than invented here: six strata from Sargent's problem entity / conceptual model / computerized model, extended where a simulation-V&V frame stops — we also own an instrument and an account. The two relations are what was missing: GAME<->MODEL is validation, MODEL<->ENGINE is verification, and nearly every argument about "our bug or their gap" was that distinction going unnamed. Fault/error/failure from Avizienis et al., applied within a stratum, plus the rule that explains the review history: a failure in one stratum is a fault in the next. And it finally defines the family ADR-0018 could only point at — a wrong-subject error is an ACCOUNT failure with no INSTRUMENT fault, which is why tests never catch them. MDA supplies the game-facing layers and one hard limit: our panels measure dynamics, our trial logs sample aesthetics, and a win rate does not answer "is it fun". specs/Positioning.md names the field fairly — Ludii is the closest relative and the right benchmark — and the four differentiators, each already built rather than aspired to. Clay-borg is a design-evidence instrument; anyone can produce the number. Three tracks named and none started: a second game, game theory as the lens on dynamics, and assimilated knowledge about why games work. Track A is the falsifier for the whole positioning: every abstraction here has exactly one instance, which by our own rule may mean invented rather than observed. Chaos window 3 closes at 12 declarations with one override that changed nothing. Its verdict is due and is deliberately not written here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:41:16 +02:00
### Track A — a second game
**GROUND is an example, and nothing has tested that claim.** Every
abstraction here has exactly one instance, which by our own rule
(GameDesign §2) means it may have been invented rather than observed.
The work is to take a **popular, well-understood game** — one where the
dynamics are already documented, so our output can be checked against
something — and build a clay-borg definition efficiently enough that the
cost is itself the finding. **The measurement that matters is how much of
the kernel turns out to be GROUND-shaped.**
Ludii's ludeme decomposition is the obvious prior art to steal from, and
the honest question is whether we need our own description language at all
or should consume theirs.
### Track B — game theory as the lens on dynamics
§4 of [`Taxonomy.md`](Taxonomy.md): our panels measure **dynamics**, and
game theory is the science of exactly that. Today we sample the strategy
space with two hand-written policies and a rank parameter. That is a crude
instrument for questions that have real theory behind them:
- **dominance** — is an action dominated? (F17 asks this about ATTACK and
answers it with a sweep)
- **equilibrium** — what does competent play converge to, and is it the
play the designer intended?
- **cooperative solution concepts** — GROUND is co-operative with a
defection mechanic; the **core** and the **Shapley value** are the
standard tools for "is this coalition stable" and "what is a seat
contributing", which is precisely what GR-E04 is groping at
- **social dilemmas** — DARVO is one; the literature on them is large
**The proposed shape is a specialised agent**, not a library: something
that reads a clay-borg game definition and a panel run, and reports what
the theory says about the dynamics — with the same admissibility rules as
everything else, because a Nash equilibrium quoted without its assumptions
simulators/: persist the survey, and let it shrink two of the three tracks Eight profiles on a common schema, each marking what was checked against a source this session and what is background recollection. Three are marked unverified in full — Machinations, the play substrates, most of RBG — and say so rather than reading as evaluations. Written straight after three review rounds whose entire yield was claims outrunning what had been checked, so the confidence rule is the first thing in the README. The survey changed the plan, which is what a survey is for. Track C was described in Positioning as open ground. It is not: Browne published 57 criteria for game quality, and Ai Ai already computes designer-facing measures — drama, lead changes, branching factor, completion, duration — from played games. The track becomes adopt, credit and find the gap. The gap looks real: those measures presume a leader, and SHARED GROUND has none — Modes.csv gives its tiebreak as "Not applicable". Track B probably adopts rather than builds. OpenSpiel implements CFR, best-response and exploitability over games that are simultaneous-move, imperfect-information and co-operative, which is all four of GROUND's awkward properties. "Does ATTACK ever pay" is a best-response question, and we spent three review rounds refining a two-policy sweep for it. The first Track B task is now one question — is exploitability meaningful for a co-operative game with a shared threshold — not a build. The cost of not surveying earlier is therefore measurable, and is recorded rather than glossed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:56:27 +02:00
is exactly the wrong-subject error in mathematical dress
([`Taxonomy.md`](Taxonomy.md) §2.2).
CB-RES-0009: extensive form is the lingua franca Two questions from the maintainer — is there a game-theory mapping to Ludii's language, and is that language formal enough to derive one from. Yes, no, and the no does not matter. The mapping is proven, not to be invented: "The Ludii Game Description Language is Universal" shows the language can represent an equivalent game for any finite, non-deterministic, imperfect-information game, extending earlier work limited to finite deterministic fully-observable extensive-form games. EFG is also OpenSpiel's object, so the same formalism connects description to analysis: Ludii -> EFG <- OpenSpiel. Ludii's syntax is formal and unusually so — a class grammar derived automatically from its source. Its semantics are its Java: a ludeme means what its class does, and Ludii effectively makes Java the game description language. So there is no independent calculus to extract. The formality lives in the universality RESULT, not in a definition of meaning. GDL has the semantics and pays for it in speed — six times on Gomoku, twenty on Amazons and Hex, over two hundred on Chess. Conclusion: do not derive a language from Ludii; target the EFG directly. And we are closer than the tracks assumed. The journal is the history, Outcome is the payoff, legal_commands gives the actions — and project(Viewer::Player(seat)) IS the information partition, built so a player is not shown another's hand and unremarked as exactly the machinery imperfect information needs. Three gaps: chance is folded into a seed so a game is one realisation rather than a game with chance nodes; perfect recall is unasserted, which CFR and exploitability both assume; and commit/reveal is the standard EFG encoding of simultaneity but is never stated as such. Perfect recall is checkable from the journal today and is now Track B's first task — if it fails, every equilibrium concept we might quote is unsound here. Also re-vendored the catalog twice: ground-game added H2 — scoped problem stress, applying End Stress by personal/bond/global scope instead of flat to everyone, which is a direct response to our reading that H1's tax scales with the Problems while its intended effect does not. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 14:57:25 +02:00
**But the first task is not to build it**, and the survey narrowed it
twice more ([`../research/CB-RES-0009-extensive-form-is-the-lingua-franca.md`](../research/CB-RES-0009-extensive-form-is-the-lingua-franca.md)).
**The formal object is the extensive-form game**, proven expressive enough
by Ludii's universality result and consumed directly by OpenSpiel — so
"Ludii → EFG ← OpenSpiel" is the whole mapping, and there is nothing to
invent.
**And we already have most of an EFG**: the journal is the history, the
payoff is `Outcome`, and **`project(Viewer::Player(seat))` is the
information partition** — built so a player is not shown another's hand,
and unremarked as the machinery imperfect information needs.
**Three gaps, one checkable today:**
1. **chance is folded into a seed**, so a clay-borg game is one
realisation rather than a game with chance nodes;
2. **perfect recall is unasserted** — CFR and exploitability assume a
player remembers their own past actions and observations, and nobody
has checked whether our projection sequence does;
3. simultaneity is encoded by commit/reveal but never *stated* as the
standard EFG encoding.
**Track B's first task is (2)**, because it is small, checkable from the
journal, and if it fails every equilibrium concept we might quote is
unsound here. That is a better opening move than a build.
CB-WP-0040: name the stratum before naming the defect The maintainer could not tell whether "error", "failure", "finding" or "correction" referred to the game's design, our formalisation of it, the code, the measuring apparatus, or the sentences we wrote. Three review rounds produced twenty-odd defect statements spanning five systems, all called errors. The confusion was ours. specs/Taxonomy.md, grounded in named canon rather than invented here: six strata from Sargent's problem entity / conceptual model / computerized model, extended where a simulation-V&V frame stops — we also own an instrument and an account. The two relations are what was missing: GAME<->MODEL is validation, MODEL<->ENGINE is verification, and nearly every argument about "our bug or their gap" was that distinction going unnamed. Fault/error/failure from Avizienis et al., applied within a stratum, plus the rule that explains the review history: a failure in one stratum is a fault in the next. And it finally defines the family ADR-0018 could only point at — a wrong-subject error is an ACCOUNT failure with no INSTRUMENT fault, which is why tests never catch them. MDA supplies the game-facing layers and one hard limit: our panels measure dynamics, our trial logs sample aesthetics, and a win rate does not answer "is it fun". specs/Positioning.md names the field fairly — Ludii is the closest relative and the right benchmark — and the four differentiators, each already built rather than aspired to. Clay-borg is a design-evidence instrument; anyone can produce the number. Three tracks named and none started: a second game, game theory as the lens on dynamics, and assimilated knowledge about why games work. Track A is the falsifier for the whole positioning: every abstraction here has exactly one instance, which by our own rule may mean invented rather than observed. Chaos window 3 closes at 12 declarations with one override that changed nothing. Its verdict is due and is deliberately not written here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:41:16 +02:00
### Track C — assimilated knowledge about why games work
The furthest out, and the one the maintainer named as the point:
**make what is known about game dynamics available to designers.**
simulators/: persist the survey, and let it shrink two of the three tracks Eight profiles on a common schema, each marking what was checked against a source this session and what is background recollection. Three are marked unverified in full — Machinations, the play substrates, most of RBG — and say so rather than reading as evaluations. Written straight after three review rounds whose entire yield was claims outrunning what had been checked, so the confidence rule is the first thing in the README. The survey changed the plan, which is what a survey is for. Track C was described in Positioning as open ground. It is not: Browne published 57 criteria for game quality, and Ai Ai already computes designer-facing measures — drama, lead changes, branching factor, completion, duration — from played games. The track becomes adopt, credit and find the gap. The gap looks real: those measures presume a leader, and SHARED GROUND has none — Modes.csv gives its tiebreak as "Not applicable". Track B probably adopts rather than builds. OpenSpiel implements CFR, best-response and exploitability over games that are simultaneous-move, imperfect-information and co-operative, which is all four of GROUND's awkward properties. "Does ATTACK ever pay" is a best-response question, and we spent three review rounds refining a two-policy sweep for it. The first Track B task is now one question — is exploitability meaningful for a co-operative game with a shared threshold — not a build. The cost of not surveying earlier is therefore measurable, and is recorded rather than glossed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:56:27 +02:00
MDA's aesthetics vocabulary, **Browne's criteria**, the balance
literature, documented failure modes (runaway leader, kingmaking, analysis
paralysis, dominant strategy, degenerate equilibrium). The value is not a
database — it is that a finding from a panel run can be **named** as an
instance of a known pattern, and the designer told what usually follows.
**And the gap is now visible.** The criteria that exist assume a leader:
*lead change* and *drama* are defined against who is ahead. **SHARED
GROUND has no individual leader** — `Modes.csv` gives its tiebreak as
"Not applicable" — so the canonical vocabulary does not reach the game we
have. Whether these measures extend to co-operative and hidden-role play
is the open question, and it is a better Track C than the one this
document originally proposed.
CB-WP-0040: name the stratum before naming the defect The maintainer could not tell whether "error", "failure", "finding" or "correction" referred to the game's design, our formalisation of it, the code, the measuring apparatus, or the sentences we wrote. Three review rounds produced twenty-odd defect statements spanning five systems, all called errors. The confusion was ours. specs/Taxonomy.md, grounded in named canon rather than invented here: six strata from Sargent's problem entity / conceptual model / computerized model, extended where a simulation-V&V frame stops — we also own an instrument and an account. The two relations are what was missing: GAME<->MODEL is validation, MODEL<->ENGINE is verification, and nearly every argument about "our bug or their gap" was that distinction going unnamed. Fault/error/failure from Avizienis et al., applied within a stratum, plus the rule that explains the review history: a failure in one stratum is a fault in the next. And it finally defines the family ADR-0018 could only point at — a wrong-subject error is an ACCOUNT failure with no INSTRUMENT fault, which is why tests never catch them. MDA supplies the game-facing layers and one hard limit: our panels measure dynamics, our trial logs sample aesthetics, and a win rate does not answer "is it fun". specs/Positioning.md names the field fairly — Ludii is the closest relative and the right benchmark — and the four differentiators, each already built rather than aspired to. Clay-borg is a design-evidence instrument; anyone can produce the number. Three tracks named and none started: a second game, game theory as the lens on dynamics, and assimilated knowledge about why games work. Track A is the falsifier for the whole positioning: every abstraction here has exactly one instance, which by our own rule may mean invented rather than observed. Chaos window 3 closes at 12 declarations with one override that changed nothing. Its verdict is due and is deliberately not written here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:41:16 +02:00
**The risk is obvious and worth stating now**: this track is where a tool
starts telling designers what is fun, on the strength of numbers that
measure dynamics. §4 of the taxonomy is the guard, and it will be under
pressure here.
## 5. Falsifier
**Track A is the falsifier for this whole document.** If a second game
cannot be defined without reshaping the kernel around it, then "GROUND is
an example" was never true, clay-borg is a GROUND engine with ambitions,
and §2's differentiators are properties of one bespoke tool rather than of
a framework.