5.4 KiB
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
ABGPartyLinePageViewimports only the passive View base, UI-onlyInitialCompanyArt,PartyLineTrack,PartyLineDiagramand 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_screenor EntryShell-global dependency. - EntryShell retains FormationRiskService begin/preview/Save transactions, local preview selection and swap state, Readiness handoff, settings caller context and route semantics.
PartyLineTracklayer ordering remains cord25, members30, effects35; 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.