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

5.3 KiB

M42 Contract Choice Page View Visual Audit

Scope and stopping point

M42 extracts the first-cycle Contract Choice page from entry_shell.gd into the passive ABGContractChoicePageView. The existing framed content-scene composition, First Windglass Crossing facts, two Company portraits, four difficulty options, local selection, Confirm/Cancel boundary and normal 100% presentation remain unchanged. This is a structural View migration; Contract creation, economy, Guild, Market, Hire, Save, localization, packaging and release semantics were not changed. 130% text scale remains non-blocking.

Product integration source: 885506f36f0906d09d28d4c89387ea4ad8f80dcb. Source-bound verification source: da94e8aa1655f7eef513dab8d5ddf8cfbd2389bc. Visual baseline source: 1eea77927adfabc91f48d18a57bb4fc1d356c940.

Architecture contract

  • ABGContractChoicePageView owns the world background/shade, framed content scene, ContractChoiceLayout tree, Company portrait presentation, local difficulty controls, focus and explicit select_difficulty/confirm/back intents.
  • The View consumes the copied ABGContractChoicePageController.snapshot() data and has no service, persistence, content-registry, compatibility facade, route-state or EntryShell dependency.
  • ABGContractChoicePageController remains the copied-facts authority for Company/recruit presentation, route facts, starting Coin, Line capacity, Market counts, localized difficulty options and Confirm eligibility.
  • EntryShell remains the composition root. It translates deferred intents to the existing local selection, return-to-Guild and transaction boundaries.
  • GuildContractService.create_contract remains the only Contract mutation and receipt authority. Difficulty selection remains local and Cancel creates no receipt.

Verification attempts

All accepted formal attempts used tools/run_test_attempt.py, immutable source archives, strict diagnostics and owned workspace/process cleanup. Required markers were checked exactly once.

Check Attempt Result Evidence archive SHA-256
View/controller/runtime/route focused regressions + four Contract Choice captures m42-contract-choice-view-focused/20260826T012727Z-9347 PASS; ABG_M42_CONTRACT_CHOICE_VIEW_CONTRACT_OK, ABG_M19_CONTRACT_CHOICE_CONTROLLER_OK, ABG_DEV3_GUILD_OK, ABG_DEV3_MARKET_OK, ABG_DEV3_HIRE_OK, ABG_M09_MARKET_RUNTIME_OK, ABG_M10_RECRUIT_REVIEW_OK and ABG_M19_CONTRACT_CHOICE_CAPTURE_OK exactly once; strict diagnostics 0 5267f40bcd81faaa869f9e643c7ba45ae9688170386d4f6fbf946a82834a7c81
DEV-3 candidate m42-dev3-candidate/20260826T012905Z-10989 PASS; ABG_M42_CONTRACT_CHOICE_VIEW_CONTRACT_OK and ABG_DEV3_CANDIDATE_SUITE_OK; 24 normal captures; parsed touch; strict diagnostics 0 551ac7447e7e43de4f5763135423d3fac147be5bf5745ba0e34cdbc5efe8fdda
Full MVP first-cycle audit m42-mvp-audit/20260826T013040Z-12739 PASS; ABG_M42_CONTRACT_CHOICE_VIEW_CONTRACT_OK and ABG_MVP_FIRST_CYCLE_AUDIT_OK; 128 normal 100% frames across zh_CN/en and 760x360/844x390/1280x720; parsed touch; strict diagnostics 0 8070b321fecbe91677261d6130ef082b2849249e8e2c18d26d32af9d6a52948e
Immutable M19 baseline capture set m42-contract-choice-baseline/20260826T011055Z-61940 PASS from baseline source 1eea779; ABG_M19_CONTRACT_CHOICE_CONTROLLER_OK, ABG_DEV3_GUILD_OK and ABG_M19_CONTRACT_CHOICE_CAPTURE_OK; four normal captures; strict diagnostics 0 be4bd5ea328abde9516b6688cd7e9db3291e239d216c10421c838236f5d52e45

Four-fixture visual equivalence

The accepted M19 baseline and the M42 PASS capture were extracted from their evidence archives and compared byte-for-byte. Every required normal 100% fixture is byte-identical; decoded pixel differences are zero for all rows.

Fixture Baseline SHA-256 M42 SHA-256 Comparison
760x360 / zh_CN 9648ead00847ce8b157202a3d678540b6463d2c0fb7fb4adba0dff2eb4a32f01 9648ead00847ce8b157202a3d678540b6463d2c0fb7fb4adba0dff2eb4a32f01 byte-identical; zero pixel differences
844x390 / en 3af5fcb059666fecb91ae31d7d4f0879aca79071a19368b4d53853baf00e1f25 3af5fcb059666fecb91ae31d7d4f0879aca79071a19368b4d53853baf00e1f25 byte-identical; zero pixel differences
1280x720 / zh_CN 4b12f9248ded5ffb0621bda546477451e2b426385f808cf8f4ccfdd5086c83c5 4b12f9248ded5ffb0621bda546477451e2b426385f808cf8f4ccfdd5086c83c5 byte-identical; zero pixel differences
1280x720 / en 7d5b8f358e3255130ec5bfa699cd0f150f5dcdebab16e195c087965a93783db5 7d5b8f358e3255130ec5bfa699cd0f150f5dcdebab16e195c087965a93783db5 byte-identical; zero pixel differences

The View preserves the original four difficulty node identities and the same focus/touch targets. No visible Settings control or other pixels were added by the extraction.

Handoff boundary

M42-C verification is complete. Contract Choice is now a passive ABGContractChoicePageView with explicit deferred intents while Controller, Contract creation, Guild/Market routes and all gameplay/economy/Save semantics remain unchanged. M42-D may close only this View extraction; Guild, Company/Roster, Battle, second-cycle systems/content, device/package/signing, store and human comprehension/fun gates remain outside this plan.

ABG M42 CONTRACT CHOICE VIEW PILOT COMPLETE