Files
suaveplan/.audit/status-audit-2026-05-25.md
2026-05-27 23:29:53 +01:00

9.9 KiB
Raw Blame History

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/<cat>/<plugin>/<pkg>/ matching the package name (verified via find packages/ -type d -name <pkg>).

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)

  1. clipboard — main src 900 LOC, ext deps: 0. Browser-tier. Spec 104 lines.
  2. mcp — main src 1024 LOC, ext deps: zod. Spec 119 lines. MCP server/client foundation; promising fresh-build candidate.
  3. sandbox — main src 3432 LOC, ext deps: 0. Server-tier. Spec 118 lines. Larger but zero @suaveplan deps.
  4. 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.
  5. pwa — main src 2336 LOC, ext deps: 0. Browser-tier. Spec 115 lines.
  6. 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)

  1. analytics-browser — 1037 LOC, depends on @suaveplan/events (shipped ✅).
  2. web-workers — 961 LOC, depends on @suaveplan/events (shipped ✅).
  3. storage-browser — 1724 LOC, depends on @suaveplan/storage (shipped ✅).
  4. imessage-adapter — 718 LOC, depends on @suaveplan/events (shipped ✅).
  5. video-thumbnails — 1067 LOC, depends on @suaveplan/error (shipped ✅).
  6. sms-providers — 1755 LOC, depends on @suaveplan/error (shipped ✅).

Tier 4 — multi-dep but all deps already shipped

  1. 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/<plugin>/media/ — confirm plugin assignment in scripts/folder-reorg/assignment.yml before migration.
  2. email-templates — 1953 LOC; React-tier (peer deps on react/react-dom). No @suaveplan runtime deps.
  3. form-builder — 1355 LOC; @suaveplan/error + @suaveplan/events (both shipped).
  4. ports — 2921 LOC; @suaveplan/geo (verify shipped; CLAUDE.md lists geo as shipped).
  5. sms — 1389 LOC; @suaveplan/error + @suaveplan/events (both shipped).
  6. 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.
  7. video — 1517 LOC; @suaveplan/error + @suaveplan/events (both shipped).
  8. dmx — 14012 LOC; @suaveplan/events + @suaveplan/timing (both shipped). Largest pending in scope.
  9. 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.