Skip to content

feat(release): make crates.io publish complete + fail-safe + manual (#220) - #226

Merged
avrabe merged 1 commit into
mainfrom
feat/crates-io-publish-ready
Aug 7, 2026
Merged

feat(release): make crates.io publish complete + fail-safe + manual (#220)#226
avrabe merged 1 commit into
mainfrom
feat/crates-io-publish-ready

Conversation

@avrabe

@avrabe avrabe commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Readies the crates.io publish path now that Trusted Publishing is mandatory-on for the wsc crates (REQ-22 / #220).

Changes

  • publish.rs — add wsc-verify-core to the publish set. It's a leaf that wsc depends on and was missing from the list, so a CI publish of wsc would fail on an unresolved dependency. Order: wsc-verify-core → wsc-attestation → wsc → wsc-cli. wsc-component/wsc-crypto stay unpublished (not deps of any published crate).
  • publish.rs — fail-safe on already-published versions. The old check used a bare curl (no User-Agent) → crates.io 403 → it silently missed and then hard-failed on re-publish. Now it queries the version endpoint with a User-Agent, and as belt-and-suspenders treats an already exists upload error as a skip. Validated against live crates.io: wsc-verify-core 0.10.0 (already published) → skips; the other three → publish. Re-runs are idempotent.
  • workflow — pure OIDC Trusted Publishing (drop the ignored crates-io-token input) + workflow_dispatch for manual/backfill runs. Still gated by CRATES_PUBLISH_ENABLED.

Context

wsc-verify-core 0.10.0 is already on the registry (I claimed the new name via token — a fresh crate can't bootstrap Trusted Publishing). The other three are Trusted-Publishing-only and must go through this CI/OIDC flow.

To publish v0.10.0 after merge

  1. gh variable set CRATES_PUBLISH_ENABLED --body true --repo pulseengine/sigil
  2. Run the workflow (dispatch from main, or the Actions button) — publishes wsc-attestation/wsc/wsc-cli 0.10.0 via OIDC, skips the already-up wsc-verify-core.

🤖 Generated with Claude Code

…220)

Ready the publish path now that Trusted Publishing is mandatory-on for the wsc
crates. Three fixes:

- publish.rs: add wsc-verify-core to the publish set (leaf that wsc depends on —
  it was missing, so publishing wsc would fail on an unresolved dep). Order is
  verify-core, attestation, wsc, cli. component/crypto stay unpublished (not deps
  of any published crate).
- publish.rs: FAIL-SAFE on already-published versions. The old skip-check used a
  bare curl (no User-Agent) → crates.io 403 → it silently missed and then hard-
  failed on re-publish. Now query the version endpoint with a User-Agent, and as
  belt-and-suspenders treat an "already exists" upload error as a skip. Validated
  against live crates.io: wsc-verify-core 0.10.0 (already up) skips; the other
  three publish. Makes re-runs idempotent.
- workflow: pure OIDC Trusted Publishing (drop the ignored crates-io-token input),
  add workflow_dispatch for manual/backfill runs. Still gated by
  CRATES_PUBLISH_ENABLED.

To publish v0.10.0: set vars.CRATES_PUBLISH_ENABLED=true, then run the workflow
(dispatch from main, or the Actions button). Closes the pipeline half of #220
(REQ-22); registry backfill happens on the first armed run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aR3Md1h46K9wAUWMQiESH
@avrabe
avrabe merged commit 5152e9e into main Aug 7, 2026
1 check passed
@avrabe
avrabe deleted the feat/crates-io-publish-ready branch August 7, 2026 16:30
avrabe added a commit that referenced this pull request Aug 7, 2026
)

crates.io backfilled to 0.10.0 (wsc, wsc-verify-core, wsc-attestation, wsc-cli)
via the armed OIDC Trusted Publishing pipeline (#226 + workflow run 31197994842).
Registry current for the first time since 0.9.0. Closes #220.


Claude-Session: https://claude.ai/code/session_012aR3Md1h46K9wAUWMQiESH

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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