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>
2.2 KiB
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.