T-UPV1-adopt-demos-vimit-prototype
Status: closed/done · Impact: low · Complexity: medium
Three small apps ride along with the adoption: the two package demos land
next to the packages they demonstrate (the docs-site-per-package pattern),
and vimit_prototype lands as a root-workspace app.
Source: https://github.com/sksizer/augmented_books at pinned rev
acedcf77652e2e7c481e95123c486c2befe2c423.
| Location | Role today |
|---|---|
package.json | Root workspaces list — needs explicit entries for the two nested demo dirs and apps/vimit_prototype (globs don’t reach nested dirs) |
packages/ts/intersect/docs-site/ | Precedent: a package’s demo/docs app lives inside the package dir |
.moon/workspace.yml | apps/* glob covers vimit_prototype; the nested demos stay out of moon deliberately (demo apps, not build-graph members) |
apps/zoo/MIGRATION.md | Lock-conversion recipe |
Source app facts at the pinned rev:
| Source app | Shape | Internal deps |
|---|---|---|
apps/json-canvas-demo | Vue 3 + Vite single-page demo | @augment/json-canvas-vue |
apps/obsidian-bases-demo | Nuxt demo with server/ API + vaults/ fixtures | @augment/obsidian-bases |
apps/vimit_prototype | Nuxt app (app/, server/, shared/, own pnpm-lock.yaml) | @augmented/entity, @augmented/logging |
Proposed
Section titled “Proposed”| Source | Destination |
|---|---|
apps/json-canvas-demo | packages/ts/json-canvas-vue/demo/ |
apps/obsidian-bases-demo | packages/ts/obsidian-bases-augment/demo/ |
apps/vimit_prototype | apps/vimit_prototype/ |
All three are root Bun workspace members (explicit workspaces entries),
resolve their internal deps to the vendored packages/ts/* packages, and
build clean. The obsidian-bases demo moves again when T-NLKF retires
obsidian-bases-augment — that’s expected.
Approach
Section titled “Approach”- Clone the pinned rev; copy the three apps per the table (exclude
node_modulesand all lockfiles). - Add the three paths to root
package.jsonworkspaces. - Ensure internal dep ranges resolve to the vendored packages; root
bun install. - Verify builds:
bun run buildin each (vite build / nuxt build). For the obsidian-bases demo, also bootbun run devbriefly to confirm the server API starts against itsvaults/fixtures. - Carry
apps/vimit_prototype’smoon.ymlif present; the two demos deliberately get none — note why in each demo’s README.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
packages/ts/json-canvas-vue/demo/ | new | Vendored json-canvas demo |
packages/ts/obsidian-bases-augment/demo/ | new | Vendored obsidian-bases demo (+ vaults/ fixtures) |
apps/vimit_prototype/ | new | Vendored Nuxt prototype |
package.json | modify | workspaces += the three new paths |
bun.lock | modify | Root install absorbs the three apps’ deps |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: Root
bun installexits 0 with all three as workspace members. - AC-2: All three build clean (
bun run buildeach). - AC-3: Internal deps resolve to local
packages/ts/*packages, not registry fetches. - AC-4: No
pnpm-lock.yaml/package-lock.jsonunder any of the three destinations.
Out of scope
Section titled “Out of scope”- Retiring
obsidian-bases-augmentand relocating its demo (T-NLKF). - Reviving
vimit_prototypeas a product — it lands as-is;vimititself stays in the source repo per the owner’s call.
Dependencies
Section titled “Dependencies”T-LVLY— the vendored packages must exist for install to resolve.
Discovery context
Section titled “Discovery context”- Part of the augmented_books adoption (owner decision 2026-07-18); the owner explicitly opted to keep the demos and prototype alive.
Post-mortem
Section titled “Post-mortem”Captured by /sdlc:task-work on 2026-07-19. PR: pending.
Acceptance criteria coverage
Section titled “Acceptance criteria coverage”- AC-1: agent-manual — root
bun installexits 0;bun pm lsshows all three (@augment/json-canvas-demo,@augment/obsidian-bases-demo,vimit). - AC-2: agent-manual — all three build clean (json-canvas:
vue-tsc && vite build; obsidian + vimit:nuxt build). Internal-depdist/subgraphs were hand-built first (whatmoon run <app>:builddoes via^:build), then removed — nothing built is committed. - AC-3: agent-manual — per-app
node_modulessymlinks point topackages/ts/{json-canvas-vue,obsidian-bases-augment,entity,logging}(verified viareadlink), not registry. - AC-4: auto — no
pnpm-lock.yaml/package-lock.jsonunder any of the three dests. Rootbunx tsc --noEmitalso clean.
What worked
Section titled “What worked”- Internal deps resolved to the vendored
packages/ts/*via workspace ranges with no changes. - The obsidian demo boots against its
vaults/fixtures (GET /api/vaults→ 200 listing all 5) on the Bun runtime — its DB layer isbun:sqlite(fromT-LVLY’s migration), so no native module is pulled. better-sqlite3(+@types/better-sqlite3) dropped from the obsidian demo (unused; the package is onbun:sqlite); nothing added totrustedDependencies.
Friction and automation gaps
Section titled “Friction and automation gaps”- Vendored pnpm apps hide undeclared deps behind
shamefully-hoist; under Bun they surface as install/build failures one at a time (vimit needed explicit@nuxtjs/mdc+tailwindcss). Fix: a pre-adoption scan for specifiers used innuxt.config/CSS@importbut absent frompackage.jsonwould catch these up front — worth adding toapps/zoo/MIGRATION.md. - App builds need their internal-dep
dist/present, but a directbun run builddoes not build^:buildfirst — verification had to hand-build 6 dependency packages. Andpackages/ts/*/distis not gitignored, so those verification builds leave untracked artifacts to clean; a globalpackages/ts/*/dist/ignore would help. (Same@types/nodehoist reconciliation asT-LVLY/T-KTGF: obsidian demo^24.10.1→^26.1.0.) - Nuxt 4.5 resolving
nuxt: ^4.2.xpulls an h3 v2 release-candidate that breaksreadBodyunder Bun — the obsidian demo’s POST routes (/api/query) 500 before any DB code (documented in the demo README; unrelated to the adoption). A “latest resolves to a prerelease” hazard that argues for pinning Nuxt/h3.
Depends on
Section titled “Depends on”T-LVLY