Files
aetherbound-guild/docs/plans/M38_RISK_BOARD_PAGE_VIEW_REFACTOR.md
T
2026-08-26 01:21:17 +08:00

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

  1. ABGRiskBoardPageView owns only Godot nodes, normalized layout, focus, local text/portrait presentation and intent emission.
  2. The View does not import or call FormationRiskService, Save, the compatibility facade, RuntimeContentRegistry, current_screen or EntryShell globals.
  3. ABGRiskBoardPageController remains the authority for copied Company, Contract, frozen Party, coverage, option, selection and command facts.
  4. EntryShell remains the composition root and translates only explicit select_risk, review, back and settings intents through deferred connections.
  5. 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.
  • Review opens the existing Risk Commitment page for the selected option; Back returns to Guild and Settings preserves 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_CN and 1280x720/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 ABGRiskBoardPageView under runtime/entry/views/.
  • Reuse ABGPageView and ABGPageContext while 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, .import or prototype_incremental/.
  • No packaging, iOS export, signing, deployment, store or release work.

Acceptance checks

  • ABG_M38_RISK_BOARD_VIEW_CONTRACT_OK exactly once.
  • Existing ABG_M23_RISK_BOARD_CONTROLLER_OK, ABG_DEV4_RISK_OK, 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 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