Files
suaveplan/openspec/archive/2026-04-29-undo-spec-conformance/proposal.md
2026-05-27 23:29:53 +01:00

51 lines
1.8 KiB
Markdown

# 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: <name>` 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: <name>` 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.