Repository navigation
Fix main compile: import CmuxWorkspaces in CodexTurnRestoreIntentPolicy - #14123
Conversation
…veness type 36c3050 added CodexTurnRestoreIntentPolicy.swift referencing RestorableAgentProcessLiveness, which lives in the CmuxWorkspaces package, without importing it. Top-level type names need a per-file import, so the app target stopped compiling on main and every PR that reaches macOS compile admission fails there. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
All contributors have signed the CLA ✍️ ✅ |
…ompile) Same one-line fix as #14123, carried here so this PR's macOS compile admission is not blocked on it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe restore intent policy source adds an import for the ChangesRestore Intent Policy
Priority: ⬆️ High Estimated code review effort: 1 (Trivial) | ~3 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The import addresses the reported compile blocker, and the target already links the module; no actionable merge risk remains. 🚥 Pre-merge checks | ✅ 25✅ Passed checks (25 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Ports #14123 so this PR's macOS compile admission can build: main at 36c3050 references RestorableAgentProcessLiveness without importing the module that declares it. No-op once main carries #14123. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE
|
I think we should just merge this now and not wait for compile |
Ports #14123 so this PR's macOS compile admission can build: main at 36c3050 references RestorableAgentProcessLiveness without importing the module that declares it. No-op once main carries #14123. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE
) * ci: stripe PR app-host shards across four macOS pools * test: require four-pool PR app-host routing * test: match routed pool labels inside matrix rows * docs: describe four-pool PR app-host lane * ci: check each app-host shard's exact pool; keep the documented PR pin on 26.3 The four-pool check matched labels as substrings, so macos-15 passed inside blacksmith-6vcpu-macos-15. Read each matrix row's pr_runner exactly. The docs example pinned Xcode 26.5, which the macos-15 pools lack and every app-host shard reads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE * ci: let each app-host pool use its own Xcode 26 Same-repository pull-request shards now span images with different Xcodes (26.3 on macos-15, 26.6 on macos-26). They pin none: each takes the newest stable macOS 26 SDK Xcode on its machine, and restore accepts any point release of the admission build's major Xcode instead of an exact xcodebuild -version match. Forks and other events keep the pin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE * docs: app-host PR shards pick their machine's Xcode 26 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE * fix: import CmuxWorkspaces in CodexTurnRestoreIntentPolicy Ports #14123 so this PR's macOS compile admission can build: main at 36c3050 references RestorableAgentProcessLiveness without importing the module that declares it. No-op once main carries #14123. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE * ci: accept per-shard hosted fork routing; verify the hosted route before checkout #14023's fork routing guard only recognised a literal macos-15 fork branch. It now also accepts matrix.hosted_runner when every hosted_runner row in the workflow is a GitHub-hosted macOS label, which is how the app-host shards split fork-repository runs over macos-15 and macos-26. The GitHub-hosted route check now runs before checkout, and the job comment no longer claims the shards share one exact Xcode pin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EduXdN9PKnGsMQztJK7WeE --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
5b646b7 ci: apply the queue janitor threshold per runner pool (manaflow-ai#14131) d49a1b1 ci: reuse the headless cmux-tui build in SDK conformance (manaflow-ai#14108) ba85a1b ci: key reload-build caches on the commit and fall back across branches (manaflow-ai#14099) 27fb3bf ci: hand focused test-macos-suite dispatches to run-e2e.sh (manaflow-ai#14075) d18c1b9 ci: let a failed compile admission mark a run doomed for the queue janitor (manaflow-ai#14129) dfdce2c ci: bind pull request product reuse to the merge it compiled (manaflow-ai#14080) afacff3 ci: sparse-checkout the Claude wrapper regression job (manaflow-ai#14088) 35a6bb1 ci: stop pinning remote-daemon macOS tests to the macOS 26 pool (manaflow-ai#14128) 1ba6d77 ci: run macOS jobs on GitHub-hosted runners alongside Blacksmith (manaflow-ai#14097) 587de87 Import CmuxWorkspaces where CodexTurnRestoreIntentPolicy names its liveness type (manaflow-ai#14123) # Conflicts: # .github/workflows/ci-guards.yml # .github/workflows/ci-macos.yml # .github/workflows/ci-queue-janitor.yml # .github/workflows/ci.yml # .github/workflows/cmux-tui-sdks.yml # .github/workflows/reload-build.yml # .github/workflows/remote-daemon.yml # .github/workflows/test-macos-suite.yml
… keystroke-echo bypass (#14031) * Add failing pacer tests for the mobile render-grid frame firehose An animating TUI ships ~27 render-grid frames/second (~100KB/s over the relay) to paired phones because the mobile emission path captures on every Ghostty tick. Field histograms show keystroke echoes queueing behind that burst traffic. This commit adds MobileTerminalFramePacer with the pre-pacer behavior (every update emits immediately) plus tests specifying the paced contract - floor ~11fps per surface, echo-bearing frames bypass, transport shed widens the period, quiet recovers it - so CI shows them red before the fix lands. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Pace mobile render-grid emission per surface with echo bypass MobileTerminalFramePacer now coalesces sustained repaints to a dynamic per-surface rate: floor 90ms (~11fps), widened multiplicatively toward a 500ms ceiling each time the transport sheds for that surface (the existing bounded-queue full-resync signal), decaying back to the floor after quiet recovery intervals. Frames whose accepted-input marker moved since the last emit bypass pacing entirely - the keystroke echo must never queue behind the animation firehose it is being protected from. Theme deliveries and cold-attach baselines also bypass and re-anchor the period. Pacing gates capture, not emission of already-diffed frames: a coalesced tick simply defers the next capture, so every emitted delta still diffs against the previous emitted frame and the render-grid revision chain stays gapless (no interaction with the stale-frame/replay machinery). Field baseline this addresses: an animating agent ships ~27 frames/second (~100KB/s over the relay, 263MB in one session) while text carries no information above ~10 changes/second, and keystroke echoes pay for that volume in queue time. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Hoist mutating pacer calls out of #expect Swift Testing's #expect macro captures its operands immutably, so calling mutating pacer methods inside it fails to compile in the app-host test target. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Normalize project.pbxproj after merging main Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Import CmuxWorkspaces in CodexTurnRestoreIntentPolicy (unbreak main compile) Same one-line fix as #14123, carried here so this PR's macOS compile admission is not blocked on it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Read matchingObservation after it is declared in the restore liveness check The Codex restore-intent early return landed on the same line as the effectiveRestorableAgent guard and reads matchingObservation, which is declared a few lines later, so main stopped compiling: "use of local variable 'matchingObservation' before its declaration". Move the check below the declaration. The intervening statements only compute values, so the early return behaves exactly as intended. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
… keystroke-echo bypass (#14031) * Add failing pacer tests for the mobile render-grid frame firehose An animating TUI ships ~27 render-grid frames/second (~100KB/s over the relay) to paired phones because the mobile emission path captures on every Ghostty tick. Field histograms show keystroke echoes queueing behind that burst traffic. This commit adds MobileTerminalFramePacer with the pre-pacer behavior (every update emits immediately) plus tests specifying the paced contract - floor ~11fps per surface, echo-bearing frames bypass, transport shed widens the period, quiet recovers it - so CI shows them red before the fix lands. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Pace mobile render-grid emission per surface with echo bypass MobileTerminalFramePacer now coalesces sustained repaints to a dynamic per-surface rate: floor 90ms (~11fps), widened multiplicatively toward a 500ms ceiling each time the transport sheds for that surface (the existing bounded-queue full-resync signal), decaying back to the floor after quiet recovery intervals. Frames whose accepted-input marker moved since the last emit bypass pacing entirely - the keystroke echo must never queue behind the animation firehose it is being protected from. Theme deliveries and cold-attach baselines also bypass and re-anchor the period. Pacing gates capture, not emission of already-diffed frames: a coalesced tick simply defers the next capture, so every emitted delta still diffs against the previous emitted frame and the render-grid revision chain stays gapless (no interaction with the stale-frame/replay machinery). Field baseline this addresses: an animating agent ships ~27 frames/second (~100KB/s over the relay, 263MB in one session) while text carries no information above ~10 changes/second, and keystroke echoes pay for that volume in queue time. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Hoist mutating pacer calls out of #expect Swift Testing's #expect macro captures its operands immutably, so calling mutating pacer methods inside it fails to compile in the app-host test target. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Normalize project.pbxproj after merging main Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Import CmuxWorkspaces in CodexTurnRestoreIntentPolicy (unbreak main compile) Same one-line fix as manaflow-ai/cmux#14123, carried here so this PR's macOS compile admission is not blocked on it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Read matchingObservation after it is declared in the restore liveness check The Codex restore-intent early return landed on the same line as the effectiveRestorableAgent guard and reads matchingObservation, which is declared a few lines later, so main stopped compiling: "use of local variable 'matchingObservation' before its declaration". Move the check below the declaration. The intervening statements only compute values, so the early return behaves exactly as intended. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Main has not compiled since 36c30506a79:
Sources/CodexTurnRestoreIntentPolicy.swift:13:26: error: cannot find type 'RestorableAgentProcessLiveness' in scope. The type is declared in the CmuxWorkspaces package and the new file never imports it (sibling files such as RestorableAgentSession.swift do). One-line import; blocks every PR that reaches macOS compile admission, observed on #14031.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Fixes main compilation by importing
CmuxWorkspacesinCodexTurnRestoreIntentPolicy.swift. The file referencesRestorableAgentProcessLivenessfrom that package but never imported it, breaking compile at the macOS admission step for all PRs.Written for commit a63cb50. Summary will update on new commits.
Summary by CodeRabbit