fix(rectification): surface dropped probes and filter tools by the decision
Independent Staging Quality Gate / validate (push) Failing after 17m9s
Independent Staging Quality Gate / publish (push) Has been skipped

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:
Jesse_Chen
2026-08-28 20:31:15 +08:00
co-authored by Cursor
parent 69c3e94920
commit 63b4591aae
25 changed files with 856 additions and 274 deletions
@@ -13,6 +13,7 @@ import {
type CandidateSeparation,
} from "./candidate-separation.ts";
import { rangeFromTimes } from "./credible-range.ts";
import type { DroppedProbe } from "../v9/probe-question-contract.ts";
import type { RectificationPhase, ResultStatus } from "./types.ts";
export type RectificationNextActionType =
@@ -63,6 +64,7 @@ export type RectificationDecision = Readonly<{
separation: CandidateSeparation;
probe: CandidateDiscriminatorProbe | null;
holdoutValidation: HoldoutValidationStatus;
droppedProbes: readonly DroppedProbe[];
}>;
export type DecideRectificationInput = Readonly<{
@@ -192,6 +194,7 @@ function collect(
separation,
probe,
holdoutValidation: holdout,
droppedProbes: [],
};
}
@@ -220,6 +223,7 @@ function discriminate(
separation,
probe,
holdoutValidation: holdout,
droppedProbes: [],
};
}
@@ -246,6 +250,7 @@ function holdoutValidation(
separation,
probe: null,
holdoutValidation: "not_started",
droppedProbes: [],
};
}
@@ -282,6 +287,7 @@ function completeWithRange(
separation,
probe: null,
holdoutValidation: holdout,
droppedProbes: [],
};
}
@@ -329,6 +335,7 @@ function finish(
separation: input.separation,
probe: input.probe,
holdoutValidation: input.holdout,
droppedProbes: [],
};
}