AppStore(=旧 GameData 子集): setIdentity/setServers/setPhase/applyLogin - applyLogin 区分两类字段语义: * 身份字段(agentid/channelid/agentmode/gameversion)缺省保留旧值 * 显示字段(agentname)缺省重置为空字符串 - phase 仅由 session 驱动,applyLogin 不写 phase PlatformSession: 订阅 NetClient 事件总线 → 扇出到三 Store - 'open' → phase=connected - 'login'(state==0) → 三 Store 填充 + phase=loggedIn - 'login'(state!=0) → phase=loginFailed, 不污染 playerid/roomcode - 'reconnecting' → phase=reconnecting - 'slow' → phase=slow - 'kicked' → phase=kicked 110/110 tests pass, typecheck exit 0。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
framework — 框架真源(唯一权威副本)
各子游戏工程的 assets/framework 是指向本目录的 junction(见 scripts/setup-links.mjs)。
六层结构(依赖严格单向,详见 spec §3):core / net / protocol / platform / ui / sdk。
协议相关实现一律以 docs/protocol/ 为唯一信息源(spec §0.1),不在代码或注释中内联复制协议字段。