架构:点击 → 语义化发包 → RpcHelper;推送 → 唯一分发入口 → 一 rpc 一 handler → 写 GameState → emit 语义事件。handler 不引用任何 UI 组件,故 B 可脱离 C 独立完成与测试。 GameState 只镜像不派生、字段名对齐协议、缺字段不兜底。事件只带「发生了什么」, 数据由订阅者从 GameState 读,避免同一份数据两处存。 两条核心验收把红线变成断言:增量累积与 deskinfo 全量重建必须完全相等 (即「视图 = f(服务端快照)」);发包字段集合不含任何结论字段。 测试数据用服务端 _rpc.js 脚手架捕获的真实下发包,不手写假包。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>