From 5fca587713fbcad9ebf580679ff389407dc96141 Mon Sep 17 00:00:00 2001 From: wusumac <736139669@qq.com> Date: Wed, 26 Aug 2026 00:42:23 +0800 Subject: [PATCH] docs: activate M38 risk board view refactor Co-Authored-By: Codex --- CURRENT_CHECKPOINT.md | 10 +- docs/06_DEVELOPMENT_AND_REVIEW.md | 12 ++ .../M38_RISK_BOARD_PAGE_VIEW_REFACTOR.md | 140 ++++++++++++++++++ 3 files changed, 157 insertions(+), 5 deletions(-) create mode 100644 docs/plans/M38_RISK_BOARD_PAGE_VIEW_REFACTOR.md diff --git a/CURRENT_CHECKPOINT.md b/CURRENT_CHECKPOINT.md index ee815580..39eccc88 100644 --- a/CURRENT_CHECKPOINT.md +++ b/CURRENT_CHECKPOINT.md @@ -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 diff --git a/docs/06_DEVELOPMENT_AND_REVIEW.md b/docs/06_DEVELOPMENT_AND_REVIEW.md index 27641767..75b2da8b 100644 --- a/docs/06_DEVELOPMENT_AND_REVIEW.md +++ b/docs/06_DEVELOPMENT_AND_REVIEW.md @@ -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. diff --git a/docs/plans/M38_RISK_BOARD_PAGE_VIEW_REFACTOR.md b/docs/plans/M38_RISK_BOARD_PAGE_VIEW_REFACTOR.md new file mode 100644 index 00000000..2dc5ae40 --- /dev/null +++ b/docs/plans/M38_RISK_BOARD_PAGE_VIEW_REFACTOR.md @@ -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` +