refactor(next): move NewWorkspaceDefaultSlot from CmuxNextApp to CmuxNextBridge (app_lines -121)

Merged
LA
19h ago
+210-86

Summary

Moves the pure Cmd-N placement rule NewWorkspaceDefaultSlot out of CmuxNextApp into CmuxNextBridge, mechanically. The app keeps only its calls. This lowers the arch-ratchet app_lines count so that the "prebuilt workspace view" PR (fix/cmdn-prebuilt-workspace-view, about +18 App glue lines) lands at or below the base.

What moved (from -> to):

  • CmuxNextApp/Windows/NewWorkspaceDefaultSlot.swift:5-124 (struct NewWorkspaceDefaultSlot: awaitsCurrentAnchor, layoutCatchingUp, slot(for:section:in:home:catchingUp:), move(for:...), slot(inGroup:members:), private top(for:...)) -> CmuxNextBridge/NewWorkspaceDefaultSlot.swift, unchanged, with a public surface and an explicit public init (same defaults as the memberwise init).
  • The rest of the App file (NewWorkspacePlacements, lines 126-195) stays in the App and the file is renamed to CmuxNextApp/Windows/NewWorkspacePlacements.swift.
  • Package.swift: CmuxNextBridge now depends on CmuxNextSettings (for NewWorkspacePlacement). Both are domain; no cycle (Settings does not reach Bridge).
  • plans/cmux-next/swift-logic-classes.tsv: the two rows follow the new paths and module.

app_lines (CmuxNextApp physical Swift lines): 156,792 at base 15336bdc152 -> 156,671 at head. Net -121. prepush-gate.py: arch-ratchet: app_lines -121 (CmuxNextApp -121), no new violations.

No behavior change. No file of the prebuilt PR or of the DaemonStore stand-in path is touched.

Tests

New NewWorkspaceDefaultSlotTests (CmuxNextAppTests, but it imports only CmuxNextBridge, CmuxNextSettings and CmuxNextSidebar) pins each moved decision at today's output: top / afterCurrent / bottom slots and moves, Home, a named top, the cold-layout anchor wait and its fallbacks, layoutCatchingUp(nil), the in-group slot. The existing Cmd-N suites stay unchanged.

Fleet steps (filled in below as they finish):

  • compile: Release build job e3dc94f7c7614b540312170d (tag cmdn-path-move-b599e48-v1) PASS; DEV build job afa0aad9bfebce816df8c560 (tag cmdn-path-move-b599e48-dev-v1) PASS.
  • package tests, step d9bc35d52ff87c6c185cf572 on aws-m4pro-6: "All 8 suites passed" (NewWorkspaceDefaultSlotTests,NewWorkspaceInSectionTests,NewWorkspaceInGroupTests,ColdCmdNRowSlotTests,ColdCmdNWindowRowsTests,CmdNAlwaysNewWorkspaceTests,CmdNRowSlotTests,CmdNThenNewTerminalTabTests).
  • launch: scripts/cmux-next/os-matrix.sh --build afa0aad9bfebce816df8c560 --os 26, step 2d44c04e8d9aecfdfe44b883: macOS 26.6.2 smoke PASS, crashes=0, hang_reports=0, faults=0 (launch, window, terminal echo, split, Chromium and WebKit tabs, Settings, quit).

Observed / Not run

Observed: python3 scripts/cmux-next/prepush-gate.py passes with app_lines -121; scripts/lint-ios-package-conventions.sh --namespace-fix reports no violations.
Not run: no local build or test (fleet only, per repo rules). No macOS 14/15 smoke (the move has no OS-dependent code). Not watched: GitHub CI on this head.

Owners told: CmuxNextApp/Windows and CmuxNextBridge have no OWNERS.md row; plans/cmux-next/swift-logic-classes.tsv has no row. The Package.swift edge is in PL-arch's layering area (architecture-layers.json is not changed).

No capture: refactor with no UI change

Changelog

none