fix(rectification): refresh remaining probes and targeted collect before delivering range (BUG-653/654)
Independent Staging Quality Gate / validate (push) Successful in 13m54s
Independent Staging Quality Gate / publish (push) Successful in 10m50s

Dated-choice exhaustion is not convergence. Refresh probes from remaining
active candidates, then ask a targeted collect, then deliver. Skill 10.0.24.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-11 18:28:39 +08:00
co-authored by Cursor
parent 9941c34d4b
commit 6c9a089620
58 changed files with 2109 additions and 295 deletions
@@ -954,7 +954,7 @@ test("read-case follows method plan and keeps D9/D10 type tables when SQL missin
execute(input: unknown): Promise<{
conversation_summary: { missing_evidence_categories: string[] };
method_followup_plan: {
next_followup: { method_id: string; domain: string | null; intent?: string } | null;
next_followup: { method_id: string; domain: string | null; intent?: string; kind_hint?: string } | null;
deferred_followup: { method_id: string; domain: string | null } | null;
session_outcome: string;
};
@@ -968,10 +968,16 @@ test("read-case follows method plan and keeps D9/D10 type tables when SQL missin
}>;
}).execute({ caseId: CASE_ID, projection: "full_diagnostics" });
assert.deepEqual(projection.conversation_summary.missing_evidence_categories, ["relocation", "health", "finance"]);
// 原值: d9_relationship / relationship
// 新值: 三件三类已开训练门,不再按方法轮转采集
// 原因: SQL 缺类不得压过收集池/S2BUG-648
assert.notEqual(projection.method_followup_plan.next_followup?.intent, "collect_method_evidence");
// 原值: 训练门开后不再按方法轮转采集
// 新值: D9 仍换升且感情未覆盖,先定向补事
// 原因: 带年月池空后按剩余层定向补事(BUG-654);SQL 缺类不得压过此问
assert.equal(projection.method_followup_plan.next_followup?.intent, "collect_method_evidence");
assert.equal(projection.method_followup_plan.next_followup?.domain, "relationship");
assert.match(projection.method_followup_plan.next_followup?.kind_hint ?? "", /targeted/);
assert.doesNotMatch(
projection.method_followup_plan.next_followup?.domain ?? "",
/relocation|health|finance/,
);
assert.equal(projection.method_followup_plan.deferred_followup, null);
assert.equal(projection.internal_observations.find((item) => item.layer === "d9")?.ask_theme, "relationship_style");
assert.equal(projection.latest_result.confirmation_allowed, false);
@@ -1410,9 +1416,9 @@ test("rescore failure does not fail the evidence write", async () => {
assert.ok(result.rescore.error_code);
});
test("public tool surface stays at 14 and new cases bind 10.0.23", () => {
test("public tool surface stays at 14 and new cases bind 10.0.24", () => {
assert.equal(PUBLIC_RECTIFICATION_TOOLS.length, 14);
assert.equal(RECTIFICATION_SKILL_VERSION, "10.0.23");
assert.equal(RECTIFICATION_SKILL_VERSION, "10.0.24");
const deprecated = resolveExactSkillPackage(
"jyotish-birth-time-rectification",
"10.0.2",
@@ -3224,6 +3230,14 @@ test("offer-candidates allows a 34/33/33 tie after method coverage when remainin
evidenceLedgerFingerprint: scoreableFingerprintForRawEvidence(methodCoverageTieEvidence),
decisionReceipt: {
propose_allowed: true,
inference_state: {
...producedInferenceState([
{ id: CANDIDATE_ID, time: "05:00", relative_support: 34 },
{ id: SECOND_CANDIDATE_ID, time: "05:01", relative_support: 33 },
{ id: THIRD_CANDIDATE_ID, time: "05:02", relative_support: 33 },
]),
refresh_count: 1,
},
window_scan: {
scanned: true,
d9_lagna_count: 3,