Files
aetherbound-guild/docs/plans/M36_RISK_COMMITMENT_PAGE_VIEW_REFACTOR.md
T

5.9 KiB

M36 Risk Commitment Page View Refactor

Status

  • Plan: M36_RISK_COMMITMENT_PAGE_VIEW_REFACTOR
  • Status: COMPLETE
  • Activated: 2026-08-25
  • Baseline: 0eed014 (M35_BATTLE_RESULT_PAGE_VIEW_REFACTOR_COMPLETE)
  • Owner authorization: the Owner asked to continue splitting page Views after the M35 Battle Result pilot. This plan is the next bounded extraction in the ordered M35 handoff map.

Objective

Extract the RSK-002 Risk Commitment page from entry_shell.gd into a passive, UI-only ABGRiskCommitmentPageView while preserving the accepted custom 16:9 normalized composition, static master artwork, complete four-member frozen Party presentation, selected-risk facts, six consequence facts, acknowledgement boundary, disabled Begin Battle state, settings access, focus order, touch surfaces, localization and normal 100% visual output.

This is a structural View migration, not a Risk, Formation, Battle, Economy, Save or visual redesign.

Target boundary

EntryShell / composition root
  -> RiskCommitmentPageController.snapshot()
  -> presentation-ready ViewData
  -> ABGRiskCommitmentPageView.render(ViewData)
  -> explicit View intents
  -> EntryShell application command boundary
  -> existing risk/settings/acknowledge/battle commands

Ownership rules

  1. ABGRiskCommitmentPageView owns only Godot nodes, normalized layout, focus, local text/portrait presentation and intent emission.
  2. The View does not import or call FormationRiskService, BattleService, Save, the compatibility facade, RuntimeContentRegistry, current_screen or EntryShell globals.
  3. ABGRiskCommitmentPageController remains the authority for copied Company, Contract, selected-risk, consequence, frozen-Party, dependency, binding, confirmation and command facts.
  4. EntryShell remains the composition root and translates only explicit back, review_risk_details, review_consequences, acknowledge, begin_battle and settings intents through deferred connections.
  5. Risk projection, formation binding, acknowledgement, BattleService, receipts, Save and route semantics remain unchanged.

Player-visible stopping point

  • The player sees the same RSK-002 parchment/master frame, selected risk identity/source/region, six consequence facts, frozen four-member Party, coverage values and command rail as the M24-accepted page.
  • The selected-risk and consequence hit areas still update the existing local notice without changing domain facts.
  • Acknowledge still toggles the existing confirmation state and never creates a commitment receipt by itself.
  • Begin Battle remains disabled until acknowledgement and dependency checks are valid, then follows the existing Battle Opening route.
  • Back returns to the Risk Board and Settings opens the existing Settings route with the same caller identity.
  • A controller-invalid snapshot renders the existing invalid-state boundary.

Ordered steps

M36-A — Architecture contract and inventory (COMPLETE)

  • Freeze the RSK-002 stopping point, dependency direction and forbidden imports before product code changes.
  • Inventory the current normalized canvas, static master, transparent hit areas, UI-only formatting helpers, exact node names and six-intent command boundary.
  • Record the M24 normal-capture equivalence target.
  • Commit and push this activation boundary before Runtime product changes.

M36-B — Passive View extraction (COMPLETE)

  • Add ABGRiskCommitmentPageView under runtime/entry/views/.
  • Reuse ABGPageView and ABGPageContext while retaining the custom 16:9 normalized canvas and static master image.
  • Preserve all accepted semantic node names and complete Party portraits.
  • Mount the View from EntryShell and translate only the six explicit intents.
  • Keep controller, FormationRiskService, BattleService, receipt and Save semantics unchanged.
  • Complete at the product integration source.

M36-C — Focused verification (COMPLETE)

  • Add ABG_M36_RISK_COMMITMENT_VIEW_CONTRACT_OK.
  • Run the focused Risk Commitment controller/View and M12/M24 route regressions, DEV-4 candidate and full MVP first-cycle audit through the owned test-attempt runner with strict diagnostics and exact-once markers.
  • Compare normal Risk Commitment captures with the M24 baseline at the four required fixtures/locales.
  • Complete at source 26190de; evidence is recorded in docs/runtime/M36_RISK_COMMITMENT_PAGE_VIEW_VISUAL_AUDIT.md.

M36-D — Handoff (COMPLETE)

  • Record source-bound evidence and visual equivalence in a runtime audit.
  • Close only Risk Commitment; Readiness and other preparation Views remain outside this plan.
  • Leave Readiness as a separately activated next extraction.
  • Complete at source 3a82056 with the source-bound audit and byte-equivalence record.

Frozen scope

  • No Risk/Formation/Battle/Economy/Save semantic changes.
  • No visual redesign, asset generation, localization rewrite or 130% scope.
  • No mass rewrite of entry_shell.gd.
  • No deletion of compatibility/history files, .uid, .import or prototype_incremental/.
  • No packaging, iOS export, signing, deployment, store or release work.

Acceptance checks

  • ABG_M36_RISK_COMMITMENT_VIEW_CONTRACT_OK exactly once.
  • Existing ABG_M24_RISK_COMMITMENT_CONTROLLER_OK, M12/DEV-4 candidate and ABG_MVP_FIRST_CYCLE_AUDIT_OK remain green.
  • Extracted View has no forbidden service/content/route imports and emits only the six explicit intents.
  • Risk Commitment normal 100% captures remain visually equivalent to the M24 baseline at required fixtures and locales.
  • Focused source is committed, pushed and tracked files are clean.

Commit boundaries

  • M36-A: plan/checkpoint activation.
  • M36-B: View and EntryShell integration.
  • M36-C: focused verification/evidence.
  • M36-D: handoff/closure.

Final handoff

ABG M36 RISK COMMITMENT VIEW PILOT COMPLETE

M36 is closed. Readiness requires a separate Owner-authorized plan.