/** * Roadmap items filed in the wrong status (doctor-flags-misfiled-items). * * `aidlc-roadmap` says where an item belongs and nothing checked it after triage. Autopilot * builds in `roadmap next` order, so a `backlog/` item whose own Recommendation says "Do later" * is built unattended; a `hold/` item with no reason cannot be told parked from declined; and a * parked item whose dependencies have since finished is ready again with nobody told. * * Pure over a roadmap root and read-only, like `summary.ts`: the doctor wording lives in * `doctor/migrations/roadmap-misfiled-items.ts`, so `roadmap next` or the view could call these * later without importing doctor. * * @module */ /** One item a check names. */ export interface MisfiledItem { /** Absolute path on disk. */ file: string; filename: string; } /** A parked item whose dependencies are all done, with the ids it lists. */ export interface ParkedReady extends MisfiledItem { deps: string[]; } /** * `parked` or `declined` from a hold reason, or null when it says neither * (doctor-flags-misfiled-items/AC-2). * * Deliberately not `holdNote` in `view-model.ts`. That match is case-sensitive, so the older * `Parked: x` form reads there as "other hold". Doctor asks whether a decision is on record and * the board asks which column to draw, and widening the board's match was put out of scope. `\b` * is what lets `Parked:` pass and `parkedness` fail. */ export declare function holdReasonKind(reason: unknown): 'parked' | 'declined' | null; /** The last `history` entry with `status: hold`, or null (doctor-flags-misfiled-items/AC-1, AC-3). */ export declare function lastHoldEntry(data: Record): { reason: unknown; at: string | null; } | null; /** The date of the last `history` entry with `status: done`, or null (doctor-flags-misfiled-items/AC-8). */ export declare function lastDoneDate(data: Record): string | null; /** * The Recommendation value from an item body's executive summary, or null when it has none. * * Only the summary is searched, and only the label's own line is returned: the phrase this is * read for always opens the value, so a wrapped continuation line adds nothing * (doctor-flags-misfiled-items/AC-6). */ export declare function recommendationValue(body: string): string | null; /** * True when a Recommendation value opens with "Do later", "Not now" or "Don't do" * (doctor-flags-misfiled-items/AC-4, AC-5). * * Leading emphasis is dropped because the corpus writes `**Don't do** the broker`, and a curly * apostrophe is folded because that is what a word processor turns `'` into. Only the start is * tested: "Do it, but after …" is a yes with an order, not a not-now. */ export declare function saysNotNow(value: string): boolean; /** * Every `hold/` item whose last `hold` entry records neither parked nor declined * (doctor-flags-misfiled-items/AC-1, AC-2, AC-3). * * `listStatusAt` drops items whose frontmatter will not parse and sorts by file name, which is * AC-12 and AC-13 for all three finders. */ export declare function holdWithoutReason(root: string): MisfiledItem[]; /** Every `backlog/` item whose Recommendation says not now (doctor-flags-misfiled-items/AC-4..AC-6). */ export declare function backlogNotNow(root: string): MisfiledItem[]; /** * Every parked `hold/` item whose `depends_on` are all in `done/`, at least one of them finished * after the item was last parked (doctor-flags-misfiled-items/AC-7, AC-8, AC-9). * * The date test is what lets the finding clear. Items in this repo were parked after their * dependencies finished, on triggers that are not dependencies; without it they would be named on * every run, and the only way to quiet that would be to edit `depends_on`. Re-parking with a new * `hold` entry — the re-triage the report asks for — moves the park date past every dependency. * * Same-day counts as before: a park written the day a dependency finished was written knowing it. * A missing date on either side reports, because nothing then shows the park came after. */ export declare function parkedDepsDone(root: string): ParkedReady[]; //# sourceMappingURL=misfiled.d.ts.map