Add atomic installer and release cohorts - #37
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a265eaf198
ℹ️ 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".
a265eaf to
b120a09
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b120a0942a
ℹ️ 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".
Keep simulator cross-build state out of the host SwiftPM scratch so source installs and release builds cannot redirect the host debug or release convenience link to simulator products.
Use the Tooling-owned SwiftPM scratch convention so CLI and source installer cross-builds share one path invariant.
b120a09 to
836186b
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 836186b0e2
ℹ️ 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".
| try fileManager.copyItem(at: layout.publicCommandURL, to: backupURL) | ||
| shouldRemoveBackup = true |
There was a problem hiding this comment.
Make recovered backup publication restartable
If a migration is interrupted after rollback moves the original backup back to the public command, recovery enters this .absent branch; if recovery is then terminated after copyItem but before the updated identity is persisted, the copied backup survives while the intent still contains the old inode identity. Every subsequent run takes the .regularFile branch and rejects that otherwise valid backup, permanently blocking installation until manual cleanup. Publish the backup and intent in a restartable sequence, or recognize and adopt a recreated backup whose contents match the owned public command.
Useful? React with 👍 / 👎.
Purpose
Install the public command and both helpers as one validated, immutable cohort shared by source and release installs.
Changes
currentswitching, and recovery for interrupted legacy direct-layout migrations.Testing
./scripts/test-release-scripts.sh.swift test(310 tests in 32 suites).bash -n/sh -nfor release scripts and templates.shellcheckfor release scripts andactionlint .github/workflows/release.yml.git diff --check.