deploy: packages/web imports undeclared deps (clean install build fails) #35

Open
opened 2026-09-25 02:42:52 +00:00 by kayg · 3 comments
Owner

The o2 deploy of dev at db5b5cb fails in the clean aarch64 build container:

Error: [vite]: Rolldown failed to resolve import "@lucide/svelte/icons/ellipsis" from "/src/packages/web/src/routes/containers/+page.svelte".

@lucide/svelte is declared only in packages/ui/package.json, but packages/web imports it directly. bun's isolated linker (node_modules/.bun) does not hoist it, so a clean install cannot resolve the import. Local builds pass only because the dev VM still has stale hoisted node_modules.

Fix: declare every package that packages/web imports directly in its own package.json, and add a check so an undeclared import fails verify fast instead of only failing in a clean install.

The o2 deploy of `dev` at `db5b5cb` fails in the clean aarch64 build container: ``` Error: [vite]: Rolldown failed to resolve import "@lucide/svelte/icons/ellipsis" from "/src/packages/web/src/routes/containers/+page.svelte". ``` `@lucide/svelte` is declared only in `packages/ui/package.json`, but `packages/web` imports it directly. bun's isolated linker (`node_modules/.bun`) does not hoist it, so a clean install cannot resolve the import. Local builds pass only because the dev VM still has stale hoisted `node_modules`. Fix: declare every package that `packages/web` imports directly in its own `package.json`, and add a check so an undeclared import fails `verify fast` instead of only failing in a clean install.
Author
Owner

Starting web dependency declaration fix on branch web-deps, based on dev at db5b5cbf19a7c5d2455225c75e3b8216075f76e7.

Starting web dependency declaration fix on branch `web-deps`, based on `dev` at `db5b5cbf19a7c5d2455225c75e3b8216075f76e7`.
Author
Owner

The import inventory found undeclared package imports in two workspaces: packages/web imports @lucide/svelte/icons/* but only packages/ui declared @lucide/svelte; packages/stream/src/browser_bench.ts imports @playwright/test while only the root and terminal manifests declared it. Added direct declarations with the repo-pinned versions (@lucide/svelte 1.48.0 and @playwright/test ^1.63.0).

The import inventory found undeclared package imports in two workspaces: `packages/web` imports `@lucide/svelte/icons/*` but only `packages/ui` declared `@lucide/svelte`; `packages/stream/src/browser_bench.ts` imports `@playwright/test` while only the root and terminal manifests declared it. Added direct declarations with the repo-pinned versions (`@lucide/svelte` 1.48.0 and `@playwright/test` ^1.63.0).
Author
Owner

Finished on branch web-deps.

Head: ce194d4bf53bf370a6bcccb76745c74c74240494.

The clean-clone check used a fresh clone of this commit, ran bun install --frozen-lockfile, and built packages/web. The clone was deleted afterward.

Frozen install output:

bun install v1.4.2 (744846f84)

+ @playwright/test@1.63.0

220 packages installed [2.98s]

Web build completion output (verbatim lines):

✓ built in 5.10s
✓ built in 12.91s
> Using @sveltejs/adapter-static
  Wrote site to "build"
  ✔ done

The successful build also printed a chunk-size advisory for bundles above 500 kB.

scripts/verify fast output:

PASS fast: migrations are append-only
PASS fast: workspace package dependencies
PASS fast: JavaScript dependencies
PASS fast: build web app
PASS fast: cargo fmt --check
PASS fast: cargo clippy
PASS fast: cargo test
PASS fast: svelte-check
PASS fast: UI package svelte-check
PASS fast: stream package typecheck
PASS fast: Vitest
PASS fast: UI package Vitest
PASS fast: stream package Vitest
PASS fast: OpenAPI and TypeScript client drift
PASS fast: terminal TypeScript
PASS fast: terminal Vitest

The dependency check passed on the repository and failed as expected against a temporary fixture importing an undeclared scoped package:

Workspace package imports are declared.
Workspace package imports missing manifest declarations:
  packages/fixture/src/index.ts: @missing/subpath (missing @missing/subpath in packages/fixture/package.json)
Expected rejection status: 1
Finished on branch `web-deps`. Head: `ce194d4bf53bf370a6bcccb76745c74c74240494`. The clean-clone check used a fresh clone of this commit, ran `bun install --frozen-lockfile`, and built `packages/web`. The clone was deleted afterward. Frozen install output: ```text bun install v1.4.2 (744846f84) + @playwright/test@1.63.0 220 packages installed [2.98s] ``` Web build completion output (verbatim lines): ```text ✓ built in 5.10s ✓ built in 12.91s > Using @sveltejs/adapter-static Wrote site to "build" ✔ done ``` The successful build also printed a chunk-size advisory for bundles above 500 kB. `scripts/verify fast` output: ```text PASS fast: migrations are append-only PASS fast: workspace package dependencies PASS fast: JavaScript dependencies PASS fast: build web app PASS fast: cargo fmt --check PASS fast: cargo clippy PASS fast: cargo test PASS fast: svelte-check PASS fast: UI package svelte-check PASS fast: stream package typecheck PASS fast: Vitest PASS fast: UI package Vitest PASS fast: stream package Vitest PASS fast: OpenAPI and TypeScript client drift PASS fast: terminal TypeScript PASS fast: terminal Vitest ``` The dependency check passed on the repository and failed as expected against a temporary fixture importing an undeclared scoped package: ```text Workspace package imports are declared. Workspace package imports missing manifest declarations: packages/fixture/src/index.ts: @missing/subpath (missing @missing/subpath in packages/fixture/package.json) Expected rejection status: 1 ```
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal-v0#35
No description provided.