fix(rectification): keep dated precision cards after empty dated discriminator pool (BUG-651)

Staging gate 2558 failed because leftover tests still expected D9/D10 or leftover collect after the pool emptied. Discriminate sessions still deliver; dated precision cards still ask.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-11 15:22:55 +08:00
co-authored by Cursor
parent 035865d4c1
commit f870d3d757
13 changed files with 184 additions and 90 deletions
@@ -2053,35 +2053,31 @@ test("D9/D10 contrast after occupation coverage asks a discriminator, not adopt"
}],
},
});
assert.equal(plan.next_followup?.intent, "distinguish_candidates");
assert.match(plan.next_followup?.user_prompt_hint ?? "", /职业前事|事业盘/);
assert.equal(conversationalSessionOutcome({
// 原值: 职业覆盖后仍问 D10 性格对照
// 新值: 性格题 deferred,不再作为淘汰区分题
// 原因: BUG-651
assert.notEqual(plan.next_followup?.choice_kind, "varga_style");
assert.notEqual(plan.next_followup?.intent, "distinguish_candidates");
const outcome = conversationalSessionOutcome({
selectionAllowed: true,
proposeAllowed: true,
confirmationAllowed: false,
nextFollowup: plan.next_followup,
methods: plan.methods,
discriminatorProbe: {
probeId: "contrast:varga.d10",
candidateSetVersion: "05:00-05:02",
question: "核对一段还没用进评分的职业前事",
expectedOutcomes: [
{ outcomeId: "a", supportsCandidateIds: ["05:00"], conflictsCandidateIds: ["05:01"] },
{ outcomeId: "b", supportsCandidateIds: ["05:01"], conflictsCandidateIds: ["05:00"] },
],
candidateSplitHash: "varga.d10",
informationGain: 0.12,
sourceFeatures: [{ technique: "D10", calculationResultId: RESULT_ID }],
domain: "career",
year: null,
semanticKey: "varga.d10",
},
discriminatorProbe: null,
candidateScores: [
{ time: "05:00", score: 34 },
{ time: "05:01", score: 33 },
{ time: "05:02", score: 33 },
],
}), "discriminate_candidates");
});
// 原值: discriminate_candidates(把 D10 性格题当区分探针)
// 新值: 无带年月探针即交付
// 原因: BUG-651
assert.ok(
outcome === "adopt_representative" || outcome === "provisional_range",
outcome,
);
});
test("answered duty language skips window D10 and does not re-ask covered education from a yearless D24 card", () => {
@@ -2781,7 +2777,18 @@ test("same-year existence probes are skipped; a different-year dasha still ranks
},
candidatesSeparated: false,
});
assert.equal(d24Wins.next_followup?.semantic_key, d10.semanticKey);
assert.notEqual(d24Wins.next_followup?.semantic_key, d10.semanticKey);
assert.notEqual(d24Wins.next_followup?.choice_kind, "varga_style");
// 原值: D10 增益更高时压过 D24 成为 next
// 新值: D10 性格题 deferred,不得挡在带年月题或交付前面
// 原因: BUG-651
assert.equal(
d24Wins.dropped_probes.some((item) => (
item.semantic_key === d10.semanticKey && item.reason === "yearless_deferred"
)),
true,
JSON.stringify(d24Wins.dropped_probes),
);
});
test("three dated events with one holdout keep collecting instead of discriminating", () => {