T-KTGF-adopt-augmented-web
Status: closed/done · Impact: medium · Complexity: medium
Bring the augmented_web Nuxt app in as apps/augmented_web/, joining
the ROOT Bun workspace so its @augment/json-canvas-core /
@augment/json-canvas-vue deps resolve to the vendored packages/ts/*
members.
Source: https://github.com/sksizer/augmented_books at pinned rev
acedcf77652e2e7c481e95123c486c2befe2c423, path apps/augmented_web/.
| Location | Role today |
|---|---|
package.json | Root workspaces list — needs an explicit apps/augmented_web entry |
packages/ts/ | Destination of the vendored @augment/* packages (T-LVLY) |
.moon/workspace.yml | apps/* glob registers the app via its moon.yml |
apps/zoo/MIGRATION.md | pnpm→Bun conversion recipe |
Source app facts at the pinned rev: Nuxt app with layers/, server/,
shared/, tests/ + vitest.config.ts, own package-lock.json (npm),
mise.toml, moon.yml, CLAUDE.md. Declares deps
@augment/json-canvas-core, @augment/json-canvas-vue, and
@augment/obsidian-bases — but a source grep at the pinned rev found no
@augment/obsidian-bases import in its code. Verify and drop the unused
dep rather than wiring it (this shrinks T-NLKF’s surface).
Proposed
Section titled “Proposed”apps/augmented_web/ is a root Bun workspace member; json-canvas deps
resolve locally; the obsidian-bases dep is either dropped (grep-proven
unused) or wired to packages/ts/obsidian-bases-augment. Build and vitest
suite pass.
Approach
Section titled “Approach”- Clone the pinned rev; copy
apps/augmented_web/(excludenode_modules,package-lock.json). - Add
apps/augmented_webto rootpackage.jsonworkspaces. - Grep the app for
@augment/obsidian-bases: if unused, remove the dep and record the grep in the PR body; if used, point it at the vendoredpackages/ts/obsidian-bases-augment/. - Ensure
@augment/json-canvas-*ranges resolve to the vendored packages; rootbun install. - Reconcile its per-app
mise.tomlwith repo conventions (drop it if it only pins node/pnpm; the repo root already pins toolchains). - Verify
bun run buildand the vitest suite from the app dir; keep itsmoon.ymlproject registration working.
Files to touch
Section titled “Files to touch”| Location | Kind | Change |
|---|---|---|
apps/augmented_web/ | new | The vendored Nuxt app |
package.json | modify | workspaces += apps/augmented_web |
bun.lock | modify | Root install absorbs the app’s deps |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: Root
bun installexits 0 with the app as a workspace member. - AC-2:
@augment/json-canvas-coreand@augment/json-canvas-vueresolve to the localpackages/ts/*packages. - AC-3: The
@augment/obsidian-basesdep is dropped with grep proof in the PR body, or wired locally if imports exist. - AC-4:
bun run buildand the vitest suite pass inapps/augmented_web/. - AC-5: No
package-lock.jsonorpnpm-lock.yamlunderapps/augmented_web/.
Out of scope
Section titled “Out of scope”- Porting obsidian-bases usage onto
@sksizer/obsidian-bases(T-NLKF). - UI convergence with
@determined/ui(T-JCML).
Dependencies
Section titled “Dependencies”T-LVLY— 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).
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 (354 pkgs);apps/augmented_webadded to rootworkspaces(single-entry). - AC-2: agent-manual —
@augment/json-canvas-core+json-canvas-vueresolve to localpackages/ts/*(symlinks in the app’snode_modules); keptworkspace:*. - AC-3: auto —
@augment/obsidian-basesdropped (declared-but-unused; grep over the source app found it only inpackage.json, no import in any.ts/.vue/.js). - AC-4: agent-manual —
bun run build(nuxt) exits 0 (.outputproduced); vitest 10/10 pass. - AC-5: auto — no
package-lock.json/pnpm-lock.yamlunder the app. Rootbunx tsc --noEmitalso clean.
What worked
Section titled “What worked”@augment/json-canvas-*resolved to the vendoredpackages/ts/*viaworkspace:*with no changes.- Dropping the unused
@augment/obsidian-basesdep (grep-proven) shrinksT-NLKF’s surface as the task intended.
Friction and automation gaps
Section titled “Friction and automation gaps”@nuxt/contentbuilds a SQLite content index via db0’sbetter-sqlite3connector, which hard-failsnuxt buildwhenbetter-sqlite3is untrusted (unbuilt native binding). Fixed bycontent.experimental.sqliteConnector: 'native'(routes to Node’s built-innode:sqlite), keepingbetter-sqlite3untrusted. Fix: the pnpm/npm→Bun adoption recipe (apps/zoo/MIGRATION.md) should codify setting the Nuxt-Content sqlite connector to'native'for any@nuxt/contentapp.@types/nodehoist reconciliation was needed (^24.10.1→^26.1.0) to avoid breakingapps/sdlc’s roottsc— the same recurring gap asT-LVLY; the adoption recipe should standardize shared@types/*to the monorepo pins.- The upstream vendored tree was broken-at-HEAD: an unresolved git merge-conflict marker in
.gitignoreand a stale test import path (premodules→layersrefactor, failing under npm too). Vendoring at a pinned rev inherits upstream’s broken state; adoption should budget for making the suite actually green, which can exceed “fix only Bun-conversion breaks.”
Depends on
Section titled “Depends on”T-LVLY