import type { ResolvedConfig } from "../types.js"; export interface Signal { /** Which skill this is evidence about. */ skill: string; /** * Extra skills this signal licenses an amendment to, beyond `skill` and the * pair rule: a refuter lesson names the panel whose finding it overruled. * Never part of the watermark key, like `skill` itself. */ licenses?: string[]; kind: "refuted" | "rejected" | "by-design" | "blocked" | "not-verifiable" | "unreadable" | "skipped"; /** One line naming what happened. */ summary: string; /** The prose that explains it: a verifier note, a human reason, a judge note. */ detail: string; /** Where it came from, so an amendment can cite it. */ source: string; /** * Stable identity, for the watermark: the same underlying event recomputes * to the same key on every gather, so "new since the last improve" is * decidable. Excludes `skill` on purpose: attribution fixes must never * resurrect already-consumed evidence. */ key: string; } export declare function gatherSignals(resolved: ResolvedConfig): Promise; /** Signals grouped by the skill they are evidence about, richest group first. */ export declare function bySkill(signals: Signal[]): Map;