import type { UltragoalCompletionVerification, UltragoalGoal, UltragoalGoalStatus, UltragoalLedgerEvent, UltragoalPlan, UltragoalReceiptKind } from "./ultragoal-runtime"; export declare const CRITIC_VERDICT_EVENT = "critic_verdict"; export declare const CRITIC_GATE_HARD_STOP_EVENT = "critic_gate_hard_stop"; export declare const CRITIC_GATE_OVERRIDE_EVENT = "critic_gate_override"; export declare const TERMINAL_CRITIC_CEILING = 5; export type CriticVerdict = "OKAY" | "ITERATE" | "REJECT"; export type UltragoalReceiptFreshnessDiagnostic = { state: "inactive" | "unrelated_goal" | "active_verified_complete" | "active_missing_receipt" | "active_stale_receipt" | "active_missing_final_receipt" | "active_dirty_quality_gate" | "active_review_blocked_unrecorded" | "active_review_blocked_recorded" | "unreadable_fail_closed"; message: string; goalId?: string; }; export declare function requiredUltragoalGoals(plan: UltragoalPlan): UltragoalGoal[]; /** Hash the current required-goal set for terminal critic verdict freshness. */ export declare function computeCriticVerdictPlanGeneration(plan: UltragoalPlan): string; export declare function isCleanPauseCriticVerdictShape(candidate: UltragoalLedgerEvent, planGeneration: string, classificationEventId: string): boolean; export declare function isCleanPauseCriticVerdict(event: UltragoalLedgerEvent, opts: { planGeneration: string; classificationEventId: string; }): boolean; export declare function findCleanPauseCriticVerdict(plan: UltragoalPlan, ledger: readonly UltragoalLedgerEvent[], classificationEventId: string): UltragoalLedgerEvent | null; /** Pure: count all ledger `critic_verdict` rows for an exact plan generation. */ export declare function countTerminalCriticVerdicts(ledger: readonly UltragoalLedgerEvent[], planGeneration: string): number; /** Pure: count every non-OKAY terminal critic verdict recorded for this run. */ export declare function countNonOkayTerminalCriticVerdicts(ledger: readonly UltragoalLedgerEvent[], _legacyPlanGeneration?: string): number; export declare function terminalCriticHardStopReached(ledger: readonly UltragoalLedgerEvent[], _legacyPlanGeneration?: string): boolean; export declare function terminalCriticGateOverridden(ledger: readonly UltragoalLedgerEvent[]): boolean; export declare function terminalCriticCeilingReached(ledger: readonly UltragoalLedgerEvent[], _legacyPlanGeneration?: string): boolean; export declare function receiptRelevantGoals(plan: UltragoalPlan, goal: UltragoalGoal, receiptKind: UltragoalReceiptKind): UltragoalGoal[]; export declare function computeUltragoalPlanGeneration(input: { plan: UltragoalPlan; ledger: readonly UltragoalLedgerEvent[]; goal: UltragoalGoal; receiptKind: UltragoalReceiptKind; beforeStatus: UltragoalGoalStatus; excludeEventId?: string; targetGoalUpdatedAt?: string; }): { planGeneration: string; basis: UltragoalCompletionVerification["basis"]; }; export declare function findLedgerReceiptEvent(ledger: readonly UltragoalLedgerEvent[], receipt: UltragoalCompletionVerification): UltragoalLedgerEvent | null; /** * A final-aggregate receipt whose recorded ledger checkpoint quality gate is * missing a clean `criticReview` OKAY can never satisfy the completion guard, * yet is not "stale" under {@link validateReceiptFreshBase}. Detect it so an * identical-evidence complete replay can re-verify and re-mint with a * corrected gate instead of no-opping into a permanently blocked run. */ export declare function finalAggregateReceiptMissingCriticOkay(ledger: readonly UltragoalLedgerEvent[], receipt: UltragoalCompletionVerification): boolean; export declare function validateReceiptFreshBase(input: { plan: UltragoalPlan; ledger: readonly UltragoalLedgerEvent[]; goal: UltragoalGoal; receipt: UltragoalCompletionVerification; receiptKind: UltragoalReceiptKind; }): UltragoalReceiptFreshnessDiagnostic | null; /** * Validate a final-aggregate receipt that was legitimately superseded — its * aggregate claim staled by later plan growth (e.g. `steer add_subgoal` * appending goals after a terminal run) — as historical evidence for its own * goal. Returns null when the receipt stands. */ export declare function validateSupersededFinalAggregateReceipt(input: { ledger: readonly UltragoalLedgerEvent[]; goal: UltragoalGoal; receipt: UltragoalCompletionVerification; }): UltragoalReceiptFreshnessDiagnostic | null; export declare function findFreshBatchCloseReceipt(input: { plan: UltragoalPlan; ledger: readonly UltragoalLedgerEvent[]; deferredGoal: UltragoalGoal; deferredReceipt: UltragoalCompletionVerification; }): UltragoalCompletionVerification | null; export declare function validateDeferredMemberReceiptFresh(input: { plan: UltragoalPlan; ledger: readonly UltragoalLedgerEvent[]; goal: UltragoalGoal; receipt: UltragoalCompletionVerification; receiptKind: UltragoalReceiptKind; requireClose: boolean; }): UltragoalReceiptFreshnessDiagnostic;