export declare function initDocsContext(opts: { repoRoot: string; submodules: readonly string[]; }): void; /** * Surfaces stalled lifecycle states across the monorepo: plans in-progress * too long, open issues gone cold, runbooks that haven't been verified, etc. * * This is the opposite of `docs --stale`, which flags file-level freshness. * Sweep only flags items where the lifecycle state (status header + mtime) * suggests attention is needed. * * Audit files and issue files under `docs/audits/` are explicitly **not** * flagged for age; they're immutable records by design. * * Performance: ages come from one `git log --name-only` per repo (not one * `git log` per file). A naive per-file spawn was ~1min+ on large hosts * (thousands of topic docs) and looked hung when piped. */ export interface SweepOpts { repo?: string; } export interface SweepItem { kind: SweepKind; repo: string; path: string; ageDays: number; message: string; } export type SweepKind = "stalled-plan" | "unarchived-shipped" | "open-issue-cold" | "cold-handoff" | "runbook-unverified" | "topic-doc-stale" | "decisions-dormant"; type AgeMap = Map; /** * Parse a `git log --format="COMMIT %aI" --name-only` body into * repo-relative path → age in days. Newest commit wins. * Exported for unit tests. */ export declare function parseDocsAgeLog(stdout: string, nowMs?: number): AgeMap; export declare function runSweep(opts: SweepOpts): Promise; /** * Cheap parent-repo-only count of `cold-handoff` items, used by `docs lint` * to print a one-line nudge without running the full sweep across every * submodule (handoffs live under the parent's docs/handoffs/ by convention). */ export declare function countColdHandoffs(): Promise; export {}; //# sourceMappingURL=docs-sweep.d.ts.map