fix(workplans): adopt ADR-007 derived identifiers

Records absent from central carried random pre-ADR-007 identifiers minted by
the retired local hub, which C-06 refused as stale references. Deriving from
the canonical record id takes no identity from anything.

Refs CUST-WP-0068-T06

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
This commit is contained in:
codex 2026-08-25 19:30:13 +02:00
parent 9458d0256a
commit b5730f280b
55 changed files with 2937 additions and 150 deletions

View file

@ -0,0 +1,7 @@
# Module: `end_condition.fixed_rounds_5`
| | |
|---|---|
| **aspect** | `end_condition` |
| **role** | **Default.** Always play Round 15, then threshold + mode scoring. |
| **status** | baseline-default |

View file

@ -0,0 +1,64 @@
# Module: `end_condition.hybrid_clear_collapse`
| | |
|---|---|
| **aspect** | `end_condition` |
| **module_id** | `end_condition.hybrid_clear_collapse` |
| **role** | End on **board clear**, **group collapse**, or **max rounds** |
| **status** | **ready-for-implement** (draft frozen for v0 kernel) |
| **rules_delta** | [`rules_delta.yaml`](rules_delta.yaml) |
| **design** | [history/260808-deal-end-sequences-design.md](../../../history/260808-deal-end-sequences-design.md) |
Independent of `problem_stress` / `problem_deal` / `attack_relief`. Measure
**alone** first, then profile `scoped_plus_hybrid_end`.
## Frozen v0 rules
### END-CLEAR
After the **Solve** step: if **zero** unclaimed Problems remain in play →
**end the game immediately**.
- Apply mode scoring as usual.
- **Threshold:** if total claimed value ≥ scenario threshold for seat band →
group success (SHARED mastery / semi-coalition personal winners as normal).
- If claimed value < threshold but board is empty (should be rare) → group
**failure** (nothing left to claim).
### END-COLLAPSE
After Round End stress clamp (and problem-stress ticks if any module active),
before Lead rotation:
**Collapse** if **either**:
1. **No seat has Stress ≤ 3**, or
2. **Majority** of seats are in an **active DARVO sequence** (stage ≠ OFF).
Effect:
- End the game.
- **Group success = false** (SHARED fails).
- Semi / coalition: **no personal / coalition winners** (table broke).
### END-CEILING
If Round **5** completes without CLEAR or COLLAPSE → end with current
threshold + mode scoring (identical to baseline fixed-rounds behaviour).
Round max is **5** in v0 (same product length as r0). Changing max is a
different module later if needed.
## Non-goals (v0)
- Soft collapse (one seat at 5 only).
- Extending rounds when board not clear.
- Mode-specific collapse exceptions.
## Success criteria (when clay-borg implements)
1. Alone on baseline content: some games end before round 5 (clear or collapse).
2. Mean game length ≤ 5 rounds; no hangs.
3. With `problem_stress.scoped`: collapse rate non-zero for unregulated policies;
clear rate non-zero for greedy SHARED at 34p.
4. Does not recreate H1-style 0% greedy wins solely via collapse spam.

View file

@ -0,0 +1,41 @@
# module: end_condition.hybrid_clear_collapse
# status: ready-for-implement (v0 rules frozen in MODULE.md)
module_id: end_condition.hybrid_clear_collapse
aspect: end_condition
schema_version: 1
base: ground-darvo-r0
status: ready-for-implement
implementation: pending_kernel
deltas:
- id: END-CLEAR
name: early_end_board_clear
phase: after_solve_step
when:
unclaimed_problems_in_play: 0
effect:
end_game: true
scoring: mode_as_usual
group_success_if_claimed_ge_threshold: true
group_fail_if_claimed_lt_threshold: true
- id: END-COLLAPSE
name: early_end_group_collapse
phase: round_end_after_stress_clamp
when:
any_of:
- no_seat_with_stress_lte: 3
- majority_seats_in_active_darvo: true
effect:
end_game: true
group_success: false
personal_winners: none
- id: END-CEILING
name: max_rounds_five
phase: after_round
when:
round_completed: 5
effect:
end_game: true
scoring: mode_as_usual