docs: activate M38 risk board view refactor

Co-Authored-By: Codex <noreply@anthropic.com>
This commit is contained in:
2026-08-26 00:42:23 +08:00
co-authored by Codex
parent 49b18e2076
commit 5fca587713
3 changed files with 157 additions and 5 deletions
+5 -5
View File
@@ -13,11 +13,11 @@
## Current State
- Stage: `M37_READINESS_PAGE_VIEW_REFACTOR`
- Active implementation step: `NONE` (`COMPLETE`) — M37 Readiness View pilot
and handoff are closed. M37-A/B/C/D are complete; M36 Risk Commitment View
remains complete. M37 changed no gameplay, visual, Save or localization
semantics.
- Stage: `M38_RISK_BOARD_PAGE_VIEW_REFACTOR`
- Active implementation step: `M38-A` (`IN_PROGRESS`) — Risk Board View
architecture contract and inventory. M37 Readiness View pilot and handoff
are closed; M38 is the next bounded extraction and changes no gameplay,
visual, Save or localization semantics.
The owner-requested target is a layered Passive View + Presenter/ViewData +
Domain/Application Service architecture with an explicit Router/Context
boundary. `entry_shell.gd` will be reduced incrementally, starting with the
+12
View File
@@ -3781,3 +3781,15 @@ they are not duplicated here.
in `docs/runtime/M37_READINESS_PAGE_VIEW_VISUAL_AUDIT.md`.
- M37 is complete. No later View migration is active; a separate durable plan
is required for the next extraction.
### 2026-08-25 - M38 Risk Board Page View Refactor Activated
- M37 Readiness View is closed. The next Owner-requested architecture
milestone is `M38_RISK_BOARD_PAGE_VIEW_REFACTOR`, recorded in
`docs/plans/M38_RISK_BOARD_PAGE_VIEW_REFACTOR.md`.
- M38 targets only RSK-001 Risk Board. It preserves the accepted custom 16:9
composition, static master, frozen four-member Party header, three sourced
options, no-auto-selection boundary, local selection, Review/Back/Settings
commands, focus order and normal `100%` presentation.
- M38-A is the sole `IN_PROGRESS` step. Risk Commitment, Battle, Economy,
Save, packaging and 130% scope remain frozen.
@@ -0,0 +1,140 @@
# M38 Risk Board Page View Refactor
## Status
- Plan: `M38_RISK_BOARD_PAGE_VIEW_REFACTOR`
- Status: `IN_PROGRESS`
- 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
```text
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 (`IN_PROGRESS`)
- 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.
### M38-B — Passive View extraction (`PENDING`)
- 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.
### M38-C — Focused verification (`PENDING`)
- 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.
### M38-D — Handoff (`PENDING`)
- 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.
## 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`