166 lines
7.0 KiB
Markdown
166 lines
7.0 KiB
Markdown
# 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
|
|
|
|
```text
|
|
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.
|