diff --git a/CLAUDE.md b/CLAUDE.md index 81552933fd06..3c7b5e00c028 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -25,19 +25,21 @@ Other variants: `reloadp.sh` (Release), `reloads.sh` (Release as isolated "cmux Every healthy slot in the canonical Mac fleet is general-purpose. Builds, iOS archives, tests, profiling, simulator and UI verification, and any other resource-intensive workload may use any available slot. Do not wait for an AWS-only builder or infer capacity from a workload label. Use the shared lease state and slot-isolated paths supplied by the fleet tooling. -Compile-only check, no launch: +Compile-only check, no launch. Point it at the derived data `reload.sh` uses for the tag, so the check reuses that build instead of starting a second cold one: ```bash -xcodebuild -project cmux.xcodeproj -scheme cmux -configuration Debug -destination 'platform=macOS' -derivedDataPath /tmp/cmux- build +xcodebuild -project cmux.xcodeproj -scheme cmux -configuration Debug -destination 'platform=macOS' -derivedDataPath "$HOME/Library/Developer/Xcode/DerivedData/cmux-" build ``` +`` here is the slug `reload.sh` makes from your tag: lowercased, with every run of other characters turned into `-` (`Fix/ABC-1` becomes `fix-abc-1`). A raw tag that differs from its slug points at a different, empty directory. + Rebuild GhosttyKit.xcframework with Release optimizations: ```bash cd ghostty && zig build -Demit-xcframework=true -Dxcframework-target=universal -Doptimize=ReleaseFast ``` -Clean up older tags you started this session (quit the app, remove its `/tmp` socket and derived data) before launching a new one. +Clean up older tags you started this session (quit the app, remove its `/tmp` socket) before launching a new one. Remove a tag's derived data only when no active task needs it; the next build of that tag is a full cold build without it. ### Intel Macs, Xcode 16.2, Swift 6.0 diff --git a/skills/cmux-testing/references/local-vs-ci-validation.md b/skills/cmux-testing/references/local-vs-ci-validation.md index b8d9f4031596..532e4e78b2d7 100644 --- a/skills/cmux-testing/references/local-vs-ci-validation.md +++ b/skills/cmux-testing/references/local-vs-ci-validation.md @@ -10,9 +10,11 @@ Proves the app target built. Proves nothing about `cmuxTests`, `cmuxUITests`, pa ```bash xcodebuild -project cmux.xcodeproj -scheme cmux-unit -configuration Debug \ - -destination 'platform=macOS' -derivedDataPath /tmp/cmux- build + -destination 'platform=macOS' -derivedDataPath /tmp/cmux- build-for-testing ``` +Use `build-for-testing`, not `build`: the scheme builds `cmuxTests` only for testing, so `build` compiles the app, skips every test file, and still reports success. Keep this in its own derived data path rather than the tag's (`~/Library/Developer/Xcode/DerivedData/cmux-`): a test build that fails leaves an unsigned `cmuxTests.xctest` inside the app bundle, and the next `reload.sh` for that tag then fails at CodeSign until the bundle is removed. + For `cmuxApp` or `AppDelegate` churn, add the repo's GlobalISel workaround flag if current project instructions require it. ## E2E and UI tests