Files
aetherbound-guild/docs/runtime/M39_PARTY_LINE_PAGE_VIEW_VISUAL_AUDIT.md
T
2026-08-26 01:51:19 +08:00

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

  • 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.