№ · 任务清单 CH.07.13
主页 · 📃 任务清单 · 2026-07-13-r14-cross-week-anchor

2026-07-13-r14-cross-week-anchor

📅 2026-07-13 · 📦 7.5 KB · 📃 任务清单 · 📝 MD 文档 🆕 14d 🏷️ 会话

⟦tag:v2|task|2026-07-13-r14-cross-week-anchor⟧ kind: task id: 2026-07-13-r14-cross-week-anchor lane: R14 title: 跨周目 v1.1 锚点(T+0 立即派,4-6h,流水化) objective: 收口 W29 v1.1 R14 lane —— 跨周目 v1.1 锚点(Year 2/3 startDay + victoryDay)+ 折算曲线(1.0/0.8/0.6/0.4)常量 + 折算函数 + 文档,沿用 R9 7.12 12:52 签字值。 scope: docs/plans/active/2026-07-13-5日开发计划-v1.md § 16.3, docs/design/active/胜利终局v1.1待办-第二三年锚点与多周目-v1.md 域 A + 域 D, docs/design/active/跨周目v1.1锚点-v1.md(新), src/data/endgame/multiRun.ts(新,type only), src/utils/endgame/multiRun.ts(新,纯函数), src/data/endgame/victoryConditions.ts(改,加 3 常量) acceptance:

  • 只动这 4 个文件;不动 endgame-save-load-design.md / App.tsx / auction/** / multiplayer/** / 胜利终局-truth-source-v1.md(7.3 verified)
  • src/data/endgame/multiRun.ts 导出 CrossWeekAnchor + WeekRunSnapshot 2 个 type
  • src/utils/endgame/multiRun.ts 导出 computeLegacyPoints(weekNum, baseScore, mode): number 纯函数,接受 now: number 注入
  • src/data/endgame/victoryConditions.ts 加 3 常量:CROSS_WEEK_LEGACY_DECAY = [1.0, 0.8, 0.6, 0.4] / LEGACY_BOOST = 0.1 / WEEKLY_LEGACY_CAP = 1000,保留原有 7 个常量
  • 5 场景单元测试全过(放 src/utils/endgame/multiRun.regression.ts)
  • cmd /c npm run build 通过,cmd /c npm run lint 无新增
  • docs/design/active/跨周目v1.1锚点-v1.md 落盘,7 段真填(§ 0-§ 6)
  • 胜利终局v1.1待办-第二三年锚点与多周目-v1.md 只读,R14 是它的实装,本卡

worker sessionId: mvs_f1b5e7e97d2e4a32be7fa797d7e1d317 current state: verified (retry callback absorbed; first attempt remained rolled back) blockers: none。R9 7.12 12:52 签字值 + R9 长工 7.12 12:57 callback absorbed 全部解前置。 next action: R14 已收口;R13 已按流水线启动并等待 formal callback。 summary:

  • 这是 W29 v1.1 剧情 P0 lane 之一,前置(R9 签字)已解,从 W30 计划提前到 W29 7.13 立即派
  • 文件边界零交叉:R14 走 endgame/,不撞 R13(story/)/ T3(items/)/ R10-followup(multiplayer-lobby/)/ 骨架 sync(纯文档)
  • 流水化派工:R14 派工后立即起草 R13 task 卡;R14 callback 立即派 R13

callback absorbed:

  • formal callback: Mavis communication message #170,from mvs_f1b5e7e97d2e4a32be7fa797d7e1d317 to root,status done
  • independent verification: R14 5 场景 + R9 6 场景合计 11/11 passed;cmd /c npm run build passed;targeted git diff --check passed
  • implementation evidence:src/data/endgame/multiRun.ts,src/utils/endgame/multiRun.ts,src/utils/endgame/multiRun.regression.ts,src/data/endgame/victoryConditions.ts,docs/design/active/跨周目v1.1锚点-v1.md
  • accepted contract note:weekNum >= 20.95 跨年衰减仅记录于 LegacyDecayNote,未叠入 computeLegacyPoints;否则会与签字验收值 80 / 90 冲突

prompt(给短工 / 子会话的指令)

角色:[短工]#剧情-跨周目v1.1锚点@v1.0 lane:R14 时间窗:T+0 立即起 ~ 4-6h 内回 callback(流水化,不卡日历) 承接文档: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' }
    • LegacyDecayNote 注释:跨年周目边界 weekNum >= 2baseScore *= 0.95(跨年衰减)
  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 上限(WEEKLY_LEGACY_CAP)
    • 跨年周目边界:weekNum >= 2baseScore *= 0.95(跨年衰减)
    • 禁止 setTimeout / setInterval / Date.now() 直接调用,全部接受 now: number 注入
    • 入口处不变 baseScore,产出新对象
  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 已有 4 个锚点常量)
    • § 2 折算曲线 + 上限
    • § 3 跟 R9 签字值联动(CROSS_WEEK_INHERITANCE_RATE = 0.3 是基础继承率,折算曲线是叠加,两者不冲突)
    • § 4 验收 + 不做
    • § 5 跟 Phase 4 账号传承接口(purchasedLegacies 触发 mode='legacy')
    • § 6 风险 + 缓解

文件边界(强制)

  • ✅ 新增: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 通过
  • cmd /c npm run lint 无新增
  • 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
  • ❌ 改 GlobalProfile schema
  • ❌ 改 App.tsx 任何代码

风险 + 缓解

  • R14 跟 R9 签字值(0.3)跟折算曲线(0.4)有概念混淆风险 → 文档 § 3 联动段明示:0.3 是跨周目继承率(域 D 域 B 联动),0.4 是 4+ 周目衰减(域 D 折算曲线),两者叠加不冲突
  • 跨年周目边界 weekNum >= 2 baseScore *= 0.95baseScore 入参型契约不稳 → 在 type 层加 LegacyDecayNote 注释,纯函数入口处不变 baseScore,产出新对象

派工触发链(流水化)

  • T+0 立即派工(本卡就是流水化第 1 条)
  • R14 callback 收到 → 立即派 R13(docs/handoff/tasks/2026-07-13-r13-old-ledger-nodes.md)
  • 回 R14 callback,R13 派工由管家(本会话)接力

回执模板(短工完成时按这个格式回报主会话)

[R14 #剧情-跨周目v1.1锚点@v1.0 回执]
- 状态:✅ / ⚠️ / ❌
- 新增文件:<3 个实际路径>
- 修改文件:<1 个实际路径>
- 5 场景测试:<PASS/FAIL 列表>
- `npm run build`:✅ / ❌
- `npm run lint`:无新增 / 新增 N 个
- 风险/阻塞:<如有列出;如无,写 "无">
- 残余风险:<如有列出;如无,写 "无">
- 建议给 R11 接力点:<一句话>

回执发送对象:root session(mvs_024c77d9a55549c98e3731c1cc770434),用 mavis communication send --from <你的 session id> --to <root> --command prompt --content "<回执>"


(End of R14 task card)