# CW Go button recovery — 2026-10-26 ## Current evidence The user reports Go from both the handbook and activity page does nothing, with no outgoing teleport command. Current Client identity is assembly SHA256 `4aa08a0706f27d2cf9951b61920c179140ece9ea94f7e34422c18e46922939b6`. Two exact named baked modules were captured passively without executing their returned loader closures: - `Ui.DailyMission.Rogue.GridFight.HandbookRogueGridFightTabItem` - `Ui.DailyMission.Rogue.HandbookRogueGotoBtnBehaviour` The common superclass was also captured: `Ui.Activity.CommonComponents.CommonActivityGotoBtnBehaviour`. Raw chunks and parsed Luau v4 representations are in `.runtime/named-baked-capture/cw-{handbook,handbook-goto,common-goto}-current.*`. `string.dump` is absent in this Client; that failed probe is not evidence that the named callbacks are missing. `debug.getupvalue` is available. The handbook's `_on_click_go` calls `ActivityModule:GetPanelData(_GRID_FIGHT_CONSTANTS.ActivityID)`, passes the result to its behaviour and calls `on_btn_go`. Read-only current observations: - ActivityID and PanelID: 71101. - ContentID: 171002. - Panel type: `RPG.Client.GridFightActivityData`; panel/state are present. - `IsSkipSwitchStoryLine=false`. - `StateData.CurState=PreGuide` (enum value 2). This disproves the earlier-session nil-panel explanation for the present failure. The unrelated missing Tourn Rogue resident-panel warning is not used as proof of the CW cause. ## Missing native guide prerequisite The exact live `ActivityPanelConditionRow` is retained in `battle_diagnostics/cw-book-entry-20261026/condition-row.json`: - PreConditions: level 21 and FinishMainMission 1034109. - GuideConditions: FinishMainMission 8047206. - GuideGoto: 6417; ActivityGoto: 6418; GuideTakeMission: 0. The current common Go behaviour dispatches a PreGuide panel through its guide path, rather than its InProgress ActivityGoto path. This server's initial GetMissionData advertises the 148 function-unlock missions from the older export. Its list contains 1034109 and the older CW introduction 8037100, but omits 8047206. The latter is present in `resources/MainMission.json`. Publishing all 2,205 imported main missions is unnecessary and is not part of the fix. ## Source correction `resources/CurrencyWarsActivityConditions.json` retains the captured condition row, named condition enum mapping, capture digest and the explicit older-base to-current-activity-capture provenance. It declares the scoped freeplay policy `complete_declared_guide_finish_main_missions`. `LoadCurrencyWarsGuideMissions` reads this resource without modifying a save. It validates source/target identity, active CW panel membership, supported condition kind and mission existence. `getMissionUnlocks` appends only these validated guide prerequisites, deduplicated, to its existing function-unlock view. GetMissionData and GetMissionStatus therefore agree. The expected initial finished-main count becomes 149. No Client CurState field is forced, no scene or callback is invoked, and unrelated missions/inventory/progression are not rewritten. `go build ./internal/gameserver` passed. No tests or deployment were performed by this subtask. Actual native transition to InProgress and successful Go teleport require confirmation after the updated mission view reaches the Client. ## Integrated validation The parent built and deployed standard/shipping Game and SDK binaries and restarted the root servers. Fresh GetMissionData logged 149 finished main missions, with the existing 14,716 sub-missions and 68 exclusions preserved. The user then confirmed Go teleport works. Server evidence records an actual EnterScene request and resolved CW entry 2032202, rather than a success-only button response. This confirms the tested entry path; it does not establish completion of CW's remaining Tea Break/route/reward gameplay. All temporary probe copies were removed from scripts/ and the passive Frida session was detached. Ping colors was also independently user-confirmed in this build: matching bar/digit colors and no flashing on digit changes. ## Diagnostic cleanup notes Research tools remain under `tools/`. The parent owns removal of intentionally staged `cw_book_condition_row.lua` and the metadata/panel-state probe copies from `scripts/`. A finished top-level Lua probe must never use a bare `return` inside an outer `do` block: that returns from the entire concatenated heartbeat chunk. Use a local function/tick boundary for early returns instead.