3.2 KiB
M35 Battle Result Page View — Source-Bound Audit
Scope
OUT-001 Battle Result was extracted from entry_shell.gd into the UI-only
ABGBattleResultPageView. EntryShell remains the composition root and
translates only deferred diagnosis and continue intents. The existing
ABGBattleResultPageController remains the authority for copied settled
result facts, decisive event, causal chain, economy totals, Knockout identity,
diagnosis state and continuation target.
The migration preserves the accepted M27 page. It does not alter Battle,
settlement, Reward, Knockout, Recovery, Economy, Save, localization or input
semantics. Normal 100% landscape is the visual scope; 130% text scale is not
a gate.
Source-bound evidence
| Check | Attempt / source | Result |
|---|---|---|
| View contract | m35-battle-result-view-contract-source-bound / 7ba4326c508d500d41ec115415833bdd0cf697ae |
PASS; ABG_M35_BATTLE_RESULT_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned workspace/process cleanup |
| Controller and route regressions | m35-battle-result-regression-source-bound / 7ba4326c508d500d41ec115415833bdd0cf697ae |
PASS; M27/M28/M29/M30 controllers, M12 domain/runtime and DEV-5 Result/Recovery markers exactly once; strict diagnostics 0 |
| DEV-5 candidate | m35-dev5-candidate / 7ba4326c508d500d41ec115415833bdd0cf697ae |
PASS; ABG_DEV5_CANDIDATE_SUITE_OK exactly once; 24 normal frames; parsed touch; strict diagnostics 0; archive SHA-256 26f50c5241cae0c48b8403c050840f2a08ba27ab7df367953c3cd8952c439161 |
| MVP first-cycle audit | m35-mvp-audit / 7ba4326c508d500d41ec115415833bdd0cf697ae |
PASS; ABG_MVP_FIRST_CYCLE_AUDIT_OK exactly once; 128 normal 100% frames; zh_CN/en; 760x360, 844x390, 1280x720; strict diagnostics 0; parsed touch/restart; archive SHA-256 dd495851df8f2c61fec00bef76dd98d0c88c6e6296c81fd9c593e5ef0f381fa5 |
All formal attempts used tools/run_test_attempt.py, owned source/HOME/cache/
TMP/browser roots, and removed their complete process groups and workspaces.
Visual equivalence
The four M35 Battle Result captures from the source-bound MVP archive were
compared with the M27 baseline archive
m27-mvp-audit/20260825T104853Z-98420:
760x360,zh_CN844x390,en1280x720,zh_CN1280x720,en
Each comparison reported same_bytes=true, bbox=None and zero changed
pixels. This is a structural equivalence check, not a replacement for Owner
visual acceptance.
Boundary audit
ABGBattleResultPageViewimports only the passive View base; no service, content registry, Save, compatibility facade or route-state dependency.- The View owns Godot nodes, layout, focus, local localization/formatting and diagnosis/Continue intent emission.
- EntryShell remains the composition root and uses a deferred intent connection, so page replacement does not free a locked Godot node.
- Controller snapshot, settlement receipts, diagnosis state and downstream Knockout/Reward/Recovery continuation remain unchanged.
Remaining scope
M35 closes only Battle Result. Knockout Review, Reward Choice, Recovery, Risk, Market, Guild, preparation and live Battle Views remain governed by their own plans or already-closed pilots; no later page migration is activated by this audit.