diff --git a/workplans/GROUND-WP-0001-statehub-bootstrap.md b/workplans/GROUND-WP-0001-statehub-bootstrap.md index 65472ee..161a1db 100644 --- a/workplans/GROUND-WP-0001-statehub-bootstrap.md +++ b/workplans/GROUND-WP-0001-statehub-bootstrap.md @@ -4,11 +4,11 @@ type: workplan title: "Bootstrap State Hub integration" domain: consumer repo: ground-game -status: ready +status: done owner: codex topic_slug: whynot created: "2026-07-31" -updated: "2026-07-31" +updated: "2026-08-03" 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 id: GROUND-WP-0001-T01 -status: todo +status: done priority: high 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`. 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 ```task id: GROUND-WP-0001-T02 -status: todo +status: done priority: high 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 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 ```task id: GROUND-WP-0001-T03 -status: todo +status: done priority: medium state_hub_task_id: "7912f74a-1ae3-40c6-a65d-28221beb0f40" ``` @@ -57,3 +92,19 @@ checkout: ```bash 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, 3–4p → 7, 5–6p → 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. diff --git a/workplans/GROUND-WP-0002-rulings-clay-borg-is-blocked-on.md b/workplans/GROUND-WP-0002-rulings-clay-borg-is-blocked-on.md new file mode 100644 index 0000000..fc9048d --- /dev/null +++ b/workplans/GROUND-WP-0002-rulings-clay-borg-is-blocked-on.md @@ -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` (0–4) — +all of which the engine currently invents. + +**GR-E01's thresholds are 2p → 5, 3–4p → 7, 5–6p → 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.