/** * Impact walk (FR3): which citations of a retired criterion are still out there? * * Read-only and advisory. It performs no writes (AC-22) and its `suggestedReopens` * is a suggestion the author may paste into `Reopens:` — `aidlc amend` never reads * it (AC-58). The first draft derived the reopen set from this walk, which was * degenerate: `requirements.md` is the requirements phase's declared artifact and * always cites every retired id (the retirement bullet, the `superseded by AC-m` * clause, and the amendment's own `Retires:` field), so every amendment would have * reopened requirements. A destructive state write must not depend on a * prose-scanning heuristic. * * Three halves, each with a stated resolution rule, because the two shipped rules * genuinely differ and picking one for both would be wrong: * * - **Test files** use the uniqueness rule at `traceability/matrix.ts:77-87` — a * bare `AC-n` counts only when exactly one AC-bearing instance defines the id. * - **Tasks** use the owning-instance rule (`tasks/types.ts:15-19`), which that file * documents as "never traceability's uniqueness rule". * - **Artifacts** use the same tokens as the scanner, but a bare id resolves to this * instance: every walked artifact lives in this instance's own state directory, so there * is no other instance it could mean. Resolving them by the test rule dropped a completed * `design.md` citation as "ambiguous" the moment a second instance defined the same id * (amend-cannot-reopen-current-phase/AC-1). * * `requirements.md` is the one artifact never read: it is the authority being * amended, not a consumer of it (AC-81). AC-definition-shaped bullets *elsewhere* * are reported rather than excluded — measured, 20 such bullets live in * `tasks.md`, `code-complete.md` and `reproduction.md` files and every one is * verification evidence citing a criterion, which is signal. * * Requirements: change-management/AC-15, AC-17, AC-21, AC-22, AC-48, AC-49, * AC-58, AC-71, AC-80, AC-81, AC-88 */ import type { WorkflowTemplate } from '../core/types.js'; import type { ParsedRequirements } from '../traceability/types.js'; import type { Amendment, ImpactReport } from './types.js'; export interface WalkInput { projectRoot: string; instance: string; /** The amendment whose retirements drive the walk. */ amendment: Amendment; /** All instances' parsed requirements — the uniqueness-rule registry. */ registry: Map; resolvedTemplate: WorkflowTemplate; scope: string; } /** * Walk every citation of the amendment's retired ids. * * @returns A report whose `outcome` distinguishes four states (AC-88): a * truncated `Retires:` and a genuinely empty one must never render alike. */ export declare function walkImpact(input: WalkInput): ImpactReport; /** * One-line human summary. Every outcome says something — an empty result is * never rendered as silence (AC-21), because a silent no-op is * indistinguishable from success. */ export declare function describeOutcome(report: ImpactReport): string; //# sourceMappingURL=impact.d.ts.map