Archive Milestone 2 in docs

Move completed M2 (peaks module) from PLAN.md to COMPLETED.md; add peaks_tests
to the CLAUDE.md targets table and update the pure-core status to M0-M2 done.
This commit is contained in:
2026-07-22 10:00:32 -04:00
parent 995e790ac0
commit 93e2783098
3 changed files with 18 additions and 17 deletions
+4 -3
View File
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Repo identity and current state
The CMake project and binary are now named `reaper_reasampler`. This is **ReaSampler** — a per-project audio sample-bank capture tool. The MPE modules (`mpe_model`, `mpe_view`) have been removed; `bank_model` exists as a pure-core placeholder (Milestone 0). The remaining sampler module set (`peaks`, `capture`, `insert`, `bank_panel`, `persist`, `actions`) is being built out per CONTEXT.md / PLAN.md. The *discipline* — pure REAPER-free testable core split from REAPER-facing shells — is **preserved** throughout.
The CMake project and binary are now named `reaper_reasampler`. This is **ReaSampler** — a per-project audio sample-bank capture tool. The MPE modules (`mpe_model`, `mpe_view`) have been removed. The pure core (M0M2) is complete: `bank_model` (Sample metadata + BankIndex with JSON round-trip) and `peaks` (waveform min/max bin computation) are both implemented and fully tested. The REAPER-facing shells (`capture`, `insert`, `bank_panel`, `persist`, `actions`) are being built out per CONTEXT.md / PLAN.md. The *discipline* — pure REAPER-free testable core split from REAPER-facing shells — is **preserved** throughout.
CONTEXT.md is the authoritative spec and build roadmap. Read it first for any non-trivial task. Every REAPER API name cited there is correct-by-intent; verify argument order, types, and flag values against `vendor/reaper-sdk/sdk/reaper_plugin_functions.h` before use.
@@ -22,11 +22,12 @@ Vendors two submodules (see `.gitmodules`):
cmake --build build
ctest --test-dir build
Two targets:
Three targets:
| Target | Kind | Purpose |
|---|---|---|
| `bank_model_tests` | executable | Pure unit tests — no REAPER, no DAW. This is the fast iteration loop. |
| `bank_model_tests` | executable | Pure unit tests for `bank_model` — no REAPER, no DAW. |
| `peaks_tests` | executable | Pure unit tests for `peaks` — no REAPER, no DAW. |
| `reaper_reasampler` | loadable module | The actual extension binary (`.dll` / `.dylib` / `.so`). |
### macOS / Linux: SWELL dialog resources
+14
View File
@@ -53,3 +53,17 @@ only** invariant enforced at the model boundary (no absolute path accepted/store
- [x] Tests: full-field round-trip lossless; dedup collapses equal-hash adds;
tier filter/move correct; relative-path invariant rejects absolute paths;
empty-index and malformed-JSON edge cases.
---
## Milestone 2 — peaks (pure)
**Goal:** Compute waveform min/max bins from raw PCM, dependency-free (not
REAPER's peak API). CONTEXT.md §Module architecture, §Non-goals.
**Verify:** CTest green. Fed a known signal (full-scale sine, ramp), asserted
min/max envelope per bin matches expected within tolerance; channel count
preserved; bin count honored for arbitrary sample lengths (incl. remainder bin).
- [x] Min/max bin computation from interleaved PCM given a target bin count.
- [x] Multi-channel handling (per-channel envelope; no silent fold).
- [x] Tests: sine envelope ≈ ±amplitude; ramp envelope monotonic; DC/silence →
zero envelope; short-buffer and non-divisible-length edge cases.
-14
View File
@@ -14,20 +14,6 @@ it here and appends it to `COMPLETED.md`.
---
## Milestone 2 — peaks (pure)
**Goal:** Compute waveform min/max bins from raw PCM, dependency-free (not
REAPER's peak API). CONTEXT.md §Module architecture, §Non-goals.
**Verify:** CTest green. Fed a known signal (full-scale sine, ramp), asserted
min/max envelope per bin matches expected within tolerance; channel count
preserved; bin count honored for arbitrary sample lengths (incl. remainder bin).
- [ ] Min/max bin computation from interleaved PCM given a target bin count.
- [ ] Multi-channel handling (per-channel envelope; no silent fold).
- [ ] Tests: sine envelope ≈ ±amplitude; ramp envelope monotonic; DC/silence →
zero envelope; short-buffer and non-divisible-length edge cases.
---
## Milestone 3 — Offline capture spike (REAPER shell)
**Goal:** Offline-render the time-selection master mix to a wav in the project
bank folder, add a `Sample`, log it. The render-driving spike. CONTEXT.md