6.3 KiB
6.3 KiB
M33 Reward Choice Page View Refactor
Status
- Plan:
M33_REWARD_CHOICE_PAGE_VIEW_REFACTOR - Status:
COMPLETE - Activated: 2026-08-25
- Baseline:
30e162d(M32_PAGE_VIEW_ARCHITECTURE_REFACTOR_COMPLETE) - Owner authorization: the Owner asked to continue splitting page Views after the Recovery pilot. This plan is the next bounded extraction in the ordered M32 handoff map.
Objective
Extract the OUT-003 Reward Choice page from entry_shell.gd into a passive,
UI-only ABGRewardChoicePageView while preserving the already accepted Reward
Choice composition, node names, focus order, touch targets, localization,
deterministic option display, Claim/Skip behavior and Recovery continuation.
This is a structural View migration, not a reward, economy, Battle, Save or visual redesign.
Target boundary
EntryShell / composition root
-> RewardChoicePageController.snapshot()
-> presentation-enriched ViewData
-> ABGRewardChoicePageView.render(ViewData)
-> explicit select / back / skip / claim intents
-> EntryShell application command boundary
-> BattleService.claim_reward() / decline_reward()
Ownership rules
ABGRewardChoicePageViewowns only Godot nodes, layout, focus, local text formatting and intent emission.- The View does not import or call BattleService, Save, the compatibility
facade, RuntimeContentRegistry,
current_screenor EntryShell globals. - The composition root supplies presentation-ready equipment names so the extracted View does not perform content lookups itself.
ABGRewardChoicePageControllerremains the authority for copied settled result/draft/option facts and command eligibility.- BattleService remains the only authority for Claim/Skip mutation, receipts, idempotency and persistence.
Player-visible stopping point
- The player sees the same settled Coin, equal reward options, selected detail, Back, Skip and Claim controls as the M29-accepted page.
- Selecting an option still updates only local selection until Claim.
- Claim and Skip retain their existing one-receipt semantics and route to the existing Recovery page.
- A closed/invalid draft still follows the existing Recovery or invalid-state behavior; no new fallback route is introduced.
Ordered steps
M33-A — Architecture contract and inventory (COMPLETE)
- Freeze the Reward Choice stopping point, dependency direction and forbidden imports before product code changes.
- Inventory the current OUT-003 composition, presentation-only content-name lookup, selection path and Claim/Skip command boundary.
- Commit and push this activation boundary. Complete at source
331db7d.
M33-B — Passive View extraction (COMPLETE)
- Add
ABGRewardChoicePageViewunderruntime/entry/views/. - Reuse
ABGPageViewandABGPageContextfrom M32. - Mount the View from EntryShell and translate explicit
select,back,skipandclaimintents. - Keep all BattleService commands and controller semantics unchanged.
- Complete at source
3d477ef:ABGRewardChoicePageViewis mounted throughABGPageContext, receives presentation-ready equipment names and emits explicit command intents; the accepted normal Reward Choice captures remain byte-equivalent to the M29 baseline.
M33-C — Focused verification (COMPLETE)
- Add
ABG_M33_REWARD_CHOICE_VIEW_CONTRACT_OK. - Run the Reward Choice controller and M12/M29/M30 route regressions.
- Run DEV-5 candidate and full MVP first-cycle audit through the owned test attempt runner with strict diagnostics and exact-once markers.
- Compare normal Reward Choice captures with the M29 baseline.
- Complete at source
f609464: the source-bound contract, controller/runtime regressions, DEV-5 candidate and full MVP audit pass. Reward Choice captures are byte-equivalent to the M29 baseline at all four required fixtures. Seedocs/runtime/M33_REWARD_CHOICE_PAGE_VIEW_VISUAL_AUDIT.md.
M33-D — Handoff (COMPLETE)
- Record source-bound evidence and visual equivalence.
- Close only Reward Choice; do not claim Result, Knockout, Market or Battle Views are migrated.
- Leave the next extraction as a separately activated plan/step.
Next extraction map
- M34 Knockout Review View — same settled-result chain, low-risk command surface, and already-complete controller boundary.
- M35 Battle Result View — extract the causal/result presentation after Knockout intent routing is proven.
- M36 Risk Commitment and Readiness Views — reuse the explicit command rail only after two more passive Views validate the contract.
- M37 Party Line and Risk Board Views — selection-heavy preparation pages.
- M38 Market, Recruit Review, Contract Choice and Guild Views — larger content and route/context surfaces.
- M39 Battle Opening and Live Battle Views — defer the highest lifecycle and timeline coupling until the passive View boundary is mature.
Each item requires its own durable activation plan, focused equivalence check and pushed commit. No project-wide binding/event-bus layer is introduced by this handoff.
Complete at source f609464; the evidence report and next extraction map are
recorded. No later page migration is activated by M33.
Frozen scope
- No reward option, reward amount, equipment, economy, Claim/Skip, settlement, Recovery, BattleService or 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_M33_REWARD_CHOICE_VIEW_CONTRACT_OKexactly once.- Existing
ABG_M29_REWARD_CHOICE_CONTROLLER_OK,ABG_DEV5_CANDIDATE_SUITE_OKandABG_MVP_FIRST_CYCLE_AUDIT_OKremain green. - Extracted View has no forbidden service/content/route imports and emits only explicit intents.
- Reward Choice normal
100%captures remain visually equivalent at the required fixtures and locales. - Focused source is committed, pushed and tracked files are clean.
Commit boundaries
M33-A: plan/checkpoint activation.M33-B: View and EntryShell integration.M33-C: focused verification/evidence.M33-D: handoff/closure.
Final handoff
ABG M33 REWARD CHOICE VIEW PILOT COMPLETE