7.8 KiB
M43 Guild Page View Refactor
Status
- Plan:
M43_GUILD_PAGE_VIEW_REFACTOR - Status:
COMPLETE - Activated: 2026-08-26
- Baseline:
975c77d(M42_CONTRACT_CHOICE_VIEW_PILOT_COMPLETE) - Owner authorization: continuation of the Owner-authorized layered Passive View + Presenter/ViewData + Domain/Application Service architecture. The next bounded extraction is the accepted HUB-001 layered Guild desk.
Objective
Extract the live layered Guild desk from entry_shell.gd into a passive,
UI-only ABGGuildPageView while preserving the accepted world/rail/actor
composition, empty/active/returned Contract states, destination locks,
Title/Settings/Roster commands, focus/touch targets and normal 100% output.
This is a structural View migration, not a Guild visual redesign or a change to Contract, Market, Party, Risk, Battle, economy, Save or localization semantics.
Target boundary
EntryShell / composition root
-> GuildPageController.snapshot()
-> presentation-ready Guild ViewData
-> ABGGuildPageView.render(ViewData)
-> explicit destination/utility intents
-> EntryShell application and route boundaries
Player-visible stopping point
- The player sees the same accepted HUB-001 layered world, fixed rail caps, engine-rendered Company/pressure/Coin values, two-member muster and kiosk copy at the same normalized anchors.
- Empty, active and returned Contract states keep the same truthful enabled / disabled destination controls and reason text.
- Title, Settings, Roster, Contract Board, Market, Party and Risk controls preserve their existing targets and routes. Disabled controls remain disabled rather than emitting an intent.
- The View receives a copied
GuildPageController.snapshot()and emits only explicit utility/destination intents. It owns no service, persistence or route state.
Frozen semantic nodes
GuildMasterWorldExtension, GuildMasterDesignCanvas,
GuildMasterLayeredWorld, GuildAnchorRoot, GuildTopRail and its three
segments, GuildBottomRail and its three segments, GuildTitlePlate,
GuildAnchorTitle, GuildAnchorStatus, GuildProgressStatus,
GuildCoinStatus, GuildAnchorCompanyStatus, GuildSettings, GuildTitle,
GuildRoster, GuildMemberPortraitTexture_0/1,
GuildMasterIdentityPlate0/1, GuildMasterKioskTexture,
GuildKioskCopyArea, GuildKioskText, GuildContractReason,
GuildMarketReason, GuildNotice, GuildRosterButton, GuildEquipment,
GuildParty, GuildRisk, GuildContractBoard/GuildContractActive,
GuildMarket/GuildMarketUnavailable, hidden command labels and the two
historical invisible sticker markers remain stable.
Intent boundary
The View emits only:
title
settings
roster
equipment
party
risk
contract
market
Enabled destination commands carry no mutable Company payload; EntryShell uses its current Company and the existing service/controller boundaries.
Forbidden View dependencies
The View must not import or call GuildContractService, persistence,
RuntimeContentRegistry, the compatibility facade, current_screen,
entry_shell.gd, or EntryShell globals. GuildPageController remains
outside the View and supplies copied facts.
Ordered steps
M43-A — Architecture contract and inventory (COMPLETE)
- Freeze the accepted layered Guild stopping point, node tree, normalized canvas/aspect policy, responsive typography, focus/touch targets, state branches and destination intent map before Runtime product changes.
- Record the existing HUB-001/DEV-3 normal capture family as the immutable
equivalence target. Blocking scope is normal
100%landscape at760x360/zh_CN,844x390/en,1280x720/zh_CNand1280x720/en;130%remains non-blocking. - Commit and push this activation boundary before View code.
Activation baseline: source-bound attempt
m43-guild-baseline/20260826T014743Z-34444 passes
ABG_HUB001_LAYERED_OK, ABG_DEV3_GUILD_OK and four normal
ABG_DEV3_CAPTURE_OK terminals, followed by ABG_HUB001_CANDIDATE_OK with
strict diagnostics 0, 24 captures and owned cleanup. Baseline source is
975c77db2aa742189fca1edf4c066ab66370c252; evidence archive SHA-256:
c8c9c017bbca46eb6fdc2d148af019e4981f4dfcd5102f556215159d8f8ec958.
M43-A is complete at the activation boundary. The live
_show_guild_master_composite_exact() composition, normalized 16:9 canvas,
rail/actor/kiosk inventory, state branches, focus/touch targets and
eight-intent boundary are frozen without Runtime product changes.
M43-B — Passive View extraction (COMPLETE)
- Add
runtime/entry/views/guild_page_view.gdand an isolated View contract test. - Move only the layered Guild node construction, responsive canvas/layout, presentation and focus into the View. Keep the controller snapshot, application services and route semantics in EntryShell.
- Translate deferred utility/destination intents in EntryShell and remove only the extracted active Guild builders/helpers.
Closure: source 5220acb adds ABGGuildPageView, mounts it from EntryShell,
removes only the extracted Guild UI builders and translates the eight explicit
utility/destination intents. Controller, current Company, routing, services,
Contract/Market/Party/Risk, persistence, gameplay and localization semantics
remain unchanged.
M43-C — Focused verification (COMPLETE)
- Run the View contract, M20 controller/runtime, DEV-3 Contract/Market/Hire
regressions, layered reconstruction and responsive Guild checks with strict
diagnostics
0and exact-once markers. - Run the source-bound DEV-3 candidate and full MVP first-cycle audit.
- Compare the four required normal
100%Guild captures against the M43-A baseline at byte and decoded-pixel level.
Closure: source-bound focused attempt m43-guild-view-focused-v2/20260826T021613Z-65045
passes the isolated View contract, M20 controller/runtime, DEV-3
Contract/Market/Hire and M09/M10 regressions, HUB-001 layered reconstruction,
ABG_HUB001_CANDIDATE_OK, exact-once markers, strict diagnostics 0, 24
normal captures and owned cleanup. Full first-cycle audit attempt
m43-mvp-audit-v2/20260826T022147Z-70440 passes
ABG_M43_GUILD_VIEW_CONTRACT_OK and ABG_MVP_FIRST_CYCLE_AUDIT_OK exactly
once with strict diagnostics 0, 128 normal 100% frames, parsed touch and
owned workspace/process cleanup. The four normal Guild capture fixtures are
byte- and decoded-pixel-identical to the M43-A baseline (zero differing
pixels).
M43-D — Handoff (COMPLETE)
- Record source-bound evidence in
docs/runtime/M43_GUILD_PAGE_VIEW_VISUAL_AUDIT.md. - Close only the Guild View extraction. Contract Choice, Market, Company / Roster, Party, Risk, Battle, economy, Save, packaging and release remain outside this plan.
- Update the checkpoint and development ledger, then push the focused closure.
Closure: source 710dc6b records the source-bound audit, checkpoint and
ledger closure. M43 is complete; no later migration is active.
Frozen scope
- No Guild visual redesign, new assets/audio/animation or content changes.
- No changes to
GuildPageController, Contract receipts, Market, Party, Risk, Battle, economy, Save or localization semantics. - No global event bus, reflection-based service locator, two-way binding layer
or mass rewrite of
entry_shell.gd. - No deletion or staging of compatibility/history files,
.uid,.importorprototype_incremental/. - No packaging, iOS export, signing, deployment, store or release work.
Commit boundaries
M43-A: plan/checkpoint/ledger activation and baseline.M43-B: View and EntryShell integration.M43-C: focused verification/evidence.M43-D: handoff/closure.
Each boundary must pass its narrowest focused checks and be pushed before the
next step becomes IN_PROGRESS; a failed check keeps the same step active.
Final handoff
ABG M43 GUILD VIEW PILOT COMPLETE