Skip to content

chore(ci): remove the release audit gate - #487

Merged
ScriptedAlchemy merged 3 commits into
mainfrom
fix/release-audit-timeout
Sep 4, 2026
Merged

chore(ci): remove the release audit gate#487
ScriptedAlchemy merged 3 commits into
mainfrom
fix/release-audit-timeout

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Why

The Release gates (Node 22.19) job has been failing on main and on every PR, and workers have been merging around it by documenting the failure in PR bodies. Maintainer decision: remove the release audit gate rather than bound or soft-fail it.

Evidence

Release-gates job on main today (workflow ci.yml), read from the job logs, not the run conclusions:

Run Head Release gates Failure
33771541855 d10b60f (first red) npm audit signaturesEATTESTATIONVERIFY @emnapi/core@1.11.3 failed to verify attestation: Unexpected end of JSON input
33806097079 886b192 npm audit signaturesEATTESTATIONVERIFY
33810838301 2841419 release-audit.test.ts timed out at 120 s, no assertions
33815925969 9d4fbd8 timed out at 120 s, no assertions
33817206851 5775351 timed out at 120 s, no assertions
33817708818 755aa72 pnpm audit:release step itself: npm audit ran 7.5 min then 503 Service Unavailable - POST https://registry.npmjs.org/-/npm/v1/security/audits/quick
33818264058 ad3bd24 timed out at 120 s, no assertions

The last green release-gates job before the streak was 33769764920 (23ee0f5). Nothing in the tree changed between green and red in the audit path (scripts/audit-packed-release.mjs last touched in #432, hours earlier, with green runs after it); the flip tracks npm registry availability, not a commit.

Root cause. scripts/audit-packed-release.mjs ran npm audit --omit=dev --json and npm audit signatures --json against a freshly installed consumer tree. Both call registry security endpoints (/-/npm/v1/security/advisories/bulk, /audits/quick, attestation bundles). When the endpoint returns 503, npm walks its own retry ladder for minutes, so the test hit its 120 s budget before reaching any assertion; when the attestation bundle comes back truncated, audit signatures fails outright on an unchanged lockfile.

Local reproduction (npm 12.0.2, main, each audit step timed in isolation):

npm pack:                        2.5s ok
npm install (live metadata):     6.4s ok
npm ls:                          0.3s ok
npm audit:                     300.4s FAILED  503 Service Unavailable - POST .../security/advisories/bulk
npm audit signatures:            2.6s ok
npm sbom:                        0.4s ok  (also 0.4s with --offline / unreachable registry)

What was deleted

  • scripts/audit-packed-release.mjs — the audit (license-file audit, consumer install, npm ls, npm audit, npm audit signatures, npm sbom + CycloneDX validation).
  • scripts/npm-cli.mjs — only imported by the audit script.
  • packages/agent-bundle/tests/release-audit.test.ts — the suite that drove the script (SBOM test plus the repository-metadata, legal-companion, LICENSE/NOTICE, and production-entrypoint checks that lived in the same file). Removed from packedTestFiles in rstest.integration-tests.ts.
  • audit:release in package.json is renamed lint:release and no longer runs the script; it is now pnpm lint:package && attw --pack --profile esm-only packages/agent-bundle (publint + attw, both offline). check:release / check:release:ci, the packaged README, and the en/zh preview-packages pages follow the rename.
  • docs/superpowers plan/spec pages: the audit steps and file references are removed so no live doc describes the gate.
  • docs/local-ci.md: the npm audit signatures → EATTESTATIONVERIFY retry-policy bullet.
  • packages/agent-bundle/README.md: the sentence saying pnpm audit:release fails on missing LICENSE/NOTICE.
  • tests/support/shared-pack.ts: doc comment no longer cites the audit script.

Nothing else imports the deleted files (rg for audit-packed-release|npm-cli|release-audit.test is empty outside dated plan documents under docs/superpowers/).

Resulting Release gates (Node 22.19) job

The job stays; pnpm check:release:ci is now pnpm pack:dry-run && pnpm lint:release && pnpm test:packed.

  • pack:dry-run — build + npm pack --dry-run --json
  • lint:release — publint on the three publishable packages + attw on the agent-bundle tarball
  • test:packed — the packed pool (dev-workbench-packaging, packed-consumer, packed-consumer-typescript, packed-host-install-proof, packed-native-smoke, packed-stdio-projection, public-api-packed, rsc-runtime-optional-packaging, scaffold-packed.e2e, packed-release.e2e)

Final sweep: git grep -i -E 'npm audit|release-audit|audit-packed-release|advisor(y|ies)|sbom' on the branch returns only unrelated matches (the release-audit.js workflow fixture name, example SBOM artifacts, 'advisory' in prose) plus the pending changesets for #393 and #432, which are history bound for CHANGELOG.

Verification

  • pnpm audit:release 10.5 s locally, pnpm typecheck, pnpm lint clean.
  • pnpm check:release:ci (the whole job) locally on this branch: exit 0 in 4m42s — packed pool 25 tests, 24 passed, 1 skipped (native smoke without the host CLIs), 0 failed. On main the same command sat for 5+ minutes inside npm audit before failing on the 503.

Changeset

.changeset/remove-release-audit-gate.md (agent-bundle: patch). The deleted scripts lived at the repo root, but packages/agent-bundle/README.md ships in the package's files and loses the sentence about pnpm audit:release failing on missing LICENSE/NOTICE, so the change is observable to consumers and gets a changeset rather than skip-changeset.

Review status

  • Codex review on b54310c raised one P1 thread: the README edit ships in the package and needs a changeset instead of skip-changeset. Addressed in a851b3e by adding the patch changeset above and removing the skip-changeset label. No PR comments are posted from this side per maintainer instruction; thread answers live in this section.
  • Last reviewed head: b54310c. Unreviewed heads: the changeset commit and the lint:release rename/doc sweep, rebased onto main. Merged with --admin on maintainer instruction because every other PR on the repo is blocked on the Release gates job this PR removes.

@ScriptedAlchemy ScriptedAlchemy added the skip-changeset PR changes a publishable package but ships no observable change; changeset not required label Sep 4, 2026
@changeset-bot

changeset-bot Bot commented Sep 4, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: aa78342

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
agent-bundle Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 4, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-04T00:11:19.860481Z b54310c PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b54310c688

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

pkg.pr.new previews are the interim channel, and the first npm release will use npm
package provenance (`publishConfig.provenance` is already set). `pnpm audit:release` fails if any
publishable tarball lacks `LICENSE`, `NOTICE`, or the `"license": "Apache-2.0"` manifest field.
package provenance (`publishConfig.provenance` is already set).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add a changeset for the shipped README change

This edit changes packages/agent-bundle/README.md, which is included in the package's published files, but the commit adds no .changeset/*.md. The stated skip-changeset rationale only accounts for the deleted root scripts; removing a release guarantee from packaged documentation is observable and therefore does not qualify as a genuinely no-op change. Add exactly one patch changeset for agent-bundle rather than relying on the escape hatch.

AGENTS.md reference: AGENTS.md:L97-L107

Useful? React with 👍 / 👎.

@pkg-pr-new

pkg-pr-new Bot commented Sep 4, 2026

Copy link
Copy Markdown
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle@487
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle/create-agent-bundle@487
npm i https://pkg.pr.new/ScriptedAlchemy/agent-bundle/@agent-bundle/runtime@487

commit: a851b3e

@ScriptedAlchemy ScriptedAlchemy removed the skip-changeset PR changes a publishable package but ships no observable change; changeset not required label Sep 4, 2026
Delete scripts/audit-packed-release.mjs, its npm-cli helper, and
release-audit.test.ts; drop the script from audit:release and the packed
pool; remove the EATTESTATIONVERIFY retry policy from docs/local-ci.md.
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