2026-07-15-r12-story-tracking-purify
⟦tag:v2|task|2026-07-15-r12-story-tracking-purify⟧
kind: task
id: 2026-07-15-r12-story-tracking-purify
lane: R12
title: 剧情追踪字段净化(Day 3 并行,3-4h)
objective: 收口 W29 v1.1 R12 lane: 围绕 StoryTrackingCard 玩家可见开发者字段泄漏、year1Plan 文案污染与 App.tsx nextHint 过长问题做 4 文件最小净化,并把证据链交给 R11 收口文档。
scope: docs/plans/active/2026-07-13-5日开发计划-v1.md § 16.1 / § 17, docs/design/active/剧情追踪-字段净化与输出规则-v1.md, docs/handoff/tasks/2026-07-04-r6-story-tracking-purify-spec-v1.md, docs/handoff/tasks/2026-07-06-story-tracking-purify-owner.md, AGENTS.md, src/components/StoryTrackingCard.tsx, src/data/year1Plan.ts, src/App.tsx
acceptance:
- 只动
src/components/StoryTrackingCard.tsx、src/data/year1Plan.ts、src/App.tsx、AGENTS.md这 4 个文件;不动src/utils/failureEndgame.ts、src/utils/jianghuBriefing.ts、src/components/multiplayer-lobby/**、src/data/auction/** StoryTrackingCard.tsx不再向玩家暴露mainchainLine、attributeLine、itemLine、checklistLine这类开发者字段拼接year1Plan.ts的itemLine收束为玩家文案口径;App.tsx的nextHint渲染长度 <= 24 字并保留原变量cmd /c npm run build通过;cmd /c npm run lint无新增错误- 截图对照中不再出现
tax_reported/brief=risk-tax_reported/主链:.../属性:.../投放:.../验收:xxx -> xxx -> bridge跨模块跳转功能不受影响,且R11收口文档拿到 R12 的实际落地证据 worker threadId: 019f54bd-b4f8-7b02-8ccd-c016324dcc1c current state: verified blockers: none。P1 于2026-07-12 13:06:48 +08:00豁免2026-07-15时间门;R10 记录为partial / accepted residual risk,不阻断本 lane。 next action: none; archived after formal callback absorption. R11 may consume this evidence. summary:- 这是 W29 v1.1 3 条剧情 P0 lane 里唯一 W29 内实际派工的剧情 lane;
R13/R14本周只立占位卡。 - v1.1 § 16.1 与 W28
R6spec 的旧行号都已漂移;本卡只认2026-07-09 12:15 +08:00复跑 grep 真值。 - 当前 worktree 相比旧 spec 还有一处新增漂移:
src/data/year1Plan.ts:396的itemLine现为channels + storyItems,不再是旧 spec 中的focus + storyItems;短工派工时必须按玩家文案口径收束,不能照抄旧字符串结构。 - P1 early-dispatch override absorbed; R12 is verified. Browser screenshot and bridge click-through evidence are complete.
TL;DR
- 实际派工日期:
2026-07-12,P1 直接豁免原2026-07-15时间门。 - 当前动作: worker
019f54bd-b4f8-7b02-8ccd-c016324dcc1c已进入 In-Flight。 - 派工前动作:
2026-07-15上午开工前 30 分钟重读R10卡面并记录当前状态;无论R10是verified、closed还是partial,本卡都按期启动。
真行号清单
2026-07-09 12:15 +08:00 复跑 grep 输出摘录
src\components\StoryTrackingCard.tsx:24: mainchainLine?: string;
src\components\StoryTrackingCard.tsx:97: && left.mainchainLine === right.mainchainLine
src\components\StoryTrackingCard.tsx:105:const buildMainchainLine = (bridge: Pick<TasklineFailureBridge, 'pressureSourceTags' | 'failureSeedTags' | 'briefingRefs' | 'trackingJumpTarget'> & Partial<Pick<TasklineFailureBridge, 'sourceLabel' | 'sourceSummary' | 'endgameFocus'>>) => {
src\components\StoryTrackingCard.tsx:137: mainchainLine: buildMainchainLine({
src\components\StoryTrackingCard.tsx:508: {(bridge?.mainchainLine || storyTracking.year1Plan) && (
src\components\StoryTrackingCard.tsx:510: {bridge?.mainchainLine && (
src\components\StoryTrackingCard.tsx:512: 主链:{bridge.mainchainLine}
src\components\StoryTrackingCard.tsx:537: <span className="truncate max-w-[150px]">属性:{storyTracking.year1Plan.attributeLine}</span>
src\components\StoryTrackingCard.tsx:538: <span className="truncate max-w-[150px]">投放:{storyTracking.year1Plan.itemLine}</span>
src\components\StoryTrackingCard.tsx:539: <span className="truncate max-w-[200px]" title={storyTracking.year1Plan.checklistLine}>
src\components\StoryTrackingCard.tsx:540: 验收:{storyTracking.year1Plan.checklistLine}
src\data\year1Plan.ts:66: attributeLine: string;
src\data\year1Plan.ts:67: itemLine: string;
src\data\year1Plan.ts:68: checklistLine: string;
src\data\year1Plan.ts:391: const attributeLine = (activeAttributeLinks.length > 0
src\data\year1Plan.ts:396: const itemLine = `${itemBand.channels.slice(0, 2).join(' / ')} · ${itemBand.storyItems.slice(0, 2).join(' / ')}`;
src\data\year1Plan.ts:397: const checklistLine = checklistStage.id === 'check_06'
src\data\year1Plan.ts:409: attributeLine,
src\data\year1Plan.ts:410: itemLine,
src\data\year1Plan.ts:411: checklistLine,
src\App.tsx:3166: const nextHint =
src\App.tsx:3245: nextHint,
派工取值(以这张表为准)
| 文件 | 真行号 | 派工说明 |
| :--- | :--- | :--- |
| src/components/StoryTrackingCard.tsx | 510-514 | 删除 bridge?.mainchainLine 渲染块;保留外层 508 包裹与 year1Plan 分支 |
| src/components/StoryTrackingCard.tsx | 537 | 删除 属性:{attributeLine} |
| src/components/StoryTrackingCard.tsx | 538 | 删除 投放:{itemLine} |
| src/components/StoryTrackingCard.tsx | 539-540 | 改写验收区,替换当前 checklistLine 直出 |
| src/data/year1Plan.ts | 396 | 把 itemLine 从 channels + storyItems 收束为玩家文案口径,建议回到 itemBand.focus |
| src\App.tsx | 3166-3176 | 保留 const nextHint = ... 原变量,在其后新增 nextHintSafe |
| src\App.tsx | 3245 | 返回值中的 nextHint 改为使用 nextHintSafe |
改动清单
src/components/StoryTrackingCard.tsx- 删除
bridge.mainchainLine玩家可见渲染块 - 删除
attributeLine/itemLine两行 - 用玩家可见阶段信息替换
checklistLine直出
- 删除
src/data/year1Plan.ts- 收束
itemLine为玩家文案,禁止继续把channels / storyItems拼接串直接喂给 UI
- 收束
src\App.tsx- 新增
nextHintSafe - 保留
nextHint原变量,并把当前返回值切到nextHintSafe
- 新增
AGENTS.md- 第 4 节末尾追加「玩家文案 vs 开发者字段」段落
启动前 MUST-DO
- 派工前 30 分钟重读 2026-07-16-multiplayer-ui-integration.md。
- 在本卡
派工回执段写一句:
R10 当前状态 = <verified / closed / partial / open>, <记录结论>
- 判定规则:
verified/closed-> R12 按期派发,记录“R10 已闭口”partial-> R12 按期派发,记录“R10 仍为并行未闭口风险”open/ 未创建 -> R12 按期派发,记录“控制面异常,需后续单独纠偏”
验收清单
- [ ]
cmd /c npm run build通过 - [ ]
cmd /c npm run lint无新增错误 - [ ] 剧情追踪面板截图中不再出现开发者字段直出
- [ ]
bridge跨模块跳转功能未受影响 - [ ]
AGENTS.md第 4 节新增段落已落盘 - [ ]
nextHint渲染 <= 24 字,超长时末尾带… - [ ]
R11收口文档吸收了本卡证据链
风险
src/App.tsx已被R10触碰过相邻区域;本卡只能通过新增nextHintSafe变量解决,不得顺手调整 multiplayer 入口year1Plan.ts当前itemLine实现与旧 spec 已漂移;若短工直接照抄旧 spec 行号或字符串结构,容易误改StoryTrackingCard.tsx外层year1Plan包裹仍在;短工只能删bridge渲染块,不能把整个 year1 区块一起删掉R10在派工日可能仍显示partial;当前口径已明确这只算并行风险记录,不再阻断R12
回退
StoryTrackingCard.tsx若出现回归,只回退本卡删改的 JSX 行,保留bridge数据层nextHintSafe若出错,回退到nextHint原渲染路径year1Plan.ts若 player-facing 收束不稳,优先退回到只读itemBand.focus,不要回到channels / storyItems拼接串
不做
- 不实现
?dev=1 - 不重做
StoryTrackingCard整体架构 - 不碰
src/components/multiplayer-lobby/** - 不碰
src/data/auction/**/src/utils/auctionRules.ts - 不顺手开新需求或补别的剧情 lane
派工回执
[R12 #剧情-字段净化@v1.2 回执]
- 变更文件:<列实际路径>
- 关键行为变化:<玩家可见变化 2-4 条>
- 验证结果:<build / lint / 截图 / 跳转回归>
- 风险/回退:<如有列出;如无写 无>
- R10 当前状态 = <状态>, <记录结论>
默认不要附整段 git diff。只有在审查、冲突排查或明确要求时,才补最小 patch。
参考入口
docs/plans/active/2026-07-13-5日开发计划-v1.md§ 16.1 / § 17docs/design/active/剧情追踪-字段净化与输出规则-v1.mddocs/handoff/tasks/2026-07-04-r6-story-tracking-purify-spec-v1.mddocs/handoff/tasks/2026-07-06-story-tracking-purify-owner.mddocs/handoff/tasks/2026-07-15-p2p-timeout-reconnect.mddocs/handoff/tasks/2026-07-16-multiplayer-ui-integration.md
(End of R12 task card)