diff --git a/MAP.md b/MAP.md index 0217e32..067b9b8 100644 --- a/MAP.md +++ b/MAP.md @@ -69,8 +69,14 @@ anchor + locked decisions) and the `docs/specs/*-spec.md` set. prototype), `rng.ts` (seeded). - `manifold/src/settings/` — `settings-store.ts` (monochrome icons, input-map shape, corner radius). - `manifold/src/serial/` — `memlnaut-serial.ts` Web Serial scaffold + `EditorPanel.tsx` (MEMLNaut Editor mode). -- `manifold/src/debug/probe.ts` — `window.__nisps` (`?debug=1`). `manifold/tests/e2e/smoke.spec.ts`. E2E on the - VPS runs via non-snap node (see BUILD-PLAN). `manifold/osc-bridge/` — Deno WS↔UDP-OSC bridge. +- `manifold/src/engine/exploration.ts` (+ `jolt.ts`, `ou-explore.ts`) — Jolt press + OU explore gestures + (Learning drawer). Interim TS math from the retired playground via get/set-weights + the spine's + `setOutputMorph` hook; marked `P3 SWAP POINT` for the WASM bindings. +- `manifold/src/debug/probe.ts` — `window.__nisps` (`?debug=1`). `manifold/tests/e2e/` — `smoke`, + `probe-api` (15-test engine-contract port), `spine` (spine invariant + probe-survives-mode-switch). + E2E on the VPS runs via non-snap node (see BUILD-PLAN). `manifold/tests/fixtures/` — golden parity + fixtures (gesture trace, curves, input/output pipelines) captured 2026-07-13 pre-P4, guarded by + `tests/pipeline-golden.test.ts` (in `bun run test`). `manifold/osc-bridge/` — Deno WS↔UDP-OSC bridge. ### `vcv/` — VCV Rack 2 plugin (MEMLNaut module, WIP) Native C++ Rack module: ML CV-mapper with RL feedback + a browser bridge. Currently 2→12 (being evolved to diff --git a/docs/specs/plans/one-core-engine-refactor.md b/docs/specs/plans/one-core-engine-refactor.md index 8bbbd4e..c1b28a8 100644 --- a/docs/specs/plans/one-core-engine-refactor.md +++ b/docs/specs/plans/one-core-engine-refactor.md @@ -82,15 +82,22 @@ Each phase ends green on its test gate and is independently landable. File phase - ✅ `ml-debug.log`/`graphify-out/` were already absent from the tree; `.claude/worktrees/` gitignored. - **Gate met:** `run-all-tests.sh` green (Playwright leg via the BUILD-PLAN non-snap-node VPS runner); parity PASS reading `manifold/public/` (max delta 2.4e-7); manifold typecheck+build green against the freshly-built artifact. -### P1 — Retire playground, single TS home (≈1 day) +### P1 — Retire playground, single TS home (≈1 day) — ✅ landed 2026-07-13 -- Branch `archive/playground-solidjs` at current main; delete `playground/` from main. -- Manifold's `src/engine/` is now the only TS spine. Port the two playground-only exploration UIs that - manifold lacks (Jolt press gesture, OU explore control) as *UI shells only* — their math arrives in P3; - interim they may call the existing `nisps_ml_get/set_weights` route the playground used. -- Move Playwright specs worth keeping (spine invariant, probe API) into `manifold/tests/`. -- Retarget every script/doc reference (`CLAUDE.md`, `MAP.md`, deploy script) from playground to manifold. -- **Gate:** chokepoint E equivalent — full test script green with playground gone; manifold e2e passes. +- ✅ Branch `archive/playground-solidjs` + tag `playground-solidjs-final`; `playground/` deleted from main. + Parity fixtures for P4 captured FIRST: `manifold/tests/fixtures/` (288-event gesture trace, curve + goldens, input/output pipeline goldens under 14+8 configs) + drift-guard `pipeline-golden.test.ts`. + Note: input pipeline's momentum path reads `performance.now()` — fixtures pin a clock contract (see + fixtures README). C15 (stub + c15.wasm) now lives only on the archive branch (ALIGNMENT defect #1). +- ✅ Jolt press + OU explore UI shells in the Learning drawer; interim TS math via get/set_weights in + `manifold/src/engine/{exploration,jolt,ou-explore}.ts`, marked `P3 SWAP POINT`. +- ✅ Keeper Playwright specs ported: `probe-api.spec.ts` (15 tests), `spine.spec.ts` (4). Playground UI/ + persistence specs dropped with the playground. +- ✅ References retargeted: run-all-tests stage 5 → manifold, ci.yml manifold-tests job, osc-bridge.yml + (was already broken), codegen TS target removed (returns P5), AGENTS/README/MAP/ALIGNMENT/ + AGENT-REFERENCE/specs-MAIN. The VPS deploy webhook already built only manifold — no change needed. +- **Gate met:** full `run-all-tests.sh` green with playground gone (ctest 4/4, parity PASS, lint clean, + manifold 9 unit + 20 e2e). ### P2 — Storage-policy split: templated hardware, dynamic browser (the structural centre, ≈1 wk) diff --git a/manifold/ONBOARDING.md b/manifold/ONBOARDING.md index 81af17c..658d513 100644 --- a/manifold/ONBOARDING.md +++ b/manifold/ONBOARDING.md @@ -179,6 +179,11 @@ a setting → `--r-*` tokens. - `dataset.ts` — JS-side example store + sample-weight modes (uniform/recency/spatial/combined). - `curves.ts` — math primitives. **Must stay lockstep with C++ `nisps/core/math.hpp`** (golden tests compare WASM vs TS). `sink.ts` — `EngineSink` framework boundary. `types.ts` — C-ABI surface types. +- `exploration.ts` — `ExplorationController` adapter for the Jolt press + OU explore gestures + (Learning drawer). Interim TS math in `jolt.ts` / `ou-explore.ts` (ported from the retired + playground), driven via get/set-weights; OU applies through the spine's inert-by-default + `setOutputMorph` hook. The `─── P3 SWAP POINT ───` comment marks where the one-core-engine plan + swaps these for `nisps_ml_jolt_press/release` + `nisps_ml_explore_intensity` WASM bindings. ### Inputs — `src/inputs/` - `input-layer.ts` — composition hub. One rAF loop polls sources, pulls all axes into a vector, diff --git a/manifold/package.json b/manifold/package.json index 23a0667..524fb90 100644 --- a/manifold/package.json +++ b/manifold/package.json @@ -9,7 +9,7 @@ "build": "tsc --noEmit && vite build", "preview": "vite preview --port 4273", "typecheck": "tsc --noEmit", - "test": "bun test src", + "test": "bun test src tests/pipeline-golden.test.ts", "test:e2e": "playwright test", "test:e2e:headed": "playwright test --headed" },