71 lines
4.1 KiB
Markdown
71 lines
4.1 KiB
Markdown
# Tasks — Add `@suaveplan/audio-ir-room-plugin-club`
|
|
|
|
> Prereqs: `add-audio-ir-core`, `add-audio-ir-loader`, `add-audio-decode-wav` must reach the SHIPPED state before this change's §4 integration tests can pass.
|
|
|
|
## 1. Spec authoring
|
|
|
|
- [ ] 1.1 Read `openspec/AGENTS.md` §§ 13, 14, 14a, 2c, 6a, 193
|
|
- [ ] 1.2 Read `openspec/changes/add-audio-ir-core/design.md`
|
|
- [ ] 1.3 `proposal.md` (incl. `## Impact` per §14a)
|
|
- [ ] 1.4 `specs/audio-ir-room-plugin-club/spec.md` — every requirement carries `**Verified by:**`
|
|
- [ ] 1.5 Working-notes checklist of every `### Requirement` and `#### Scenario`
|
|
|
|
## 2. Package scaffold
|
|
|
|
- [ ] 2.1 `mkdir -p packages/audio-ir/audio-ir-room-plugin-club/{src/{manifest,register},files,tests/integration}`
|
|
- [ ] 2.2 `package.json` — `version: 0.0.0`, `sideEffects: false`, `files: ["dist", "files", "README.md"]`, deps `@suaveplan/{audio-ir-core,storage-uri,storage-uri-plugin-bundle,error,types}`, dev `@suaveplan/{audio-ir-loader,audio-decode-wav}`, `zod`, `tslib`
|
|
- [ ] 2.3 `tsconfig.lib.json`, `vite.config.ts` (vite-plugin-static-copy to mirror `files/` into `dist/files/` if needed; OR use the `files` field of `package.json` to ship `files/` directly without copy)
|
|
- [ ] 2.4 Subpath exports: `.`, `./manifest`, `./register`
|
|
- [ ] 2.5 `README.md` — including a `## License & sources` section recording the Mountain Duck origin path AND the upstream attribution for the IRs
|
|
|
|
## 3. Asset import
|
|
|
|
- [ ] 3.1 Copy `/mnt/c/Users/Administrator/Mountain Duck/74a17879-9780-426d-8bd9-7ed805f53d41/media/_/audio/ir/room/club1.wav` → `packages/audio-ir/audio-ir-room-plugin-club/files/club1.wav`
|
|
- [ ] 3.2 Copy `/mnt/c/Users/Administrator/Mountain Duck/74a17879-9780-426d-8bd9-7ed805f53d41/media/_/audio/ir/room/club2.wav` → `packages/audio-ir/audio-ir-room-plugin-club/files/club2.wav`
|
|
- [ ] 3.3 Verify both files exist AND are non-empty AND decode through a standalone `decodeWav` smoke test
|
|
- [ ] 3.4 Record decoded `channels` and `sampleRate` for each file — these are the manifest constants
|
|
|
|
## 4. Implementation
|
|
|
|
- [ ] 4.1 `src/manifest/manifest.ts` + `.md` — `manifest: IrManifest` with both entries
|
|
- [ ] 4.2 `src/register/register.ts` + `.md` — `register(registry, resolver)` wiring `bundleUriPlugin` + `registerManifest`
|
|
- [ ] 4.3 `src/index.ts` — explicit named re-exports (`manifest`, `register`)
|
|
|
|
## 5. Tests
|
|
|
|
- [ ] 5.1 `src/manifest/manifest.test.ts` — every scenario from manifest requirement
|
|
- [ ] 5.2 `src/register/register.test.ts` — every scenario from register requirement
|
|
- [ ] 5.3 `tests/integration/file-presence.test.ts` — files exist on disk
|
|
- [ ] 5.4 `tests/integration/end-to-end.test.ts` — full pipeline through real `audio-ir-loader` + `decodeWav`
|
|
- [ ] 5.5 Every `it(...)` carries `{ timeout: 5000 }` (or 30000 for async)
|
|
|
|
## 6. Documentation
|
|
|
|
- [ ] 6.1 Sibling `.md` for every `.ts` (≥200 words, basic + advanced examples)
|
|
- [ ] 6.2 README `## Modules` + `## License & sources`
|
|
- [ ] 6.3 Update root `CLAUDE.md` Audio IR subsection
|
|
|
|
## 7. Pre-archive verification (5-gate triple)
|
|
|
|
- [ ] 7.1 `bun run check` — 0/0/0/0
|
|
- [ ] 7.2 `bunx turbo lint typecheck test --filter=@suaveplan/audio-ir-room-plugin-club` — green
|
|
- [ ] 7.3 `bunx turbo test:coverage --filter=@suaveplan/audio-ir-room-plugin-club` — 100/100/100/100
|
|
- [ ] 7.4 `bun scripts/openspec-conformance.ts @suaveplan/audio-ir-room-plugin-club` — exit 0
|
|
- [ ] 7.5 `bunx turbo build --filter=@suaveplan/audio-ir-room-plugin-club` — green
|
|
|
|
## 8. Pre-archive 7-row checklist (AGENTS §13)
|
|
|
|
- [ ] 8.1 Type assertions on the manifest constant (literal types preserved through export)
|
|
- [ ] 8.2 Zod schemas wired (manifest validates through `IrManifestSchema`)
|
|
- [ ] 8.3 No error codes owned by this package (it reuses `AUDIO_IR.*` from core) — N/A
|
|
- [ ] 8.4 Strict-mode behaviors tested
|
|
- [ ] 8.5 OTel is inherited from core + loader — N/A here
|
|
- [ ] 8.6 Lifecycle dedup tested (double-register surfaces DUPLICATE_ID)
|
|
- [ ] 8.7 No retroactive tick
|
|
|
|
## 9. Archive
|
|
|
|
- [ ] 9.1 Fold delta into new `openspec/specs/audio-ir-room-plugin-club/spec.md`
|
|
- [ ] 9.2 Move folder to `openspec/archive/<yyyy-mm-dd>-add-audio-ir-room-plugin-club/`
|
|
- [ ] 9.3 Refresh `MANIFEST.md`
|