fix(rectification): guarantee nonterminal turn exits
Independent Staging Quality Gate / validate (push) Successful in 13m25s
Independent Staging Quality Gate / publish (push) Successful in 9m26s

This commit is contained in:
Jesse_Chen
2026-09-01 13:35:51 +08:00
parent 15877069fc
commit e404b6f42b
13 changed files with 966 additions and 125 deletions
@@ -150,6 +150,7 @@ export type DecideRectificationInput = Readonly<{
trainingGateOpen?: boolean;
candidateScores: readonly CandidateScoreRow[];
discriminatorProbe?: CandidateDiscriminatorProbe | null;
nakshatraBoundaryProbe?: CandidateDiscriminatorProbe | null;
holdoutValidation?: HoldoutValidationStatus;
accepted?: boolean;
inferenceCredibleRange?: readonly [string, string] | null;
@@ -277,6 +278,23 @@ export function decideRectification(input: DecideRectificationInput): Rectificat
if (probe) {
return discriminateOrExhaust(input, separation, holdout, range, probe, capability, stopReason);
}
if (holdout === "not_started") {
return holdoutValidation(separation, range, capability);
}
if (input.datedMethodCollectOpen === true) {
return collect(separation, holdout, range, null, capability, stopReason);
}
if (input.nakshatraBoundaryProbe) {
return discriminateOrExhaust(
input,
separation,
holdout,
range,
input.nakshatraBoundaryProbe,
capability,
stopReason,
);
}
return stopClass?.kind === "exhausted"
? completeWithRange(separation, holdout, range, "exhausted", capability, stopClass.reason)
: completeWithRange(separation, holdout, range, "offer", capability);