Repository navigation
ci: move macOS release proof to Xcode 27 - #67
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: be371d3a4a
ℹ️ 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".
| - os: xcode-27 | ||
| check_name: Test (macOS 27) |
There was a problem hiding this comment.
Keep untrusted PRs off the release signing runner
For pull requests, this matrix entry checks out and executes contributor-controlled Go and Node tests on xcode-27, which .github/actionlint.yaml identifies as a self-hosted runner label. The release workflow also uses that runner pool for the signing job and exposes the Developer ID and App Store Connect credentials there (release.yml:26,65-73), so on any reusable worker a malicious PR can establish persistence and exfiltrate those secrets during a later release. Use a separate ephemeral/no-secret macOS runner for PR validation, or restrict this entry to trusted branches.
Useful? React with 👍 / 👎.
|
Codex review: needs real behavior proof before merge. What this changesThis PR moves macOS CI and release verification to Xcode 27, preserves macOS 13 compatibility, selects Go 1.27.2, and isolates mocked scanner tests from Docker. Example: Verify the darwin-amd64 release binary on Apple Silicon.
Review scores
ProductKind: Maintenance · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Blocked before merge - 3 items remain Keep open: this maintainer-directed release update is not implemented on main, and the shared macOS runner trust boundary remains unresolved. Priority: P2 Before merge
Findings
Tests
Agent review detailsHow this fits togetherGitHub Actions builds the Go CLI and npm package, signs macOS release binaries, verifies their payloads, and gates publication. flowchart TD
A[Pull request source] --> C[MacOS CI worker]
B[Validated release source] --> D[MacOS signing worker]
E[Signing credentials] --> D
D --> F[Verified release payloads]
F --> G[Package publication]
Technical reviewBest possible solution: Retain the compatibility and packaging changes while ensuring PR workers cannot influence subsequent signing or publication. Do we have a high-confidence way to reproduce the issue? Source shows Docker availability is checked before injected scanner execution, explaining why the three original fixtures fail without Docker; no exploit or cross-job persistence was reproduced. Is this the best way to solve the issue? The existing build producers are the right owners for the deployment target, and explicit sandbox-off is appropriate for mocked fixtures; runner isolation must be established independently. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against dddc76218377. Merge-risk optionsMaintainer options:
Provenance checked
TestingProof path: unit tests only. SecurityNeeds attention: The runner migration creates a material isolation question between untrusted PR code and credential-bearing release signing. EvidenceSecurity concerns:
What I checked:
Likely related people:
LabelsLabel changes:
Label justifications:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
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 18, 2026, 11:39 PM ET / October 19, 2026, 03:39 UTC. |
|
The runner-isolation finding has a false premise:
Both independent local reviews through P3 were clean. All exact-head checks are now green, including Go CodeQL. The source-floor, runtime, and release proof described in the PR remains unchanged. |
Move release build and both macOS verifiers to Apple Silicon
xcode-27. Assert/install Rosetta before executing x86_64 binaries. Add macOS PR/main package checks so the new runner and both binaries are proven before landing; retain the existing LinuxTestcheck and Docker coverage.Preserve the shipped macOS 13.0 minimum: both current v0.2.0 artifacts were checksum-verified and inspected with vtool. Pin
MACOSX_DEPLOYMENT_TARGETand Go's-macos=13.0linker setting in release/npm builds, and reject a different minos in CI and release verification.govulncheck ./...under the existing Go 1.27.1 build toolchain found eight reachable standard-library vulnerabilities fixed in 1.27.2. Selecttoolchain go1.27.2while keeping thego 1.27.1source minimum. No module dependency, package version, tag, publication, or deployment change.The macOS run exposed three mocked-scanner fixtures that accidentally required an installed Docker CLI. Make those fixtures explicitly choose sandbox-off and run with an empty executable PATH, preserving production sandbox enforcement. All three failures were reproduced before the fix and pass afterward.
Validation: 20 focused package/wrapper tests, the three Docker-independent regressions, actionlint, shellcheck, and two independent reviews through P3 passed. The full Go test/vet, zero-finding vulnerability scan, six-platform archive build, and npm package smoke gate passed on one isolated lease. All four macOS binaries from the release/npm builds retain minos 13.0 and run version/help natively or under Rosetta. Final-head Actions, merged-main CI, and the current-version release dry run remain required for closeout.
Runner isolation:
xcode-27is a GitHub-hosted image, covered by GitHub’s ephemeral, clean VM contract. The exact-head job reports runner groupGitHub Actions(ID 0). The actionlint label allowlist does not provision self-hosted workers.