/** * PURE evaluator anti-degeneration guards. * * PURE — no clock (no Date.now()), no filesystem access, no network, no mutation of inputs. * All three exports return NEW objects (structuredClone / spread). Model on distill.ts. * * Guards are ALL off by default (Sprint 1 schema: SelfImproveSectionSchema flags default false). * Wiring in evaluator-agent.ts and pipeline.ts uses `config.selfImprove?.` so that an * absent selfImprove section (e.g. createDefaultConfig output) is falsy → existing path. */ import type { EvalResult } from "../../contracts/eval-result.js"; import type { ContextHandoff } from "../context-handoff.js"; /** * Returns true iff at least one programmatic result has passed===false AND * its evaluator type is in the requiredEvaluators set. * * NOTE: EvalResult carries `evaluator` (the strategy type name), NOT `required`. * The caller builds requiredEvaluators from config.evaluator.strategies * (filter s => s.required, map s => s.type). * * Pure: reads no clock, no fs, returns a boolean, mutates nothing. */ export declare function shouldShortCircuitJudge(programmaticResults: EvalResult[], requiredEvaluators: Set): boolean; /** * Returns a deep-cloned handoff whose currentContract omits successCriteria * and evaluatorNotes (including each successCriteria[].verificationMethod), * while preserving title, description, definitionOfDone, generatorNotes, and nonGoals. * * The original handoff object is NEVER mutated (structuredClone + spread). * * The returned currentContract uses a single neutral placeholder criterion * so that downstream code that expects successCriteria to be non-empty * (SprintContractSchema.min(1)) does not throw if re-validated. * Note: the generator path only JSON.stringify's the handoff (serializeHandoff), * it does NOT re-parse through the schema, so this is belt-and-suspenders safe. */ export declare function redactRubric(handoff: ContextHandoff): ContextHandoff; /** * Returns a NEW EvalResult in which every detail with passed===false that has * no citation is rewritten to passed:true, severity:'info', and a note is * appended to its message. * * Cited FAIL details (detail.file non-empty OR message contains a command/test * signal) are passed through unchanged. * * result.passed is recomputed from the returned details. * * Pure: no clock, no fs, input is NOT mutated. */ export declare function enforceCitedArtifacts(result: EvalResult): EvalResult; //# sourceMappingURL=eval-guards.d.ts.map