Repository navigation
ci: verify signed multi-channel releases before publication - #66
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs real behavior proof before merge. What this changesThis PR consolidates release publication and adds signed-tag checks, macOS signing and notarization, shared npm payloads, and native verification. Example: Publish an authorized v0.2.1 release.
Review scores
ProductKind: Feature · Worth it: Yes Merge readiness⛔ Blocked before merge - 7 items remain Keep this PR open: the release hardening is absent from main, but signing credentials and publication still have actionable authorization gaps. Priority: P2 Before merge
Findings
Provenance
Tests
Agent review detailsHow this fits togetherThe release automation takes a source reference and credentials, builds CLI packages, and publishes them to npm, GitHub Releases, and the Homebrew tap. flowchart TD
A[Source reference] --> B[Release authorization]
B --> C[Build and sign binaries]
C --> D[Package and verify payloads]
D --> E[Publish npm package]
E --> F[Publish GitHub assets]
F --> G[Update Homebrew tap]
Technical reviewBest possible solution: Authorize releases from trusted workflow code and carry the verified tag identity and payload hashes through every publication channel. Do we have a high-confidence way to reproduce the issue? Source inspection establishes the credential and retry paths; no target code was executed, and no live exploit or release was attempted. Is this the best way to solve the issue? Building once and comparing signed payloads is a useful approach, but authorization must precede untrusted execution and remain valid at each final publication effect. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 128e69644488. Provenance checked
TestingProof path: unit tests only. SecurityNeeds attention: The signing and publication chain does not consistently enforce release authority before credential use and final effects. EvidenceSecurity concerns:
What I checked:
Likely related people:
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed October 11, 2026, 11:17 PM ET / October 12, 2026, 03:17 UTC. |
Build and verify each release channel from one immutable source. Signed tags require protected-main ancestry, green push CI, and dated changelog notes. macOS binaries are signed and notarized, then those same bytes are packaged in npm and independently verified on arm64 and Intel before publication. The obsolete separate npm promotion workflow is removed.
The release workflow defaults to a no-publish dispatch rehearsal. npm uses OIDC and retains its existing trusted-publisher binding; GitHub assets include checksums and exact notes, with Homebrew chained afterward. Existing versions are refused, and bounded metadata polling accommodates publish-time scans without a second publish attempt.
Validation: package tests and six-platform archive-to-npm smoke passed on a clean Linux runner; actionlint and independent Codex review passed. No release or version tag was created.