Close GROUND-WP-0001; open GROUND-WP-0002, the rulings the engine is blocked on

T01: no generated placeholders remain. Named but not edited: SCOPE.md
does not say this repo is the authority clay-borg defers to for game
semantics, which is a real relationship with nine unanswered questions
behind it. Carried into WP-0002 T01 rather than written by hand, because
the sentence cannot be honest until the contract exists.

T02: there are no build/test/lint commands and that is the answer, not
an omission -- this is a content repo. Finding recorded: nothing
validates that the CSV sheets are internally consistent, because the
engine has never loaded them.

T03: GROUND-WP-0002. The most important next change is not content. The
engine has never loaded this repo's edition data -- it builds Problems
with value=priority and cycled suits, while Problems.csv has carried
point_value 2,2,2,3,3 and required_solution since 2026-07-31. GR-E01's
thresholds (2p 5, 3-4p 7, 5-6p 9) are ordinary against the 12 points the
dataset provides and unreachable against the stand-in's 6 -- which is
exactly what clay-borg reported as a rules gap needing a ruling here.

WP-0002 therefore leads with declaring the dataset authoritative, then
takes the rulings that survive it: SOLVE's legality against a face-down
problem, an unmatchable suit, and an already-claimed problem (GR-A13);
the six provisional defaults; and GR-E03/GR-E04 never having been played
to the end.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-03 18:54:42 +02:00
parent 68719392c2
commit 192e0486fb
2 changed files with 201 additions and 5 deletions

View file

@ -4,11 +4,11 @@ type: workplan
title: "Bootstrap State Hub integration" title: "Bootstrap State Hub integration"
domain: consumer domain: consumer
repo: ground-game repo: ground-game
status: ready status: done
owner: codex owner: codex
topic_slug: whynot topic_slug: whynot
created: "2026-07-31" created: "2026-07-31"
updated: "2026-07-31" updated: "2026-08-03"
state_hub_workstream_id: "1e356c32-3a04-43a0-aa02-43cc18cca60a" state_hub_workstream_id: "1e356c32-3a04-43a0-aa02-43cc18cca60a"
--- ---
@ -20,7 +20,7 @@ Product repo for GROUND — A Game of Bonds and Rivalry (DARVO Edition): playtes
```task ```task
id: GROUND-WP-0001-T01 id: GROUND-WP-0001-T01
status: todo status: done
priority: high priority: high
state_hub_task_id: "bde46494-9425-4f1c-8b5d-f01fe705bf9a" state_hub_task_id: "bde46494-9425-4f1c-8b5d-f01fe705bf9a"
``` ```
@ -28,11 +28,24 @@ state_hub_task_id: "bde46494-9425-4f1c-8b5d-f01fe705bf9a"
Review `INTENT.md`, `SCOPE.md`, `AGENTS.md`, and `.custodian-brief.md`. Review `INTENT.md`, `SCOPE.md`, `AGENTS.md`, and `.custodian-brief.md`.
Replace generated placeholders with repo-specific facts where needed. Replace generated placeholders with repo-specific facts where needed.
**Done 2026-08-03.** Reviewed; **no generated placeholders remain**
`INTENT.md`, `SCOPE.md` and `AGENTS.md` all carry repo-specific content
(the DARVO edition, the `ground-darvo-r0` dataset, the consumer domain,
the `GROUND-WP-` prefix). Nothing to replace.
One gap worth naming rather than editing: `SCOPE.md`'s *"In scope now"*
does not mention that this repo is the **authority the engine defers to**
for game semantics. That is a real relationship — `clay-borg`'s INTENT
says *"game-semantics questions defer to that repo"* — and it now has
nine unanswered questions behind it. Rather than amend SCOPE by hand, it
is carried as GROUND-WP-0002 T01, which has to answer what the engine may
rely on before the scope sentence can be written honestly.
## Verify Local Developer Workflow ## Verify Local Developer Workflow
```task ```task
id: GROUND-WP-0001-T02 id: GROUND-WP-0001-T02
status: todo status: done
priority: high priority: high
state_hub_task_id: "d4dbf142-6a5b-4631-923e-9e761f462900" state_hub_task_id: "d4dbf142-6a5b-4631-923e-9e761f462900"
``` ```
@ -41,11 +54,33 @@ Identify the repo's install, test, lint, build, and run commands. Add or refine
those commands in the agent instructions so future coding sessions can verify those commands in the agent instructions so future coding sessions can verify
changes confidently. changes confidently.
**Done 2026-08-03.** There are none, and that is the honest answer rather
than an omission: this is a **content repository**. It holds CSV edition
data under `editions/ground-darvo-r0/`, prose under `INTENT`/`SCOPE`, and
design history. There is no build, no test runner and no linter, because
there is nothing here that executes.
The workflow is therefore:
| step | command |
|---|---|
| register workplan and task changes | `statehub fix-consistency` |
| verify the dataset loads | *(none — see below)* |
**The missing one is worth stating as a finding.** Nothing in this repo
validates that `Problems.csv` and its sibling sheets are internally
consistent — that `required_solution` values exist in `Solutions.csv`,
that `scenario_id` values exist in `Scenarios.csv`, that IDs are unique.
The engine has never loaded them, so nothing has ever checked them.
Not fixed here: a validator is real work and it should be built against
the contract GROUND-WP-0002 T01 defines, not before it.
## Seed First Real Workplan ## Seed First Real Workplan
```task ```task
id: GROUND-WP-0001-T03 id: GROUND-WP-0001-T03
status: todo status: done
priority: medium priority: medium
state_hub_task_id: "7912f74a-1ae3-40c6-a65d-28221beb0f40" state_hub_task_id: "7912f74a-1ae3-40c6-a65d-28221beb0f40"
``` ```
@ -57,3 +92,19 @@ checkout:
```bash ```bash
statehub fix-consistency statehub fix-consistency
``` ```
**Done 2026-08-03.**
[GROUND-WP-0002](GROUND-WP-0002-rulings-clay-borg-is-blocked-on.md) —
*the rulings the engine is blocked on, and the dataset it never loaded.*
The most important next change is not a content change. It is that
**`clay-borg` has never loaded this repository's edition data** and has
been running on a stand-in that invents Problem values and suits. Its
`GR-E01 unreachable below 5 seats` finding — carried for passes as a rules
gap needing a ruling here — is most likely an artifact of that: the
thresholds (2p → 5, 34p → 7, 56p → 9) are ordinary against the 12 points
`Problems.csv` actually provides, and unreachable against the stand-in's
6.
So GROUND-WP-0002 leads with declaring the dataset authoritative, then
takes the rulings that survive it.

View file

@ -0,0 +1,145 @@
---
id: GROUND-WP-0002
type: workplan
title: "Rulings the engine is blocked on, and the dataset it never loaded"
domain: consumer
repo: ground-game
status: ready
owner: bernd
topic_slug: whynot
created: "2026-08-03"
updated: "2026-08-03"
---
# Rulings the engine is blocked on
`clay-borg` implements the engine that simulates GROUND. Its INTENT says
game-semantics questions defer to **this** repo. Nine such questions have
accumulated there and none has been answered, because none had a home.
This is their home.
**Nothing here is a clay-borg change.** Every item is a ruling only the
game's owner can make; the engine already carries a provisional default
for each and will flip it when the ruling lands.
## The finding that reframes most of this
**The engine has never loaded this repository's edition data.**
`games/ground/src/lib.rs:1839` builds Problems with `value: priority` and
suits cycled by index — a stand-in it has always labelled as such. Mean-
while `editions/ground-darvo-r0/Problems.csv` has carried the real thing
since 2026-07-31:
| | problems per scenario | values | total available |
|---|---:|---|---:|
| `Problems.csv` (real) | **5** | 2, 2, 2, 3, 3 | **12** |
| the engine's stand-in | 3 | 1, 2, 3 | **6** |
The dataset also defines `required_solution` (Repair / Clarify /
Boundary), `visibility` (Surface / Hidden) and `hidden_priority` (04) —
all of which the engine currently invents.
**GR-E01's thresholds are 2p → 5, 34p → 7, 56p → 9.** Against 12
available points those are ordinary targets. Against a stand-in worth 6
they are unreachable, which is exactly what clay-borg reported as a rules
gap needing a ruling here.
**So the first question is not a rules question at all.** It is whether
this dataset is authoritative — and if it is, several of the items below
dissolve without anyone changing a rule.
## Task: declare the dataset authoritative, and say what the engine may rely on
```task
id: GROUND-WP-0002-T01
status: todo
priority: high
```
State whether `editions/ground-darvo-r0/` is the **authoritative** source
for Problem values, required solutions, visibility and priority — and what
the engine may treat as stable.
`SCOPE.md` already promises *"stable IDs suitable for layout templates,
print merges, and later digital import."* This task turns that into a
contract clay-borg can build against:
- which columns are authoritative vs presentational;
- whether `point_value` and `required_solution` may change between `r0`
and a later revision without a version bump;
- what a version bump looks like, so the engine can pin one.
**Until this is answered the engine cannot import the data, and every
threshold question below stays unanswerable.**
## Task: rule on SOLVE's legality
```task
id: GROUND-WP-0002-T02
status: todo
priority: high
```
Three related questions, all raised by play, all currently decided by the
engine's default rather than by the rules.
**(a) May SOLVE be selected against a *face-down* Problem?** Measured in
the browser on 2026-08-03: a player selected SOLVE on a face-down Problem
in three consecutive rounds. Nothing happened, three times, because
GR-A02's resolver skips a Problem that is not face up. The engine offered
the move each time.
A face-down commit you cannot fulfil is a plausible **bluff** in a
commit/reveal game with DARVO — which is why this is a ruling and not a
bug. But if it is a bluff it should be *intended*; if it is not, the move
should not be offered.
**(b) May SOLVE be selected when the seat holds no Solution of the
required suit?** Same shape: currently offered, silently does nothing.
**(c) GR-A13 — SOLVE against an already-claimed Problem.** Long-standing
in clay-borg's evidence as *"wasted SOLVE"*. Intended cost of a bad read,
or a gap?
For each: **intended, or not offered.** If intended, say what the player
is meant to learn from the waste.
## Task: confirm or overturn the six provisional defaults
```task
id: GROUND-WP-0002-T03
status: todo
priority: medium
```
Six engine scenarios are tagged `provisional: true` with
`provisional_owner: ground-game`. Each encodes a default the engine had to
pick because the rules did not say. A ruling flips the scenario; it does
not change the kernel.
| scenario | the default currently in force |
|---|---|
| `gr-a04-bond-support` | a Support with no existing relation forms **no** Bond, because GR-L02 requires the target's consent |
| `gr-d01-darvo-trigger` | Stress **clamps** at 5 on every application (GR-F01 under the U2 default) |
| `gr-d05-darvo-reverse` | the REVERSE stage's default resolution |
| `gr-e01-threshold-unreachable-2p` | thresholds measured against the **stand-in** values — see the finding above |
| `gr-e02-shared-ground` | SHARED GROUND scoring default |
| `gr-e04-coalitions` | Bond networks score together; Rivalries do not connect; an unbonded player is a coalition of one |
Confirm each or overturn it. **`gr-e01` should be taken last**, because
T01 may dissolve it.
## Task: GR-E03 and GR-E04 have never been played to the end
```task
id: GROUND-WP-0002-T04
status: todo
priority: medium
```
Both scoring modes are implemented and neither has been played through a
full game — by a person or by the engine. Whatever the rules say, nobody
knows what these modes feel like at the table.
This is a **playtest** task, not an engine task, and it belongs here.