7.4 KiB
M24 Risk Commitment Controller Pilot
Status
- Plan:
M24_RISK_COMMITMENT_CONTROLLER_PILOT - Status:
COMPLETE - Activated: 2026-08-25
- Baseline:
cd9efc9(M23_RISK_BOARD_CONTROLLER_PILOT_COMPLETE) - Owner authorization: the Owner authorized direct migration to the new code architecture; this is the next smallest first-cycle seam after Risk Board.
Objective
Move the first-cycle Risk Commitment view-data boundary onto an explicit, UI-independent controller while preserving the accepted RSK-002 composition, selected-risk identity, six consequence facts, frozen four-member party, explicit confirmation gate and Battle Opening handoff semantics. This is a structural Controller/View migration, not a commitment-rule or visual redesign.
Player/System Stopping Point
- Risk Commitment opens only for the currently sourced selected risk and the authoritative accepted-party snapshot;
- the controller owns copied Company/Contract facts, selected option facts, six consequence facts, frozen Recruit/position/relation facts, dependency state, binding hashes and confirmation/Begin command eligibility;
- the existing RSK-002 View keeps its accepted static master, node names, hit areas, focus order, localization helpers, tooltips and callbacks;
BattleService.begin_battleremains the only commitment/battle handoff authority, and no receipt is created by the controller;- no accepted page, route, visual, input, economy, Save or Battle rule changes.
Architecture Contract
Risk Board / FormationRiskService snapshot
-> RiskCommitmentPageController (view-data assembly)
-> RiskCommitmentViewData (deep-copied snapshot)
-> Existing Godot RSK-002 View composition
-> Existing acknowledgement / BattleService commands
The controller receives Company, Formation, selected Option, acknowledgement
state, supplied dependency facts and binding hashes. It validates the selected
option boundary, deep-copies all returned facts and exposes only view state and
command eligibility. It never loads, saves or mutates persistence and never
accesses Godot nodes, current_screen, facade or Entry Shell globals. It does
not duplicate commitment, Coin-spend, battle or Save rules.
Ordered Steps
M24-A — Plan and boundary (COMPLETE)
- Record the Risk Commitment stopping point, invariants and forbidden scope.
- Inventory selected-option, dependency, acknowledgement, receipt and focus branches before product code changes.
- Commit and push this activation boundary before Risk Commitment product code.
Closure: source e8825f7 records the bounded Risk Commitment Controller/View
migration, its frozen RSK-002 and BattleService invariants and its forbidden
scope before any Risk Commitment product code changes.
M24-B — Additive controller (COMPLETE)
Add runtime/entry/risk_commitment_page_controller.gd and a focused test
covering:
- missing/invalid Company, ready Formation, selected Option and Party snapshot;
- copied selected-risk identity and six consequence facts;
- copied frozen Party/Recruit/relation/coverage facts and binding hashes;
- supplied dependency state, acknowledgement normalization and stale binding;
- Settings/Review/Cancel/Acknowledge/Begin command eligibility and deep-copy isolation.
Closure: source 3e80083 adds ABGRiskCommitmentPageController and the
focused ABG_M24_RISK_COMMITMENT_CONTROLLER_OK test. The controller validates
the ready formation, selected option and accepted-party boundary, copies the
selected risk, six consequence facts, frozen Party/relation facts, dependency
and binding state, and exposes explicit acknowledgement/Begin eligibility
without Godot-node, persistence or BattleService transaction dependencies.
The source-bound controller attempt is
/private/tmp/aetherbound-guild-test-evidence/m24-risk-commitment-controller-source-bound/20260825T092019Z-11925;
the marker appears exactly once, strict diagnostics are 0, and the owned
workspace/process cleanup passes.
M24-C — View integration (COMPLETE)
- Inject one controller through Entry Shell/AppServices.
- Make RSK-002 rendering and summary facts consume controller output.
- Preserve the accepted static master, node names, focus, touch targets, localization and callbacks.
- Keep acknowledgement,
BattleService.begin_battleand all persistence calls unchanged.
Closure: source 9518e2e injects ABGRiskCommitmentPageController through
Entry Shell/AppServices and makes the accepted RSK-002 View consume copied
controller output for selected risk identity, six facts, frozen Party,
dependency state and acknowledgement/Begin eligibility. The static master,
node names, focus order, touch targets, localization, callbacks,
BattleService.begin_battle and persistence semantics remain unchanged.
The focused source-bound candidate archive is
/private/tmp/aetherbound-guild-test-evidence/m24-risk-commitment-focused/20260825T091442Z-6200
with 49 evidence files, exact-once ABG_M24_RISK_COMMITMENT_CONTROLLER_OK,
ABG_RSK002_COMMITMENT_OK and ABG_DEV4_CANDIDATE_SUITE_OK markers, strict
diagnostics 0, owned workspace/process cleanup and archive SHA-256
db1f31869c4504d1272e6d136f664d318286d3043d843e57475486732d2f6de4.
M24-D — Verification and handoff (COMPLETE)
- Run the focused controller, RSK-002, Risk, Readiness, Party, Guild, Market and Hire regressions.
- Run normal
100%Risk Commitment captures at the required landscape fixtures. - Run the full MVP first-cycle audit and require strict diagnostics
0. - Close with a focused pushed commit and update the checkpoint.
Closure: the full source-bound MVP first-cycle audit from source 9518e2e
passes ABG_MVP_FIRST_CYCLE_AUDIT_OK exactly once with 128 normal 100%
frames across zh_CN/en and 760x360, 844x390, 1280x720, strict
diagnostics 0, parsed touch coverage and owned workspace/process cleanup.
The retained archive is
/private/tmp/aetherbound-guild-test-evidence/m24-mvp-audit/20260825T091613Z-7776
with 180 evidence files and archive SHA-256
8129815eef0e8dfe57a117d70dadc15c52a3fac376ec28a559a4df32d0a7182e.
M24 closes without changing RSK-002 presentation, acknowledgement,
commitment receipts, Coin semantics, Battle handoff or any later page.
Frozen Scope
- No visual redesign or new assets/audio/animation.
- No changes to
BattleService, commitment receipts, Coin spending, Risk projections, FormationRiskService, Company, Contract, Save or Battle rules. - No migration of Battle Opening, Live Battle, Result or Recovery pages in this plan.
- No new dependency or acknowledgement policy; supplied facts remain the authority.
- No mass rewrite or deletion of compatibility/history files.
- No packaging, signing, store or release work.
Acceptance Checks
ABG_M24_RISK_COMMITMENT_CONTROLLER_OKexactly once.- Existing
ABG_RSK002_COMMITMENT_OK, Risk, Readiness, Party, Guild, Market and Hire markers remain green. - Normal
100%Risk Commitment captures, 48px targets, explicit confirmation, same-route focus, Settings return context and Battle handoff remain green. ABG_MVP_FIRST_CYCLE_AUDIT_OKremains green.
Commit Boundaries
M24-A: plan/checkpoint activation.M24-B: controller and focused unit test.M24-C: Entry Shell integration.M24-D: evidence and closure.
Each boundary must pass its narrowest focused checks and be pushed before the
next step becomes IN_PROGRESS; a failed check keeps the current step active.
Final Handoff
ABG M24 RISK COMMITMENT CONTROLLER MIGRATION READY