ci: guard against new short hard timeouts

Merged
TE
2d ago
+589-0

This adds a Linux guard for new hard timeout literals below 30 seconds in the app/daemon, acpmux, CLI, and agent-session paths. Existing debt is captured in tests/short-timeout-allowlist.json; counts only shrink. python3 scripts/ci/check_short_timeouts.py --update regenerates the snapshot after an intentional fix, preserving reasons, so the timeout-removal lanes can ratchet entries down after this merges.

Leo said: “shouldn't be this short. no reason for this. i imagine there's other nonsensical gates like this to remove in the broader app/acpmux”. The guard accepts an adjacent // timeout: <reason> or # timeout: <reason> only when a real hazard justifies a bound. It excludes Rust *_tests.rs and #[cfg(test)] modules.

Regression coverage: tests/test_short_timeout_guard.py proves a new 2-second deadline fails, the same line with // timeout: hung peer passes, wrapped Swift durations, millisecond units, uppercase TS timeout constants, the language patterns and Rust test-module exclusion, and ratchet growth/shrink behavior. On the current merged head 6bc4383a3015: python3 tests/test_short_timeout_guard.py passes 5 tests; python3 scripts/ci/check_short_timeouts.py reports 278 retained hits in 194 file:pattern entries. The branch merges the current feat-cmux-next tip to resolve the landing conflict.

The guard is registered in tests/test-execution.toml as linux-guard and runs in .github/workflows/ci-guards.yml.

Gates found at the merged base

Every row below is a pre-existing hard timeout retained in the shrink-only allowlist. The source column shows the old literal and what it guards; verdict is “retained debt; remove, replace with liveness, or lower the allowlist count.”

  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxChatProjects.swift:48 — swift-duration — @concurrent public static func read(socketPath: String, deadline: Duration = .seconds(5)) async throws -> AcpmuxChatProjects { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxCheckedLine.swift:51 — swift-socket-timeout — _ = setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &timeout, socklen_t(MemoryLayout<timeval>.size)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxComputerUse.swift:29 — swift-duration — deadline: .seconds(5) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxDaemonLauncher.swift:88 — swift-duration — @concurrent static func launch(_ environment: AcpmuxEnvironment, deadline: Duration = .seconds(20)) async throws -> AcpmuxWebEndpoint { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxDaemonLauncher.swift:101 — swift-duration — @concurrent static func launchReporting(_ environment: AcpmuxEnvironment, deadline: Duration = .seconds(20)) async throws -> Launched { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxEnvironment+HostPressure.swift:15 — swift-duration — public nonisolated func stopSession(id: String, deadline: Duration = .seconds(5)) async throws { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxEnvironment+Inventory.swift:17 — swift-duration — params: ["view": "inventory"], deadline: .seconds(5), — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxEnvironment+WorkspacePurge.swift:8 — swift-duration — public nonisolated func purgeWorkspace(key: String, deadline: Duration = .seconds(5)) async throws { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxHarnessList.swift:53 — swift-duration — @concurrent static func harnesses(socketPath: String, deadline: Duration = .seconds(5)) async throws -> ResultBox { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxMachineConsent.swift:14 — swift-duration — public static let deadline: Duration = .milliseconds(1200) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxPeerUpdateCommand.swift:27 — swift-duration — var killGrace: Duration = .seconds(10) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxPeerUpdateTarget.swift:174 — swift-duration — deadline: .seconds(5)) else { return nil } — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxPersonKey.swift:121 — swift-duration — deadline: .seconds(5)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxSessionCensus.swift:101 — swift-duration — @concurrent public static func census(_ environment: AcpmuxEnvironment?, deadline: Duration = .seconds(1)) async -> AcpmuxSessionCensus? { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxSessionCensus.swift:161 — swift-duration — status = try await AcpmuxStatusClient.status(socketPath: socket, deadline: .seconds(2)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxSessionCensus.swift:163 — swift-duration — ? keptSessions(result(try await activeSessions(socketPath: socket, deadline: .seconds(2))), keep: keep) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxStatusClient.swift:85 — swift-duration — deadline: Duration = .seconds(2)) async throws { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxStatusClient.swift:224 — swift-duration — deadline: Duration = .seconds(5)) async throws -> AgentPaneHarnessEnablePrompt { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AcpmuxStatusClient.swift:258 — swift-duration — deadline: Duration = .seconds(5)) async throws -> AgentPaneSessionFolder? { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneAddAccount.swift:35 — swift-duration — params: params, deadline: .seconds(20), detailed: true) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneChatsPage.swift:78 — swift-duration — deadline: Duration = .seconds(3)) async throws -> AgentPaneChatsPage { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneGitDiscard.swift:52 — swift-duration — static let timeout: Duration = .seconds(20) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneGitProcess.swift:24 — swift-duration — let top = await output(["-C", folder, "rev-parse", "--show-toplevel"], timeout: .seconds(20)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneGitStage.swift:29 — swift-duration — static let timeout: Duration = .seconds(20) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHibernationCapture.swift:20 — swift-duration — let frame = try? await ControlDeadline.shared.run(method: "hibernation.agentSnapshot", deadline: .now + .seconds(2)) { @MainActor in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHost.swift:297 — swift-duration — deadline: .milliseconds(200)) else { return nil } — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHost.swift:416 — swift-duration — let deadline = ContinuousClock.now + .seconds(3) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHost.swift:417 — swift-duration — var delay: Duration = .milliseconds(100) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHost.swift:429 — swift-duration — delay = min(delay * 2, .milliseconds(500)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHost.swift:501 — swift-duration — let deadline = ContinuousClock.now + .seconds(3) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHost.swift:502 — swift-duration — var delay: Duration = .milliseconds(100) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneHost.swift:510 — swift-duration — delay = min(delay * 2, .milliseconds(500)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPanePendingAsks.swift:63 — swift-duration — deadline: .seconds(5)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneSafeFetch.swift:21 — swift-duration — static let timeout: Duration = .seconds(10) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneSessionCopySocket.swift:13 — swift-duration — params: ["sessionId": sessionID], deadline: .seconds(5)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneSessionCopySocket.swift:21 — swift-duration — params: ["sessionId": sessionID], deadline: .seconds(5)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneShellCompletion.swift:15 — swift-duration — public static let deadline: Duration = .seconds(4) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneTransport+Check.swift:46 — swift-duration — deadline: .seconds(2)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/AgentPaneView+MoveCover.swift:84 — swift-duration — deadline.schedule(after: .seconds(3)) { @MainActor in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/Approvals/AcpmuxPersonLine.swift:29 — swift-duration — public static func open(_ environment: AcpmuxEnvironment, deadline: Duration = .seconds(5)) async -> AcpmuxPersonLine? { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/LocalRouterClient.swift:64 — swift-duration — @concurrent public func setUpstream(origin: String, bearer: String, expiresAt: UInt64, deadline: Duration = .seconds(3)) async throws -> Int? { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/LocalRouterClient.swift:108 — swift-duration — @concurrent public func clearUpstream(deadline: Duration = .seconds(3)) async throws { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextAgentPane/ProcessLauncher.swift:19 — swift-duration — public init(timeout: Duration = .seconds(10), clock: any Clock<Duration> = ContinuousClock()) { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/BrowserHost/AppBrowserHostTabs.swift:182 — swift-duration — let appeared = try? await ControlDeadline.shared.run(method: "tabs.open", deadline: .now + .seconds(10)) { @MainActor in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/BrowserHost/AppBrowserHostTabs.swift:269 — swift-duration — _ = try? await ControlDeadline.shared.run(method: "tabs.close", deadline: .now + .seconds(5)) { @MainActor [weak self] in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/BrowserProfiles/AgentBrowserProfile.swift:41 — swift-duration — static func ensure(_ profiles: BrowserProfileService, deadline: Duration = .seconds(5)) async throws -> String { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Cloud/CloudService+AppServer.swift:156 — swift-timeoutInterval — request.timeoutInterval = 15 — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/ComputerUse/ComputerUseSetup.swift:251 — swift-duration — deadline: .seconds(2)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/ComputerUse/ComputerUseSetup.swift:367 — swift-duration — status = try await CuaSocketClient(configuration: configuration).send("permissions_status", deadline: .seconds(2)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/ComputerUse/CuaComputerUseSessions.swift:39 — swift-duration — return try await CuaSocketClient(configuration: configuration).send(method, args, deadline: .seconds(5)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Control/AppControl+Accounts.swift:17 — swift-duration — let network: ControlMethod.Deadline = .fixed(.seconds(20)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Control/AppControl+Billing.swift:19 — swift-duration — let network: ControlMethod.Deadline = .fixed(.seconds(22)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Control/AppControl+Updates.swift:37 — swift-duration — let answerBy = call.deadline - .milliseconds(150) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Control/AppControl+VMAgentKey.swift:22 — swift-timeoutInterval — request.timeoutInterval = 20 — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Crash/AppRunMarker.swift:203 — swift-duration — func flush(timeout: Duration = .seconds(5)) async -> Bool { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Feed/FeedInstallPrincipal.swift:53 — swift-timeoutInterval — request.timeoutInterval = 15 — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Feed/FeedService.swift:292 — swift-timeoutInterval — request.timeoutInterval = 15 — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/GlobalSearch/TerminalTextSearch.swift:18 — swift-duration — static let timeout: Duration = .seconds(2) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Handlers/AgentHandlers+Pane.swift:34 — swift-duration — deadline: .now + .seconds(10) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Handlers/ChiefInspectorHandlers.swift:254 — swift-timeoutInterval — request.timeoutInterval = 5 — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Handlers/ChiefInspectorHandlers.swift:184 — swift-duration — let located = try? await ControlDeadline.shared.run(method: "chief-inspector.reveal", deadline: .now + .seconds(5)) { @MainActor in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Handlers/CloudHandlers+Network.swift:122 — swift-duration — deadline: .seconds(10), label: "ssh -G") — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Hibernation/BrowserHibernation+Restore.swift:116 — swift-duration — let ended = try? await ControlDeadline.shared.run(method: "hibernation.wake", deadline: .now + .seconds(15)) { @MainActor in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Hibernation/BrowserHibernation.swift:723 — swift-duration — try? await ControlDeadline.shared.run(method: "hibernation.snapshot", deadline: .now + .seconds(2)) { @MainActor in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/History/HistoryControl.swift:103 — swift-duration — _ = try? await ControlDeadline.shared.run(method: "debug.history_cookie_backups", deadline: .now + .seconds(5)) { @MainActor in — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Home/HomeLinkPreviewProvider.swift:92 — swift-duration — let screen = try? await connection.request(ReadScreenRequest(surface: tab.surface), timeout: .seconds(2)) else { return out } — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Onboarding/ExternalOpenController.swift:29 — swift-duration — let peers = try? await AcpmuxPeerList(socketPath: socket).peers(deadline: .seconds(1)) else { return saved } — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/Files/MarkdownShare/MarkdownGitRunning.swift:19 — swift-duration — var timeout: Duration = .seconds(5) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/Files/RemoteImagePolicy.swift:12 — swift-duration — static let timeout: Duration = .seconds(15) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Quit/QuitFactsReader.swift:11 — swift-duration — nonisolated static let deadline: Duration = .seconds(1) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Remote/JoinConsent+App.swift:33 — swift-duration — guard let data = await cli?.json(["acp", "host", "join", "--status", "--json"], deadline: .seconds(10), label: "join status") — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Server/LocalServerSource.swift:198 — swift-duration — timeout: .seconds(15), clock: ContinuousClock()) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Server/ServerReachService.swift:335 — swift-duration — timeout: .seconds(10), clock: ContinuousClock()), — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/ServerUpdates/ServerTailnetSource.swift:15 — swift-duration — return ServerTailnetSource(hostStatus: { await cli?.json(["host", "status", "--json"], deadline: .seconds(10), label: "host status") }) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/SessionTransfer/SessionTransferService+Chats.swift:100 — swift-duration — environment: variables, timeout: .seconds(10), clock: ContinuousClock()), — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/SessionTransfer/SessionTransferService.swift:92 — swift-duration — let info = await connection.readProcessInfo(id, timeout: .milliseconds(500)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/SessionTransfer/SessionTransferService.swift:135 — swift-duration — if let list = try? await ControlPeerClient.request(path: path, method: "session.transfer.list", timeout: .seconds(5)), — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/SessionTransfer/SessionTransferService.swift:164 — swift-duration — let list = try? await ControlPeerClient.request(path: peer.path, method: "session.transfer.list", timeout: .seconds(5)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/TopPages/TopPages.swift:62 — swift-duration — let listed = try await ProcessRunner.run(executable: cli, arguments: ["--json", "automation", "list"], environment: nil, timeout: .seconds(10), clock: ContinuousClock()) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Usage/AppResourceSource.swift:86 — swift-duration — let response = try? await connection.request(request, timeout: .seconds(1)) else { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Usage/ResourceControl.swift:18 — swift-duration — static let deadline: Duration = .seconds(5) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApp/Windows/IncognitoChats.swift:29 — swift-duration — try await acpmux.purgeWorkspace(key: key, deadline: .seconds(3)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApps/Operations/BundledAgentMemoryIndex.swift:23 — swift-duration — public init(executable: URL, timeout: Duration = .seconds(25)) { — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApps/Operations/DaemonConnection+AgentInventoryReader.swift:9 — swift-duration — try await request(MachineAgentInventoryRequest(expectedMachineID: machine), timeout: .seconds(15)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApps/Operations/DaemonConnection+AgentInventoryReader.swift:17 — swift-duration — let receipt = try await request(MachineAgentInventoryRefreshRequest(expectedMachineID: machine), timeout: .seconds(28)) — verdict: retained debt; shrink-only allowlist
  • Packages/macOS/CmuxNext/Sources/CmuxNextApps/Operations/DaemonConnection+MachineCatalogWriter.swift:8 — swift-duration — _ = try await self.request(request, timeout: .seconds(15)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/acpmux_mcp.rs:40 — rust-duration — const STATUS_WAIT: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/acpmux_mcp_send.rs:36 — rust-duration — const RESOLVE_WAIT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:119 — rust-duration — const EXIT_ACK_BUDGET: std::time::Duration = std::time::Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:1169 — rust-duration — let status = tokio::time::timeout(std::time::Duration::from_secs(5), child.wait()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:1305 — rust-duration — tokio::time::timeout(grace + std::time::Duration::from_secs(1), exited).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2381 — rust-duration — let result = tokio::time::timeout(std::time::Duration::from_secs(10), async { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2421 — rust-duration — let messages = tokio::time::timeout(std::time::Duration::from_secs(10), async { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2497 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(10), arrived) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2568 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(10), fence.settled()).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2606 — rust-duration — let id = tokio::time::timeout(std::time::Duration::from_secs(10), async { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2623 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(10), arrived) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2665 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(10), arrived) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2673 — rust-duration — let _ = tokio::time::timeout(std::time::Duration::from_secs(5), request).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent.rs:2703 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(10), agent.stdin_tx.closed()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent_host/host.rs:245 — rust-duration — const DRAIN_BUDGET: std::time::Duration = std::time::Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent_host/link.rs:416 — rust-duration — pub const HELLO_BUDGET: std::time::Duration = std::time::Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent_host/scope.rs:139 — rust-duration — const PLACEMENT_WAIT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent_host/wait.rs:16 — rust-duration — pub const QUERY_BUDGET: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/agent_tools/cua_helper.rs:110 — rust-duration — match child.wait_timeout(Duration::from_secs(3)) { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/artifacts_sync.rs:28 — rust-duration — const CONNECT_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/cloud_join.rs:316 — rust-duration — std::time::Duration::from_secs(2), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/cloud_join.rs:395 — rust-duration — .timeout(std::time::Duration::from_secs(10)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/codex_auth_broker.rs:42 — rust-duration — const DEADLINE: Duration = Duration::from_secs(8); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/daemon_service.rs:41 — rust-duration — const CALL_WAIT: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/gh_shim.rs:171 — rust-duration — const GIT_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/harness.rs:1076 — rust-duration — let _ = tokio::time::timeout(Duration::from_secs(5), child.wait()).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/harness.rs:1077 — rust-duration — if tokio::time::timeout(Duration::from_secs(2), &mut drain).await.is_err() { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/host_join_doctor.rs:33 — rust-duration — const STATUS_TIMEOUT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/host_vault.rs:280 — rust-duration — match child.wait_timeout(std::time::Duration::from_secs(5)) { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/output.rs:13 — rust-duration — const UPDATE_RECONNECT_BUDGET: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/output.rs:812 — rust-duration — let _ = tokio::time::timeout(std::time::Duration::from_millis(2500), turn).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/run/standard.rs:1255 — rust-duration — const PRE_QUEUE_WAIT: std::time::Duration = std::time::Duration::from_millis(300); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/uniichat_agent.rs:553 — rust-duration — match tokio::time::timeout(Duration::from_secs(20), tokio_tungstenite::connect_async(req)).await — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/uniichat_agent.rs:602 — rust-duration — let deadline = tokio::time::Instant::now() + Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cli/uniichat_agent.rs:686 — rust-duration — next = tokio::time::timeout(if cancelled { Duration::from_secs(5) } else { quiet }, ws.next()) => { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cloud_rewind.rs:91 — rust-duration — .connect_timeout(Duration::from_secs(5)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/config/launchers.rs:132 — rust-duration — match child.wait_timeout(std::time::Duration::from_secs(20)) { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cua_v2.rs:208 — rust-duration — std::time::Duration::from_secs(2), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/cua_v2.rs:223 — rust-duration — std::time::Duration::from_secs(2), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:139 — rust-duration — pub const SHUTDOWN_BUDGET: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:829 — rust-duration — let _ = tokio::time::timeout(std::time::Duration::from_secs(6), relay.stop()).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1285 — rust-duration — tokio::time::timeout(Duration::from_secs(5), crate::client::Client::connect(socket)).await — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1290 — rust-duration — Duration::from_secs(5), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1309 — rust-duration — Duration::from_secs(10), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1347 — rust-duration — const START_BUDGET: Duration = Duration::from_secs(8); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1351 — rust-duration — pub const EXIT_BUDGET: Duration = SHUTDOWN_BUDGET.saturating_add(Duration::from_secs(8)); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1420 — rust-duration — pub const HANDOVER_BUDGET: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1427 — rust-duration — const HANDOVER_RETRY: Duration = Duration::from_millis(250); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon.rs:1447 — rust-duration — const PROBE_BUDGET: Duration = Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon/cloud_activity.rs:71 — rust-duration — pub(super) const RENEW: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon/cloud_activity.rs:73 — rust-duration — const SEND_TIMEOUT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon/cloud_handoff.rs:80 — rust-duration — const NOTIFY_TIMEOUT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon/login_session.rs:42 — rust-duration — const LAUNCHCTL_BUDGET: std::time::Duration = std::time::Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon/router_owner/fifo.rs:41 — rust-duration — const ROUTER_STOP_BUDGET: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/daemon/snapshot_clear.rs:13 — rust-duration — tokio::time::timeout(Duration::from_secs(2), Client::connect_without_caller(socket)).await — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/deps/remote.rs:147 — rust-duration — .connect_timeout(Duration::from_secs(10)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/github_app_token.rs:26 — rust-duration — const MINT_TIMEOUT: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/github_app_token.rs:28 — rust-duration — const KEYRING_TIMEOUT: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/github_status.rs:51 — rust-duration — const CLOUD_WAIT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/github_status.rs:52 — rust-duration — const PLATFORM_WAIT: Duration = Duration::from_secs(8); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/github_status.rs:53 — rust-duration — const GH_WAIT: Duration = Duration::from_secs(8); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hand/exec.rs:17 — rust-duration — const DRAIN_GRACE: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hand/link.rs:199 — rust-duration — match tokio::time::timeout(Duration::from_secs(20), tokio_tungstenite::connect_async(req)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/harness_health/latest.rs:62 — rust-duration — .timeout(std::time::Duration::from_secs(15)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/harness_health/probe.rs:12 — rust-duration — const TIMEOUT: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/host_load.rs:22 — rust-duration — const CPU_WINDOW: Duration = Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/host_load.rs:24 — rust-duration — const DAEMON_WAIT: Duration = Duration::from_millis(1500); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/bg_tasks.rs:37 — rust-duration — const START_WAIT: std::time::Duration = std::time::Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/bg_tasks.rs:476 — rust-duration — const STOP_LOOK: std::time::Duration = std::time::Duration::from_millis(50); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/carried_turn.rs:86 — rust-duration — const CARRIED_WAIT: std::time::Duration = std::time::Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/forum.rs:48 — rust-duration — const PUSH_WAIT: std::time::Duration = std::time::Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/full_access_bound.rs:1018 — rust-duration — let _ = tokio::time::timeout(std::time::Duration::from_secs(10), begun).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/idle_census.rs:72 — rust-duration — const CENSUS_BUDGET: std::time::Duration = std::time::Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/mcp_probe.rs:20 — rust-duration — const TIMEOUT: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/processes.rs:30 — rust-duration — pub(super) const STOP_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/queue_edit.rs:17 — rust-duration — const STEP_NOW_WAIT: std::time::Duration = std::time::Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/remote_sandbox.rs:309 — rust-duration — let Ok(Ok(out)) = tokio::time::timeout(std::time::Duration::from_secs(5), read).await else { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/remote_sandbox.rs:1146 — rust-duration — let run = tokio::time::timeout(std::time::Duration::from_secs(20), cmd.output()).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/shell_readonly.rs:98 — rust-duration — pub(crate) const PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/shutdown.rs:318 — rust-duration — const RETRY_STOP_BUDGET: std::time::Duration = std::time::Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/shutdown.rs:321 — rust-duration — pub const SHUTDOWN_GRACE: std::time::Duration = std::time::Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/titles.rs:37 — rust-duration — const TIMEOUT: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/turns.rs:1769 — rust-duration — std::time::Duration::from_secs(5), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/turns.rs:1774 — rust-duration — let _ = tokio::time::timeout(std::time::Duration::from_secs(5), handled).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/turns.rs:2202 — rust-duration — std::time::Duration::from_millis(500), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/usage_view.rs:32 — rust-duration — pub(crate) const READ_WAIT: Duration = Duration::from_millis(750); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/watch_events.rs:74 — rust-duration — std::time::Duration::from_millis(250), — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/withdraw.rs:40 — rust-duration — const NOTICE_WAIT: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/withdraw.rs:42 — rust-duration — const INBOX_SETTLE: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/hub/worktree_care/revive.rs:56 — rust-duration — if let Ok(Ok(Some(found))) = tokio::time::timeout(Duration::from_secs(2), read).await { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/launch_credential.rs:22 — rust-duration — const MINT_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/linux_sandbox/bwrap.rs:383 — rust-duration — let status = match child.wait_timeout(Duration::from_secs(10)) { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/linux_sandbox/keeper.rs:560 — rust-duration — result = tokio::time::timeout(Duration::from_secs(20), handoff(&socket)) => result.map_err(|_| "handoff timed out after 20 s")??, — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/linux_sandbox/keeper.rs:792 — rust-duration — let _ = tokio::time::timeout(Duration::from_secs(5), child.kill()).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/linux_sandbox/proxy.rs:26 — rust-duration — const CONNECT_TIMEOUT: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/live_models/mod.rs:39 — rust-duration — pub const PROBE_TIMEOUT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/login_env.rs:45 — rust-duration — pub const TIMEOUT: Duration = Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/login_env.rs:47 — rust-duration — const RECHECK: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/pairing/tests.rs:272 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(5), ended).await.unwrap().unwrap(); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/pairing/tests.rs:274 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(5), p.revoked(&device.id)).await.unwrap(); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/peer_health.rs:20 — rust-duration — const HEALTH_BUDGET: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/peer_ssh.rs:61 — rust-duration — tokio::time::timeout(Duration::from_millis(250), &mut self.0) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/route_probe.rs:180 — rust-duration — let client = match reqwest::Client::builder().timeout(Duration::from_secs(8)).build() { — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/mesh_relay.rs:286 — rust-duration — let budget = wait.min(Duration::from_secs(5)); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/mesh_relay.rs:297 — rust-duration — let _ = tokio::time::timeout(Duration::from_secs(5), client.heartbeat(&last)).await; — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/mod.rs:255 — rust-duration — const WORK_BACKPRESSURE_WAIT: std::time::Duration = std::time::Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/mod.rs:1046 — rust-duration — const WS_HANDSHAKE_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/mod.rs:1465 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(2), read).await.ok().flatten() — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/models_fanout.rs:27 — rust-duration — const PEERS_BUDGET: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/pairing.rs:113 — rust-duration — const REDEEM_WAIT: std::time::Duration = std::time::Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/peer_status.rs:20 — rust-duration — const PEER_BUDGET: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/requests.rs:953 — rust-duration — tokio::time::timeout(std::time::Duration::from_secs(5), peer.request(m, json!({}))) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/requests/briefs.rs:110 — rust-duration — const PEERS_BUDGET: std::time::Duration = std::time::Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/stream.rs:28 — rust-duration — const LAST_LINE_WAIT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/trigger_chat.rs:211 — rust-duration — .timeout(std::time::Duration::from_millis(4500)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/trigger_chat.rs:388 — rust-duration — let _accepted = tokio::time::timeout(std::time::Duration::from_secs(4), accepted_rx).await.ok(); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown.rs:10 — rust-duration — pub(crate) const DRAIN_BUDGET: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown.rs:11 — rust-duration — const CLOSE_BUDGET: Duration = Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:48 — rust-duration — let reply = tokio::time::timeout(Duration::from_secs(5), ws.next()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:78 — rust-duration — let frame = tokio::time::timeout(Duration::from_secs(5), ws.next()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:92 — rust-duration — tokio::time::timeout(Duration::from_secs(5), serving).await.unwrap().unwrap().unwrap(); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:130 — rust-duration — let frame = tokio::time::timeout(Duration::from_secs(5), client.next()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:155 — rust-duration — let frame = tokio::time::timeout(Duration::from_secs(5), client.next()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:176 — rust-duration — assert!(tokio::time::timeout(Duration::from_millis(10), shared.drained()).await.is_err()); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:207 — rust-duration — let frame = tokio::time::timeout(Duration::from_secs(5), client.next()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/server/ws_shutdown/tests.rs:238 — rust-duration — let frame = tokio::time::timeout(Duration::from_secs(5), client.next()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/session_scope.rs:573 — rust-duration — const PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/tui/mod.rs:823 — rust-duration — let request = tokio::time::timeout(std::time::Duration::from_secs(5), requests.recv()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/tui/mod.rs:947 — rust-duration — let msg = tokio::time::timeout(std::time::Duration::from_secs(5), requests.recv()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/tui/mod.rs:978 — rust-duration — let msg = tokio::time::timeout(std::time::Duration::from_secs(5), requests.recv()) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/vault.rs:125 — rust-duration — pub const LOAD_BUDGET: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/vault.rs:381 — rust-duration — pub const INITIAL_WAIT: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/acpmux/src/vault/store.rs:29 — rust-duration — const TIMEOUT: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/agent_input_hint.rs:29 — rust-duration — const LOOKUP_TIMEOUT: Duration = Duration::from_millis(500); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/agent_message.rs:30 — rust-duration — const PUMP_WAIT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/agent_message.rs:31 — rust-duration — const PUMP_POLL: Duration = Duration::from_millis(50); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/agents/wait.rs:27 — rust-duration — const RECHECK: Duration = Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/agents_doctor.rs:453 — rust-duration — const VERSION_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app.rs:78 — rust-duration — pub(super) const READ_TIMEOUT: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app.rs:81 — rust-duration — const ERRORS_TIMEOUT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/page.rs:20 — rust-duration — pub(super) const WAIT_MARGIN: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/renderers.rs:20 — rust-duration — const TIMEOUT: Duration = Duration::from_secs(6); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/right.rs:22 — rust-duration — const RIGHT_TIMEOUT: Duration = Duration::from_secs(25); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/run.rs:47 — rust-duration — const MAX_RETRY_WAIT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/skew.rs:109 — rust-duration — const IDENTIFY_TIMEOUT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/version.rs:25 — rust-duration — const READ_TIMEOUT: Duration = Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/wait.rs:22 — rust-duration — const FIRST_NOTE_AFTER: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/app/wait.rs:23 — rust-duration — const NOTE_EVERY: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/apps_run.rs:36 — rust-duration — pub(super) const CANCEL_WAIT: Duration = Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/apps_run/tests.rs:62 — rust-duration — const TEST_WAIT: Duration = Duration::from_millis(200); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/billing.rs:22 — rust-duration — const BILLING_TIMEOUT: Duration = Duration::from_secs(25); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/chief/link.rs:21 — rust-duration — const REQUEST_TIMEOUT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/cloud_client_session.rs:501 — rust-duration — .timeout(Duration::from_millis(timeout_ms).saturating_add(Duration::from_secs(15))) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/cloud_machine_io/direct.rs:252 — rust-duration — .timeout(Duration::from_millis(timeout_ms).saturating_add(Duration::from_secs(15))) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/cloud_machine_io/proxy.rs:52 — rust-duration — .timeout(Duration::from_millis(timeout) + Duration::from_secs(5)) — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/cloud_machines.rs:30 — rust-duration — const CLOUD_READ_TIMEOUT: Duration = Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/cloud_start_chat.rs:42 — rust-duration — const NOT_STARTED_PAUSE: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/coderouter.rs:33 — rust-duration — const CODEROUTER_TIMEOUT: Duration = Duration::from_secs(25); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/codex_app_server.rs:22 — rust-duration — const DEADLINE: Duration = Duration::from_secs(8); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/lifecycle.rs:526 — rust-duration — const STOP_WAIT_SLICE: Duration = Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/machine_join.rs:53 — rust-duration — const REQUEST_TIMEOUT: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/machine_join.rs:55 — rust-duration — pub(super) const LIST_TIMEOUT: Duration = Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/machine_join.rs:57 — rust-duration — const WAIT_EVERY: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/mcp.rs:1616 — rust-duration — const CLOUD_MACHINES_TIMEOUT: Duration = Duration::from_secs(1); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/mcp/computer_use_gate.rs:42 — rust-duration — const STATUS_TIMEOUT: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/mcp/computer_use_gate.rs:46 — rust-duration — const REQUEST_SLACK: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/mcp/upstream.rs:31 — rust-duration — const START_TIMEOUT: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/resolve.rs:296 — rust-duration — const CALLER_TERMINAL_WAIT: Duration = Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/resolve.rs:530 — rust-duration — const APP_IDENTIFY_WAIT: Duration = Duration::from_secs(5); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/sandbox_run.rs:31 — rust-duration — const WAIT_TRANSIT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/script.rs:35 — rust-duration — pub(super) const CANCEL_WAIT: Duration = Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/setup/browser_import.rs:61 — rust-duration — const LOAD_WAIT: std::time::Duration = std::time::Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/setup/browser_import.rs:62 — rust-duration — const LOAD_PAUSE: std::time::Duration = std::time::Duration::from_millis(100); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/setup/harness.rs:39 — rust-duration — const ASK_TIMEOUT: Duration = Duration::from_secs(20); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/skew.rs:48 — rust-duration — const IDENTIFY_TIMEOUT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/status/terminal_wait.rs:35 — rust-duration — pub(super) const ANSWER_TIMEOUT: Duration = Duration::from_secs(10); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/status/terminal_wait.rs:37 — rust-duration — const DEADLINE_SLACK: Duration = Duration::from_millis(50); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/terminal_talk/send.rs:36 — rust-duration — pub(in crate::cli) const DEFAULT_SETTLE: Duration = Duration::from_secs(3); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/terminal_talk/send.rs:37 — rust-duration — const DEFAULT_ENTER_DELAY: Duration = Duration::from_millis(300); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/terminal_talk/send.rs:38 — rust-duration — const DEFAULT_POLL: Duration = Duration::from_millis(250); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/vm.rs:43 — rust-duration — const MINT_TIMEOUT: Duration = Duration::from_secs(25); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/vnc.rs:26 — rust-duration — const CONNECT_TIMEOUT: Duration = Duration::from_secs(15); — verdict: retained debt; shrink-only allowlist
  • cmux-tui/crates/cmux-tui/src/cli/wire.rs:19 — rust-duration — pub(super) const SERVER_PREFLIGHT_TIMEOUT: Duration = Duration::from_secs(2); — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/autoResumeStatus.test.ts:26 — ts-hard-timeout — const deadline = performance.now() + 2_000; — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/composer/imagePool.ts:14 — ts-hard-timeout — export const imageJobDeadline = { ms: 20_000 }; — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/composerDraft.ts:139 — ts-hard-timeout — export const draftWriteLimits = { timeoutMs: 5_000, lateHoldMs: 30_000 }; — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/folderTrust.ts:74 — ts-hard-timeout — export const TRUST_READ_TIMEOUT_MS = 1500; — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/inlinePrompt.test.ts:18 — ts-hard-timeout — const deadline = performance.now() + 2_000; — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/loadDebug.ts:61 — ts-hard-timeout — const deadline = performance.now() + 25_000; — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/perf.ts:308 — ts-hard-timeout — nextCommit(timeoutMs = 10_000): Promise<number | undefined> { — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/promptDelivery.test.ts:37 — ts-hard-timeout — const deadline = performance.now() + 2_000; — verdict: retained debt; shrink-only allowlist
  • webviews/src/agent-session/acpmux/reconnectPrompt.test.ts:23 — ts-hard-timeout — const deadline = performance.now() + 2_000; — verdict: retained debt; shrink-only allowlist

🤖 Generated with Codex

Agent session: agent session