fix(rectification): separate adjacent minutes with transition proximity
Independent Staging Quality Gate / validate (push) Successful in 11m56s
Independent Staging Quality Gate / publish (push) Has been cancelled

Day-level events now score Vimshottari/Narayana transition closeness so
nearby candidate minutes can diverge, with gated quality probes and
answer-prior ranking so high-base-rate existence questions stay out.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-01 17:41:06 +08:00
co-authored by Cursor
parent 20df8c6022
commit 8743dcb105
18 changed files with 1402 additions and 55 deletions
@@ -103,6 +103,7 @@ export type EngineContrastProbe = Readonly<{
answer_class?: string;
sign?: string;
}>[];
target_evidence_id?: string;
}>;
const REMAINING_LAYERS = ["d24", "d5", "d10", "d9", "d4", "d7", "d12", "d2", "d11", "d30"] as const;
@@ -16,6 +16,7 @@ export type SnapshotStaleReason =
| "scoreable_evidence_changed"
| "candidate_set_superseded"
| "inference_revision_changed"
| "scoring_policy_changed"
| "fingerprint_missing";
export const SNAPSHOT_STALE_COPY: Readonly<Record<SnapshotStaleReason, string>> = {
@@ -23,6 +24,7 @@ export const SNAPSHOT_STALE_COPY: Readonly<Record<SnapshotStaleReason, string>>
scoreable_evidence_changed: "可评分证据已变化,请重新比较候选",
candidate_set_superseded: "已有更新的候选结果",
inference_revision_changed: "候选后验已更新,请使用当前结果",
scoring_policy_changed: "评分政策已更新,请重新比较候选",
fingerprint_missing: "候选快照缺少证据指纹,请重新比较候选",
};
@@ -50,6 +52,13 @@ export function classifySnapshotStaleReason(
if (snapshot.inferenceRevision !== current.inferenceRevision) {
return "inference_revision_changed";
}
if (
snapshot.scoringPolicyVersion
&& current.scoringPolicyVersion
&& snapshot.scoringPolicyVersion !== current.scoringPolicyVersion
) {
return "scoring_policy_changed";
}
return null;
}
@@ -62,7 +71,8 @@ export function scoreableSnapshotIsCurrent(
if (!snapshot.scoreableEvidenceFingerprint || !current.scoreableEvidenceFingerprint) return false;
return snapshot.scoreableEvidenceFingerprint === current.scoreableEvidenceFingerprint
&& snapshot.candidateSetVersion === current.candidateSetVersion
&& snapshot.inferenceRevision === current.inferenceRevision;
&& snapshot.inferenceRevision === current.inferenceRevision
&& snapshot.scoringPolicyVersion === current.scoringPolicyVersion;
}
/** No stored snapshot is not stale; a stored snapshot with a missing fingerprint is. */
@@ -85,6 +85,7 @@ export type ConflictProbe = Readonly<{
information_gain: number;
source: string;
choice_kind?: ProbeChoiceKind;
target_evidence_id?: string;
style_options?: readonly Readonly<{
label: string;
answer_class: AnswerClass;