fix(rectification): surface dropped probes and filter tools by the decision
Silent unrenderable discriminators, a missing question-contract golden, and a always-on tool table were hiding fail-closed drops behind the prompt wall. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -760,6 +760,47 @@ test("turn_decision stays inside the configured byte budget", () => {
|
||||
assert.ok(!("baseline_birth_snapshot" in projection));
|
||||
});
|
||||
|
||||
test("unrenderable focus schema stays visible as current_question, not null", () => {
|
||||
const snapshot = candidateSnapshotFixture();
|
||||
Object.assign(snapshot.decision_receipt, { inference_state: inferenceState() });
|
||||
const dossier = parseV9CaseDossier(dossierFixture({
|
||||
latestResult: snapshot,
|
||||
conversationSummary: conversationSummaryFixture({
|
||||
activeFocus: activeFocusFixture({
|
||||
expectedAnswerSchema: { choice: { prompt: "坏题" } },
|
||||
}),
|
||||
}),
|
||||
}));
|
||||
assert.ok(dossier);
|
||||
const projection = projectTurnDecision(dossier);
|
||||
const currentQuestion = projection.current_question as {
|
||||
unrenderable?: boolean;
|
||||
reason?: string;
|
||||
prompt?: string | null;
|
||||
} | null;
|
||||
assert.equal(currentQuestion?.unrenderable, true);
|
||||
assert.equal(currentQuestion?.reason, "invalid_choice_schema");
|
||||
assert.equal(currentQuestion?.prompt, null);
|
||||
assert.equal(projection.current_probe, null);
|
||||
});
|
||||
|
||||
test("collection focus without choice copy is not an unrenderable current_question", () => {
|
||||
const snapshot = candidateSnapshotFixture();
|
||||
Object.assign(snapshot.decision_receipt, { inference_state: inferenceState() });
|
||||
const dossier = parseV9CaseDossier(dossierFixture({
|
||||
latestResult: snapshot,
|
||||
conversationSummary: conversationSummaryFixture({
|
||||
activeFocus: activeFocusFixture({
|
||||
intent: "clarify_event_date",
|
||||
expectedAnswerSchema: { required: ["month"] },
|
||||
}),
|
||||
}),
|
||||
}));
|
||||
assert.ok(dossier);
|
||||
const projection = projectTurnDecision(dossier);
|
||||
assert.equal(projection.current_question, null);
|
||||
});
|
||||
|
||||
test("turn_decision hides current_probe unless a valid current_question exists", () => {
|
||||
const withFocus = projectTurnDecision(parseV9CaseDossier(choiceDossier())!);
|
||||
assert.ok(withFocus.current_question);
|
||||
|
||||
Reference in New Issue
Block a user