clay-borg/editions/modules/problem_stress/scoped/rules_delta.yaml

59 lines
1.5 KiB
YAML
Raw Normal View History

ADR-0022 + CB-WP-0048 T00: the selector decision, and the mirror held The maintainer's observation decided the design: aspects partition the GAME, strata partition our apparatus, and they are orthogonal. A module is one coordinate change in aspect space with an obligation in every stratum. So aspect identity must NOT be Rust types -- an aspect ground-game adds would make clay-borg fail to parse a configuration rather than fail to run it, welding the two coordinate systems at the one place they must stay independent. Chosen: identity as data (Configuration round-trips anything the catalog names), behaviour exhaustive (Rules, no catch-all), resolve() between. Decisive argument: the catalog ALREADY ships modules with a rules_delta and status: proposed, so a per-aspect enum would report them as "unknown module" -- indistinguishable from a typo, a false statement about the edition, and this project's signature failure shape. Two facts need two errors. Federating design authority is permanent, so the representation must outlive the implementation. Legacy ids alias forever through the catalog's own legacy_experiment_id, on the standard-Np precedent: 26 recordings name them and the expansion is exact, so there is nothing to deprecate. T00 done: the schema-2 mirror had arrived with no digests (19 files) and edition-check was red. Digests are now generated by WALKING editions/, not typed -- two reviews already found hand-written lists that made their own controls vacuous, and a mirror that grows a directory is what breaks a maintained list. PROVENANCE-catalog.md was a file inside the mirrored tree that upstream does not have; folded into our own PROVENANCE.md, since provenance about the mirror does not belong inside the thing it describes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 22:07:57 +02:00
# module: problem_stress.scoped (formerly experiment h2-scoped-problem-stress)
# Compose with other axes freely; do not require attack_relief or end/deal modules.
module_id: problem_stress.scoped
aspect: problem_stress
schema_version: 1
base: ground-darvo-r0
legacy_experiment_id: h2-scoped-problem-stress
deltas:
- id: PS-SCOPE
name: problem_stress_scope_field
phase: data
effect:
problems_csv_column: stress_scope
allowed_values: [global, personal, bond]
edition_assignment_by_hidden_priority:
0: global
1: personal
2: personal
3: bond
4: personal
- id: PS-OWN
name: assign_owners_at_setup
phase: setup_after_deal
when:
problem_stress_scope_in: [personal, bond]
effect:
assign_owner:
order: ascending_hidden_priority_among_in_play_non_global
start: lead
step: clockwise_next_seat
- id: PS-TICK
name: scoped_problem_pressure_end_of_round
phase: round_end
when:
problem_unclaimed: true
effect:
stress_delta_per_matching_problem: +1
recipients: stress_scope_of_that_problem
scope_resolution:
global: all_seats
personal: [owner]
bond: bond_network_of_owner
stacking: true
- id: PS-SOLVE
name: claim_not_restricted_by_scope
phase: resolve_solve
effect:
any_seat_with_matching_suit_may_solve: true
owner_need_not_be_solver: true
data_overlays:
- Problems.csv
- Rules_Text.csv