CB-WP-0042 T01-T04: H2's scoped stress, with the named defects caught
Some checks failed
ci / check (push) Failing after 4s
Some checks failed
ci / check (push) Failing after 4s
H2 is ground-game's answer to our H1 reading — that a flat +1 to every seat is a solve-rate tax scaling with the number of Problems. Unclaimed Problems now tick only the seats in scope: global (all), personal (the owner), bond (the owner's Bond network over Bond edges only, degree 0 falling back to personal), assigned by hidden priority so 2p never has the bond card in play. T01: the package is vendored with digests, and H2's Problems.csv is r0's with one column added and NOTHING else changed — checked, not assumed, because the delta claims deal_and_thresholds unchanged and a silent difference would make every H2-vs-baseline comparison a comparison of two boards as well as two rule sets. Scopes are read from the column, not derived from the priority in Rust: F25 exists because we hardcoded numbers the edition already carried. T02: owner and scope are new ProblemState fields, both Option and both skipped when None, so a baseline state serialises without them and every recorded scenario's hash is untouched — asserted on the JSON, not assumed. with_variant() replaces the bare field write, because state.variant = v would leave owners unassigned: a silently wrong game rather than a failing one. T03: every named defect is mutation-proven — traversing Rivalry edges, applying stacking once, a degree-0 owner ticking everyone, personal hitting everyone. The degree-0 mutation MISSED first: the fallback lives inside bond_network and the mutation broke the None-owner arm instead, a different branch. It stayed green until aimed at the path the test exercises. A mutation that misses is not evidence the test works. T04: ownership is not a permission. Filtering SOLVE to the owner turns it red, which is the regression this task exists for — the engine had no owner concept before T02 added one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
05d1a9aada
commit
04e26b3077
9 changed files with 900 additions and 7 deletions
40
editions/experiments/h2-scoped-problem-stress/metadata.json
Normal file
40
editions/experiments/h2-scoped-problem-stress/metadata.json
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"dataset_id": "GROUND-DARVO-EXP-H2-0.1",
|
||||
"variant_id": "h2-scoped-problem-stress",
|
||||
"base_variant_id": "ground-darvo-r0",
|
||||
"base_path": "editions/ground-darvo-r0",
|
||||
"game_title": "GROUND",
|
||||
"subtitle": "A Game of Bonds and Rivalry",
|
||||
"edition": "DARVO Edition — experiment H2",
|
||||
"version": "0.1-h2",
|
||||
"status": "Experimental rules variant (not baseline)",
|
||||
"player_count": "2–6",
|
||||
"duration": "5–15 minutes",
|
||||
"rounds": 5,
|
||||
"relationship_slots_per_player": 2,
|
||||
"description": "Experiment H2: unclaimed Problems apply End Stress only to stress_scope (personal / bond / global). Bond scope taxes the Bond network so bonded seats share incentive to SOLVE. Not stacked on H1. Design: history/260808-h2-scoped-problem-stress.md",
|
||||
"inherits_unchanged_from_base": [
|
||||
"Solutions.csv",
|
||||
"Modes.csv",
|
||||
"Scenarios.csv",
|
||||
"Tokens.csv",
|
||||
"DARVO.csv",
|
||||
"Relations.csv",
|
||||
"Player_Mats.csv",
|
||||
"Glossary.csv",
|
||||
"Extensions.csv",
|
||||
"BOM.csv",
|
||||
"Print_Manifest.csv",
|
||||
"Symbols.csv",
|
||||
"Back_Designs.csv",
|
||||
"Design_Tokens.csv",
|
||||
"Actions.csv"
|
||||
],
|
||||
"changed_files": [
|
||||
"Problems.csv",
|
||||
"Rules_Text.csv",
|
||||
"metadata.json",
|
||||
"rules_delta.yaml",
|
||||
"VARIANT.md"
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue