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

7.7 KiB
Raw Blame History

M44 Company Page View — Source-Bound Visual Audit

Scope and stopping point

M44 extracts the accepted DEV-6 Company Roster and Recruit Detail surfaces from entry_shell.gd into passive, UI-only Views. The existing framed composition, four-member list, stable Recruit IDs, selected facts, portraits, equipment/history presentation, dismissal eligibility, focus order, touch targets and Guild/Roster return routes remain unchanged.

This is a structural View migration only. Company facts and dismissal rules, Market/Contract transactions, Save, economy, localization, assets, audio, packaging and release semantics were not changed. Normal 100% landscape is the blocking visual scope; the Owner's normal-font rule means 130% text scale is supplemental and non-blocking.

Product integration source: 19bf1392ce72f744e0fc9de79ef6393d5f165b9b. Verification/documentation source: 687160dd17c1af8b40163af9a060d7792a0d52a2. Visual baseline source: 93164c87b845d3f0d6f1b64b6d1b06e7c4b8d66d.

Architecture contract

  • ABGCompanyRosterPageView owns only Godot node construction, local formatting, portraits, focus/hit areas and explicit deferred intents: select_recruit, open_detail, dismiss and back.
  • ABGRecruitDetailPageView owns only the Recruit Detail node tree, local formatting, portrait, focus/hit areas and explicit dismiss/back intents.
  • Both Views consume deep-copied payloads from ABGCompanyPageController.roster_snapshot() and recruit_detail_snapshot(). No mutable Company object crosses the View boundary.
  • EntryShell remains the composition root and application boundary for loading/saving Company state, dismissal review/transactions, selection refresh and route transitions.
  • Source contract coverage rejects service, persistence, compatibility, route-global and EntryShell dependencies in both Views. Historical .uid, .import and prototype_incremental/ files remain untouched.

Source-bound evidence

All formal attempts used tools/run_test_attempt.py with immutable source archives, owned HOME/cache/TMP/browser roots, strict marker accounting and complete process-group/workspace cleanup.

Check Attempt Result Evidence archive SHA-256
M44-A immutable Company baseline m44-company-baseline/20260826T032132Z-32104 at 93164c8 PASS; M16 controller, DEV-6 roster/detail and eight normal captures; required markers exact once; strict diagnostics 0; parsed touch and owned cleanup 43028f703434b5fe59a97153635b4a4500623ce7ee317c550c08b74699bcb86d
M44 View/controller/runtime focused verification m44-company-view-focused-final/20260826T042545Z-26176 at 687160d PASS; ABG_M44_COMPANY_PAGE_VIEW_CONTRACT_OK, ABG_M16_COMPANY_PAGES_OK, ABG_DEV6_ROSTER_OK, ABG_DEV6_GROWTH_OK, ABG_DEV5_RECOVERY_OK and ABG_M12_OUTCOME_RECOVERY_DOMAIN_OK each exact once; strict diagnostics 0; owned cleanup no retained evidence files
DEV-6 candidate m44-dev6-candidate/20260826T041521Z-84708 at 687160d BASELINE-KNOWN FAIL at contract_return_test.gd; all earlier DEV-1..6 checks through ABG_DEV6_ROSTER_OK pass, but the candidate terminal is correctly not accepted because M44-I01 remains unresolved outside this plan bad91af02d0d669f90daef5118e412bda2c2f0612c54b9c00d5315159699fdaa
Full MVP first-cycle audit m44-mvp-audit/20260826T041658Z-86713 at 687160d PASS; ABG_MVP_FIRST_CYCLE_AUDIT_OK exact once; 128 normal 100% frames / 180 evidence files across first-cycle pages; strict diagnostics 0; parsed touch/restart and owned cleanup 8d574499562a10625b96a3015f5e0b5648756e83c83cad533c7ac2cd859d0155
M44 Company capture set m44-company-capture-final/20260826T042045Z-21165 at 687160d PASS; ABG_M16_COMPANY_CAPTURE_OK exact once; eight frames (Roster + Recruit Detail × four fixtures); strict diagnostics 0; 44px authored touch target and owned cleanup 00786268880d94fe5573877ec54a5999a0de5f4095f0508df276786aa90a30e5

The DEV-6 candidate failure is not a View regression. The immutable M44-A baseline reproduces the same Contract Return boundary failure in m44-baseline-contract-return/20260826T040851Z-77954: the accepted Market surface has no MarketReturnContract control, and the legacy test then accesses active_contract.contract_return_receipts. M44 keeps Contract Return Shell-owned and does not widen the Company View migration to repair a second-cycle issue.

Four-fixture visual equivalence

The M44-A baseline and the M44 Company capture PASS contain the same eight filenames. Every PNG is byte-identical, and decoded RGBA comparison reports zero differing pixels (ImageChops bounding box None) at all four required fixtures/locales.

Fixture Baseline SHA-256 M44 capture SHA-256 Comparison
760x360 / zh_CN / 100% 8212c55f8c3973382be87cea5ded5e6a01476eda11f9ae5539cb171764aad079 (Roster)
5745dc364b8bca13d80c3c27e590904c8274681b98be9746d16e568b91dc7ce6 (Detail)
8212c55f8c3973382be87cea5ded5e6a01476eda11f9ae5539cb171764aad079 (Roster)
5745dc364b8bca13d80c3c27e590904c8274681b98be9746d16e568b91dc7ce6 (Detail)
byte-identical; zero pixel differences
844x390 / en / 100% 6cb8f4ffab1b4a0741e07380184165699031ed093399125565822633289a606c (Roster)
2bafe51b80e66863c727c070ffcca10e81cd02f2b8774976f53cc462fedd0e07 (Detail)
6cb8f4ffab1b4a0741e07380184165699031ed093399125565822633289a606c (Roster)
2bafe51b80e66863c727c070ffcca10e81cd02f2b8774976f53cc462fedd0e07 (Detail)
byte-identical; zero pixel differences
1280x720 / zh_CN / 100% 74d9eec56273dd9232a16d612538969ed12f6e9b0163a33b1e7581246c305a3c (Roster)
544053fd98b291ddd197f8a69c176f3786696db8189bcb92f7a106016013889e (Detail)
74d9eec56273dd9232a16d612538969ed12f6e9b0163a33b1e7581246c305a3c (Roster)
544053fd98b291ddd197f8a69c176f3786696db8189bcb92f7a106016013889e (Detail)
byte-identical; zero pixel differences
1280x720 / en / 100% d922a2d9cb798b3fafd3b443ddd94e04c4529298dece9088f13d8d4b28a48ad4 (Roster)
f1621e156f97089fbe1044540182955bc50574793e8865a5e7fabfff89cde984 (Detail)
d922a2d9cb798b3fafd3b443ddd94e04c4529298dece9088f13d8d4b28a48ad4 (Roster)
f1621e156f97089fbe1044540182955bc50574793e8865a5e7fabfff89cde984 (Detail)
byte-identical; zero pixel differences

No visible pixels were added or removed by the extraction. Stable identity, disabled dismissal states, portraits, engine-rendered values, focus targets and the authored 44px short-screen controls remain equivalent to the baseline.

Boundary audit

  • show_roster() and show_recruit_detail() now mount the passive Views after the Controller snapshot is prepared; the former Roster/Detail builders were removed from EntryShell.
  • Selection updates only the local stable Recruit ID and re-renders through a fresh Controller snapshot. Detail and dismissal intents carry only the stable Recruit ID.
  • Last-member and non-Market dismissal guards remain Controller-owned and are truthfully reflected by disabled controls/tooltips.
  • Missing Company/Recruit snapshots render deterministic non-interactive fallback overlays without mutating persistence.
  • The accepted hand-drawn runtime direction and linear-filtered assets remain unchanged; no pixel-art conversion, nearest-neighbor filtering or redesign was introduced.

Handoff boundary

M44 closes only the Company Roster and Recruit Detail View extraction. Dismissal Review, voluntary Contract Return (M44-I01), second-cycle systems/content, regions, endgame, device testing, packaging, signing, store/release and human comprehension/fun acceptance remain outside this plan and require a separately authorized plan or gate.

ABG M44 COMPANY PAGE VIEW PILOT COMPLETE