BUG-915:BUG-912 首版只在盖戳那一刻把自建探针注入内存 state,答题 / GET / idle 三处读持久化 receipt 都找不到它 → 点选与打字回答报 stale_probe、GET 无卡、 刚落库的焦点每次 idle persist 被 superseded。新增 withOwnedDistinguishProbes(state, receipt) 按 window_scan.transitions + state 候选确定性重建(照 withNakshatraBoundaryProbe 的既有模式),接入盖戳、点选答题、 打字答题、GET 投影、idle 过期五处,并加源码契约测试钉住。重建探针的 source 为 owned_varga_style,像 nakshatra_boundary 一样从 contrast packet 与 event 探针池 排除,避免答题写回 state 后它们变成可问的题。 产品决策(任务书 §1d,选项 b):分盘风格题不再作为 distinguish_candidates 计分题。 分层判别题只在引擎给出该领域带年份事件探针时以「某年前后有没有…」出题并按该探针 计分;没有事件探针时不出题,计划直接走下一条线。删除 attachVargaDistinguishIdentity 与 withFollowupOwnedProbe,保留 buildVargaDistinguishFields / conflictProbeFromFollowup 供重建与将来选项 (a)。 BUG-917:最新助手消息带未答点选而 GET 无卡时,缺口态改走 unavailable 修复出口, 不再与「再说一件带年月的事」同屏;superseded 且未作答的焦点不再渲染成灰色选项。 BUG-916:年月阶段 host 前置挪到会话校验之后,phase 复用 answer.host_fallback。 测试改走生产路径(inferenceForPersistedAnswer / choiceCardFromCaseDossier / persistedDistinguishFocusStale),删掉手工把自建探针塞进 state 的 fixture。 tsc 0 错;lint 0 error / 116 warning;npm test 3421 条 / 31 红,失败清单与基线 c32f81e7 逐条一致;next build --webpack 后 / 仍 ○ Static,产物 JS gzip 1,496,339 → 1,496,408(+0.005%);pytest rectification 定向 63 绿,快速门 Python 段 798 绿。Skill 未 bump。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45
c32f81e7