Files
aetherbound-guild/docs/plans/M37_READINESS_PAGE_VIEW_REFACTOR.md
T
2026-08-26 00:39:51 +08:00

7.0 KiB

M37 Readiness Page View Refactor

Status

  • Plan: M37_READINESS_PAGE_VIEW_REFACTOR
  • Status: COMPLETE
  • Activated: 2026-08-25
  • Baseline: deb0707 (M36_RISK_COMMITMENT_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. Readiness is the next bounded extraction in the M36 handoff map.

Objective

Extract the PTY-002 Readiness Review page from entry_shell.gd into a passive, UI-only ABGReadinessPageView while preserving the accepted custom 16:9 composition, static master artwork, complete four-member formation, coverage/warning/receipt facts, command eligibility, focus order, touch surfaces, localization and normal 100% visual output.

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

Target boundary

EntryShell / composition root
  -> ReadinessPageController.snapshot()
  -> presentation-ready ViewData
  -> ABGReadinessPageView.render(ViewData)
  -> explicit View intents
  -> EntryShell application command boundary
  -> existing readiness/party/risk/settings commands

Ownership rules

  1. ABGReadinessPageView 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. ABGReadinessPageController remains the authority for copied Company, Contract, Formation, ordered Recruit, warning, receipt and command facts.
  4. EntryShell remains the composition root and translates only explicit settings, review_member, review_warnings, revise, back, accept and risk intents through deferred connections.
  5. FormationRiskService remains the only order/readiness transaction and persistence authority. Party, Risk, Battle, Save and route semantics stay unchanged.

Player-visible stopping point

  • The player sees the same PTY-002 parchment/master frame, frozen Company and Contract header, four positioned Recruit portraits, relation cord/effects, coverage band, warning rows, knockout/receipt facts and command rail as the M22-accepted page.
  • Member and warning review actions update the existing local notice without changing saved formation facts.
  • Revise returns to Party Line; Back returns to Guild; Accept records the existing idempotent readiness receipt and stays on Readiness; Risk opens the existing Risk Board only when the controller says it is eligible.
  • Settings opens through the existing caller context. Invalid controller data renders the existing invalid-state boundary.

Ordered steps

M37-A — Architecture contract and inventory (COMPLETE)

  • Freeze the PTY-002 stopping point, dependency direction and forbidden imports before product code changes.
  • Inventory the existing normalized canvas, static master, PartyLineTrack z-order, UI-only formatting helpers, exact semantic node names and the seven-intent command boundary.
  • Record the M22 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 8fc239f activates this plan and freezes the PTY-002 composition, dependency direction, exact node/layer contract, seven-intent boundary and M22 normal-capture equivalence target.

M37-B — Passive View extraction (COMPLETE)

  • Add ABGReadinessPageView under runtime/entry/views/.
  • Reuse ABGPageView and ABGPageContext while retaining the custom 16:9 normalized canvas, static master, portrait mapping and PartyLineTrack layer semantics.
  • Preserve every accepted Readiness node name and command hit area.
  • Mount the View from EntryShell and translate only the seven explicit intents.
  • Remove only the Readiness UI builder/helpers from EntryShell; keep all service/controller/application commands intact.

Closure: source a83963f adds ABGReadinessPageView, mounts it from EntryShell with deferred seven-intent translation, removes the former Readiness UI builder/helpers and adds the isolated View contract test. Existing Readiness behavior passes, and the four normal Readiness fixtures are pixel-equivalent to the M22 baseline.

M37-C — Focused verification (COMPLETE)

  • Add ABG_M37_READINESS_VIEW_CONTRACT_OK.
  • Run the focused Readiness controller/View and DEV-4/M22 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 Readiness captures with the M22 baseline at the four required fixtures/locales.

Closure: source 7da8d05 passes the source-bound View contract, Readiness and route regressions, DEV-4 candidate, four-fixture normal capture set and full MVP audit. All required markers are exact-once with strict diagnostics 0, and the four Readiness captures are byte-equivalent to the M22 baseline. Full evidence is recorded in docs/runtime/M37_READINESS_PAGE_VIEW_VISUAL_AUDIT.md.

M37-D — Handoff (COMPLETE)

  • Record source-bound evidence and visual equivalence in docs/runtime/M37_READINESS_PAGE_VIEW_VISUAL_AUDIT.md.
  • Close only Readiness; Party Line, Risk Board, Battle and later Views remain outside this plan.
  • Update the checkpoint and development ledger, then push the focused closure.

Closure: source 6c9259b records the source-bound audit, exact marker evidence and four-fixture byte-equivalence handoff. M37 closes only Readiness Review; no downstream page or gameplay scope is implied.

Frozen scope

  • No Formation/Risk/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_M37_READINESS_VIEW_CONTRACT_OK exactly once.
  • Existing ABG_M22_READINESS_CONTROLLER_OK, ABG_DEV4_READY_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 seven explicit intents.
  • Readiness normal 100% captures remain visually equivalent to the M22 baseline at all four required fixtures/locales.
  • Focused source is committed, pushed and tracked files are clean.

Commit boundaries

  • M37-A: plan/checkpoint activation.
  • M37-B: View and EntryShell integration.
  • M37-C: focused verification/evidence.
  • M37-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 M37 READINESS VIEW PILOT COMPLETE

M37 is closed. Any later View migration requires a separately activated plan.