№ · 任务清单 CH.07.13
主页 · 📃 任务清单 · 任务:W29 收尾超额周派工 — 管家执行指令(2026-07-13 立即起 · 流水化)

任务:W29 收尾超额周派工 — 管家执行指令(2026-07-13 立即起 · 流水化)

📅 2026-07-13 · 📦 36.4 KB · 📃 任务清单 · 📝 MD 文档 🆕 14d 🏷️ 装备🏷️ 剧情🏷️ 计划🏷️ 联机🏷️ 时间🏷️ 会话

拍板时间: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 个新 lane
  • e = 加 联机 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 残缺(已豁免情况)

  1. R10 长工 = summarized-partial-gate-waived-by-p1(7.12 13:06 P1 豁免,7.15-7.16 R10-followup 短工补全手验)
  2. 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.md v0.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 下午起跑)