Files
aetherbound-guild/docs/runtime/M35_BATTLE_RESULT_PAGE_VIEW_VISUAL_AUDIT.md
T

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_CN
  • 844x390, en
  • 1280x720, zh_CN
  • 1280x720, 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

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