docs: close M39 party line view pilot
Co-Authored-By: Codex <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user