Skip to content

base red: arch app_lines, #32159's Session Info capture and #32131's held-prompt checks move into CmuxNextAgentPane - #32307

Merged
cmux-bot[bot] merged 2 commits into
feat-cmux-nextfrom
fix/base-red-1256-app-lines
Nov 2, 2026
Merged

cmux-bot[bot] merged 2 commits into
feat-cmux-nextfrom
fix/base-red-1256-app-lines

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fixes the tip red from #32159 (b4f4a13) and #32131 (17e83a0): arch-ratchet failed at feat-cmux-next tip 612c99d with [app_lines] CmuxNextApp Swift lines: +129 over the last green arch tip 85a8bb7 (#32159 +115, #32131 +14).

This moves that new logic out of CmuxNextApp into CmuxNextAgentPane, its owning package. Behavior stays the same:

  • AgentPaneView+SessionInfoDebug.swift (DEBUG/bench only), from cmux NEXT: ship native Session Info by default #32159: the native Session Info scene's readiness report (debugSessionInfoReadiness; the app passes its BenchFrames settle and the window width), the open-click sequence (debugOpenSessionInfo; the app passes the same real header click), the viewport widening (AgentPaneSessionInfoDebugState.widenCaptureWindow), and the session_info_action reply.
  • AgentPaneWakeState.swift, from Agent pane: an open folder trust question never blocks Send or steer (prompts wait, then go after Trust) #32131: keepReason (no wake state in time, or prompts held for a trust answer; the log text is the same) and AgentPaneView.releaseHeldPrompts(then:), which owns the release-then-close task. The app still measures agentPane.close.
  • AgentPaneView+DebugReads.swift (DEBUG/bench only): debug.agent_pane readiness and the ACP Inspector toggle move from DebugAgentPane. They are page reads that the capture path calls. This moves enough to cover both culprits' 129 lines without relying on other commits' removals.

CmuxNextApp: -141 lines. No arch exception file, and arch-ratchet.json is not changed.

Changelog

none

Observed / Not run

Observed:

  • On the base, python3 scripts/cmux-next/arch-ratchet.py --base 85a8bb7467c2 --head origin/feat-cmux-next: app_lines CmuxNextApp +110 (+129 from the culprits, -19 from fix(cloud): keep first-send creates and panes stable across retries #32244), push refused.
  • On the head, the same command: app_lines -31 (CmuxNextApp -31), no architecture count rises. The prepush gate reports app_lines -141, no new violations.
  • scripts/lint-ios-package-conventions.sh --namespace-fix: no unjustified convention violations.
  • Fleet compile: see the comment below.

Not run: the session-info-native capture scene and the hibernation/retire paths at run time (this is a move that keeps the same code paths; no new tests).


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Moves the Session Info capture logic from #32159 and the held-prompt checks from #32131 out of CmuxNextApp into CmuxNextAgentPane, fixing the arch-ratchet failure at the feat-cmux-next tip.

  • CmuxNextApp drops 141 lines; arch-ratchet shows no rise. Behavior is unchanged.
  • AgentPaneView+DebugReads.swift (DEBUG only) picks up debug.agent_pane readiness and the ACP Inspector toggle.

Written for commit 3da4853. Summary will update on new commits.

View guided diff Turn on auto-fix

…held-prompt checks move into CmuxNextAgentPane

The arch ratchet at feat-cmux-next tip 612c99d counted CmuxNextApp
+129 lines over the last green arch tip 85a8bb7: #32159 +115
(the native Session Info capture scene and its debug action) and
#32131 +14 (the hibernation keep check and the retirer's release
before close). This moves that logic into its owning package, with the
same behavior:

- AgentPaneView+SessionInfoDebug: the scene's readiness report
  (debugSessionInfoReadiness; the app passes its frame settle and window
  width), the open click sequence (debugOpenSessionInfo; the app passes
  its real header click), the viewport widening
  (AgentPaneSessionInfoDebugState.widenCaptureWindow) and the
  session_info_action reply.
- AgentPaneWakeState: keepReason (no wake state in time, or prompts held
  for a trust answer; same log text) and AgentPaneView.releaseHeldPrompts
  (then:), which owns the release-then-close task.
- AgentPaneView+DebugReads: debug.agent_pane readiness and the ACP
  Inspector toggle, the page reads the capture path calls, move from
  DebugAgentPane so the move covers both culprits' lines.

CmuxNextApp: -141 lines. arch-ratchet --base 85a8bb7 shows no rise.

Fixes the tip red from #32159 (b4f4a13) and #32131 (17e83a0).
@lawrencecchen lawrencecchen added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review af06d16: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr32307 -f ref=fix/base-red-1256-app-lines -f platform=macos -f backend_mode=local

Default changes

This pull request changes 3 defaults at af06d16dc3bc (what everyone gets without configuring anything):

  • tunable-source.CmuxNextApp/Control/DebugAgentPane.swift:handle: "e46d81bf2a6d935fbd3ab89e0a872753006f3c34ef3de4bcb363cf576972a420" -> "dfb39bed20919e1561377d17292221dbde14009fedb2da2866922a0c227035b1"
  • tunable-source.CmuxNextApp/Control/DebugAgentPane.swift:readiness: "92299d1bc7ecb6197236f7b43241966d71ba2de45d04dfd98b3127a2a08cda01" -> (none)
  • tunable-source.CmuxNextApp/Control/DebugAgentPane.swift:toggleInspector: "cc7649c80de948af76993f4064269d6ec7879c9d8bb92943ca7e552d33e6521e" -> (none)

Signed off on this commit by review (independent review subagent, claude-opus-5-5).

Merge receipt: merged as 5de4511e7375 with these defaults changed, signed off by review (independent review subagent, claude-opus-5-5).

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

Shipped in:

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Fleet compile at 3da4853: cmux-ci compile-check --app --ref 3da4853d2c84e6a8516aba2d36e59c470b8b7426 job 11435f34907b72c51a0431da, compile check app: passed (53 s).

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Review (independent review subagent, claude-opus-5-5): SHIP at 3da4853

  • Behavior: compared each moved piece with b4f4a13 and 17e83a0. Session Info readiness keeps the same 18 report keys and values, the same ready condition, and the same order (header-pressed read, then frames.start/settled/stop, then state, then window width). The open click sequence, viewport widening, session_info_action reply, keepReason order and log text ("no wake state in time" before "holds prompts for a trust answer"), and one release-then-close Task per retired view (close inside the agentPane.close span) are the same. readiness and toggleInspector moved verbatim onto AgentPaneView.
  • Compile (read only, not built): the public import AppKit and public import CmuxNextSettings lines cover NSWindow and JSONValue in public signatures. JSONValue resolves only to CmuxNextSettings in the package files. BenchFrames.settled takes @escaping () -> Bool and returns Double?, so the settle closure and its tuple-to-labeled return type-check. The same pattern exists in autoNameSettled. The app closures convert to the @MainActor parameter types. A trailing comma in a parameter list has precedent in HistoryFilterLayout.swift. The #if DEBUG || CMUX_BENCH_HOOKS guards match the callers. The release paths (keepReason, releaseHeldPrompts(then:)) are not guarded.
  • Rules: no all-static public types, no blocking calls, the task-owner comment is kept on the Task, and the diff has no arch exception or ratchet json.
  • Static checks: arch-ratchet.py --base 85a8bb7467c2 --head HEAD gives app_lines -31 with no rises. prepush-gate.py --base HEAD~1 --head HEAD reports no new violations (CmuxNextApp -141).

@lawrencecchen lawrencecchen added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Nov 2, 2026
…d-1256-app-lines

# Conflicts:
#	Packages/macOS/CmuxNext/Sources/CmuxNextApp/Hibernation/AgentPageHibernation.swift
@lawrencecchen lawrencecchen removed the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Nov 2, 2026
@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Merged origin/feat-cmux-next (plain merge, no force push) at af06d16. Conflict in AgentPageHibernation.swift with #32286: kept AgentPaneWakeState.keepReason and took #32286's return pages.keptForNow(key) for both keep cases; keepReason's comments follow #32286's wording. arch-ratchet --base 85a8bb7 --head HEAD: no architecture count rises (this PR's commits: app_lines -142). Fleet compile at af06d16: job d5df38e5f9f3c303d5ed32d6, compile check app: passed (55 s).

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Review (independent review subagent, claude-opus-5-5): SHIP at af06d16

@lawrencecchen lawrencecchen added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Nov 2, 2026
@cmux-bot
cmux-bot Bot merged commit 5de4511 into feat-cmux-next Nov 2, 2026
199 of 204 checks passed
@cmux-bot
cmux-bot Bot deleted the fix/base-red-1256-app-lines branch November 2, 2026 13:54

This branch was previously deployed

1 inactive deployment
ci-routing-agent — af06d16d Deployed Nov 2, 2026 by lawrencecchen via wait for same-key tree publisher #101487
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant