Repository navigation
ci: publish signed macOS releases from Actions - #100
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 SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex review: needs real behavior proof before merge. What this changesThis PR moves macOS release signing, notarization, verification, publication, and Homebrew updates into GitHub Actions. Example: Publish a future v0.3.9 release.
Review scores
ProductKind: Feature · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Blocked before merge - 6 items remain Keep open: this maintainer-authored migration adds distinct functionality, but two publication trust defects block merging. Priority: P2 Before merge
Findings
Tests
Agent review detailsHow this fits togetherThe release pipeline consumes repository source and signing credentials, produces a notarized universal macOS archive, and publishes GitHub assets and a Homebrew formula update. flowchart LR
A[Version tag or dry run] --> B[Validate source and CI]
B --> C[Build universal binary]
C --> D[Sign and notarize]
D --> E[Verify on native runners]
E --> F[Publish GitHub release]
F --> G[Update Homebrew formula]
Technical reviewBest possible solution: Enforce release authorization outside mutable workflow code and bind the verified digest before the tap writes its formula. Do we have a high-confidence way to reproduce the issue? The workflow and remote updater establish both failing paths by inspection; no target code or release mutation was executed. Is this the best way to solve the issue? A single Actions publisher is consistent with the recorded owner direction, but its authorization checks must protect the final credential and distribution effects. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning medium; reviewed against a671703439ab. Provenance checked
TestingProof path: unit tests only. SecurityNeeds attention: Signing credential access and the Homebrew write need authorization enforced before their final effects. EvidenceSecurity concerns:
What I checked:
Likely related people:
Review metrics
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 16, 2026, 6:44 PM ET / 22:44 UTC. |
Moves official macOS publication from local scripts into GitHub Actions. Signed annotated version-tag pushes validate metadata and exact-source push CI, build the universal CLI, sign and notarize with the Foundation identity, verify on fresh arm64 and Intel runners, then publish the existing three-asset GitHub Release inventory and hand the exact ZIP URL to steipete/homebrew-tap. The handoff waits for its unique run and verifies the formula URL and SHA-256.
Dispatch defaults to a full signing/notarization dry run without tag, release, or tap writes. The shared Swift archetype at
@v1requires an imsg companion dylib and Linux archive and has no dry-run input; this macOS-only CLI therefore uses a self-contained workflow. The stable identifier, archive/checksum names, and Homebrew route stay intact. Local publishers and obsolete tests for those publishers are removed; read-only historical verification remains. No npm or Sparkle channel is introduced. Real Reminders/TCC and natural-download Gatekeeper checks remain documented product tests; CI smoke does not claim to exercise them.Validation: actionlint, shellcheck, 12 source-gate regression cases, the retained release signature/artifact harness, docs build, and independent review through P2 with no actionable findings. Signing/notarization and tap credentials are provisioned as repository secrets. The merged-main dry run will prove the real hosted build/sign/verify path. No release or version tag is created by this migration.