Skip to content

ci: smoke den-api native build output (catches unbuilt workspace dist exports) - #3528

Draft
benjaminshafii wants to merge 2 commits into
devfrom
ci/den-api-native-build-smoke
Draft

ci: smoke den-api native build output (catches unbuilt workspace dist exports)#3528
benjaminshafii wants to merge 2 commits into
devfrom
ci/den-api-native-build-smoke

Conversation

@benjaminshafii

@benjaminshafii benjaminshafii commented Aug 4, 2026

Copy link
Copy Markdown
Member

What / why

#3466 broke prod den-api at boot (ERR_MODULE_NOT_FOUND for @openwork/types/dist/automations.js) while every PR check stayed green:

  • typecheck resolves the types export condition → src/*.ts
  • bun tests resolve bunsrc/*.ts
  • tsx/dev + eval harness resolve developmentsrc/*.ts
  • the "Build openwork-den-api" job builds the Docker image, whose Dockerfile was patched in the same PR

Prod deploys via Render's native build (scripts/build.mjs), which nothing in CI exercises — and only a plain-Node boot resolves the node condition → dist/*.js. This job closes that gap: it runs the native build, then resolves @openwork/types/automations and @openwork/automations under Node's node condition from den-api's package context, and asserts dist/main.js exists.

⚠️ This job is red on this branch — by design

This branch is plain dev, which still has the live breakage. The failing run here is the demonstration that the backstop catches exactly this failure class. It goes green once #3527 (the prod fix) merges and this branch rebases.

Open questions for review (cc @reachjalil)

  1. Is the import-smoke approach right, or would you rather boot dist/main.js against a health check (heavier, needs env/DB stubs)?
  2. Should the smoke enumerate dist-condition workspace deps dynamically instead of hardcoding the two current packages?
  3. Path filters / triggers reasonable?

Validation

Workflow-only change (no app runtime): actionlint passes (sole warning is the custom blacksmith-4vcpu-ubuntu-2204 runner label, shared by existing workflows); every uses: action+version and the runner label are copied verbatim from ci-tests.yml / den-db-check.yml; concurrency follows the repo's cancel-in-progress: true convention.

Add a PR/dev job that runs den-api's native build (the Render deploy path,
not the Docker image) and then resolves @openwork/types/automations and
@openwork/automations under Node's node export condition. Catches workspace
exports that point at unbuilt dist/ files, which typecheck and bun/tsx tests
cannot see because they resolve the types/bun/development conditions to src.
@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openwork-app Ready Ready Preview Aug 4, 2026 9:53pm
openwork-den Ready Ready Preview Aug 4, 2026 9:53pm
openwork-den-worker-proxy Ready Ready Preview Aug 4, 2026 9:53pm
openwork-landing Ready Ready Preview, v0 Aug 4, 2026 9:53pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
openwork-diagnostics Skipped Skipped Aug 4, 2026 9:53pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant