/** * Task-line parser: closed grammar over tasks.md (FR1). * * Accepted forms (column-0 dash bullets only; indented task-shaped lines are * near-misses, F7): * - [ ] T: * - [ ] T<n>: <title> (AC-1, other-instance/AC-2) * - [x] T<n>: <title> (AC-3) * - [>] T<n>: <title> [(AC-list)] (deferred YYYY-MM-DD: <reason>) * - [ ] T<n>: <title> [(AC-list)] (wave: <n>) * * Structural groups are extracted right-to-left (DD2): trailing parenthesized * groups are structural when their content is deferral-shaped, keyword-colon, * or AC-shaped; the first non-structural group ends the unwind (title prose). * An AC-shaped group failing the strict list grammar is a near-miss (F5) — * intended refs must never silently drop. Unrecognized keyword-colon groups * (e.g. the reserved v2 `owner:`) keep the task and warn (AC-29). * * Anything task-shaped that fails the strict grammar warns rather than * silently dropping out of gate coverage (AC-5). * * `wave:` is the first recognized keyword (task-fresh-context-reviewer). A bad * one keeps the task and warns rather than being a near-miss: a wave carries * no coverage meaning, so dropping the task would punish a typo with a hole * in the gate. * * Requirements: task-breakdown/AC-1..AC-5, AC-29; * task-fresh-context-reviewer/AC-1, AC-2, AC-3, AC-5 */ import type { ParsedTasks } from './types.js'; /** * Parse one tasks.md for task lines. * * @param content - File content (UTF-8). Never throws. */ export declare function parseTasks(content: string): ParsedTasks; //# sourceMappingURL=parser.d.ts.map