refactor(pane motion): delete motion.frameOwner.contentPolicy; containers always follow and a closing pane always keeps its ground (FRAME OWNER S3)
Summary
FRAME OWNER REFACTOR stage S3, the switch deletion. Stacked on #35140 (S3d): its base is that branch, and it retargets to feat-cmux-next when S3d merges.
S3 landed with motion.frameOwner.contentPolicy default on (#34170, squash a08c406ba0f). Its gate passed: the refactor owner's films, typing GO, and the first FEAT DOGFOOD BUILD with S3, judged 10/10 (f1c3ebfd, feat cf86f55a1c7d, STATUS 11111). The rule for a stage: once its gate passes, the switch and the old path go. No behaviour change with the default on.
Frames: no content kind changes what it shows in any frame (the default-on path is the only path now).
Removed:
LayoutTunables.frameOwnerContentPolicy(Debug Settingsmotion.frameOwner.contentPolicy) and its entry inLayoutTunables.all.LayoutViewContext.contentPolicyOverrideandfollowsContentPolicy.PaneMotionHold.containersFollow: a content area's hold always lets its containers (PaneMotionHoldFollowing: a terminal's host, a browser's chrome) follow it; other subviews keep their frames, as with S1.- PaneHostView
heldAreaFollows: a key hold whose content has a held area always follows (heldArea != nil). ScreenContentView.retireClosing: a springing close always keeps the closing host with its ground (still hidden on a canvas, as before).- Doc comments that named the switch.
Tests:
- Deleted the OFF pins:
PaneContentPolicyTests.aSwitchFlipMidSpringAppliesFromTheNextMotion, thefalsecases ofCloseTeardownAfterLandingTests(2 tests) and ofKeyboardResizeContentHoldTests.theProducerResizesOnceAndTheContainersFollowEveryFrame. - Every
contentPolicyOverride = truepin is gone (the shared rig, the S3 and S3d suites), so they prove that the S3 path is the only path. PaneContentPolicyBenchruns the one path. Its doc keeps the off/on numbers (step4b4b80b33807e84dbb37cbfc).- No new test: nothing changes with the default on.
schemas/defaults/cmux-next.json is not edited by hand: the base autofix regenerates it (as for S1's delete, #34195).
Area owner told (STATUS 11449): PL-ghostty (one doc line in TerminalHostView+PaneMotion.swift).
Testing
Fleet green at the head a348d0742f3: step 8fc27668f579aca2158ed0d9 (36 suites: the S3 and S3d suites, every key-resize and close suite, FrameOwnerS1HoldPathsTests, the browser pane-motion suites, TerminalSurfaceCommitSizeTests, TerminalFrameOwnerMainThreadTests): 35 of 36 suites passed; TerminalFrameOwnerMainThreadTests ran no test there (it runs only on a display worker), so it ran in the GUI proof step 967af4b14b58f699076fe1be (display worker cmux10s-Mac-mini): 6 of 6 suites passed (TerminalFrameOwnerMainThreadTests, PaneGroundCoversPaneTests, PaneContentPolicyTests, CloseTeardownAfterLandingTests, PaneCloseKeptHandleTests, PaneCloseCameraGroundTests).
Optimized release bench (PaneContentPolicyBench, PaneMotionWorkTests): step 05c8011ae44ea5f8a6c8d7ad: both passed. One path now, p50 / p95 / p99 / max: keys 0.133 / 0.145 / 0.152 / 0.283 ms, close 0.149 / 0.159 / 0.315 / 0.345 ms (aws-m4pro-7; the S3d head's switch-on numbers on aws-m4pro-9 were 0.119 / 0.130 / 0.134 / 0.154 and 0.135 / 0.143 / 0.180 / 0.187 ms: another host).
Changelog
none
Proof
No capture: no behaviour change (a switch and its off path deleted).
Observed / Not run
Observed: the fleet steps above.
Not run: films (no behaviour change with the default on, which the films already judged).