Skip to content

Make verified release publication operational - #201

Merged
Pepps233 merged 2 commits into
chore/reproduce-version-updatefrom
feat/verified-release-publication
Sep 13, 2026
Merged

Pepps233 merged 2 commits into
chore/reproduce-version-updatefrom
feat/verified-release-publication

Conversation

@Pepps233

@Pepps233 Pepps233 commented Sep 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Release announcement targeted the wrong R2 account and lacked configured credentials.

Use dedicated production and staging environments, reject missing credentials immediately, and make retries preserve the verified immutable release record.

Reasoning

Release CI remains the sole production metadata writer after every public package and tarball passes npm verification.

Separate bucket-scoped credentials avoid giving staging access to production or redirecting the existing model publisher.

The initial command-level regression reproduced missing-credential handling, inconsistent recovery records, and acceptance of conflicting source commits.

Changes

  • Point release publication at the verified Cloudflare account through diffex-release-upload; add a manual-only staging verification workflow using diffex-release-staging.
  • Preserve conditional pointer updates, read the body and ETag together, reject conflicting immutable records, and reuse original bytes during recovery.
  • Bound requests and retries, redact storage diagnostics, and cover the actual publisher command with controlled fixtures.
  • Document installed GitHub environment secrets, verified bucket isolation, and staging evidence.

GitHub rejected required reviewers on the current plan.
With explicit owner approval, production permits main or v* tags and staging permits only main, without a required-reviewer gate.
The new manual workflow can run on GitHub after it reaches main; the staging evidence here comes from the real publisher running locally against R2.
No real release or production object was written.

Testing

  • node --test scripts/publish-release-announcement.test.mjs: 14 passed.
  • npm run check: passed.
  • ./test.sh: passed.
  • actionlint 1.7.12 on both changed workflows: passed.
  • node scripts/verify-release-publication.mjs --staging: missing packages, unavailable tarballs, first and repeated publication, conditional advancement, older announcements, and interrupted recovery passed using controlled npm responses and real R2.
  • All staging fixture records and the lock were confirmed absent after cleanup; both release namespaces remained empty.
  • Both new keys accessed their own bucket and were denied the opposite release bucket and an unrelated bucket; supplied values were absent from repository changes.

Reject incomplete credentials and inconsistent retries before they can advertise an invalid release.

Use isolated R2 environments and prove conditional publication against staging without running a release.
@Pepps233 Pepps233 added the enhancement New feature or request label Sep 10, 2026
@Pepps233 Pepps233 self-assigned this Sep 10, 2026
@Pepps233
Pepps233 added this pull request to stack #200 September 10, 2026 18:17
@Pepps233
Pepps233 merged commit 6a85d4b into main Sep 13, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant