# STATUS Audit — 2026-05-25 ## Summary - Reviewed: 35 rows marked `–` in STATUS.md (scope: non-api, non-react, non-r3f, non-games, non-python) - **Actually shipped (flip `–` → `✅`): 7** - `audio-engine-server`, `contacts`, `macos-contacts`, `audience-rules`, `streams-chunk-queue`, `streams-metadata`, `workflow` - **Genuinely pending (no genesis src on disk): 28** - `dmx`, `docs`, `pdf`, `email-templates`, `form-builder`, `caddy-imgproxy`, `emblem-solver`, `ports`, `imessage-adapter`, `sms`, `sms-providers`, `analytics-browser`, `pwa`, `electrobun`, `linter`, `overview`, `sandbox`, `test-vite`, `wip`, `clipboard`, `mcp`, `media`, `spatial-hash`, `storage-browser`, `storybook-test-utils`, `video`, `video-thumbnails`, `web-workers` - **Partial / drift: 0** — every found row passes all 4 hard gates (package.json + non-stub index.ts + tests + substantive README); no half-built folders detected in scope. ## Detail — flips needed (`–` → `✅`) | Package | Folder | OpenSpec change-id | Src state | |---|---|---|---| | `@suaveplan/audio-engine-server` | `/home/paul/web/genesis/packages/media/audio/audio-engine-server` | `openspec/archive/2026-05-23-enterprise-audio-engine-server` | 7 feature dirs (adapter, error-codes, fx, internal, sink, source) + 8 `*.test.ts`; `src/index.ts` 60 lines of real named exports (`BusOrchestrator`, `ServerTimelineAdapter`, schemas, types); README 56 lines; v0.1.0. | | `@suaveplan/contacts` | `/home/paul/web/genesis/packages/commerce/contacts/contacts` | `openspec/archive/2026-05-20-migrate-contacts` | 8 feature dirs (core, error-codes, import-export, otel, schemas, stores, tree, types) + 15 `*.test.ts` + spec-conformance file; `src/index.ts` 121 lines real barrel; README 86 lines; v0.1.0. | | `@suaveplan/macos-contacts` | `/home/paul/web/genesis/packages/commerce/contacts/macos-contacts` | `openspec/archive/2026-05-20-migrate-macos-contacts` | 8 feature dirs (applescript, bridge, error-codes, executor, otel, parser, schemas, types) + 8 `*.test.ts` + spec-conformance; `src/index.ts` 55 lines real barrel; README 41 lines; v0.1.0. | | `@suaveplan/audience-rules` | `/home/paul/web/genesis/packages/commerce/contacts/audience-rules` | `openspec/archive/2026-05-23-enterprise-audience-rules` | 7 feature dirs (predicates, schemas, segment-evaluator, segment-refresher, store, types, error-codes) + 6 `*.test.ts` + spec-conformance; `src/index.ts` 67 lines real barrel with full docblock; README 93 lines; v0.1.0. | | `@suaveplan/streams-chunk-queue` | `/home/paul/web/genesis/packages/foundation/flow/streams-chunk-queue` | `openspec/archive/2026-05-23-enterprise-streams-chunk-queue` | 11 feature dirs (binary-protocol, decryptor, errors, events, hooks, queue, rate-limiter, storage-adapter, telemetry, types, validator) + 13 `*.test.ts`; `src/index.ts` 82 lines real barrel; README 70 lines; v0.1.0. | | `@suaveplan/streams-metadata` | `/home/paul/web/genesis/packages/foundation/flow/streams-metadata` | `openspec/archive/2026-05-23-enterprise-streams-metadata` | 6 feature dirs (errors, events, exif, metadata, mime, types) + 4 `*.test.ts`; `src/index.ts` 23 lines but with substantive named exports incl. `STREAMS_METADATA_CODES`, error classes, factories; README 70 lines; v0.1.0. (Smallest of the shipped set — verify next consumer agrees with surface, but it satisfies all 4 gates.) | | `@suaveplan/workflow` | `/home/paul/web/genesis/packages/foundation/flow/workflow` | `openspec/archive/2026-05-24-enterprise-workflow` | 9 feature dirs (compensation, constants, core, errors, middleware, otel, steps, types, utils) + 14 `*.test.ts`; `src/index.ts` 118 lines real barrel; README 127 lines; v0.1.0. | ## Detail — partials None. Every directory matching the scoped names that exists on disk fully passes gates (1)–(4). The remaining 28 rows have **zero** package directory under `packages////` matching the package name (verified via `find packages/ -type d -name `). ## Detail — true leaves (no `@suaveplan/*` runtime deps, ready to migrate) Ranked smallest/cleanest leaf first. LOC = `wc -l` over all `*.ts` under main-branch `src/`. "ext deps" = non-`tslib` runtime deps in `package.json`. All listed packages have **zero** `@suaveplan/*` runtime dependencies in main — they can be migrated without any prior-package gating. ### Tier 1 — trivial leaves (≤ 1k LOC, 0–1 external dep) 1. **`wip`** — main src 18 LOC, ext deps: 0 (tslib only). Spec `enterprise/wip.md` 116 lines. The smallest possible leaf; effectively a placeholder package per spec — verify scope before swarming. 2. **`test-vite`** — main src 20 LOC, ext deps: `vite`, `vitest` (catalog). Spec `enterprise/test-vite.md` 101 lines. Tiny build-helper; pure tooling glue. 3. **`caddy-imgproxy`** — main src 49 LOC, ext deps: 0. Spec `enterprise/caddy-imgproxy.md` 118 lines. Server-tier image-proxy Caddy config emitter; very small. 4. **`overview`** — main src not in `src/` (skill loader package), 1 `@suaveplan/*` dep is install-time only per package.json structure (`deps: {}`). Spec `enterprise/overview.md` 116 lines. Already named in CLAUDE.md foundation; safe leaf. 5. **`storybook-test-utils`** — main src 392 LOC, ext deps: `@storybook/testing-library`, `@testing-library/react`, `react`. Browser-tier. Spec `enterprise/storybook-test-utils.md` 101 lines. Pure adapter shims. 6. **`spatial-hash`** — main src 663 LOC, ext deps: 0. Spec `enterprise/spatial-hash.md` 116 lines. Pure-algo gaming-adjacent broad-phase; trivial leaf despite categorisation note (CLAUDE.md says non-games scope here, but this is a generic data structure, not gameplay logic). 7. **`linter`** — main src 856 LOC, ext deps: `@biomejs/biome`, `glob`, `remark*`, `unified`, `unist-util-visit`. Spec 118 lines. Server-tier markdown/biome wrapper; many ext deps but all leaf-stable. ### Tier 2 — small leaves (~1–2k LOC, 0 `@suaveplan/*` runtime deps) 8. **`clipboard`** — main src 900 LOC, ext deps: 0. Browser-tier. Spec 104 lines. 9. **`mcp`** — main src 1024 LOC, ext deps: `zod`. Spec 119 lines. MCP server/client foundation; promising fresh-build candidate. 10. **`sandbox`** — main src 3432 LOC, ext deps: 0. Server-tier. Spec 118 lines. Larger but zero @suaveplan deps. 11. **`pdf`** — main src 9436 LOC, ext deps: 0. Server-tier. Spec 118 lines. Big but a clean leaf (likely consumes only pdfkit/puppeteer-style deps inlined as devDeps in main); inspect before swarming. 12. **`pwa`** — main src 2336 LOC, ext deps: 0. Browser-tier. Spec 115 lines. 13. **`emblem-solver`** — main src 2003 LOC, ext deps: 0. Spec 116 lines. ### Tier 3 — leaves with one `@suaveplan/*` runtime dep (gate one already-shipped pkg) 14. **`analytics-browser`** — 1037 LOC, depends on `@suaveplan/events` (shipped ✅). 15. **`web-workers`** — 961 LOC, depends on `@suaveplan/events` (shipped ✅). 16. **`storage-browser`** — 1724 LOC, depends on `@suaveplan/storage` (shipped ✅). 17. **`imessage-adapter`** — 718 LOC, depends on `@suaveplan/events` (shipped ✅). 18. **`video-thumbnails`** — 1067 LOC, depends on `@suaveplan/error` (shipped ✅). 19. **`sms-providers`** — 1755 LOC, depends on `@suaveplan/error` (shipped ✅). ### Tier 4 — multi-dep but all deps already shipped 20. **`media`** — 400 LOC; depends on `@suaveplan/mime` (shipped). Smallest of the multi-dep group. **Naming note:** the genesis category dir is also called `media/`, so the package will live at `packages/media//media/` — confirm plugin assignment in `scripts/folder-reorg/assignment.yml` before migration. 21. **`email-templates`** — 1953 LOC; React-tier (peer deps on `react`/`react-dom`). No @suaveplan runtime deps. 22. **`form-builder`** — 1355 LOC; `@suaveplan/error` + `@suaveplan/events` (both shipped). 23. **`ports`** — 2921 LOC; `@suaveplan/geo` (verify shipped; CLAUDE.md lists `geo` as shipped). 24. **`sms`** — 1389 LOC; `@suaveplan/error` + `@suaveplan/events` (both shipped). 25. **`docs`** — 1136 LOC; zero `@suaveplan/*` runtime deps (only `glob`/`remark*`/`unified`/`gray-matter`). Surprisingly a true leaf despite being listed mid-tier — could move to Tier 2 if confirmed. 26. **`video`** — 1517 LOC; `@suaveplan/error` + `@suaveplan/events` (both shipped). 27. **`dmx`** — 14012 LOC; `@suaveplan/events` + `@suaveplan/timing` (both shipped). **Largest pending** in scope. 28. **`electrobun`** — 2169 LOC; `@suaveplan/cli` + `@suaveplan/config` + `@suaveplan/templates` (all shipped) + external `iconz`. ### Noteworthy constraints - **`docs` is misclassified in main as having deps** — the actual `dependencies` block is purely external (markdown toolchain). It's a true leaf. - **`mcp`** at 1024 LOC + only `zod` is the highest-value/lowest-risk net-new build candidate; consider promoting in priority. - **`overview`** is already listed under genesis foundation in CLAUDE.md as `overview` (machine-readable monorepo manifest). The `–` row in STATUS.md may be stale — **double-check disk** before swarming; if a sibling `overview` package exists outside the audited categories it may already be `✅` and just missing from this row's status. (My `find` against `packages/` for `overview` returned MISSING, so as of audit time the row is correct, but the spec sketches a richer surface than the CLAUDE.md description — reconcile before migration.) - **`pdf` at 9.4k LOC and `dmx` at 14k LOC** are large enough that a single agent migration is risky — plan as multi-chunk OpenSpec changes (similar to recent api-plugin-campaigns chunks A/B/C). - **`spatial-hash`** is technically gaming-category in CLAUDE.md taxonomy; user's scope filter excludes "games" but a generic spatial hash is a foundation data-structure — confirm whether it belongs in scope before migrating. - **`storage-browser`** in main is superseded — the `2026-05-12-enterprise-browser-storage-browser-superseded-by-split` archive plus shipped `storage-browser-{indexeddb,localstorage,opfs}` rows in STATUS.md (lines 654/659 confirmed) means this row should likely be **retired**, not migrated. STATUS.md row at line 740 is stale; the package was split.