6.7 KiB
M38 Risk Board Page View Refactor
Status
- Plan:
M38_RISK_BOARD_PAGE_VIEW_REFACTOR - Status:
COMPLETE - Activated: 2026-08-25
- Baseline:
49b18e2(M37_READINESS_PAGE_VIEW_REFACTOR_COMPLETE) - Owner authorization: the Owner asked to continue decomposing the Entry pages into the layered Passive View + Presenter/ViewData + Domain/Application Service architecture. Risk Board is the next bounded extraction in the first-cycle player order after Readiness.
Objective
Extract the RSK-001 Risk Board page from entry_shell.gd into a passive,
UI-only ABGRiskBoardPageView while preserving the accepted custom 16:9
composition, static master artwork, frozen four-member Party header, three
sourced risk options, no-auto-selection boundary, local selection, Review/
Back/Settings commands, 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
-> RiskBoardPageController.snapshot()
-> presentation-ready ViewData
-> ABGRiskBoardPageView.render(ViewData)
-> explicit View intents
-> EntryShell application command boundary
-> existing selection/Review/Back/Settings commands
Ownership rules
ABGRiskBoardPageViewowns only Godot nodes, normalized layout, focus, local text/portrait presentation and intent emission.- The View does not import or call FormationRiskService, Save, the
compatibility facade, RuntimeContentRegistry,
current_screenor EntryShell globals. ABGRiskBoardPageControllerremains the authority for copied Company, Contract, frozen Party, coverage, option, selection and command facts.- EntryShell remains the composition root and translates only explicit
select_risk,review,backandsettingsintents through deferred connections. - Risk selection remains local and non-persistent; Risk Commitment remains the downstream page/receipt authority.
Player-visible stopping point
- The player sees the same RSK-001 parchment/master frame, frozen Party header, three sourced comparison columns, six compact facts per option, no-selection explanation and command rail as the M23-accepted page.
- Selecting an option updates only the existing local selection and Review eligibility; it never mutates Company, Save or receipts.
Reviewopens the existing Risk Commitment page for the selected option;Backreturns to Guild andSettingspreserves the current Risk Board caller/selection context.- Invalid controller data renders the existing invalid-state boundary.
Ordered steps
M38-A — Architecture contract and inventory (COMPLETE)
- Freeze the RSK-001 stopping point, dependency direction and forbidden imports before product code changes.
- Inventory the normalized canvas, static master, option-column geometry, exact semantic node names, compact fact copy and four-intent command boundary.
- Record the M23 normal-capture equivalence target at
760x360/zh_CN,844x390/en,1280x720/zh_CNand1280x720/en. - Commit and push this activation boundary before Runtime product changes.
Closure: source 5fca587 activates this plan and freezes the RSK-001
composition, dependency direction, exact node/option contract, four-intent
boundary and M23 normal-capture equivalence target.
M38-B — Passive View extraction (COMPLETE)
- Add
ABGRiskBoardPageViewunderruntime/entry/views/. - Reuse
ABGPageViewandABGPageContextwhile retaining the custom 16:9 normalized canvas, static master and compact option-column composition. - Preserve every accepted Risk Board node name, option hit area and focus order.
- Mount the View from EntryShell and translate only the four explicit intents.
- Remove only the Risk Board UI builder/helpers from EntryShell; keep local selection, controller, Risk Commitment and service semantics intact.
Closure: source eea6b8e adds ABGRiskBoardPageView, mounts it from
EntryShell, removes only the former Risk Board UI builders and wires the four
deferred intents. The focused View contract, M23 controller, DEV-4 foundation
and DEV-4 risk-selection checks pass with strict diagnostics 0.
M38-C — Focused verification (COMPLETE)
- Add
ABG_M38_RISK_BOARD_VIEW_CONTRACT_OK. - Run the focused Risk Board controller/View and DEV-4/M23 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 Board captures with the M23 baseline at the four required fixtures/locales.
Closure: source-bound attempts from source 948291d pass the View contract,
M23/DEV-4/RSK-002/DEV-5 regressions, DEV-4 candidate and full MVP audit with
strict diagnostics 0. The four normal 100% Risk Board captures are
byte-equivalent to the M23 baseline. Evidence is recorded in
docs/runtime/M38_RISK_BOARD_PAGE_VIEW_VISUAL_AUDIT.md.
M38-D — Handoff (COMPLETE)
- Record source-bound evidence and visual equivalence in
docs/runtime/M38_RISK_BOARD_PAGE_VIEW_VISUAL_AUDIT.md. - Close only Risk Board; Risk Commitment, Battle and later Views remain outside this plan.
- Update the checkpoint and development ledger, then push the focused closure.
Closure: source c62b86d records the source-bound evidence, strict
diagnostics, four-fixture byte-equivalence and ordered scope boundary in
docs/runtime/M38_RISK_BOARD_PAGE_VIEW_VISUAL_AUDIT.md. M38 is complete;
no later View migration is activated by this plan.
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,.importorprototype_incremental/. - No packaging, iOS export, signing, deployment, store or release work.
Acceptance checks
ABG_M38_RISK_BOARD_VIEW_CONTRACT_OKexactly once.- Existing
ABG_M23_RISK_BOARD_CONTROLLER_OK,ABG_DEV4_RISK_OK, DEV-4 candidate andABG_MVP_FIRST_CYCLE_AUDIT_OKremain green. - Extracted View has no forbidden service/content/route imports and emits only the four explicit intents.
- Risk Board normal
100%captures remain visually equivalent to the M23 baseline at all four required fixtures/locales. - Focused source is committed, pushed and tracked files are clean.
Commit boundaries
M38-A: plan/checkpoint activation.M38-B: View and EntryShell integration.M38-C: focused verification/evidence.M38-D: handoff/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 M38 RISK BOARD VIEW PILOT COMPLETE