# undo-spec-conformance - **Change ID**: undo-spec-conformance - **Package**: `@suaveplan/undo` - **Status**: PROPOSED - **Type**: spec-conformance - **Date**: 2026-04-26 ## Why The folded `openspec/specs/undo/spec.md` documented requirements as a flat `R01`-`R20` bullet list under `### ADDED Requirements`. The conformance parser only recognises `### Requirement: ` or `### CAP-NN —` headings, so `bun scripts/openspec-conformance.ts @suaveplan/undo` reported "0 requirements parsed". This is purely a parsing gap; the implementation already satisfies every clause and is pinned by an extensive test suite. ## What changes - Rewrite `openspec/specs/undo/spec.md` from `R01`-`R20` bullets to nine `### Requirement: ` blocks (sync UndoStack, BranchingHistory, AsyncUndoStack, HistoryCompressor, SelectiveUndoStack, CommandMerger, command primitives, error codes / UndoError, option schemas). - Add `**Verified by:**` lines under every requirement naming concrete `it(...)` titles in: - `src/stack/stack.test.ts` - `src/branch/branch.test.ts` - `src/async/async-stack.test.ts` - `src/async/async-command.test.ts` - `src/compression/history-compressor.test.ts` - `src/selective/selective-undo.test.ts` - `src/merge/command-merger.test.ts` - `src/command/command.test.ts` - `src/errors/undo-error.test.ts` - `src/schemas/undo.schemas.test.ts` - No source changes; no public-surface changes; no new tests required. ## Out of scope - New behaviour. Heading rewrite + verification annotation only. - Source mapping table — `@suaveplan/undo` is genesis-original. ## Verification approach Every requirement is pinned to existing `it(...)` titles across the ten test files listed above (combined: 130+ cases pre-dating this change). ## Migration impact None — additive metadata only. Public surface unchanged.