import { type DesignInventory, type DetectedKit } from "./inventory.js"; import type { Backlog, IssuePlacement } from "../backlog/lib.js"; import type { ResolvedConfig } from "../types.js"; /** * The staleness recognition the stored `kit` field always promised. * Deterministic and free: a placement is re-derived (at model cost) only when * one of these says the codebase moved under it. Kit `exports` drift is * deliberately not a trigger, or every kit release would re-pay every * placement; and a kit that stops resolving entirely deletes nothing, because * detection can transiently fail and advice whose kit name is visibly absent * beats advice wiped by a flaky miss. */ export declare function placementStale(p: IssuePlacement, kit: DetectedKit): string | null; export interface PlacementRun { placed: number; /** Candidates beyond this run's cap; the next sweep takes them. */ skipped: number; /** Calls that produced no placement: a miss is counted, never silent. */ failed: number; /** The cap this run resolved, so the summary can say "off (cap 0)". */ limit: number; costUsd: number; } /** * Fill in the placement for every open issue that lacks one. Mutates the * backlog in place; the caller saves. * * A failure to place one issue is not a failure of the run. Placement is * advice attached to a defect, and a defect with no advice is still a defect * worth reporting, so anything that goes wrong here is swallowed per issue and * the sweep continues. */ export declare function placeNewIssues(resolved: ResolvedConfig, backlog: Backlog, inv: DesignInventory, opts?: { model?: string; limit?: number; only?: string[]; }): Promise;