clay-borg/editions/ground-darvo-r0/PROVENANCE.md
tegwick 4b5b601ce0 CB-WP-0028 T01/T02: the cards say what they do
ADR-0015 and the import. F18's fix: "I don't understand the GROUND card"
was never a design gap -- the card explains itself in the edition and we
never imported the explanation.

THE MEASUREMENT IS THE DECISION, and the gap is bigger than "one file of
nineteen". Of the file we DID vendor, the engine reads 5 of 13 columns:
title, problem_text, front_rules, reveal_effect and unresolved_effect were
discarded at parse time. The cheapest part of this pass costs no new bytes
and was sitting in the repo for eight days. And SCN_01 is hardcoded at
lib.rs:1824 -- the edition ships FOUR scenarios and the engine has never
dealt three of them. Nobody had said so.

ADR-0011's revisit condition is measurably absent, so the dependency
argument does not get re-run: across Actions, Solutions, Modes and
Scenarios there are ZERO doubled quotes and ZERO embedded newlines. The
hand reader's only job is comma-in-quoted-field, which it already did.
Refusing csv on a measurement rather than on a preference.

Vendored Actions, Solutions and Modes -- the text a player reads. Not the
production artifacts (BOM, Print_Manifest, Back_Designs, Symbols). NOT
Extensions.csv, which names content the designer placed outside the core;
importing it would break the claim that this engine plays the edition as
printed. It is now known to exist, which was the real risk.

One Table reader with four callers, because a per-file copy is how a
parser acquires four subtly different bugs. The GROUND card now shows
"Regulate. Restore the frame. Decide." with its GR/OU/ND text on demand;
Problems show their own titles where a priority number used to be.

The load-bearing test asserts the text is a SUBSTRING OF THE VENDORED
FILE rather than equal to a Rust literal -- a test comparing against a
hardcoded expectation would pass for a hand-copied string, which is the
drift this ends.

`edition` came out from behind #[cfg(feature = "scenarios")]. It was gated
because its only consumer was; the edition is the game's own data and the
shipped runtime now reads it. Test machinery and game content are
different things and only one of them is optional.

And edition-check was written for a single-file world: it compared the
first recorded digest against Problems.csv regardless of which file that
digest described. It now checks every file both ways -- a vendored file
with no digest fails, a digest naming an absent file fails -- and asserts
ADR-0015 D3's falsifier directly rather than trusting it.

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

49 lines
2.2 KiB
Markdown

# Vendored edition data — provenance
**Not ours.** This directory holds a copy of content owned by the
`ground-game` repository, vendored under ADR-0011 Decision 2 because the
build must not depend on a sibling checkout that CI does not have.
| | |
|---|---|
| upstream repo | `ground-game` |
| upstream repo path | `editions/ground-darvo-r0/` |
| authoritative? | **yes** — ruled by ground-game, GROUND-WP-0002 T01 |
## Files, and why each is here
| file | vendored | upstream revision | why |
|---|---|---|---|
| `Problems.csv` | 2026-08-04 | `9fd27a51` | the deal (ADR-0011) |
| `Actions.csv` | 2026-08-06 | `4fa3b8ed` | the five action cards' own words (ADR-0015 D2) |
| `Solutions.csv` | 2026-08-06 | `4fa3b8ed` | Solution titles and microcopy |
| `Modes.csv` | 2026-08-06 | `4fa3b8ed` | mode text and `scoring_tiebreak` |
**Deliberately absent**: `BOM`, `Print_Manifest`, `Back_Designs`,
`Symbols`, `Design_Tokens` — production artifacts for a physical print
run, meaningless to a simulator. And `Extensions.csv`, which names content
the designer placed *outside* the core; importing it would break the claim
that this engine plays the edition as printed (ADR-0015 D2).
## Digests
```
sha256 7a7a302aabecdeb419c562a029bec3e3576a306b0bd1175d1200de60d9530073 Actions.csv
sha256 565431571bc06adafb67edefd4b368839b6b94134c2289877384688cc643390b Modes.csv
sha256 0a04830c93b62dcb2f4411a9fbde576368a7427fe9e63c5015e606e4d42d23a0 Problems.csv
sha256 0bda1ee97de726b5e8c4404ab15ecc53a359e6c23db74fb41ecb51d78f9884ad Solutions.csv
```
`make edition-check` compares this against `../ground-game` when that
repository is present, and reports **`upstream not checked out`** as a
distinct outcome when it is not — never a pass. An absent check is
reported absent, not treated as satisfied (the shape ADR-0009 used for
`node`).
## What may not change under this revision
Per GROUND-WP-0002 T01's contract: `point_value` and
`required_solution` are **authoritative and frozen within `r0`**. The
engine hashes game state and both values are *in* that state, so a silent
change would rot every recorded scenario expectation. A change to either
is a new revision (`-r1`), and this digest is what notices.