Skip to content

fix(ci): the CLI release type-checks against siblings it never built - #604

Merged
beyondnetPeru merged 1 commit into
developfrom
fix/sdk-release-build-workspaces
Aug 17, 2026
Merged

fix(ci): the CLI release type-checks against siblings it never built#604
beyondnetPeru merged 1 commit into
developfrom
fix/sdk-release-build-workspaces

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

fix(ci): the CLI release type-checks against siblings it never built

THIRD FAILURE ON THE SAME JOB, THIRD DIFFERENT CAUSE.

build-and-test in sdk-cli-release has now failed on every tag it ever ran on:

v1 / v1.3.0   Generate SBOM (CycloneDX)          — npm ls exit code       (fixed, #568)
v1.3.3        Architecture Boundary Lint          — pre-existing debt      (fixed, #600)
v1.3.4        Type Check and Build                — this

Each fix uncovered the next, because the job only ever executes on a tag: it is gated on
release_created, which release-gate sets only for refs/tags/v*. On every branch push it
is SKIPPED and the workflow reports success. Five green runs on main tonight told us nothing
about it.

WHAT FAILED

Type Check and Build runs npm run build inside src/sdk/cli, which compiles the CLI and
nothing else. In a workspace, @beyondnet/* resolve to the local packages by symlink, but a
SUBPATH import needs that package's dist/ to exist, and it does not after a bare npm ci.
100+ errors, all the same shape:

src/app.module.ts(12,29): error TS2307: Cannot find module
  '@beyondnet/evolith-core-domain/application/sync/sync.service'
src/commands/agents/agents.command.ts(5,40): error TS2307: Cannot find module
  '@beyondnet/evolith-infra-providers'

THE FIX ALREADY EXISTS, ONE WORKFLOW OVER

npm-release.yml has a step called "Build every workspace" that runs the root npm run build
(tsc -b tsconfig.json over all projects). sdk-cli-release never had it. Added, immediately
after npm ci and before the lint and type-check that depend on it.

VERIFIED, INCLUDING THE PART THAT LOOKED LIKE A PROBLEM

Locally, the root build exits 2 — but for a reason that does not exist on the runner, and the
distinction was measured rather than assumed:

root `npm run build` here      -> exit 2, 4 × TS2307, all '@nestjs/cache-manager'
is it declared?                -> yes, in src/packages/mcp-server/package.json
is it in the lockfile?         -> yes, @3.1.3 under src/packages/mcp-server/node_modules
                                   and src/apps/core-api/node_modules
so `npm ci` installs it        -> and the SAME step in npm-release.yml ran tonight on main
                                   with conclusion=success and 0 TS2307 errors (run 31991739387)

My local tree has a symlinked node_modules without those nested installs. On the runner the
root build passes, which is the only place this step will run.

And after a root build, the CLI's own type-check is clean:

cli `npm run build` -> exit 0, TS2307 errors: 0

NOT FIXED

The reason all three of these survived: build-and-test never runs on a pull request. Fixing
that is a larger change than a release-night fix and is not attempted here — but it is the
actual defect, and each of these three is a symptom of it.

🤖 Generated with Claude Code

THIRD FAILURE ON THE SAME JOB, THIRD DIFFERENT CAUSE.

`build-and-test` in sdk-cli-release has now failed on every tag it ever ran on:

    v1 / v1.3.0   Generate SBOM (CycloneDX)          — npm ls exit code       (fixed, #568)
    v1.3.3        Architecture Boundary Lint          — pre-existing debt      (fixed, #600)
    v1.3.4        Type Check and Build                — this

Each fix uncovered the next, because the job only ever executes on a tag: it is gated on
`release_created`, which `release-gate` sets only for `refs/tags/v*`. On every branch push it
is SKIPPED and the workflow reports success. Five green runs on `main` tonight told us nothing
about it.

WHAT FAILED

`Type Check and Build` runs `npm run build` inside `src/sdk/cli`, which compiles the CLI and
nothing else. In a workspace, `@beyondnet/*` resolve to the local packages by symlink, but a
SUBPATH import needs that package's `dist/` to exist, and it does not after a bare `npm ci`.
100+ errors, all the same shape:

    src/app.module.ts(12,29): error TS2307: Cannot find module
      '@beyondnet/evolith-core-domain/application/sync/sync.service'
    src/commands/agents/agents.command.ts(5,40): error TS2307: Cannot find module
      '@beyondnet/evolith-infra-providers'

THE FIX ALREADY EXISTS, ONE WORKFLOW OVER

`npm-release.yml` has a step called "Build every workspace" that runs the root `npm run build`
(`tsc -b tsconfig.json` over all projects). sdk-cli-release never had it. Added, immediately
after `npm ci` and before the lint and type-check that depend on it.

VERIFIED, INCLUDING THE PART THAT LOOKED LIKE A PROBLEM

Locally, the root build exits 2 — but for a reason that does not exist on the runner, and the
distinction was measured rather than assumed:

    root `npm run build` here      -> exit 2, 4 × TS2307, all '@nestjs/cache-manager'
    is it declared?                -> yes, in src/packages/mcp-server/package.json
    is it in the lockfile?         -> yes, @3.1.3 under src/packages/mcp-server/node_modules
                                       and src/apps/core-api/node_modules
    so `npm ci` installs it        -> and the SAME step in npm-release.yml ran tonight on main
                                       with conclusion=success and 0 TS2307 errors (run 31991739387)

My local tree has a symlinked node_modules without those nested installs. On the runner the
root build passes, which is the only place this step will run.

And after a root build, the CLI's own type-check is clean:

    cli `npm run build` -> exit 0, TS2307 errors: 0

NOT FIXED

The reason all three of these survived: `build-and-test` never runs on a pull request. Fixing
that is a larger change than a release-night fix and is not attempted here — but it is the
actual defect, and each of these three is a symptom of it.

Signed-off-by: aarroyo <beyondnet.peru@gmail.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 17, 2026 03:44
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 0
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 532
Total ES files 502
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

@beyondnetPeru
beyondnetPeru merged commit 6c76308 into develop Aug 17, 2026
32 checks passed
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