Files
GaCy-GO/docs/cw-book-entry-recovery.md
T
2026-10-28 18:54:43 +07:00

4.4 KiB

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.