Skip to content

T-6C0Z-adopt-learn-web

Status: closed/done · Impact: medium · Complexity: medium

apps/learn_web is the heaviest consumer of the shared augmented packages (eight of them) — a Nuxt 4 content/learning site. Bring it in as apps/learn_web/, joining the ROOT Bun workspace so its @augmented/* deps resolve to the vendored packages/ts/* members via workspace:* (the apps/determined/* precedent, not the standalone-zoo one).

Source: https://github.com/sksizer/augmented_books at pinned rev acedcf77652e2e7c481e95123c486c2befe2c423, path apps/learn_web/.

LocationRole today
package.jsonRoot workspaces list — needs an explicit apps/learn_web entry (app dirs are enumerated, not globbed)
packages/ts/Destination of the vendored @augmented/* packages (T-LVLY) this app imports
.moon/workspace.ymlapps/* glob registers the app once it carries a moon.yml
moon.ymlRoot install task notes root-anchored installs serialize on the root-bun-install mutex — joining the root workspace rides that
apps/zoo/MIGRATION.mdpnpm→Bun conversion recipe

Source app facts at the pinned rev: Nuxt ^4.2.2, @nuxt/content 3.10.0, Vue ^3.5.26; own pnpm-lock.yaml; has moon.yml, layers/, scripts/, data/, render_dist/; 64 commits of history. Depends on @augmented/{books,context,entity,hierarchy,logging,render,utils} and @augmented/test-vue-component.

apps/learn_web/ is a root Bun workspace member. bun install at the root links its @augmented/* deps to packages/ts/*. nuxt build passes. No per-app lockfile.

  1. Clone the pinned rev; copy apps/learn_web/apps/learn_web/ (exclude node_modules, pnpm-lock.yaml, tsconfig.tsbuildinfo).
  2. Add apps/learn_web to the root package.json workspaces array.
  3. Ensure its @augmented/* dep ranges are workspace:* (or compatible) so they resolve to the vendored packages.
  4. Root bun install; fix what the Bun conversion broke — no refactors.
  5. Keep/adjust its moon.yml so the project id is learn_web and its build/dev tasks run bun run ….
  6. Verify bun run build (nuxt build) from the app dir; run its tests if any survive the move.
  7. Decide render_dist/ handling: if it’s a build artifact, gitignore it and note; if it’s checked-in fixture data, carry as-is.
LocationKindChange
apps/learn_web/newThe vendored Nuxt app
package.jsonmodifyworkspaces += apps/learn_web
bun.lockmodifyRoot install absorbs the app’s deps
  • AC-1: Root bun install exits 0 with apps/learn_web as a workspace member.
  • AC-2: Every @augmented/* dep resolves to the local packages/ts/* package (symlink into root node_modules, not a registry fetch).
  • AC-3: bun run build succeeds in apps/learn_web/.
  • AC-4: No pnpm-lock.yaml or package-lock.json under apps/learn_web/.
  • AC-5: moon query projects lists learn_web.
  • Content updates or app feature work.
  • Porting its layers/components onto @determined/ui (T-JCML surveys that).
  • T-LVLY — the vendored packages must exist for install to resolve.
  • Part of the augmented_books adoption (owner decision 2026-07-18).

Captured by /sdlc:task-work on 2026-07-19. PR: pending.

  • AC-1: agent-manual — root bun install exits 0; bun.lock carries learn_web@workspace:apps/learn_web.
  • AC-2: agent-manual — all 8 @augmented/* deps resolve to local packages/ts/* (symlinks real-path-resolve into the vendored packages).
  • AC-3: agent-manual — bun run build (nuxt) succeeds (.output/server produced) after two fixes (see friction): routing @nuxt/content to node:sqlite and skipping the client-dump prerender. Root bunx tsc --noEmit also clean.
  • AC-4: auto — no pnpm-lock.yaml/package-lock.json under the app.
  • AC-5: agent-manual — moon query projects lists learn_web.
  • All 8 @augmented/* deps resolved to the vendored packages/ts/* via workspace:* with no range changes.
  • The app declared no @types/node, so the Wave 1 hoist hazard (T-LVLY/T-KTGF) did not materialize — root tsc stayed clean with no reconciliation.
  • @nuxt/content + Bun: it builds a content SQLite index via better-sqlite3 (native, doesn’t build under Bun/CI). Fixed with content.experimental.sqliteConnector: 'native' (Node’s node:sqlite) + dropping the better-sqlite3 dep — same fix as T-KTGF. Codify in apps/zoo/MIGRATION.md.
  • h3 v1/v2 skew (monorepo-wide follow-up). Dropping the pnpm lock floated nuxt 4.2.2→4.5.0, pulling an h3 v2 RC (via @nuxt/test-utils, also present in sibling polish) that crashes @nuxt/content’s client SQL-dump prerender against nitro’s h3 v1. Worked around by skipping the dump prerender (nitro.prerender.ignore; content is served server-side via the native connector, so the client dump is redundant). The underlying h3 dedupe belongs at the monorepo level, not this adoption.
  • Vendored @augmented/* packages have no moon build task and their dist/ isn’t gitignored — the app build needs packages/ts/*/dist which don’t exist on a fresh worktree; they had to be hand-built out-of-band. Fix (T-LVLY follow-up): add build tasks to those packages’ moon.yml and gitignore packages/ts/*/dist.
  • Wave 1 package bugs surfaced: packages/ts/render has a real TS error (src/wikilinks/plugin.ts:87, string not assignable to string[]; tsc emits dist anyway), and packages/ts/entity’s "." export points at dist/index.js but src has no index.ts (broken main export; learn_web unaffected as it imports via subpaths). Both are latent T-LVLY packaging bugs.
  • 20 server files’ createLogger imports were repointed from the upstream deep-relative …/packages/node/logging/src/logger path to @augmented/logging. lefthook markdown-fmt was excluded for apps/learn_web/** (212 vendored content .md fixtures) mirroring the apps/determined/** precedent.

T-LVLY


← Back to Tasks