diff --git a/docs/tasks/PROGRESS-rectification-dead-d9-choice-20260916.md b/docs/tasks/PROGRESS-rectification-dead-d9-choice-20260916.md index 3a71f2a8..0756b81b 100644 --- a/docs/tasks/PROGRESS-rectification-dead-d9-choice-20260916.md +++ b/docs/tasks/PROGRESS-rectification-dead-d9-choice-20260916.md @@ -6,7 +6,7 @@ BUG:912~914。Skill 未 bump。 ## 做了什么 -- **T1 / BUG-912**:`stampChoiceSchemaWithProbe` 不再退到最高增益探针。`varga-distinguish-probe.ts` 按剩余候选的分盘上升给 D9/D10 等风格题自建 `semantic_key = method:ask_theme`。GET `persistedDistinguishCard` 从落库副本投影。过期焦点在 idle persist 里 `superseded` 后落下一问。 +- **T1 / BUG-912**:`stampChoiceSchemaWithProbe` 不再退到最高增益探针。`varga-distinguish-probe.ts` 按剩余候选的分盘上升给 D9/D10 等风格题自建 `semantic_key = method:ask_theme`。GET `persistedDistinguishCard` 从落库副本投影。过期焦点在 idle persist 里 `superseded` 后落下一问。Gitea 2706 红在「receipt 探针未进 inference_state 仍应拒绝 persist」:注入自建探针时只认 `method:ask_theme` + `varga_observation`/`precision_stage`,不把 GET 目录里的引擎探针写进 state。 - **T2 / BUG-913**:回放为 **closed_by_design**。已有带年月经历时 `yearlessPersonalityCanAsk` 为假;平局参考题只认 `varga.d9` / `varga.d10`。线问完后的并列出卡是 BUG-689 出口,不是 BUG-751 / BUG-688 复发。未改门槛。 - **T3 / BUG-914**:`NAKSHATRA_TRAITS` 每个 option 只取第一极。 - **T4**:BUG_HISTORY / CHANGELOG / 真机清单 / 本进度。CHANGELOG 写明 2026-09-16 前分盘风格题答案可能计错分。 diff --git a/frontend/src/lib/rectification-agentic/v9/varga-distinguish-probe.ts b/frontend/src/lib/rectification-agentic/v9/varga-distinguish-probe.ts index fd82e14a..c3524404 100644 --- a/frontend/src/lib/rectification-agentic/v9/varga-distinguish-probe.ts +++ b/frontend/src/lib/rectification-agentic/v9/varga-distinguish-probe.ts @@ -212,6 +212,12 @@ export function withFollowupOwnedProbe( followup: DistinguishFollowup | null | undefined, ): InferenceState | null { if (!state || !followup) return state; + // Only inject probes this layer built. Catalog probes that are not yet in + // inference_state must still fail persist (BUG-912 must not undo T0 of + // rectification-probe-pool-exhausted-20260911). + const ownedKey = `${followup.method_id}:${followup.ask_theme}`; + if (followup.semantic_key !== ownedKey) return state; + if (followup.source !== "varga_observation" && followup.source !== "precision_stage") return state; const probe = conflictProbeFromFollowup(followup); if (!probe) return state; if (state.probes.some((item) => item.id === probe.id || item.semantic_key === probe.semantic_key)) {