Skip to content

[finding] pnpm sdui:manifest dies with ENOENT when packages/console/dist/ does not exist — the ratchet's only trigger cannot run before a successful console build #10138

Description

@os-project-manager

Measured while running the pin-bump procedure for #10129.

scripts/gen-sdui-manifest.sh computes its output location and hands it straight to objectui's dumper:

TARGET="${FRAMEWORK_ROOT}/packages/console/dist"
...
BASE_URL="http://localhost:${DUMP_PORT}" OUT="${TARGET}/sdui.manifest.json" node scripts/dump-public-manifest.mjs

Neither side creates TARGET. dump-public-manifest.mjs calls writeFileSync directly, so when the directory is absent the whole run dies after it has already paid for a vite dev server and a Playwright chromium launch:

Error: ENOENT: no such file or directory, open '.../packages/console/dist/sdui.manifest.json'
at writeFileSync (node:fs:2430:20)
at .../scripts/dump-public-manifest.mjs:39:3
✗ manifest generation failed (exit 1).
If Playwright reported a missing browser, install it and retry:
pnpm exec playwright install chromium-headless-shell

Two things make this worth a card rather than a shrug:

  1. The diagnosis the script offers is wrong for this failure. Every failure branch here points at Playwright, so the printed remedy is playwright install — which is both useless and, in a dispatch container, forbidden (PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1, per docs/releases-maintenance.md). The browser had in fact launched and the dump had succeeded; only the write failed. A reader following the printed advice chases the wrong layer.
  2. It fires exactly when the ratchet is most needed.packages/console/dist/ is gitignored and only exists after a successful scripts/build-console.sh. So a tree where the console build is broken — which is precisely when someone wants an independent read on the registry — cannot run the ADR-0082 D4 ratchet at all, even though the ratchet does not need the built dist: gen-sdui-manifest.sh drives a vite dev server over .cache/objectui-*, not the vendored dist/. That is the state Console Pin Gate cannot build any objectui pin at/after 6d5368ac8: the lazy-linter counter-probe is blind to the OBJECTSTACK_SPEC_DIST injection #10136 leaves the tree in today, and it is how this was found.

mkdir -p "$TARGET" before the dump makes it a non-event; the workaround while it stands is exactly that, by hand. The fix belongs on this side (the objectstack script owns TARGET), not in objectui's dumper.

Not a blocker for anything today — recording it so the next seat does not spend the round on the Playwright trail. Found while working #10129; unrelated to that card's own scope.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions