Skip to content

ci: inline the fleet-canonical CI workflow + exact-floor override gate#293

Open
John-David Dalton (jdalton) wants to merge 10 commits into
mainfrom
ci/inline-fleet-canonical
Open

ci: inline the fleet-canonical CI workflow + exact-floor override gate#293
John-David Dalton (jdalton) wants to merge 10 commits into
mainfrom
ci/inline-fleet-canonical

Conversation

@jdalton

Copy link
Copy Markdown
Collaborator

What

Two changes that bring socket-registry's CI to fleet convention and close a coverage hole:

1. Inline the fleet-canonical CI workflow

Replaces the Layer-3 reusable ci.yml + _local-not-for-reuse-ci.yml wrapper pair with the fleet-canonical inlined workflow — verbatim wheelhouse template block, repo-owned jobs below the end marker, matching every other fleet member (socket-lib's ci.yml is byte-identical to the template).

  • Old @sha pins to the removed reusable keep resolving (SHA-pinned refs are immutable).
  • Required-checks note: job names change from Run CI Pipeline / … to 🔎 Check, 🧪 Test, 🧪 Test NPM Packages — branch protection needs the new names.

2. Floor-node gate for the npm overrides (floor-node-smoke)

All 131 overrides declare engines.node: >=24, but CI only ever ran a newer current-line Node — nothing proved the floor. The new gate side-installs the exact floor release (Node 24.0.0, pinned version + sha256 via lib-stable httpDownload's verified/atomic download — the binary never touches PATH) and dynamic-imports every override's node entry under it, including the JSON-module entries (date, es-iterator-helpers) via with { type: 'json' }.

Verified locally: 131 imported, 0 skipped, 0 failed on darwin-arm64; pnpm run lint --all clean; fleet pre-push validation passed.

Fleet-wide finding (fixed upstream)

While inlining: the canonical template's test job ran bare pnpm test, which resolves to the modified scope — on a clean CI checkout that's zero files, so every member's Test matrix job passes while running nothing (socket-lib main run 29165499582 logs No modified source files … skipping tests). The wheelhouse template now passes --all explicitly (wheelhouse commit 9d2ff9a8d); this PR's block already carries that fix. Other members pick it up on the next cascade.

Follow-ups (not in this PR)

  • weekly-update.yml, agentics-maintenance.yml, _local-not-for-reuse-{weekly-update,provenance}.yml still use workflow_call — same inlining treatment pending (gh-aw .lock.yml artifacts stay as generated).
  • Legacy Layer-3/4 docs, hooks (shared-workflow-cascade, no-hand-edit-registry-pin-guard), and the wheelhouse propagationSha pin manifest describe the retired reusable-workflow architecture and need a cleanup pass.

Replace the Layer-3 reusable ci.yml + _local-not-for-reuse-ci.yml
wrapper pair with the fleet-canonical inlined workflow (verbatim
wheelhouse template block, including the 'pnpm run test --all' fix —
bare 'pnpm test' resolves to the modified scope and skips everything
on a clean CI checkout). Repo-owned jobs live below the end marker,
matching every other fleet member. Old @sha pins to the removed
reusable keep resolving (SHA-pinned refs are immutable).

Required-checks note: job names change from 'Run CI Pipeline / ...'
to '🔎 Check', '🧪 Test', '🧪 Test NPM Packages'.
All 131 overrides declare engines.node >=24, but CI only ever ran a
newer current-line Node — nothing proved the floor. The new
floor-node-smoke gate side-installs Node 24.0.0 (pinned version +
sha256 verified against nodejs.org's SHASUMS256 before extraction;
the binary never touches PATH) and dynamic-imports every override's
node entry under it, including the JSON-module entries (date,
es-iterator-helpers) via 'with { type: json }'. Verified locally:
131 imported, 0 failed.
…tion)

Two pre-existing high findings — inputs.operation / inputs.run_url
expanded directly inside run: — fail the setup-and-install zizmor audit
in every CI job, on main too (main CI is currently red on them). Route
both through step env vars.
ci.yml is now the fleet-canonical inlined workflow, so:
- README badges point at ci.yml (the _local wrapper is gone)
- shared-workflow-cascade hook watches the real Layer-3 reusables
  (weekly-update / publish-npm / get-green) instead of ci.yml and the
  never-existent provenance.yml — an inlined-ci edit no longer demands a
  cross-repo cascade
- updating-workflows reference, repo architecture doc, pin-guard header,
  and the fleet cleaning-ci/agent-ci skills describe the current split:
  inlined fleet block for CI, @sha pins only for the surviving reusables
  (also fixes the stale provenance.yml name — the file is publish-npm.yml)

Audit verdict on the rest: weekly-update.yml + publish-npm.yml +
get-green.yml stay workflow_call BY DESIGN (the wheelhouse template
itself delegates to them); .lock.yml files are gh-aw-owned;
agentics-maintenance.yml's workflow_call trigger has no callers but is
dormant and harmless — left as-is.
…repin weekly-update wrapper

action-pins-are-current tests reachability with merge-base
--is-ancestor, but CI's fetch-depth-25 checkout truncates history — any
pin older than ~25 commits reported UNREACHABLE as phantom rot (the June
propagation-SHA pins aged out as main advanced). The check now deepens
once (--unshallow) on a shallow repo and retests before failing. Also
lands the one genuinely stale pin's --fix repin.
Pre-existing on main since the sync-overrides commit landed (Check
never ran far enough to report them until the agentics and shallow-pin
layers were fixed): getPackageVersionSpec called with 1 arg while its
options param was required; fetchPackageManifest returns unknown, so
manifest?.version failed; unused __dirname/_ecosystem bindings; and the
null-proto spread idiom trips excess-property freshness checks when
destructured directly — split through an intermediate so the idiom
keeps its Object-pollution guard and satisfies tsc.
Merged origin/main (its a90a436 edited get-green.md and
weekly-update.md without running gh aw compile, so the committed
.lock.yml body_hash no longer matched — main's Check is red on it, and
PR merge refs inherit it). Recompiled both locks with gh-aw v0.79.6 and
committed the refreshed actions-lock entries. Type, lint, pin, and
gh-aw drift gates all pass on the merged tree.
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​es-iterator-helpers@​1.2.1 ⏵ 1.3.399 +110010087100

View full report

@socket-security-staging

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​es-iterator-helpers@​1.2.1 ⏵ 1.3.399 +110010087100

View full report

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