import type { EffectiveCheckpoint } from './effective'; import type { ActiveSprint, LedgerEntry, Spec, SprintFile } from '../types'; export type ClosedSprintFailure = 'unsafe-path' | 'unverified' | 'unreadable' | 'malformed' | 'absent'; /** One ledger entry's closed sprint image. Read-only; never throws for bad history — callers pick strictness. */ export type ClosedSprintRead = { source: 'checkpoint'; active: ActiveSprint | null; spec: Spec | undefined; resolved: EffectiveCheckpoint; } | { source: 'snapshot'; active: ActiveSprint; raw: unknown; } | { source: 'checkpoint' | 'snapshot' | 'none'; active: null; failure: ClosedSprintFailure; detail: string; error?: unknown; }; /** * Single home of the closed-sprint acceptance rules. active-plan's inspectHistory maps each failure to a throw; * the read-only verification matrix maps it to unknown. A checkpoint must be * valid/canonicalized and match the ledger commitment; a legacy snapshot must be a schema-valid activeSprint. * Identity (n/slug) is left to the caller. No fallback from checkpoint to snapshot. */ export declare function readClosedSprint(scope: string, sprint: SprintFile, entry: LedgerEntry): ClosedSprintRead; //# sourceMappingURL=history.d.ts.map