Add Node release matrix to CI #41

Merged
pdurlej merged 2 commits from codex/ci-node-release-matrix into main 2026-05-19 00:07:57 +02:00
Collaborator

Canary Context Pack

Product story

Fork C owns CI Execution. The alpha release surface should be tested on the supported Node line (>=20) without making users infer whether Node 20 still works after release-smoke and packaging changes.

What changed

  • Kept the existing primary test job intact and added npm run release:smoke after the CLI smoke.
  • Added a node-compatibility job on Forgejo and GitHub that runs the test suite on Node.js 20 and 22.
  • Updated Forgejo-first and GitHub mirror consumer templates to use a Node.js 20/22 matrix.
  • Extended CI template tests to cover platform-native actions, matrix presence, release smoke, and no secret usage.

Why it changed

package.json#engines says node >=20, but CI only exercised Node 22. This closes the compatibility evidence gap before alpha publishing.

Files touched

  • .forgejo/workflows/ci.yml
  • .github/workflows/ci.yml
  • examples/ci/forgejo-actions.yml
  • examples/ci/github-actions.yml
  • examples/ci/README.md
  • tests/ci_templates.test.mjs

Relevant context

  • Fork C / CI Execution Context from the alpha release train.
  • Forgejo remains primary; GitHub remains a mirror.
  • Existing primary test job is preserved to avoid unnecessary required-check churn.

Runtime evidence

  • npm ci
  • npm test -- tests/ci_templates.test.mjs
  • npm run build
  • npm test
  • npm run release:smoke
  • npm run pack:dry-run
  • node dist/cli.js analyze --root . --format json --output /tmp/fallow-ts-report.json
  • git diff --check

Known constraints

This PR changes CI shape and may introduce additional status checks. It intentionally preserves the existing primary test job while adding compatibility evidence.

Coordination notes

I isolated this work in /Users/pd/Developer/fallow-ts-ci-fork because the main worktree currently contains uncommitted Release Identity changes from another fork. This PR does not touch version, changelog release cut, golden outputs, analyzer code, or package distribution scripts.

Explicit out-of-scope

No version bump, npm publish, analyzer changes, parser/resolver work, or release notes.

Requested decision

Approve merge if the CI matrix and release-smoke placement are appropriate for alpha readiness.

Merge blockers

Broken workflow syntax, broken local tests, accidental secret usage, or violating Forgejo-first CI policy.

## Canary Context Pack ### Product story Fork C owns CI Execution. The alpha release surface should be tested on the supported Node line (`>=20`) without making users infer whether Node 20 still works after release-smoke and packaging changes. ### What changed - Kept the existing primary `test` job intact and added `npm run release:smoke` after the CLI smoke. - Added a `node-compatibility` job on Forgejo and GitHub that runs the test suite on Node.js 20 and 22. - Updated Forgejo-first and GitHub mirror consumer templates to use a Node.js 20/22 matrix. - Extended CI template tests to cover platform-native actions, matrix presence, release smoke, and no secret usage. ### Why it changed `package.json#engines` says `node >=20`, but CI only exercised Node 22. This closes the compatibility evidence gap before alpha publishing. ### Files touched - `.forgejo/workflows/ci.yml` - `.github/workflows/ci.yml` - `examples/ci/forgejo-actions.yml` - `examples/ci/github-actions.yml` - `examples/ci/README.md` - `tests/ci_templates.test.mjs` ### Relevant context - Fork C / CI Execution Context from the alpha release train. - Forgejo remains primary; GitHub remains a mirror. - Existing primary `test` job is preserved to avoid unnecessary required-check churn. ### Runtime evidence - `npm ci` - `npm test -- tests/ci_templates.test.mjs` - `npm run build` - `npm test` - `npm run release:smoke` - `npm run pack:dry-run` - `node dist/cli.js analyze --root . --format json --output /tmp/fallow-ts-report.json` - `git diff --check` ### Known constraints This PR changes CI shape and may introduce additional status checks. It intentionally preserves the existing primary `test` job while adding compatibility evidence. ### Coordination notes I isolated this work in `/Users/pd/Developer/fallow-ts-ci-fork` because the main worktree currently contains uncommitted Release Identity changes from another fork. This PR does not touch version, changelog release cut, golden outputs, analyzer code, or package distribution scripts. ### Explicit out-of-scope No version bump, npm publish, analyzer changes, parser/resolver work, or release notes. ### Requested decision Approve merge if the CI matrix and release-smoke placement are appropriate for alpha readiness. ### Merge blockers Broken workflow syntax, broken local tests, accidental secret usage, or violating Forgejo-first CI policy.
Add Node release matrix to CI
Some checks failed
CI / Node.js 20 (push) Failing after 12s
CI / Node.js 22 (push) Failing after 12s
CI / test (pull_request) Failing after 14s
CI / Node.js 20 (pull_request) Failing after 11s
CI / Node.js 22 (pull_request) Failing after 11s
CI / test (push) Failing after 15s
1f33045d7e
Keeps the existing primary CI test job intact, adds release smoke to it, and adds Node.js 20/22 compatibility checks for Forgejo and GitHub. Consumer CI templates now use the same Node 20/22 matrix.

Verified:

- npm ci

- npm test -- tests/ci_templates.test.mjs

- npm run build

- npm test

- npm run release:smoke

- npm run pack:dry-run

- node dist/cli.js analyze --root . --format json --output /tmp/fallow-ts-report.json

- git diff --check
codex requested review from claude 2026-05-18 18:52:30 +02:00
Merge remote-tracking branch 'origin/main' into codex/ci-node-release-matrix
All checks were successful
CI / test (push) Successful in 22s
CI / Node.js 20 (push) Successful in 11s
CI / Node.js 22 (pull_request) Successful in 11s
CI / Node.js 22 (push) Successful in 12s
CI / test (pull_request) Successful in 22s
CI / Node.js 20 (pull_request) Successful in 11s
928964e6e6
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
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
pdurlej/fallow-ts!41
No description provided.