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,ABGUIFactoryandABGUIIconremain 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 existing130%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 --checkpasses. The only untracked files are Godot-generated.uid/.importmetadata andprototype_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