docs: close M39 party line view pilot

Co-Authored-By: Codex <noreply@anthropic.com>
This commit is contained in:
2026-08-26 01:51:19 +08:00
co-authored by Codex
parent cf14bc8e3d
commit bd2bf456df
4 changed files with 111 additions and 8 deletions
+5 -3
View File
@@ -14,8 +14,11 @@
## Current State
- Stage: `M39_PARTY_LINE_PAGE_VIEW_REFACTOR`
- Active implementation step: `M39-C` (`IN_PROGRESS`) — Party Line focused
verification, source-bound regressions and normal-capture equivalence.
- Active implementation step: none. `M39_PARTY_LINE_PAGE_VIEW_REFACTOR` is
complete at source `cf14bc8`: the source-bound View/controller/route
regressions, DEV-4 candidate, MVP audit and four-fixture normal `100%`
Party Line capture equivalence all pass with strict diagnostics `0`,
recorded in `docs/runtime/M39_PARTY_LINE_PAGE_VIEW_VISUAL_AUDIT.md`.
M39-B is complete at source `0d59caa`; M39-A is complete at source
`dfddb17`. M38 is complete at source `0fea312`;
its source-bound contract, regressions, DEV-4 candidate, MVP audit and
@@ -23,7 +26,6 @@
diagnostics `0`, recorded in
`docs/runtime/M38_RISK_BOARD_PAGE_VIEW_VISUAL_AUDIT.md`. M39 changes no
gameplay, visual, Save or localization semantics.
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
+19 -2
View File
@@ -3835,5 +3835,22 @@ they are not duplicated here.
builders/helpers are removed, and deferred `select_member`/`undo`/`reset`/
`save`/`back` intents preserve the existing application boundary. The
focused View contract and DEV-4 Party regression pass with strict
diagnostics `0`. M39-C is now the sole `IN_PROGRESS` step for source-bound
regressions and normal-capture equivalence.
diagnostics `0`. M39-C is complete: source-bound View/controller/route
regressions, the DEV-4 candidate and full MVP first-cycle audit pass with
strict diagnostics `0`, and opening/preview-swap Party Line captures are
byte-equivalent to the M21 baseline at all four fixtures/locales. Evidence
is recorded in `docs/runtime/M39_PARTY_LINE_PAGE_VIEW_VISUAL_AUDIT.md`.
M39-D closes at source `cf14bc8`; no later View migration is active.
### 2026-08-25 - M39 Party Line Page View Pilot Closed
- M39-D closes at source `cf14bc8`. Party Line is now a passive
`ABGPartyLinePageView` with deferred five-intent wiring; FormationRiskService,
preview-only swaps, Save/Readiness handoff, formation rules and route
semantics remain unchanged.
- The source-bound contract, focused regressions, DEV-4 candidate, MVP audit,
normal capture set and eight-state/four-fixture byte-equivalence evidence
are recorded in
`docs/runtime/M39_PARTY_LINE_PAGE_VIEW_VISUAL_AUDIT.md`.
- M39 is complete. No later View migration is active; a separate durable plan
is required for the next extraction.
@@ -3,7 +3,7 @@
## Status
- Plan: `M39_PARTY_LINE_PAGE_VIEW_REFACTOR`
- Status: `IN_PROGRESS`
- Status: `COMPLETE`
- Activated: 2026-08-25
- Baseline: `0fea312` (`M38_RISK_BOARD_PAGE_VIEW_REFACTOR_COMPLETE`)
- Owner authorization: the Owner asked to continue decomposing Entry pages
@@ -96,7 +96,7 @@ EntryShell, removes the Party Line master builders/helpers and wires deferred
and DEV-4 Party regression pass with strict diagnostics `0`; the fixture-0
Party Line frames are byte-equivalent to the M21 baseline.
### M39-C — Focused verification (`IN_PROGRESS`)
### M39-C — Focused verification (`COMPLETE`)
- Run the View contract, M21 controller, DEV-4 Party/Readiness/Risk,
Formation and downstream route regressions through the owned test-attempt
@@ -105,7 +105,13 @@ Party Line frames are byte-equivalent to the M21 baseline.
- Compare normal Party Line captures with the M21 baseline at all four
required fixtures/locales.
### M39-D — Handoff (`PENDING`)
Closure: source-bound attempts from source `cf14bc8` pass the View,
controller and route regressions, DEV-4 candidate and full MVP audit with
strict diagnostics `0`. Opening and preview-swap Party Line captures are
byte-equivalent to the M21 baseline at all four fixtures/locales. Evidence is
recorded in `docs/runtime/M39_PARTY_LINE_PAGE_VIEW_VISUAL_AUDIT.md`.
### M39-D — Handoff (`COMPLETE`)
- Record source-bound evidence and visual equivalence in
`docs/runtime/M39_PARTY_LINE_PAGE_VIEW_VISUAL_AUDIT.md`.
@@ -114,6 +120,10 @@ Party Line frames are byte-equivalent to the M21 baseline.
- Update the checkpoint and development ledger, then push the focused
closure.
Closure: the source-bound audit and ordered scope boundary are recorded in
`docs/runtime/M39_PARTY_LINE_PAGE_VIEW_VISUAL_AUDIT.md`. M39 is complete; no
later View migration is activated by this plan.
## Frozen scope
- No FormationRiskService, formation rule, Company, Contract, Risk, Battle,
@@ -0,0 +1,74 @@
# M39 Party Line Page View — Source-Bound Audit
## Scope
The accepted Party Line preparation page was extracted from `entry_shell.gd`
into the passive UI-only `ABGPartyLinePageView`. The View owns the normalized
16:9 canvas, static master, `PartyLineDiagram`, `PartyLineTrack` cord/effects
layers, portraits, focus and local presentation. EntryShell remains the
composition root and translates only deferred `select_member`, `undo`,
`reset`, `save` and `back` intents. `ABGPartyLinePageController` remains the
authority for copied Company, Contract, Formation, ordered Recruit,
relation/coverage/threat and command facts.
The migration preserves the accepted M21 Party Line. It does not alter
FormationRiskService, formation rules, Save/receipt semantics, Readiness,
Risk, Battle, localization or input behavior. Normal `100%` landscape is the
visual scope; 130% text scale is not a gate.
## Source-bound evidence
All formal attempts used `tools/run_test_attempt.py` with immutable source
archives, owned HOME/cache/TMP roots, strict diagnostics and complete
process-group cleanup. The verification source was
`cf14bc8e3de7e9c3c22a3e78b192618161d1989e`.
| Check | Attempt | Result |
| --- | --- | --- |
| View/controller/route regressions | `m39-party-line-regression-source-bound` / `20260825T173959Z-47357` | PASS; `ABG_M39_PARTY_LINE_VIEW_CONTRACT_OK`, `ABG_M21_PARTY_LINE_CONTROLLER_OK`, DEV-4 Formation/Party/Readiness/Risk, RSK-002, DEV-5 Opening/UI and M12 markers exactly once; strict diagnostics 0; workspace removed |
| DEV-4 candidate | `m39-dev4-candidate-source-bound` / `20260825T174107Z-48417` | PASS; `ABG_DEV4_CANDIDATE_SUITE_OK` exactly once; 24 normal frames; parsed touch; strict diagnostics 0; evidence archive SHA-256 `2756f48c217c68ea431c4ef16e54a6bcaf6ac491664d9322f77f7aa667d31151` |
| Normal Party Line capture set | `m39-party-line-capture-source-bound-100` / `20260825T174736Z-55273` | PASS; `ABG_M39_PARTY_LINE_CAPTURE_SET_OK` exactly once; 24 retained frames with four Party Line fixtures at text scale 100%; strict diagnostics 0; evidence archive SHA-256 `3815f964d6574a825e0c83322ebd656e1de59836f122255f0283f47621f76111` |
| MVP first-cycle audit | `m39-mvp-audit` / `20260825T174325Z-50779` | PASS; `ABG_MVP_FIRST_CYCLE_AUDIT_OK` exactly once; 180 evidence files and 128 normal `100%` frames; `zh_CN`/`en`; `760x360`, `844x390`, `1280x720`; strict diagnostics 0; evidence archive SHA-256 `7f923114e1987e47d3534d2445d51f92212c08d891a510ed40d0bee05aa99853` |
## Visual equivalence
The four M39 Party Line capture fixtures were compared with the M21 baseline
archive `m21-mvp-audit/20260825T060057Z-48953` (source `0c44800`). Both the
opening `party_line` state and the preview `party_swapped` state are
byte-identical and have zero decoded-pixel differences at every fixture.
| Fixture | State | M21 baseline SHA-256 | M39 SHA-256 | Equal |
| --- | --- | --- | --- | --- |
| `760x360 zh_CN` | `party_line` | `309b76a1f65d4b7ea941ae88c7d46f0d31583bcfa2945d3eca79cf0d11a252d9` | `309b76a1f65d4b7ea941ae88c7d46f0d31583bcfa2945d3eca79cf0d11a252d9` | yes |
| `760x360 zh_CN` | `party_swapped` | `a171d00e20657f23d8592e33649e3fa56e06f09f4cc05b6c9d61e0c73164b080` | `a171d00e20657f23d8592e33649e3fa56e06f09f4cc05b6c9d61e0c73164b080` | yes |
| `844x390 en` | `party_line` | `1c0db2a5cec21c4a84aba5d928a843c1f3c56f64a3ed0a8f0ba1d0f07286f159` | `1c0db2a5cec21c4a84aba5d928a843c1f3c56f64a3ed0a8f0ba1d0f07286f159` | yes |
| `844x390 en` | `party_swapped` | `fe8582c5511bfda876909b35015f05bf31ac34a4da04b564c0e4894d04db39f8` | `fe8582c5511bfda876909b35015f05bf31ac34a4da04b564c0e4894d04db39f8` | yes |
| `1280x720 zh_CN` | `party_line` | `f95f179f1d952091edfa470518c2ff1814b4a89e8bbb2b5c5b90313d608728c1` | `f95f179f1d952091edfa470518c2ff1814b4a89e8bbb2b5c5b90313d608728c1` | yes |
| `1280x720 zh_CN` | `party_swapped` | `5f386ffaa530e3d00d755372fb8dbc216fbc231bda7dd75f7b973c0ac7d11613` | `5f386ffaa530e3d00d755372fb8dbc216fbc231bda7dd75f7b973c0ac7d11613` | yes |
| `1280x720 en` | `party_line` | `d53a577faca993f71973d9b9a3e1afdd2a32e781caae3e1e6cb5db177afdcf9d` | `d53a577faca993f71973d9b9a3e1afdd2a32e781caae3e1e6cb5db177afdcf9d` | yes |
| `1280x720 en` | `party_swapped` | `12c1d21a6f6345dae95339224f4b149796110f48d9ae3e3a182eb00bb5c45231` | `12c1d21a6f6345dae95339224f4b149796110f48d9ae3e3a182eb00bb5c45231` | yes |
This is a structural equivalence check, not a replacement for Owner visual
acceptance.
## Boundary audit
- `ABGPartyLinePageView` imports only the passive View base, UI-only
`InitialCompanyArt`, `PartyLineTrack`, `PartyLineDiagram` and the approved
Party Line static master.
- The View owns Godot nodes, normalized layout, diagram/track rendering,
focus, local localization and formatting; it emits only the five named
intents.
- It has no FormationRiskService, persistence, RuntimeContentRegistry,
compatibility-facade, `current_screen` or EntryShell-global dependency.
- EntryShell retains FormationRiskService begin/preview/Save transactions,
local preview selection and swap state, Readiness handoff, settings caller
context and route semantics.
- `PartyLineTrack` layer ordering remains cord `25`, members `30`, effects
`35`; command rail behavior and focus order remain unchanged.
## Remaining scope
M39 closes only Party Line. Readiness, Risk Board, Risk Commitment, Market,
Guild and Battle semantics remain outside this plan. No packaging, iOS export,
signing, deployment, store or release work is included.