/** * Folding route-scoped history into a shell finding. * * The moment the judge first places a defect in a shell region, its identity * stops naming a route, and whatever the backlog already holds about the same * defect under route-scoped fingerprints is the same work under old names. * Absorbing folds those records into the one shell record, so the defect * arrives with its history: its age, its attempts, its evidence, and above * all its adjudication, because a by-design ruling somebody wrote must win * over a fresh sighting whichever key it was recorded under. * * Only records that were never asked about their region are eligible. An * explicit "content" is an answer, and an answer is never overridden by a * later claim about a different screen: if the judge once said a defect was * the route's own, a shell claim elsewhere is a different defect until a * person says otherwise. */ import type { Backlog, BacklogFinding } from "./lib.js"; /** One collapse, for the merge result and the run summary. */ export interface Absorption { fingerprint: string; from: string[]; } /** * Chronology of run ids. `web-20260831-212625` and `check-20260830-011500` * do not sort lexically against each other, but both carry their moment. * An id without one sorts oldest, which only ever widens `firstSeen`. */ export declare function runOrder(runId: string): string; /** * Fold every legacy sibling of an incoming shell finding into one record at * the shell fingerprint, or return undefined when there is nothing to fold. * The caller then runs its ordinary state machine against the folded record, * so a folded by-design suppresses the sighting and a folded fixed reopens. */ export declare function absorbLegacy(backlog: Backlog, f: Pick & { region?: BacklogFinding["region"]; }): BacklogFinding | undefined;