fix(rectification): downgrade yearless personality probes to tie-breakers (BUG-629)
Independent Staging Quality Gate / validate (push) Successful in 11m54s
Independent Staging Quality Gate / publish (push) Successful in 8m14s

Ask dated dasha probes first; D9/D10 and nakshatra wait until that pool is empty, score at half weight, and never eliminate. Skill 10.0.21.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-10 00:26:58 +08:00
co-authored by Cursor
parent eb8a3120e5
commit fef54b6e42
41 changed files with 1452 additions and 70 deletions
@@ -1454,9 +1454,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.20", () => {
test("public tool surface stays at 14 and new cases bind 10.0.21", () => {
assert.equal(PUBLIC_RECTIFICATION_TOOLS.length, 14);
assert.equal(RECTIFICATION_SKILL_VERSION, "10.0.20");
assert.equal(RECTIFICATION_SKILL_VERSION, "10.0.21");
const deprecated = resolveExactSkillPackage(
"jyotish-birth-time-rectification",
"10.0.2",
@@ -1945,10 +1945,20 @@ test("confirmed relationship evidence skips generic D9 followups unless a real p
candidate_split_hash: "set-test:relationship:2021",
}],
});
// 原值: 绑定真实 D9 探针时 next 是 varga.d9,压过同域 2021 带年月题
// 新值: next 是 relationship.2021.dasha_activationD9 记 yearless_deferred
// 原因: BUG-629 决策 1,可问的带年月区分题优先于性格题
assert.equal(probed.next_followup?.domain, "relationship");
assert.equal(probed.next_followup?.source, "event_probe");
assert.equal(probed.next_followup?.semantic_key, "varga.d9.05:00|05:14");
assert.doesNotMatch(probed.next_followup?.semantic_key ?? "", /relationship\.2021/);
assert.equal(probed.next_followup?.semantic_key, "relationship.2021.dasha_activation");
assert.notEqual(probed.next_followup?.semantic_key, "varga.d9.05:00|05:14");
assert.equal(
probed.dropped_probes.some((item) => (
item.semantic_key === "varga.d9.05:00|05:14" && item.reason === "yearless_deferred"
)),
true,
JSON.stringify(probed.dropped_probes),
);
});
test("d9_refine after relationship still asks uncovered career first", () => {
@@ -2823,8 +2833,18 @@ test("same-year existence probes are skipped; a different-year dasha still ranks
},
candidatesSeparated: false,
});
assert.equal(highest.next_followup?.semantic_key, d10.semanticKey);
assert.doesNotMatch(highest.next_followup?.semantic_key ?? "", /career\.2018/);
// 原值: next = varga.d10(增益 3.1 压过 career.2018
// 新值: next = career.2018.dasha_activationD10 记 yearless_deferred
// 原因: BUG-629 决策 1,带年月区分题优先于性格题
assert.equal(highest.next_followup?.semantic_key, "career.2018.dasha_activation");
assert.notEqual(highest.next_followup?.semantic_key, d10.semanticKey);
assert.equal(
highest.dropped_probes.some((item) => (
item.semantic_key === d10.semanticKey && item.reason === "yearless_deferred"
)),
true,
JSON.stringify(highest.dropped_probes),
);
const d24Wins = buildMethodFollowupPlan({
evidence,