fix: avoid false positives in progress-evidence gate
This commit is contained in:
@@ -98,6 +98,33 @@ function buildProgressEvidence(wrapperResult: any): Record<string, unknown> | nu
|
||||
return Object.keys(progressEvidence).length > 0 ? progressEvidence : null;
|
||||
}
|
||||
|
||||
function shouldClaimProgression(wrapperResult: any, progressEvidence: Record<string, unknown> | null): boolean {
|
||||
if (!wrapperResult || wrapperResult.classification !== "long_task") return false;
|
||||
if (progressEvidence && Object.keys(progressEvidence).length > 0) return true;
|
||||
|
||||
const requiredNextAction = typeof wrapperResult.requiredNextAction === "string"
|
||||
? wrapperResult.requiredNextAction.trim()
|
||||
: "";
|
||||
const progressingActionPrefixes = [
|
||||
"dispatch_",
|
||||
"handoff_",
|
||||
"launch_",
|
||||
"resume_",
|
||||
"continue_",
|
||||
"queue_",
|
||||
"schedule_",
|
||||
"run_",
|
||||
"start_",
|
||||
"spawn_",
|
||||
];
|
||||
|
||||
if (requiredNextAction && progressingActionPrefixes.some((prefix) => requiredNextAction.startsWith(prefix))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return wrapperResult.silentLaunchOk === true;
|
||||
}
|
||||
|
||||
function buildGateLockInput(wrapperResult: any): Record<string, unknown> {
|
||||
if (!wrapperResult || wrapperResult.classification !== "long_task") {
|
||||
return { classification: wrapperResult?.classification ?? "general_chat" };
|
||||
@@ -124,16 +151,16 @@ function buildGateLockInput(wrapperResult: any): Record<string, unknown> {
|
||||
concreteNextAction: requiredNextAction,
|
||||
}
|
||||
: null;
|
||||
const progressEvidenceReason = progressEvidence
|
||||
? ""
|
||||
: "progression claim requires concrete evidence such as sessionKey, runId, modified_files, or verification result";
|
||||
const claimedProgression = shouldClaimProgression(wrapperResult, progressEvidence)
|
||||
? "already progressing to the next step in background"
|
||||
: "";
|
||||
const progressEvidenceReason = claimedProgression && !progressEvidence
|
||||
? "progression claim requires concrete evidence such as sessionKey, runId, modified_files, or verification result"
|
||||
: "";
|
||||
const hasExternalizedCheckpointEvidence = wrapperResult.silentLaunchOk === true
|
||||
&& typeof wrapperResult.taskRecord?.task_name === "string"
|
||||
&& wrapperResult.taskRecord.task_name.trim().length > 0;
|
||||
const hasButtonPathClosureEvidence = needsOwnerDecision && wrapperResult.silentLaunchOk === true;
|
||||
const claimedProgression = wrapperResult.classification === "long_task"
|
||||
? "already progressing to the next step in background"
|
||||
: "";
|
||||
|
||||
return {
|
||||
classification: wrapperResult.classification,
|
||||
|
||||
Reference in New Issue
Block a user