a73x

58052e9d

docs: record sprint 3 mouse demo acceptance

a73x   2026-09-05 09:59

Commit message
docs: record sprint 3 mouse demo acceptance

RETRO.md
Old New
@@ -119,8 +119,10 @@ At the next retrospective, mark each action with evidence or a carry-forward rea
119 expanding the interaction model. Record feedback on direction, back/cancel, 119 expanding the interaction model. Record feedback on direction, back/cancel,
120 focus, and the shared host catalogue. The recorded demo was accepted on 120 focus, and the shared host catalogue. The recorded demo was accepted on
121 2026-09-05; no changes or control-specific feedback were requested. 121 2026-09-05; no changes or control-specific feedback were requested.
122 - [ ] Agree divider hit areas and keyboard resize increments before UI work; 122 - [x] Agree divider hit areas and keyboard resize increments before UI work;
123 reuse one sizing policy for drag, keyboard input, and minimum constraints. 123 reuse one sizing policy for drag, keyboard input, and minimum constraints.
124 Closed by recorded-demo approval on 2026-09-05. Timing target missed: defaults
125 were proposed before UI work and accepted after delivery, without requested changes.
124 - [x] Exercise nested divider movement at 200% scale and after a display-scale 126 - [x] Exercise nested divider movement at 200% scale and after a display-scale
125 change. Check both PTY sizes and erased pixels, not only model rectangles. 127 change. Check both PTY sizes and erased pixels, not only model rectangles.
126 - [x] Include batched resize/input events and stale asynchronous completion in 128 - [x] Include batched resize/input events and stale asynchronous completion in
@@ -133,7 +135,8 @@ At the next retrospective, mark each action with evidence or a carry-forward rea
133 Implemented relative divider weights, mouse dragging, and keyboard resize mode. 135 Implemented relative divider weights, mouse dragging, and keyboard resize mode.
134 Opening cleanup is separately committed as `3eaad75`; the closing cleanup and 136 Opening cleanup is separately committed as `3eaad75`; the closing cleanup and
135 adversarial review are complete. Final delivery evidence belongs in the native 137 adversarial review are complete. Final delivery evidence belongs in the native
136 tiling plan. User acceptance of the resize trial is pending. 138 tiling plan. Implementation `3eab2a35` is accepted: after the mouse-focused
139 recording, the user said “demo approved!” on 2026-09-05.
137 140
138 ### What worked 141 ### What worked
139 142
@@ -153,6 +156,9 @@ tiling plan. User acceptance of the resize trial is pending.
153 - Actual Wayland transitions through 200%, 100%, 150%, and 200% preserved nested 156 - Actual Wayland transitions through 200%, 100%, 150%, and 200% preserved nested
154 resizing, cancelled stale drags, and passed all-pane PTY and erased-pixel checks. 157 resizing, cancelled stale drags, and passed all-pane PTY and erased-pixel checks.
155 An isolated compositor allowed these tests without changing the user's monitor. 158 An isolated compositor allowed these tests without changing the user's monitor.
159 - The follow-up mouse recording used Wayland virtual-pointer motion and button
160 events with a visible cursor. Both dividers moved in both directions, stopped
161 on release, and retained correct kernel PTY sizes. It passed without code changes.
156 162
157 ### What to change 163 ### What to change
158 164
@@ -160,7 +166,11 @@ tiling plan. User acceptance of the resize trial is pending.
160 preserve a locally consistent value that the daemon refuses. 166 preserve a locally consistent value that the daemon refuses.
161 - Keep ergonomic proposals distinct from agreement. Six logical pixels and one 167 - Keep ergonomic proposals distinct from agreement. Six logical pixels and one
162 cell per key were proposed before UI work, then used as trial defaults while 168 cell per key were proposed before UI work, then used as trial defaults while
163 awaiting feedback. The outstanding action above remains open until user review. 169 awaiting feedback. Demo approval closes the action; it does not establish that
170 agreement happened before implementation or imply a hands-on trial.
171 - Include the pointer in mouse demos and use actual compositor input. The first
172 attempt warped the pointer without delivering held-button motion; the virtual
173 pointer interface exercised the complete input path successfully.
164 - Preserve practical test limits: tiny-window requests may be constrained by a 174 - Preserve practical test limits: tiny-window requests may be constrained by a
165 desktop compositor. Record the actual size granted instead of changing global 175 desktop compositor. Record the actual size granted instead of changing global
166 compositor policy. This sprint achieved exact 8x8 both offscreen and on Sway 176 compositor policy. This sprint achieved exact 8x8 both offscreen and on Sway
@@ -171,8 +181,9 @@ tiling plan. User acceptance of the resize trial is pending.
171 Owner: the sprint lead and the bounded implementation/review pair. Review these 181 Owner: the sprint lead and the bounded implementation/review pair. Review these
172 before Sprint 4 and close each with evidence at its retrospective. 182 before Sprint 4 and close each with evidence at its retrospective.
173 183
174 - [ ] Obtain resize demo acceptance and resolve any requested ergonomic changes 184 - [x] Obtain resize demo acceptance and resolve any requested ergonomic changes
175 before extending interaction with detach, end, and recovery actions. 185 before extending interaction with detach, end, and recovery actions.
186 The user approved the recorded demo on 2026-09-05; no changes were requested.
176 - [ ] Start with a bounded cleanup of the lifecycle and state-ownership paths; 187 - [ ] Start with a bounded cleanup of the lifecycle and state-ownership paths;
177 keep substantial refactors explicit and preserve the closing cleanup package. 188 keep substantial refactors explicit and preserve the closing cleanup package.
178 - [ ] Persist the relative weights and stable pane/tab identity introduced here; 189 - [ ] Persist the relative weights and stable pane/tab identity introduced here;
docs/native-sprint-workflow.md
Old New
@@ -63,6 +63,12 @@ packages. Keep one sprint active, ending in a working demo and explicit acceptan
63 before closing the window so another application cannot enter the recording. 63 before closing the window so another application cannot enter the recording.
64 A slideshow of screenshots is useful evidence but is not a screen recording. 64 A slideshow of screenshots is useful evidence but is not a screen recording.
65 65
66 For mouse acceptance, include the cursor with `grim -c` and drive the
67 compositor's virtual-pointer motion/button events. SDL-injected input can
68 validate application routing but does not demonstrate the compositor input
69 path. Cursor-warp commands can move the visible cursor without delivering
70 held-button motion. Verify actual divider movement and release, then check PTYs.
71
66 For a user on the same tailnet, serve only the demo page/video through a loopback 72 For a user on the same tailnet, serve only the demo page/video through a loopback
67 HTTP server with byte-range support, then use Tailscale Serve: 73 HTTP server with byte-range support, then use Tailscale Serve:
68 74
docs/superpowers/plans/2026-09-05-native-tiling.md
Old New
@@ -1,8 +1,8 @@
1 # Native tiling — delegated delivery plan 1 # Native tiling — delegated delivery plan
2 2
3 Design authority: [native tiling spec](../specs/2026-09-05-native-tiling-design.md). 3 Design authority: [native tiling spec](../specs/2026-09-05-native-tiling-design.md).
4 Status: Sprint 2 accepted; Sprint 3 implemented, reviewed, and validated, awaiting 4 Status: Sprint 3 complete; implementation, review, validation, and recorded-demo
5 user acceptance of the recorded demo. 5 acceptance passed.
6 6
7 ## Working agreement 7 ## Working agreement
8 8
@@ -401,7 +401,7 @@ scope.
401 401
402 ## Sprint 3 — divider resizing 402 ## Sprint 3 — divider resizing
403 403
404 Ready for user trial. The user requested a bounded cleanup before every sprint in addition 404 Accepted. The user requested a bounded cleanup before every sprint in addition
405 to the closing refactor. Commit `3eaad75` records the reusable workflow and the 405 to the closing refactor. Commit `3eaad75` records the reusable workflow and the
406 reviewed opening cleanup: `Tree.layout` now owns minimum-footprint expansion and 406 reviewed opening cleanup: `Tree.layout` now owns minimum-footprint expansion and
407 flattening for both live layout and insertion planning. This preserves behavior; 407 flattening for both live layout and insertion planning. This preserves behavior;
@@ -409,11 +409,11 @@ flattening for both live layout and insertion planning. This preserves behavior;
409 Logs: `/tmp/muxg-sprint3-preflight-check.log` and 409 Logs: `/tmp/muxg-sprint3-preflight-check.log` and
410 `/tmp/muxg-sprint3-preflight-native.log`. 410 `/tmp/muxg-sprint3-preflight-native.log`.
411 411
412 Packages 3A–3C are implemented and reviewed. Relative weights preserve split 412 Packages 3A–3C are complete; implementation is committed as `3eab2a35`. Relative
413 proportions across window sizes. Dragging and prefix + `r` use one minimum-clamped 413 weights preserve split proportions across window sizes. Dragging and prefix + `r` use one minimum-clamped
414 divider operation. Keyboard direction selects the nearest matching-axis ancestor; 414 divider operation. Keyboard direction selects the nearest matching-axis ancestor;
415 drag capture ends on release, geometry/focus changes, or keyboard modal transitions. 415 drag capture ends on release, geometry/focus changes, or keyboard modal transitions.
416 The proposed resize defaults are in the spec; ergonomic acceptance remains pending. 416 The resize trial defaults are in the spec; recorded-demo acceptance is complete.
417 417
418 Adversarial review resolved actual-key repeat leakage, ignored modal keys repeating 418 Adversarial review resolved actual-key repeat leakage, ignored modal keys repeating
419 after exit, and mouse drag state surviving picker or resize-key transitions. The 419 after exit, and mouse drag state surviving picker or resize-key transitions. The
@@ -462,5 +462,20 @@ Private demo: `https://charizard.folk-amberjack.ts.net/sprint3/`; HTTPS byte-ran
462 playback returned 206. Its loopback server is `/tmp/muxg-sprint3-demo/server.py` 462 playback returned 206. Its loopback server is `/tmp/muxg-sprint3-demo/server.py`
463 on port 18766. The earlier Sprint 2 route remains intact. To remove only this 463 on port 18766. The earlier Sprint 2 route remains intact. To remove only this
464 route, use `tailscale serve --https=443 --set-path /sprint3 off`, then stop that 464 route, use `tailscale serve --https=443 --set-path /sprint3 off`, then stop that
465 owned server. These resize checks use SDL-injected input; hands-on ergonomics and 465 owned server. The original resize checks use SDL-injected input.
466 remote-specific resizing were not separately claimed as validated this sprint. 466
467 The user requested a mouse-focused demo, then explicitly approved it: “demo approved!”
468 on 2026-09-05. This closes Sprint 3's product gate. The follow-up recording uses
469 actual Wayland virtual-pointer motion and button events, with `grim -c` including
470 the cursor. Both dividers moved in both directions, movement stopped on release,
471 and all three kernel PTY sizes matched. No product changes were needed. It contains
472 114 continuous compositor frames over 22.8 seconds without audio. Log:
473 `/tmp/muxg-sprint3-mouse/record.log`; fixtures `/tmp/muxg-tiling-fprn8mxs` were cleaned.
474 Retained recording:
475 `/home/xanderle/.codex/visualizations/2026/09/04/01a06dd2-1bb6-79c3-8a66-bc6bd8f2dedf/native-tiling-sprint3-mouse.mp4`.
476 Private playback: `https://charizard.folk-amberjack.ts.net/sprint3/mouse/`, verified
477 with HTTPS 206. Its server is `/tmp/muxg-sprint3-mouse/server.py` on port 18767;
478 remove only its route with `tailscale serve --https=443 --set-path /sprint3/mouse off`
479 before stopping that owned server. No hands-on or remote-specific resize trial is
480 claimed. Sprint 4 retains lifecycle/recovery and native persistence scope; its
481 opening actions are recorded in RETRO.md.
docs/superpowers/specs/2026-09-05-native-tiling-design.md
Old New
@@ -1,7 +1,7 @@
1 # Native tiling — draft design and delivery plan 1 # Native tiling — draft design and delivery plan
2 2
3 2026-09-05. Status: Sprint 2 accepted. Sprint 3 resizing implemented and reviewed; 3 2026-09-05. Status: Sprint 3 resizing implemented, reviewed, validated, and accepted
4 native and high-DPI validation passed, with recorded-demo acceptance pending. 4 by the user after the mouse-focused recording.
5 5
6 Execution: [delegated work packages and review gates](../plans/2026-09-05-native-tiling.md). 6 Execution: [delegated work packages and review gates](../plans/2026-09-05-native-tiling.md).
7 7
@@ -140,8 +140,8 @@ and connection state; both detach and end actions must be clearly labelled.
140 140
141 ### Sprint 3 resize trial 141 ### Sprint 3 resize trial
142 142
143 The following defaults are proposed for the ergonomic trial; user acceptance is 143 The following trial defaults were accepted through recorded-demo approval on
144 pending. Prefix + `r` enters a visibly labelled resize mode. `h`/Left and `l`/Right 144 2026-09-05. Prefix + `r` enters a visibly labelled resize mode. `h`/Left and `l`/Right
145 move the focused pane's nearest ancestor vertical divider left/right by one cell 145 move the focused pane's nearest ancestor vertical divider left/right by one cell
146 width; `k`/Up and `j`/Down move its nearest ancestor horizontal divider up/down by 146 width; `k`/Up and `j`/Down move its nearest ancestor horizontal divider up/down by
147 one cell height. Direction moves the divider in screen coordinates regardless of 147 one cell height. Direction moves the divider in screen coordinates regardless of