Files
2026-05-27 23:29:53 +01:00

2.7 KiB

Tasks — Add MutableUriPluginRegistrar to @suaveplan/audio-ir-core

1. Spec authoring

  • 1.1 Read openspec/AGENTS.md §§ 13, 14, 14a, 2c, 6a
  • 1.2 proposal.md (this file) — including ## Impact per §14a
  • 1.3 specs/audio-ir-core/spec.md — three requirements, each with **Verified by:**
  • 1.4 Working-notes checklist of every ### Requirement and #### Scenario

2. Implementation

  • 2.1 mkdir packages/audio-ir/audio-ir-core/src/registrar/
  • 2.2 src/registrar/registrar.ts + .md — interface + factory
  • 2.3 src/registrar/index.ts — explicit named re-exports
  • 2.4 Update root src/index.ts — add explicit named re-exports for MutableUriPluginRegistrar, createUriPluginCollector
  • 2.5 Update package.json — add ./registrar subpath export AND add @suaveplan/storage-uri to dependencies (workspace:^)
  • 2.6 Update vite.config.ts — register the new entry point so dist emits dist/registrar/registrar.js
  • 2.7 Update root README.md — new ## Composing IR content packages section showing the collector pattern with pool + club as examples

3. Tests

  • 3.1 src/registrar/registrar.test.ts — every scenario in requirement 2
  • 3.2 src/registrar/registrar.spec-conformance.test.ts — every scenario in requirements 1 and 3 (type-level expectTypeOf assertions)
  • 3.3 Every it(...) carries { timeout: 5000 }

4. Pre-archive verification (5-gate triple)

  • 4.1 bun run check — Biome 0/0/0/0
  • 4.2 bunx turbo lint typecheck test --filter=@suaveplan/audio-ir-core — green
  • 4.3 bunx turbo test:coverage --filter=@suaveplan/audio-ir-core — 100/100/100/100
  • 4.4 bun scripts/openspec-conformance.ts @suaveplan/audio-ir-core — exit 0
  • 4.5 bunx turbo build --filter=@suaveplan/audio-ir-core — green; dist/registrar/registrar.js emitted
  • 4.6 bun scripts/docs-check.ts packages/audio-ir/audio-ir-core — 100%

5. Pre-archive 7-row checklist

  • 5.1 Type-level assertions on collector + interface (expectTypeOf on every type claim)
  • 5.2 Zod schemas N/A for this change (no runtime validation needed)
  • 5.3 No new error codes — N/A
  • 5.4 Strict-mode behaviors tested (frozen-array mutation rejection)
  • 5.5 OTel surface unchanged — N/A
  • 5.6 Lifecycle dedup tested (multiple use() calls, snapshot freshness)
  • 5.7 No retroactive tick

6. Archive

  • 6.1 Fold delta into openspec/specs/audio-ir-core/spec.md (append the three ADDED requirements)
  • 6.2 Move folder to openspec/archive/<yyyy-mm-dd>-add-mutable-uri-plugin-registrar-to-audio-ir-core/
  • 6.3 Refresh MANIFEST.md via bun scripts/folder-reorg/generate-manifest.ts