# Tasks: idempotency-spec-conformance ## 1. Source refactors (no public-API change) - [x] 1.1 Rewrite `src/error-codes.ts` to use `defineCodes("IDEMPOTENCY", [...])` from `@suaveplan/error`; re-export `IDEMPOTENCY_CODES` from `src/errors/idempotency-error.ts`. - [x] 1.2 Add `// schema: boundary-only` marker to `src/schemas/idempotency.schemas.ts`. ## 2. Spec annotations - [x] 2.1 Rewrite `### REQ-IDMP-NNN —` headings as `### IDMP-NN —` so the conformance parser picks them up. - [x] 2.2 Add a `**Verified by:**` line under every requirement in `openspec/specs/idempotency/spec.md`. ## 3. Pinning tests - [x] 3.1 Add `src/errors/idempotency-error.spec-conformance.test.ts` (IDMP-01). - [x] 3.2 Add `src/schemas/idempotency.schemas.spec-conformance.test.ts` (IDMP-02). - [x] 3.3 Add `src/guard/idempotency-guard.spec-conformance.test.ts` (IDMP-03 + IDMP-04). - [x] 3.4 Add `src/metrics/idempotency-metrics.spec-conformance.test.ts` (IDMP-05). - [x] 3.5 Add `tests/structural-adapters.spec-conformance.test.ts` (IDMP-08). - [x] 3.6 Add `tests/benchmarks-present.spec-conformance.test.ts` (IDMP-07). ## 4. Verify - [x] 4.1 `bunx turbo lint typecheck test --filter=@suaveplan/idempotency` green (8/8 tasks, 234/234 tests). - [x] 4.2 `bunx turbo test:coverage --filter=@suaveplan/idempotency` 100/100/100/100. - [x] 4.3 `bun scripts/openspec-conformance.ts @suaveplan/idempotency` PASS (0 error, 9 warn, 1 info).