fix(rectification): stop speaking unstampable distinguish stems (BUG-674/675)
Independent Staging Quality Gate / validate (push) Failing after 20s
Independent Staging Quality Gate / publish (push) Skipped

Distinguish followups that cannot stamp a probe now go to persistExhaustionCollect instead of repeating the card stem in the assistant body. Choice focuses without asked_turn_id hang on the last assistant turn, and persisted_question with a live choice_card renders the existing card. Representative-time inconsistency is warn-only (BUG-676 investigating).
This commit is contained in:
jesse-ux
2026-09-14 03:42:48 +08:00
parent 9375012f17
commit 69ffa07d6b
16 changed files with 887 additions and 46 deletions
@@ -77,7 +77,10 @@ test("GET turns attach question by asked_turn_id and never by timestamps", () =>
assert.match(caseProjection, /question: turn\.question/);
assert.match(caseProjection, /question_source: questionSourceFromFocusList\(listed\)/);
const attach = readFileSync(new URL("../src/lib/rectification-agentic/v9/turn-question.ts", import.meta.url), "utf8");
assert.match(attach, /if \(!focus\.askedTurnId\) continue/);
// 原值: if (!focus.askedTurnId) continue
// 新值: 无 askedTurnId 的活动选择题挂到最后一条助手消息后再 continue
// 原因: BUG-675
assert.match(attach, /if \(!focus\.askedTurnId\) \{/);
assert.doesNotMatch(attach, /askedAt|createdAt/);
});