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

9.6 KiB

M46 MVP UI Consistency — Source-Bound Visual Audit

Scope and stopping point

M46 is a bounded presentation/component pass over the already playable MVP. It standardizes repeated command states, owned command icons, type/spacing tokens and notice/disabled surfaces without flattening the accepted page compositions. Market, Guild, Party/Readiness, Risk, Battle and Company keep their task-specific art masters, normalized 16:9 canvases and field-attached layout. Gameplay, economy, Contract/Battle rules, Save/Receipt semantics, routing, content identities and localization semantics were not changed.

Normal 100% landscape is the blocking visual scope. 130% evidence remains supplemental and non-blocking, as recorded in the Owner-approved repository contract.

Product migration source: ebc0c8f26c222d4764064e7998e3b143da727f4f. Foundation source: f736d7ac41a56feb50e9336f97faa5a6fa90c339.

Architecture boundary

  • ABGUI_Tokens, ABGUIFactory and ABGUIIcon remain presentation-only.
  • Passive Views consume copied Controller/ViewData snapshots and emit the same explicit deferred intents and stable semantic node names as before.
  • ABGPageView.set_command_state() is the shared disabled/selected state entry point for Company/Result/Recovery controls.
  • Market, Party, Readiness, Risk Board and Risk Commitment migrate repeated command chrome through the shared factory while retaining their local content controls, art masters and normalized geometry.
  • The shipped command glyphs for Settings, Back, Company, Coin, Equipment and action commands now use the owned vector icon grammar. Risk option glyphs remain content markers, not command chrome.
  • EntryShell remains the composition and application boundary; no mass rewrite or Router extraction was introduced.

Source-bound evidence

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

Check Attempt Result Evidence archive SHA-256
Shared foundation m46-ui-foundation-focused/20260826T122929Z-99785 at f736d7a PASS; ABG_M46_UI_FOUNDATION_OK exactly once; tokens, factory, icons, notices and touch checks; strict diagnostics 0; owned cleanup no retained evidence files
Market View contract m46-c-market_page_view_test/20260826T125129Z-22546 PASS; ABG_M41_MARKET_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
Party Line View contract m46-c-party_line_page_view_test/20260826T125152Z-22882 PASS; ABG_M39_PARTY_LINE_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
Readiness View contract m46-c-readiness_page_view_test/20260826T125211Z-23202 PASS; ABG_M37_READINESS_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
Risk Board View contract m46-c-risk_board_page_view_test/20260826T125229Z-23448 PASS; ABG_M38_RISK_BOARD_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
Risk Commitment View contract m46-c-risk_commitment_page_view_test/20260826T125245Z-23757 PASS; ABG_M36_RISK_COMMITMENT_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
Battle Result View contract m46-c-battle_result_page_view_test/20260826T125302Z-24054 PASS; ABG_M35_BATTLE_RESULT_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
Recovery View contract m46-c-recovery_page_view_test/20260826T125320Z-24295 PASS; ABG_M32_RECOVERY_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
Company View contract m46-c-company_page_view_test/20260826T125337Z-22545 PASS; ABG_M44_COMPANY_PAGE_VIEW_CONTRACT_OK exactly once; strict diagnostics 0; owned cleanup no retained evidence files
DEV-3 candidate m46-d-dev3-candidate/20260826T125502Z-25993 PASS; ABG_DEV3_CANDIDATE_SUITE_OK exactly once; 24 normal-render frames; parsed touch; strict diagnostics 0; owned cleanup 4525acf73eb155deeb9877bf5a3f6fc237abe4377e6b5a64b290e4dd6e867fc0
DEV-4 candidate m46-d-dev4-candidate/20260826T125705Z-28196 PASS; ABG_DEV4_CANDIDATE_SUITE_OK exactly once; 24 normal-render frames; parsed touch; strict diagnostics 0; owned cleanup 9ab49d9831ebdccc80ac32045af4e0af4b7864e561378c16e167b5e85210efaa
DEV-5 candidate m46-d-dev5-candidate/20260826T125831Z-29634 PASS; ABG_DEV5_CANDIDATE_SUITE_OK exactly once; 24 normal-render frames; parsed touch; strict diagnostics 0; owned cleanup bb77c47994940a0d3f93d7fe52c7fa4406779b69e0a2c0c7fec1d625d259f401
DEV-6 candidate m46-d-dev6-candidate/20260826T130007Z-31282 PASS; ABG_DEV6_CANDIDATE_SUITE_OK exactly once; 24 normal-render frames; parsed touch; strict diagnostics 0; owned cleanup f2c608563ed3a741dff6c466f5e8c641f151f22f92748846444c104ae0e803f4
MVP first-cycle audit m46-d-mvp-first-cycle-audit/20260826T130153Z-33276 PASS; ABG_MVP_FIRST_CYCLE_AUDIT_OK exactly once; 128 normal 100% frames / 180 evidence files; locales zh_CN,en; required viewports; parsed touch/restart; strict diagnostics 0; owned cleanup 5433de35ad94e3eaab5cd30b9d3c9db01cbb1c92dd5af35b1339fff969c4a413
Current Company captures m46-d-company-capture/20260826T132145Z-53462 PASS; ABG_M16_COMPANY_CAPTURE_OK exactly once; eight normal 100% Roster/Recruit Detail frames across all four fixtures; authored 44px target check; strict diagnostics 0; owned cleanup 9e8da00b61af5dba758c9387a61ee8fcb3cb4ec65720daeabb2ba4cffe621d14
Current Contract Return/Guild captures m46-d-contract-return-capture/20260826T132252Z-54509 PASS; ABG_M45_CONTRACT_RETURN_CAPTURE_OK exactly once; 12 normal 100% Market/Contract Return/Guild frames across all four fixtures; bounds, overlap and clipping checks; strict diagnostics 0; owned cleanup 1c43556f6ecfd3ab0f683ce4ca9a1a3afe338b2ea8d6e264afcfaefce581e2a0

The first Company capture invocation at 20260826T131211Z-44224 used an incorrect headless normal-render command and was interrupted during startup. It is retained only as a handled runner terminal and is not acceptance evidence. The corrected normal-render invocation above is the accepted capture set.

Normal 100% visual matrix

The accepted MVP audit supplies 128 normal frames across the first-cycle Market/Recruit, Party/Readiness/Risk, Battle Opening/Live, Result, Knockout, Reward, Recovery and restart states. Its capture fixtures cover:

  • 760x360 / zh_CN / 100%
  • 844x390 / en / 100%
  • 1280x720 / zh_CN / 100%
  • 1280x720 / en / 100%

The current Company capture set adds Roster and Recruit Detail for all four fixtures. The current Contract Return capture set adds Market, Contract Return Review and returned Guild for all four fixtures. Together the retained sets cover every M46 page family at the required normal viewports and locales; the DEV-3/4/5/6 candidate archives provide additional supplemental states and 130% fixtures.

Manual visual review

Representative full-resolution frames were extracted from the retained archives and reviewed at the required normal fixtures. Automated capture checks cover complete frame dimensions, viewport containment, authored touch targets and the relevant page-specific overlap/clipping assertions; manual review checked the same frames for hierarchy and visual drift.

Findings

  • Command language — PASS. Market, Party/Readiness, Risk, Result/Recovery and Company now read as one family through the shared navy/gold/ivory states, focus treatment, disabled contrast and owned Settings/Back/action icons.
  • Task composition — PASS. The Market right rail and field-attached exit, Party formation line, Risk parchment/cards and Battle field HUD remain distinct and readable. The consistency pass did not turn them into a card wall or replace their accepted art masters.
  • Notices and disabled states — PASS. Receipt/status notices use the same bordered surface language; disabled Continue/Begin Battle/return actions retain truthful muted state without obscuring the authored copy.
  • Responsive containment — PASS. The inspected short landscape and wide landscape frames keep the 16:9 masters centered/contained, with footer and right-rail controls inside the viewport. No visible clipping or command overlap was found in the reviewed frames; automated bounds checks cover the full capture sets.
  • Typography and density — PASS at the blocking scope. Engine-rendered values remain legible at normal 100%. Market and Risk Commitment retain intentionally compact fact copy inside their authored slots; the existing 130% fixtures remain supplemental and are not a M46 blocker.

Scope and repository checks

  • Existing semantic node names, explicit intents, focus order, routing and Save/Receipt behavior remain covered by the focused View contracts and the DEV/MVP suites.
  • No gameplay, economy, content, static-master, localization, packaging, device, signing, store or release work was started.
  • git diff --check passes. The only untracked files are Godot-generated .uid/.import metadata and prototype_incremental/, all retained per the repository contract and not staged.

Verdict

M46-C migration and M46-D verification satisfy the written stopping point. The MVP now has one coherent reusable command/icon/type/notice language while preserving its page-specific composition and runtime behavior.

ABG M46 MVP UI CONSISTENCY PASS COMPLETE