№ · 任务清单
CH.07.13
2026-07-13-w30-q3a-save-runtime-owner
⟦tag:v2|task|2026-07-13-w30-q3a-save-runtime-owner⟧
kind: task
id: 2026-07-13-w30-q3a-save-runtime-owner
lane: W30-Q3A-save-runtime
title: App 存档运行时契约恢复长工(无时间门)
objective: 在不改变玩法、存档语义、UI 或 R10 联机入口的前提下,清零全仓最后 5 条 TypeScript 错误并完成 Q5 合流验证。
scope: src/App.tsx 仅 4 个报错邻域,src/utils/playthroughVerification.ts,src/data/playthroughs/types.ts 及必要的直接 runtime/save type owner与定向 regression。
worker threadId: 019f5a7f-0965-72e1-a7d2-a01cb4bbd6fa
current state: verified / callback absorbed
blockers: none;Q3-A 文件锁已释放。
next action: 完成 W30 运行时 smoke 后收口 Q5。
callback absorbed:
- thread:
019f5a7f-0965-72e1-a7d2-a01cb4bbd6fa - files:
src/App.tsx四个报错邻域,src/utils/playthroughSlots.ts,src/utils/playthroughVerification.ts,src/utils/playthroughSlots.regression.ts - result:Q3-A
5 -> 0,全仓 lint PASS - save contract:当前
tables快照保留;旧 payload 缺tables时按areaExpansions重建 - verification:save 2/2,Auction 4/4,Buff 4/4,build PASS,
test:w2939/39,diff-check PASS - residual:W30 运行时 smoke 尚待执行;R10 owner review pending 非阻塞
prompt
角色:[长工]#W30-Q3A存档运行时契约恢复@v1.0
单一 Goal:清零最后 5 条类型错误,让全仓 lint 归零,且不改变玩家可见行为或存档语义。
当前 5 条
src/App.tsx:430:unknown 传给 number。src/App.tsx:1374,1414:构造PlaythroughRuntimeSaveData时缺tables。src/App.tsx:2852:unknown 缺stage收窄。src/utils/playthroughVerification.ts:211:构造存档数据时缺tables。
执行边界
- 读取
PlaythroughRuntimeSaveData和现有 runtime bridge 的唯一真值;不得用any、无依据断言或假默认值掩错。 - 旧存档缺字段必须走显式兼容默认/迁移;当前 runtime 写回必须保留真实
tables。 src/App.tsx只改上述报错邻域;严禁改 multiplayer tab、导航、布局、文案或其他 gameplay 分支。- 如需修改直接 type owner,先证明唯一 owner,最多扩 4 个文件并在回执说明。
- 不碰 Auction、Buff、Q3-B/Q4 文件、tools、计划、handoff index/shortlist 或 R10 checklist。
- 补存档 round-trip / legacy payload 定向 regression,覆盖缺
tables兼容与当前tables保留。
验收
- Q3-A
5 -> 0;cmd /c npm run lintPASS。 - 存档定向 regression 全过。
cmd /c npm run buildPASS。cmd /c npm run test:w2939/39 PASS。- Auction 4/4 与 Buff 4/4 继续通过。
- targeted
git diff --checkPASS。 - 回执列出类型收窄、tables 来源、兼容策略、实际文件与残余风险。