任务:W29 收尾超额周派工 — 管家执行指令(2026-07-13 立即起 · 流水化)
拍板时间:2026-07-13 10:48 +08:00(v0.2 升级) 拍板人:P1(主会话用户,指令"按 ze + 不要做时间阀,做完就开工 不要等") 派工人:Mavis(PM 视角,本会话) 执行人:管家(你) 真相源(必读):
docs/plans/active/2026-07-13-5日开发计划-v1.md(v1.1 剧情 P0 增补版) 回执对象:P1 短消息 1-3 行(流水回执)
0. 拍板证据链
P1 7.13 10:25 收到"工作量太少"反馈 → 10:43 拍板"按 ze":
z= 全收 6 个新 lanee= 加 联机 P2P 房间骨架 v1.0 文档 sync 任务
→ P1 7.13 10:48 追加 v0.2 升级:
- 删时间阀(原 § 3.4 7.13 14:00 / 7.14 09:00 / 7.15 14:00 / 7.16 09:00 等日历门全部取消)
- 改流水化:做完就开工,不卡日历
- T+0 立即起:2026-07-13 10:48+ 立即派 R14,不等
→ 6+1=7 个 lane,总产能 ~ 38h,流水化派工,7.13 立即起跑。
6+1 lane 列表:R14 跨周目 v1.1 锚点 / R13 旧账风波节点大纲 / W30 5 日计划草案(PM 自跑) / T3 装备字段补齐 / R10 真实手验补全 / 联机骨架 v1.0 文档 sync / R11 W29 收口。
1. 你的身份与目标
你是 W29 收尾超额周派工管家。T+0 立即起(2026-07-13 10:48+)。
核心目标:派 6 个独立短工 session + 自跑 1 个 PM 视角文档 lane:
- 6 个新 lane(R14 / R13 / T3 / R10-followup / 联机骨架 sync / R11 收口)
- 1 个 PM 视角文档 lane(W30 5 日计划草案,我自己跑,不派工)
流水化派工:派 → 跑 → 收口 → 立即派下一个,不卡任何日历门。每收到一个 callback 立即派下一条,派工池 ≤ 2 短工并发。
当前控制面真值(不动它):
- R9 =
verified(7.12 12:57 callback absorbed) - R12 =
verified(7.12) - R7/R8/R10 = 联机长工收口;R10 =
partial / accepted residual risk(7.12 13:06 P1 gate waiver) - R13/R14 原 W29 占位 = 等 W30 派 → 本轮提前派
- cron
w29-weekend-watch-r10= 7.13 15:51 自然消亡,不用手动删
Mavis(PM)已做的事:
- ✅ W29 v1.1 计划 + § 17 决策快照
- ✅ 7.13 10:25 进度整理 + R9/R12 落盘证据校准
- ✅ 7.13 10:43 R14 / R13 / T3 / R10-followup / 联机骨架 sync 5 段派工 spec 草稿
- ✅ 本 prompt 落盘(7.13 10:43)
Mavis 不做的事(明示):
- ❌ 不写
src/**/story/** - ❌ 不重开 R7-R10 任何 lane
- ❌ 不改
docs/handoff/index.md/current-dispatch-shortlist.md - ❌ 不动
胜利终局-truth-source-v1.md(7.3 verified) - ❌ 不动
AGENTS.md(当前 § 1 三层架构 + § 4 玩家文案已落)
2. 行动清单(7 行动 + 1 PM 自跑,严格按顺序)
行动 1 · T+0 立即起草 R14 task 卡 + 派 R14 短工(4-6h,不卡日历)
| 项 | 值 |
| :--- | :--- |
| task 卡路径 | docs/handoff/tasks/2026-07-13-r14-cross-week-anchor.md |
| session 卡路径 | docs/handoff/sessions/2026-07-13-r14-cross-week-anchor-01.md |
| session 卡首段 | ⟦tag:v2\|session\|2026-07-13-r14-cross-week-anchor-01⟧ + task tag: ⟦tag:v2\|task\|2026-07-13-r14-cross-week-anchor⟧ + loop state: planned + dispatch state: dispatching |
| 派工信号 | mavis communication send --from <管家 session id> --to <新建 R14 短工 session id> --command prompt --content "<R14 task 卡 ## prompt 段全文>" |
| 身份前缀 | 短工消息头:[短工]#剧情-跨周目v1.1锚点@v1.0 |
| 触发 | T+0 立即派工(不等 14:00,不等任何日历门) |
| R14 callback 触发 | 收到 R14 callback 立即派 R13(行动 2) |
R14 task 卡 ## prompt 段草稿(直接落盘用)
**角色**:`[短工]#剧情-跨周目v1.1锚点@v1.0`
**lane**:R14
**时间窗**:2026-07-13 14:00 ~ 2026-07-14 12:00(4-6h 工作量,跨半天)
**承接文档**:`docs/design/active/胜利终局v1.1待办-第二三年锚点与多周目-v1.md` 域 A + 域 D
**前置依赖**:✅ R9 胜利数值 v1.1 全部签字(7.12 12:52)
### 任务清单
1. **跨周目类型**:`src/data/endgame/multiRun.ts`(新,type only)
- `CrossWeekAnchor`:`{ year: 1 \| 2 \| 3; startDay: number; victoryDay: number; legacyDecay: number }`
- `WeekRunSnapshot`:`{ weekNum: number; baseScore: number; legacyPoints: number; mode: 'fresh' \| 'legacy' }`
2. **跨周目折算函数**:`src/utils/endgame/multiRun.ts`(新,纯函数)
- `computeLegacyPoints(weekNum, baseScore, mode): number`
- 折算曲线:第 1 周目 1.0 / 第 2 周目 0.8 / 第 3 周目 0.6 / 第 4+ 周目 0.4
- `mode === 'legacy'` 时额外 +0.1 上限(传承特权)
- 单周目可折算阅历 ≤ 1000 上限
- 跨年周目边界:`weekNum >= 2` 时 `baseScore *= 0.95`(跨年衰减)
- **禁止** `setTimeout` / `setInterval` / `Date.now()` 直接调用,全部接受 `now: number` 注入
3. **常量扩展**:`src/data/endgame/victoryConditions.ts` 加 3 个常量(沿用 v1.0 锁)
- `CROSS_WEEK_LEGACY_DECAY = [1.0, 0.8, 0.6, 0.4]`
- `LEGACY_BOOST = 0.1`
- `WEEKLY_LEGACY_CAP = 1000`
- 保留原有 7 个常量,不动
4. **文档**:`docs/design/active/跨周目v1.1锚点-v1.md`(新)
- § 0 TL;DR(60 秒版)
- § 1 跨周目锚点表(Year 1/2/3 startDay + victoryDay,沿用 victoryConditions.ts)
- § 2 折算曲线 + 上限
- § 3 跟 R9 签字值联动(CROSS_WEEK_INHERITANCE_RATE = 0.3 是基础,折算曲线是叠加)
- § 4 验收 + 不做
### 文件边界(强制)
- ✅ 新增:`src/data/endgame/multiRun.ts`(type only)
- ✅ 新增:`src/utils/endgame/multiRun.ts`(纯函数)
- ✅ 改:`src/data/endgame/victoryConditions.ts`(加 3 常量,保留 7 个已有)
- ✅ 新增:`docs/design/active/跨周目v1.1锚点-v1.md`
- ❌ 不碰:`endgame-save-load-design.md`
- ❌ 不碰:`App.tsx` / `auction/**` / `multiplayer/**`
- ❌ 不动:`胜利终局-truth-source-v1.md`(7.3 verified)
- ❌ 不动:`胜利终局v1.1待办-第二三年锚点与多周目-v1.md`(R14 是它的实装,本卡**只读**)
### 验收
- `cmd /c npm run build` 通过
- 5 场景单元测试全过(放 `src/utils/endgame/multiRun.regression.ts`):
① 第 1 周目 base=100 → legacyPoints=100
② 第 2 周目 base=100 → legacyPoints=80(衰减)
③ 第 4+ 周目 base=100 → legacyPoints=40
④ mode='legacy' 第 2 周目 base=100 → legacyPoints=90(0.8 + 0.1)
⑤ base=2000 → legacyPoints=1000(cap)
### 不做
- ❌ 跨周目 UI(留 W31+)
- ❌ 失败链 v1.2(留 W30+ 单独 lane)
- ❌ 旧存档迁移(留 R6 v1.1 W30)
- ❌ 动 `胜利终局-truth-source-v1.md` / `endgame-save-load-design.md`
### 风险 + 缓解
- R14 跟 R9 签字值(0.3)跟折算曲线(0.4)有概念混淆风险 → 文档 § 3 联动段明示:0.3 是跨周目继承率(域 D 域 B 联动),0.4 是 4+ 周目衰减(域 D 折算曲线),两者叠加不冲突
- 跨年周目边界 `weekNum >= 2 baseScore *= 0.95` 跟 `baseScore` 入参型契约不稳 → 在 type 层加 `LegacyDecayNote` 注释,纯函数入口处不变 `baseScore`,产出新对象
### 回执模板
[R14 #剧情-跨周目v1.1锚点@v1.0 回执]
- 状态:✅ / ⚠️ / ❌
- 新增文件:<3 个实际路径>
- 修改文件:<1 个实际路径>
- 5 场景测试:<PASS/FAIL 列表>
- `npm run build`:✅ / ❌
- 风险/阻塞:<如有列出;如无,写 "无">
- 残余风险:<如有列出;如无,写 "无">
- 建议给 R11 接力点:<一句话>
行动 2 · R14 callback 立即起草 R13 task 卡 + 派 R13 短工(6h,流水化)
| 项 | 值 |
| :--- | :--- |
| task 卡路径 | docs/handoff/tasks/2026-07-13-r13-old-ledger-nodes.md |
| session 卡路径 | docs/handoff/sessions/2026-07-13-r13-old-ledger-nodes-01.md |
| 派工信号 | 同 R14 格式 |
| 身份前缀 | [短工]#剧情-旧账风波详细节点@v1.0 |
| 触发 | R14 callback 收到立即派工(不等 7.14 09:00,不等任何日历门) |
| 管家并行动作 | R14 派工后立即起草 R13 task 卡(等 R14 callback 即可派) |
| R13 工时拆 | ① 节点大纲 + 数据 6h(本轮 W29 跑),② 桥接表 + 收束页对接 2-4h(留 W30 续) |
| R13 callback 触发 | 收到 R13 callback 立即派 T3(行动 5) |
R13 task 卡 ## prompt 段草稿
**角色**:`[短工]#剧情-旧账风波详细节点@v1.0`
**lane**:R13
**时间窗**:2026-07-14 09:00 ~ 2026-07-15 12:00(6h 工作量,跨 1.5 天)
**承接文档**:`docs/design/active/剧情线3+预研大纲-v1.md` § 4.3
**前置依赖**:✅ R4 ① 旧账风波已签(7.9) + `src/data/storyEvents/oldLedger.ts` 锚点已落
### 任务清单(本轮 W29 只跑 ① 段)
1. **节点大纲**:`docs/story/主线故事/旧账风波期-节点大纲-v1.md`(新)
- 8-12 节点(月级,嵌在主线 12 期之间)
- 每节点 4 字段:触发条件 / 2-3 选项分支 / 羁绊变化 / 道具奖励
- 沿用主线 12 期命名规范(参考 `docs/story/主线故事/月01-月12.*`)
2. **节点数据**:`src/data/storyEvents/oldLedger.ts` 节点展开
- 沿用现有 `oldLedger.ts` 锚点结构,不重写
- 每节点 GameEvent 桥接到 `GAME_EVENTS` 池(参考郭 pilot 模式 grep 校准)
- 跨年夜收束页对接字段(`PlaythroughSummary` 引用)
3. **本期不做**(留 W30 续)
- ❌ `src/data/eventTables/storyline-old-ledger.ts` 桥接表
- ❌ `docs/design/active/旧账风波详细节点-v1.md` 节点表 + 对接图
- ❌ 浏览器手验 + 跨年夜收束页接入
- W11 spec 标注"② 段留 W30"
### 文件边界(强制)
- ✅ 新增:`docs/story/主线故事/旧账风波期-节点大纲-v1.md`
- ✅ 改:`src/data/storyEvents/oldLedger.ts`(节点数据展开,锚点不动)
- ❌ 不碰:`story/主线故事/月01-月12.*` 已有脚本
- ❌ 不碰:`story/characters/**`
- ❌ 不碰:`App.tsx` 主导航
- ❌ 不碰:`auction/**` / `multiplayer/**`
### 验收
- 8-12 节点全列 + 每节点 4 字段齐
- `cmd /c npm run build` 通过 + 5 组单元测试(节点 4 字段齐校验)
- 节点大纲文档 § 末尾明示"② 段留 W30"
### 不做
- ❌ 实时剧情编辑器接入(留 W31+)
- ❌ 玩家手动回退按钮(留 R6 v1.1)
- ❌ 三角线修正(郭吕祝)(留 Phase 5 关系线)
- ❌ 三角线 / 钱掌柜夫妻线修改(已 verified 不动)
### 风险 + 缓解
- 8-12 节点选 8 还是 12 → spec 默认 8(主线 12 期之间嵌入 1 个风波期),如需 12 在节点大纲文档里说明理由
- 节点数据展开跟 `GAME_EVENTS` 池引用不一致 → 派工前 grep 校准 `GAME_EVENTS` 池结构,沿用现有 type
### 回执模板
[R13 #剧情-旧账风波详细节点@v1.0 回执]
- 状态:✅ / ⚠️ / ❌
- 新增文件:<1 个实际路径>
- 修改文件:<1 个实际路径>
- 节点数:<8-12 数字>
- 4 字段齐校验:<PASS/FAIL 列表>
- `npm run build`:✅ / ❌
- W30 接力点:② 桥接表 + 收束页对接(2-4h)
行动 3 · R14 派工后立即PM 视角起草 W30 5 日计划草案(2-3h,我自跑,不卡任何 callback)
| 项 | 值 |
| :--- | :--- |
| 路径 | docs/plans/active/2026-07-20-5日开发计划-v1.md(草案,7.17 v1.0 拍板) |
| 触发 | R14 派工后立即起草(不等 R14 收口,不卡任何 callback;PM 自跑独立) |
| 主题候选 | A. Phase 6 内容池翻倍 + 角色深度 UI
B. 失败链 v1.2 + 跨周目 v1.1 锚点实装 + 角色深度 UI
C. 联机 P2P 完整化 v1.1(WebRTC 实装 + 跨设备同步) |
| 本轮只做 | § 0 TL;DR + § 0 拍板记录(候选 A/B/C)+ § 1-§ 5 骨架 + W30 ↔ W29 衔接表 |
| 不写 | ❌ task 卡(7.17 拍板后由 PM 建)
❌ src/** / story/**
❌ 派工表(等 7.17 拍板后定)
❌ § 16 P0 立项(等 7.17 拍板后补) |
| v1.0 拍板版 | 7.17 上午 拉 P1 拍板会后,由管家补 § 6 跨日依赖图 + § 7 派工表 + § 9 收口判定 + § 13 派工入口 + § 16 P0 立项(如需)+ § 17 决策快照 |
| W30 主题拍板 | R11 派工时同步拉 P1 拍(流水化,不卡日历) |
W30 草案 § 0 拍板候选(我先写,7.17 P1 拍)
| 主题 | 拍板候选 | 工期 | lane 数 | 风险 | | :-: | :--- | :-: | :-: | :--- | | A | Phase 6 内容池翻倍 + 角色深度 UI | 14h | 2 短工 | 内容池对齐 R6 已签字 | | B | 失败链 v1.2 + 跨周目 v1.1 锚点实装 + 角色深度 UI | 20h | 3 短工 | 失败链 4 维度阈值重平衡 | | C | 联机 P2P v1.1(WebRTC 实装 + 跨设备同步) | 20h | 2 短工 | WebRTC 浏览器兼容性 |
PM 推荐:B(失败链 v1.2 + 跨周目 v1.1 锚点实装 = 接 W29 R9/R14 续线,3 短工并行消化 20h)
W30 ↔ W29 衔接表(我先写,7.17 拍板后由 R11 收口文档吸收)
| W29 v1.1 lane | 收口情况 | W30 衔接 | | :--- | :--- | :--- | | R7 实时竞价 | 长工 verified | 不接(W30 不动联机,除非主题 C) | | R8 流拍重连 | 长工 verified | 不接 | | R9 胜利数值 | 7.12 verified | W30 主题 B = 失败链 v1.2 接续(域 D 阈值细化) | | R10 UI 集成 | partial / 7.15-7.16 R10-followup 补 | R10-followup 7.16 收口 | | R11 W29 收口 | 7.17 跑 | 不接 | | R12 剧情字段净化 | 7.12 verified | 不接 | | R13 旧账风波节点大纲 | 7.14-7.15 跑 ① 段 | W30 续 ② 段(桥接表 + 收束页对接 2-4h) | | R14 跨周目 v1.1 锚点 | 7.13-7.14 跑 | W30 主题 B = 跨周目 v1.1 锚点实装(在胜利终局页面里挂载,8h) |
行动 4 · R14 / R13 callback 各收到立即收口 + 双 callback 流水化吸收
| 项 | 值 |
| :--- | :--- |
| R13 期望回执 | 1 文件新增 + 1 文件改 + 节点数 8-12 + 4 字段齐 + build ✅ |
| R14 期望回执 | 3 文件新增 + 1 文件改 + 5 场景测试全过 + build ✅ |
| callback 模板 | 按各自 task 卡 ## 回执模板 段 |
| 触发 | R14 callback 立即收口 → 立即派 R13(行动 2);R13 callback 立即收口 → 立即派 T3(行动 5) |
| 失败处置 | 任一 ⚠️ / ❌ → 不自动重开,先报告 P1 |
行动 5 · R13 callback 立即起草 Phase 1 装备 T3 task 卡 + 派 T3 短工(4-6h,流水化)
| 项 | 值 |
| :--- | :--- |
| task 卡路径 | docs/handoff/tasks/2026-07-13-phase1-t3-equipment-fields.md |
| session 卡路径 | docs/handoff/sessions/2026-07-13-phase1-t3-equipment-fields-01.md |
| 派工信号 | 同上 |
| 身份前缀 | [短工]#装备-T3字段补齐@v1.0 |
| 触发 | R13 callback 立即派工(不等 7.15 14:00,不等任何日历门) |
| T3 callback 触发 | 收到 T3 callback 立即派 R10-followup(行动 6) |
T3 task 卡 ## prompt 段草稿
**角色**:`[短工]#装备-T3字段补齐@v1.0`
**lane**:T3
**时间窗**:2026-07-15 14:00 ~ 2026-07-16 12:00(4-6h 工作量,跨半天)
**承接文档**:`docs/design/active/Phase1实施切片-v1.md` T3 段
**前置依赖**:✅ T1 / T2 / R1-R7 重构全部收口
### 任务清单
1. **数据层**:`src/data/items/types.ts` 加装备模型字段
- `rarity` / `qualityTier` / `affixes` / `setBonus` 4 字段
- 16 件装备全填(沿用现有数据,不重写值)
- Phase 1 6 段投放映射(`投放段` enum:`day_30` / `day_90` / `day_180` / `day_270` / `day_330` / `day_360`)
2. **数据层**:`src/data/items/equipmentSchema.ts`(新)
- Zod schema 校验:`EquipmentItemSchema` + `AffixSchema` + `SetBonusSchema`
- 跟 `src/data/items/types.ts` 字段 1:1 对应
3. **逻辑层**:`src/utils/items/equipmentLogic.ts`(新)
- 派生索引:`EQUIPMENT_BY_ID` / `EQUIPMENT_BY_QUALITY` / `EQUIPMENT_BY_SLOT`
- 装备模型派生函数:`computeAffixPower(affixes): number`
- 沿用 Phase 1 § 1 既有命名 `*Logic.ts`
### 文件边界(强制)
- ✅ 改:`src/data/items/types.ts`(加 4 字段 + 16 件装备填值)
- ✅ 新增:`src/data/items/equipmentSchema.ts`
- ✅ 新增:`src/utils/items/equipmentLogic.ts`
- ❌ 不动:`src/components/item/**`(UI 留 v1.1 续)
- ❌ 不动:`auction/**` / `multiplayer/**`
- ❌ 不动:`AGENTS.md`(已是当前 § 1 三层架构)
### 验收
- `cmd /c npm run build` 通过 + tsc 无新增
- 16 件装备 4 字段全填,有 Phase 1 6 段映射表
- Zod schema 校验过(无 schema 错误)
- 派生索引 3 个(`*_BY_ID` / `*_BY_QUALITY` / `*_BY_SLOT`)
- 单元测试 5 场景(放 `src/utils/items/equipmentLogic.regression.ts`):
① 16 件装备 4 字段齐
② `computeAffixPower` 单 affix
③ `computeAffixPower` 多 affix 累加
④ `EQUIPMENT_BY_QUALITY` 索引正确
⑤ `EQUIPMENT_BY_SLOT` 索引正确
### 不做
- ❌ 装备强化 / 精造 8 小系统(留 Phase 3+)
- ❌ 装备 UI 重做(留 v1.1 续,本轮只补数据 + 逻辑)
- ❌ 跟拍卖 / 联机对接(留 W30+ 单独 lane)
### 风险 + 缓解
- 16 件装备 4 字段全填但部分字段留空 → spec 明确:留空 = 空数组 / `null`,schema 校验通过
- 派生索引跟现有命名冲突 → 沿用 Phase 1 § 1 既有命名 `*Logic.ts`,索引前缀 `EQUIPMENT_*`
### 回执模板
[T3 #装备-T3字段补齐@v1.0 回执]
- 状态:✅ / ⚠️ / ❌
- 新增文件:<2-3 个实际路径>
- 修改文件:<1 个实际路径>
- 16 件装备 4 字段齐校验:<PASS/FAIL 列表>
- Zod schema 校验:<PASS/FAIL>
- 5 场景测试:<PASS/FAIL 列表>
- `npm run build`:✅ / ❌
- 残余风险:<UI 留 v1.1 续;Phase 1 6 段映射表落盘>
行动 6 · T3 callback 立即补 R10 真实手验(6h,流水化不卡日历)
| 项 | 值 |
| :--- | :--- |
| 任务 | 补 R10 长工 = summarized-partial-gate-waived-by-p1 缺口 |
| 承接 | docs/handoff/tasks/2026-07-16-multiplayer-ui-integration.md § prompt 段 |
| task 卡路径 | docs/handoff/tasks/2026-07-13-r10-browser-walkthrough.md |
| session 卡路径 | docs/handoff/sessions/2026-07-13-r10-browser-walkthrough-01.md |
| 身份前缀 | [短工]#联机-R10手验补全@v1.0 |
| 触发 | T3 callback 立即派工(可与骨架 sync 派工并发,派工池 ≤ 2) |
| R10-followup callback 触发 | 收到 callback 立即派 骨架 sync(行动 7) |
| P1 视觉拍板时点 | R10-followup 短工收口后立即拉 P1(不等 7.16 下午) |
| 不重开长工 | 直接派新短工补手验,不 ping 联机长工 019f3be5-... |
R10-followup task 卡 ## prompt 段草稿
**角色**:`[短工]#联机-R10手验补全@v1.0`
**lane**:R10-followup
**时间窗**:2026-07-15 14:00 ~ 2026-07-16 18:00(6h,2 天拆)
**承接文档**:`docs/handoff/tasks/2026-07-16-multiplayer-ui-integration.md` § prompt 段 + `docs/design/active/联机P2P房间骨架-v1.md`
**前置依赖**:✅ R7 / R8 长工 verified(代码已落)
### 任务清单
1. **浏览器手验 1 轮**:`npm run dev` → 主导航 → multiplayer tab → 4 态切换
- 等待 waiting → 出价 bidding → 反狙击 antiSnipe(deadlineAt 调近 30s)→ 自然 settled
- 截图 4 张,放 `docs/design/active/W29联机UI视觉对照checklist-v1.md` 引用
2. **模拟掉线手验**:测试数据把 seat 状态切 `reconnecting`
- 顶部 ReconnectBanner 显「XX 正在重连…」+ 倒计时
- 30s 后变「XX 已离线」
- 房主掉线 60s 触发 `transferHost` → 顶部条幅显「房主已转移给 XX」
- 截图 3 张
3. **checklist 落盘**:`docs/design/active/W29联机UI视觉对照checklist-v1.md`(新)
- § A 视觉规范 v1.0 联机章节 12 项
- § B 跟 `auction/console/` 视觉一致性 6 项
- 每项勾 ✅ / 调 / 重做 + 截图引用
4. **P1 视觉拍板**(7.16 下午 14:00 后拉)
- 拍板结果:✅ / ⚠️ / ❌
- 短工**不**代决视觉
### 文件边界(强制)
- 🔧 改:`src/components/multiplayer-lobby/RoomCard.tsx`(只动视觉调整,不动 props 签名)
- 🔧 改:`src/App.tsx`(只动 multiplayer tab 入口,主导航其他 tab **不**动)
- ✅ 新增:`docs/design/active/W29联机UI视觉对照checklist-v1.md`
- ❌ 不碰:`RealtimeBidPanel.tsx` / `ReconnectBanner.tsx`(R7/R8 既有产物)
- ❌ 不碰:`auction/**` / `auctionRules.ts` / `components/auction/**`
- ❌ 不碰:`items/**` / `multiplayer/realtimeBidding.ts` / `multiplayer/timeout.ts` / `multiplayer/reconnect.ts`
### 验收
- `cmd /c npm run build` 通过 + `npm run lint` 无新增
- 7 张截图全有(4 态切换 4 张 + 掉线 3 张)
- checklist 12 + 6 = 18 项全勾
- P1 视觉拍板结果:✅ / ⚠️ / ❌
### 不做
- ❌ 真实网络测试(留 W30+)
- ❌ 表情包 / 弹幕(留 W30+)
- ❌ 房间卡片动效(留 v1.1 续)
- ❌ 移动端适配(留 v1.1 续)
- ❌ 暗色模式切换(留 v1.1 续)
### 风险 + 缓解
- 改 RoomCard 撞 R7/R8 既有 props 签名 → 文件边界严:`❌ 不碰 RealtimeBidPanel.tsx / ReconnectBanner.tsx`,只动 RoomCard 视觉调整
- App.tsx 改动面失控 → **只**动 multiplayer tab 入口 3-5 行,主导航其他 tab **不**动
- P1 视觉拍板「重做」导致 R10 仍未收口 → R11 收口时**不**算 R10 收口,记入残余风险
### 回执模板
[R10-followup #联机-R10手验补全@v1.0 回执]
- 状态:✅ / ⚠️ / ❌
- 截图:<7 张实际路径>
- checklist:12 + 6 = 18 项勾选结果
- P1 拍板结果:✅ / ⚠️ / ❌
- `npm run build`:✅ / ❌
- 残余风险:<如有列出;如无,写 "无">
- 建议给 R11 接力点:<一句话>
行动 7 · R10-followup callback 立即派 联机 P2P 房间骨架 v1.0 文档 sync(2-3h,流水化)
| 项 | 值 |
| :--- | :--- |
| task 卡路径 | docs/handoff/tasks/2026-07-13-multiplayer-skeleton-sync.md |
| session 卡路径 | docs/handoff/sessions/2026-07-13-multiplayer-skeleton-sync-01.md |
| 派工信号 | 同上 |
| 身份前缀 | [短工]#联机-P2P骨架v1.0文档sync@v1.0 |
| 触发 | R10-followup callback 立即派工(可与 R10-followup 收口确认并发) |
| 骨架 sync callback 触发 | 收到 callback 立即派 R11 收口(行动 8) |
骨架 sync task 卡 ## prompt 段草稿
**角色**:`[短工]#联机-P2P骨架v1.0文档sync@v1.0`
**lane**:doc-sync
**时间窗**:2026-07-16 09:00 ~ 2026-07-16 12:00(2-3h 工作量,单日)
**承接文档**:`docs/design/active/联机P2P房间骨架-v1.md`(W28 母本)+ R7/R8/R10 跑完后的新产物
### 任务清单
1. **同步**:`docs/design/active/联机P2P房间骨架-v1.md` 升级到 v1.1
- § 0 TL;DR 加"R7/R8/R10 跑完后增量"
- § 状态机:补 `RealtimeBidState` 4 态 + `ReconnectState` 4 态
- § 数据流:补 `applyEvent` / `applyTimeout` / `applyDisconnect` / `applyReconnect` / `transferHost` 函数签名
- § UI:补 `RealtimeBidPanel` / `ReconnectBanner` / `RoomCard` 组件列表
- § 跨 Lane 接入:补 R14 跨周目联动 + 联机房间的"settled" 态**不**写 `PlaythroughSaveSlot`(v1.0 锁)
- § 残余风险:WebRTC 留 v1.4 / 跨设备同步留 Phase 7
2. **不动**:`联机P2P房间骨架-v1.md` 的 v1.0 段(只增不删,作为历史母本)
### 文件边界(强制)
- ✅ 改:`docs/design/active/联机P2P房间骨架-v1.md`(v1.0 → v1.1,增量追加)
- ❌ 不碰:`src/**`(纯文档)
- ❌ 不重开 R7/R8/R10 任何 lane
### 验收
- 文档 v1.1 落盘,7 段真填(§ 0-§ 6)
- v1.0 段完整保留(W28 历史母本不动)
- R14 跨周目联动在 § 跨 Lane 接入里 1 行引用
- 跟 R10 长工的 `summarized-partial-gate-waived-by-p1` 状态**明示**标注
### 不做
- ❌ 改 v1.0 段(只增不删)
- ❌ 重开 R7 / R8 / R10 任何 lane
- ❌ 写代码 / 改 UI
### 风险 + 缓解
- 骨架 v1.0 → v1.1 改 v1.0 段 → 严格"只增不删",v1.0 段作历史母本保留
- 跟 R10 长工状态联动 → § 跨 Lane 接入里 1 行标注 `R10 = summarized-partial-gate-waived-by-p1`
### 回执模板
[doc-sync #联机-P2P骨架v1.0文档sync@v1.0 回执]
- 状态:✅ / ⚠️ / ❌
- 修改文件:1 个实际路径
- v1.1 § 0-§ 6 段真填状态:<列出 7 段>
- v1.0 段保留状态:<列出保留段名>
- 风险/阻塞:<如有列出;如无,写 "无">
行动 8 · 骨架 sync callback 立即派 R11 W29 收口 + W30 5 日计划 v1.0 落盘(5h,流水化)
| 项 | 值 |
| :--- | :--- |
| 承接 | docs/handoff/tasks/2026-07-17-w29-closeout.md(R11 task 卡) |
| R11 期望回执 | 收口文档 + handoff index update + W30 排程建议(吸收 R13/R14/T3/R10-followup/骨架 sync 5 个新 lane 落地证据) |
| W30 v1.0 落盘 | docs/plans/active/2026-07-20-5日开发计划-v1.md v1.0 拍板版 |
| 触发 | 骨架 sync callback 立即派工 |
| W30 主题拍板会 | R11 派工时同步拉 P1 拍(流水化,不卡日历);W30 草案 § 0 候选已就位 |
| 签字位置 | W30 v1.0 § 0 + § 17 决策快照 |
7.17 R11 收口判定 9 条(吸收 6+1 新 lane)
| # | 判定 | 真值(7.17 填) | 来源 |
| :-: | :--- | :--- | :--- |
| 1 | P2P 实时竞价(R7)+ 5s 流拍 + 断线重连(R8)全收口 | ✅ / ⚠️ / ❌ | R7 + R8 长工 verified 状态 |
| 2 | R9 胜利规则 v1.1 数值 6 件事全拍板 + victoryConditions.ts 落盘 | ✅ / ⚠️ / ❌ | R9 任务卡 + 拍板文档 § 5 |
| 3 | 联机 UI 升级(R10)+ 真实手验 + 视觉对照 checklist 全勾 | ✅ / ⚠️ / ❌ | R10 + R10-followup 任务卡 + checklist + 7 截图 |
| 4 | cmd /c npm run build 通过 + 反狙击 5 + 流拍 5 + 重连 5 + 跨周目 5 + 节点 4 字段 5 = 25 单元测试全过 | ✅ / ⚠️ / ❌ | R7 + R8 + R14 + R13 测试报告 |
| 5 | W29 整体收口文档 + 残余风险 + W30 排程落盘 | ✅ / ⚠️ / ❌ | 本文件 |
| 6 | R14 跨周目 v1.1 锚点 + 折算函数全收口 | ✅ / ⚠️ / ❌ | R14 任务卡 + 跨周目v1.1锚点-v1.md |
| 7 | R13 旧账风波节点大纲 8-12 节点全列 + 4 字段齐 | ✅ / ⚠️ / ❌ | R13 任务卡 + 节点大纲文档 |
| 8 | Phase 1 装备 T3 字段补齐 16 件装备 4 字段齐 + Zod schema 校验过 | ✅ / ⚠️ / ❌ | T3 任务卡 + equipmentSchema.ts |
| 9 | 联机 P2P 房间骨架 v1.1 文档 sync 7 段真填 | ✅ / ⚠️ / ❌ | doc-sync 任务卡 + 联机P2P房间骨架-v1.md |
R11 收口文档必须原样记录的 2 个 R10 残缺(已豁免情况)
- R10 长工 =
summarized-partial-gate-waived-by-p1(7.12 13:06 P1 豁免,7.15-7.16 R10-followup 短工补全手验) - R7 / R8 任务卡 current state =
documented不是verified(派工模型变更:短工 → 长工,R11 标注"实际产物在长工 owner 已 verified")
3. 关键 MUST-DO
3.1 派工信号格式(强制)
# R14 派工(7.13 14:00)
mavis communication send `
--from <管家 session id> `
--to <新建 R14 短工 session id> `
--command prompt `
--content "<R14 task 卡 ## prompt 段全文 + 身份前缀 '[短工]#剧情-跨周目v1.1锚点@v1.0' 在最前>"
# R13 派工(7.14 09:00)
mavis communication send `
--from <管家 session id> `
--to <新建 R13 短工 session id> `
--command prompt `
--content "<R13 task 卡 ## prompt 段全文 + 身份前缀 '[短工]#剧情-旧账风波详细节点@v1.0' 在最前>"
# T3 派工(7.15 14:00)
mavis communication send `
--from <管家 session id> `
--to <新建 T3 短工 session id> `
--command prompt `
--content "<T3 task 卡 ## prompt 段全文 + 身份前缀 '[短工]#装备-T3字段补齐@v1.0' 在最前>"
# R10-followup 派工(7.15 14:00,并行于 T3)
mavis communication send `
--from <管家 session id> `
--to <新建 R10-followup 短工 session id> `
--command prompt `
--content "<R10-followup task 卡 ## prompt 段全文 + 身份前缀 '[短工]#联机-R10手验补全@v1.0' 在最前>"
# 联机骨架 sync 派工(7.16 09:00)
mavis communication send `
--from <管家 session id> `
--to <新建 骨架 sync 短工 session id> `
--command prompt `
--content "<骨架 sync task 卡 ## prompt 段全文 + 身份前缀 '[短工]#联机-P2P骨架v1.0文档sync@v1.0' 在最前>"
# R11 收口派工(7.17 09:00)
mavis communication send `
--from <管家 session id> `
--to <新建 R11 收口短工 session id> `
--command prompt `
--content "<R11 task 卡 ## prompt 段全文 + 身份前缀 '[短工]#5日回归收口@v1.0' 在最前>"
3.2 短工不代决(强制)
- 7.13-7.17 没新数值要拍(R9 已签)
- 7.16 下午 P1 视觉拍板(R10 联机 UI),短工不代决
- 7.17 上午 P1 W30 主题拍板(A/B/C),短工不代决
3.3 6+1 lane 文件边界零交叉
| Lane | 文件边界 | 跟谁撞 |
| :-: | :--- | :--- |
| R14 | endgame/victoryConditions.ts + endgame/multiRun.ts | 不撞 R13 / T3 / R10-followup / 骨架 sync |
| R13 | story/主线故事/旧账风波期-* + data/storyEvents/oldLedger.ts | 不撞 R14 / T3 / R10-followup / 骨架 sync |
| T3 | data/items/** + utils/items/equipmentLogic.ts | 不撞 R14 / R13 / R10-followup / 骨架 sync |
| R10-followup | multiplayer-lobby/RoomCard.tsx + App.tsx + checklist doc | 撞 R7/R8 既有产物(严格不碰 RealtimeBidPanel / ReconnectBanner) |
| 骨架 sync | 联机P2P房间骨架-v1.md(v1.0 → v1.1) | 纯文档,不撞任何代码 lane |
| W30 草案 | docs/plans/active/2026-07-20-5日开发计划-v1.md | 不撞任何当前 lane |
| R11 收口 | docs/plans/active/2026-07-13-5日开发计划-v1-收口.md + docs/handoff/index.md | 不重开 R7-R10 |
6+1 lane 互不锁文件(除 R10-followup 受 R7/R8 既有产物边界保护外),可安全并行或串行。
3.4 流水化触发链(替代日历门)
| 触发 | 派工动作 | 起草动作(并发起) | | :-: | :--- | :--- | | T+0 立即(2026-07-13 10:48+) | 派 R14 短工 | 起 W30 草案 § 0-§ 5(PM 自跑,不卡 callback) | | R14 callback 收到 | 立即派 R13 短工 | 起 T3 task 卡 | | R13 callback 收到 | 立即派 T3 短工 | 起 R10-followup task 卡 | | T3 callback 收到 | 立即派 R10-followup 短工 | 起 骨架 sync task 卡 | | R10-followup callback 收到 | 立即派 骨架 sync 短工 + 拉 P1 拍 R10 视觉(不等) | — | | 骨架 sync callback 收到 | 立即派 R11 收口 短工 + 拉 P1 拍 W30 主题(不等) | 起 W30 v1.0 § 6-§ 17 补完 | | R11 callback 收到 | 收口完成 + handoff index update | — |
并发上限:派工池 ≤ 2 短工同时跑。R14 跟 R13 不撞文件可并发;R10-followup 跟 骨架 sync 不撞可并发。
流水化纪律:
- 收到 callback → 30 分钟内派下一个(不卡日历)
- 起草新 task 卡 → 跟上一条派工同步起(不等上一条收口)
- PM 自跑 W30 草案 → R14 派工后立即起(独立,不卡任何 callback)
- P1 拍板会 → 嵌入流水线,不等专门拍板时段
3.5 P1 chat 拍板时点(嵌入流水线)
- R10-followup callback 收到后立即:拉 P1 拍 R10 视觉对照(短工把 checklist + 7 截图给 P1,拍 ✅ / ⚠️ / ❌)
- R11 派工时同步:拉 P1 拍 W30 主题(A/B/C 候选已在 W30 草案 § 0 列)
4. 边界(明示,不要越界)
4.1 你做
- ✅ 建 6+1 张 task 卡(R14 / R13 / T3 / R10-followup / 骨架 sync / R11 收口)
- ✅ 派 6 个短工(R14 / R13 / T3 / R10-followup / 骨架 sync / R11)— 串行/并行按 § 3.4 时间表
- ✅ 我自跑 1 个 PM 视角文档(W30 草案 § 0-§ 5 骨架)
- ✅ 7.13-7.16 收 5 个 callback,按各自 task 卡
## 回执模板段收口 - ✅ 7.16 拉 P1 进 R10 视觉拍板会
- ✅ 7.17 拉 P1 进 W30 主题拍板会
- ✅ 7.17 派 R11 收口 + 跑收口文档 + 落 handoff index update
4.2 你不做
- ❌ 不写
src/**/story/** - ❌ 不创建 R14 / R13 / T3 / R10-followup / 骨架 sync task 卡(spec 草稿已在本 prompt § 2 行动 1-7 里,直接落盘)
- ❌ 不派 6 个短工之外的活
- ❌ 不改
docs/handoff/index.md/current-dispatch-shortlist.md - ❌ 不重开 R7 / R8 / R9 / R10 / R12 任何 lane
- ❌ 不动
胜利终局-truth-source-v1.md(7.3 verified 母本) - ❌ 不动
AGENTS.md(已是当前 § 1 三层架构 + § 4 玩家文案) - ❌ 不 ping 联机长工
019f3be5-...(P1 7.12 13:06 豁免 + R10 残缺已记入 R11 收口 § 3) - ❌ 不顺手做新需求 / 不并行派新 lane
5. 派工流水线(替代日历时间线备查)
| 触发 | 短工动作 | PM 动作 | P1 动作 | | :-: | :--- | :--- | :--- | | T+0 立即 | R14 派工 | 起 W30 草案 § 0-§ 5 | — | | R14 callback | 派 R13 | 续 W30 草案 | — | | R13 callback | 派 T3 | — | — | | T3 callback | 派 R10-followup | — | — | | R10-followup callback | 派 骨架 sync | — | 拍 R10 视觉(不等) | | 骨架 sync callback | 派 R11 收口 | 补 W30 v1.0 § 6-§ 17 | 拍 W30 主题(不等) | | R11 callback | 收口完成 | handoff index update | — |
6. 流水回执格式(每收到 1 个 callback 发 1 行)
流水回执 · T+xh · <Lane> callback 收到 → 立即派 <下一条>;<当前活跃短工 session id 列表>
发送对象:P1 短消息(IM / 飞书)。只发 1 行,不发长文档,不发多条。
例:
流水回执 · T+5h · R14 callback 收到 → 立即派 R13;活跃短工=R14(收口中)+R13(刚派)
7. 配套文档(按需打开)
| 文档 | 路径 | 何时读 |
| :--- | :--- | :--- |
| W29 v1.1 计划(真相源) | docs/plans/active/2026-07-13-5日开发计划-v1.md | 必读第一份(§ 1 / § 3 / § 7 / § 13 / § 17) |
| R9 task 卡 | docs/handoff/tasks/2026-07-13-to-14-victory-numbers.md | R14 派工时给短工 input |
| R12 task 卡 | docs/handoff/tasks/2026-07-15-r12-story-tracking-purify.md | R13 派工时给短工 input(spec 输入) |
| R10 task 卡 | docs/handoff/tasks/2026-07-16-multiplayer-ui-integration.md | R10-followup 派工时复制 ## prompt 段 |
| R11 task 卡 | docs/handoff/tasks/2026-07-17-w29-closeout.md | 7.17 派工时复制 ## prompt 段 |
| 胜利终局 v1.1 待办 | docs/design/active/胜利终局v1.1待办-第二三年锚点与多周目-v1.md | R14 派工时给短工 input |
| 剧情线 3+ 预研大纲 | docs/design/active/剧情线3+预研大纲-v1.md | R13 派工时给短工 input |
| Phase 1 实施切片 | docs/design/active/Phase1实施切片-v1.md | T3 派工时给短工 input |
| 联机 P2P 房间骨架 v1.0 母本 | docs/design/active/联机P2P房间骨架-v1.md | 骨架 sync 派工时给短工 input |
| AGENTS.md 守则 | AGENTS.md | 必读第一份(§ 1 三层架构 / § 4 玩家文案 / § 5 改前 checklist) |
| 当前 handoff 状态 | docs/handoff/index.md | 必要时 |
8. 完成定义(DoD)
7 行动全部满足 → 流水化跑完 6+1 lane:
- [ ] 行动 1(T+0 立即):R14 task 卡 + session 卡已建,R14 短工已派,current state =
waiting_callback - [ ] 行动 2(R14 callback 立即):R13 task 卡 + session 卡已建,R13 短工已派
- [ ] 行动 3(R14 派工后立即):W30 草案 § 0-§ 5 骨架落盘(
docs/plans/active/2026-07-20-5日开发计划-v1.mdv0.1 草案) - [ ] 行动 4(R13 / R14 callback 各收到):双 callback 流水化吸收
- [ ] 行动 5(R13 callback 立即):T3 task 卡 + session 卡已建,T3 短工已派
- [ ] 行动 6(T3 callback 立即):R10-followup 短工已派 + 收口后 P1 视觉拍板会已拉
- [ ] 行动 7(R10-followup callback 立即):骨架 sync 短工已派,callback 收到
- [ ] 行动 8(骨架 sync callback 立即):R11 收口 + handoff index update + W30 v1.0 拍板版落盘
- [ ] 流水化指标:从派工到下一个派工的平均间隔 < 30min(无等日历门)
- [ ] 你未改
src/**/story/**/AGENTS.md - [ ] 你未改
docs/handoff/index.md/current-dispatch-shortlist.md - [ ] 你未重开 R7 / R8 / R9 / R10 / R12 任何 lane
- [ ] 你未 ping 联机长工
019f3be5-...(已豁免,残缺记入 R11 § 3) - [ ] 6+1 lane 文件边界零交叉
9. 关联决策 + 风险(本轮内显式化)
9.1 7.16 下午 P1 视觉拍板 R10 后
- ✅ → R10 完整 verified → R11 收口 § 3 R10 残缺条目删除
- ⚠️ → 短工调 1-2 处再交付,延后 1-2h
- ❌ → 维持 R10 partial,记入 R11 § 3 residual risk
9.2 7.17 上午 P1 W30 主题拍板(A/B/C 候选)
- A = Phase 6 内容池翻倍 + 角色深度 UI(2 短工并行,6+8h)
- B = 失败链 v1.2 + 跨周目 v1.1 锚点实装 + 角色深度 UI(3 短工并行,8+4+8h)
- C = 联机 P2P 完整化 v1.1(WebRTC 实装 + 跨设备同步,8+12h)
- 拍板后 W30 v1.0 落盘,§ 13 派工入口更新
9.3 风险 + 缓解
| 风险 | 缓解 |
| :--- | :--- |
| R14 跟 R9 签字值(0.3)跟折算曲线(0.4)有概念混淆 | R14 文档 § 3 联动段明示:0.3 是跨周目继承率(域 D 域 B 联动),0.4 是 4+ 周目衰减(域 D 折算曲线),两者叠加不冲突 |
| T3 装备字段跟 R7/R8 联机道具投放交叉 | T3 文件边界严:src/data/items/** + src/utils/items/**,不碰 multiplayer/** / auction/** |
| R10-followup 短工改 RoomCard 撞 R7/R8 既有 props 签名 | 文件边界严:❌ 不碰 RealtimeBidPanel.tsx / ReconnectBanner.tsx,只动 RoomCard 视觉调整 |
| 骨架 sync v1.0 → v1.1 改 v1.0 段 | 严格"只增不删",v1.0 段作历史母本保留 |
| 6 短工 + 1 PM 节奏饱和 | § 3.4 时间表串行/并行安排;3.3 文件边界零交叉,可安全并行 |
| R10 长工 = summarized-partial-gate-waived-by-p1 状态跨周传染 | R10-followup 短工不 ping 联机长工,直接派新短工补手验 |
(End of 管家 prompt —— 自包含,7 行动 + 1 PM 自跑 + 边界 + 回执 + DoD,7.13 下午起跑)