From 2e332b579ce58de26aadda2a198324dd2ff15adf Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Wed, 22 Jul 2026 08:29:33 -0400 Subject: [PATCH] docs(vterm): record PR 130 review round 1 Align the durable handoff with the approved escape-prefix contract, record the performance and lifecycle hardening, update the Stage 2 verification map, and publish exact final gate evidence in the active-work ledger. --- docs/active-work.md | 21 +++++++++++++-------- docs/agent-handoff.md | 40 +++++++++++++++++++++++++--------------- docs/vterm-framing.md | 3 ++- 3 files changed, 40 insertions(+), 24 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index a8d34fa..cae4034 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -55,7 +55,7 @@ If it does not, stop and repair the remote/fetch configuration. ## Vterm Stage 2 implementation lane - Portable branch: `githubsucks/vterm-tui` -- Feature head: `da8f6ae`; first published ledger checkpoint: `d2fca0c` +- Feature head after review round 1: `8702791` - Base: canonical `main` @ `f1a2f75` (handoff refresh #128 atop config registry #127 and Vterm Stage 1 #126). - PR: #130, , open against @@ -66,15 +66,20 @@ If it does not, stop and repair the remote/fetch configuration. clipboard/BEL through the authenticated frontend, and routes daemon terminal input by connection source. Protocol remains v18; Stage 2 changes neither the wire schema nor the GPU renderer. +- Review round 1: addressed. Dispatch now requires `C-c` before terminal-local + editor bindings; non-terminal context operations error; controller + replacement is atomic per frontend; zero-area layouts retain view anchors; + view projection borrows retained rows instead of deep-cloning scrollback. - Implementation commits: `39e07cb`, `7c39535`, `0a846d9`, `0dacac7`, - `dc92257`, merge `0ddff24`, and final integration hardening `da8f6ae`. -- Final from-start verification: `cargo fmt --check`; strict workspace - Clippy; 1,742 default + 1,918 CRDT library tests (3 ignored each); - Stage 1 acceptance 9 default + 10 CRDT; Stage 2 acceptance 3 default + - 3 CRDT; statusline acceptance 7 default + 8 CRDT; M4 114 passed - (3 ignored, 1 filtered); required GPU 109; workspace 2,869 passed across + `dc92257`, merge `0ddff24`, integration hardening `da8f6ae`, and first-review + fixes `8702791`. +- Review-round final verification: `cargo fmt --check`; strict workspace + Clippy; 1,743 default + 1,919 CRDT library tests (3 ignored each); + Stage 1 acceptance 9 default + 10 CRDT; Stage 2 acceptance 4 default + + 4 CRDT; statusline acceptance 7 default + 8 CRDT; M4 114 passed + (3 ignored, 1 filtered); required GPU 109; workspace 2,871 passed across 81 suites (19 ignored, 1 filtered); `git diff --check` clean. -- Next: user review rounds. Do not merge without explicit authorization. +- Next: second user review. Do not merge without explicit authorization. Recovery worktree on a machine that does not already own the branch: diff --git a/docs/agent-handoff.md b/docs/agent-handoff.md index 4f7fc3a..a66d0cd 100644 --- a/docs/agent-handoff.md +++ b/docs/agent-handoff.md @@ -1,9 +1,10 @@ # Agent handoff — cross-machine continuity -**Last updated: 2026-07-21, after the config registry (#127), Vterm -Stage 1 terminal core (#126), and handoff refresh (#128) landed on -`main`, atop completed Themes Arc 4 (#120/#124/#125). Vterm Stage 2 is -implemented on `vterm-tui`; Stage 3 is not implemented.** +**Last updated: 2026-07-22, after Vterm Stage 2 PR #130 review round 1 +was addressed on `vterm-tui`; config registry (#127), Vterm Stage 1 +terminal core (#126), and handoff refresh (#128) are landed on `main`, +atop completed Themes Arc 4 (#120/#124/#125). Vterm Stage 3 is not +implemented.** This file is the bridge between development machines. If you are an agent reading this on a fresh clone: this document plus the `docs/*-framing.md` @@ -233,12 +234,15 @@ commands, read `docs/active-work.md` immediately after this file. - **Stage 2 TUI is implemented on `vterm-tui`** (`docs/vterm-framing.md` Revision 7, criteria 15–27). `TerminalViewKey` keys per-frontend/window projection state over one shared process/screen; logical row anchors retain - scroll/selection through reflow. A most-recent authenticated controller - owns input and cell resize, with release on focus/switch/kill/detach. + scroll/selection through reflow. One authenticated frontend controls at + most one session, with atomic replacement and release on + focus/switch/kill/detach. - The strict `pmacs.terminal` Lua surface owns open/state/view/send/terminate - and context-implicit scroll/copy commands. Buffer-local terminal keymaps - resolve before raw child transport; fixed `C-c` remains the terminal escape - and owns its continuation per frontend. Copy drains through the acting + and context-implicit scroll/copy commands; the latter error unless the + invoking frontend's active window is a terminal. Fixed `C-c` is the + per-frontend terminal escape: only its next key reaches terminal-local + editor bindings, while unescaped bound keys pass through to the child. + `C-c C-c` sends one literal interrupt. Copy drains through the acting frontend's clipboard path; active BELs drain once locally and per daemon frontend, while historical/passive bells are baseline-suppressed. - TUI composition paints owned terminal cells/styles only inside each @@ -251,12 +255,18 @@ commands, read `docs/active-work.md` immediately after this file. isolation, clipboard/modeline behavior, and a hermetic real `/bin/sh` TUI PTY smoke. Stage 2 changes no wire schema or GPU renderer; protocol remains v18 until Stage 3. - - Integrated Stage 2 final gate: `cargo fmt --check`; strict workspace - Clippy; 1,742 default + 1,918 CRDT library tests (3 ignored each); - Stage 1 acceptance 9 default + 10 CRDT; Stage 2 acceptance 3 default + - 3 CRDT; statusline acceptance 7 default + 8 CRDT; M4 114 passed - (3 ignored, 1 filtered); required GPU 109; workspace 2,869 passed - across 81 suites (19 ignored, 1 filtered); `git diff --check` clean. + - PR #130 review round 1 (`8702791`) aligned dispatch with the approved + escape-prefix contract, closed the non-terminal Lua error path, made + controller replacement atomic, retained zero-area view anchors, removed + duplicate detach work, and replaced per-view deep scrollback clones with + borrowed live/published row projections. Focused child-input coverage pins + both unescaped bound-key passthrough and `C-c C-c`. + - Review-round final gate: `cargo fmt --check`; strict workspace Clippy; + 1,743 default + 1,919 CRDT library tests (3 ignored each); Stage 1 + acceptance 9 default + 10 CRDT; Stage 2 acceptance 4 default + 4 CRDT; + statusline acceptance 7 default + 8 CRDT; M4 114 passed (3 ignored, + 1 filtered); required GPU 109; workspace 2,871 passed across 81 suites + (19 ignored, 1 filtered); `git diff --check` clean. - **PARKED: kill-ring browser + persistence.** Revision 2 framing is preserved on branch `kill-ring-browser`, but its `0efb5cd` scout is stale and must be repeated before implementation. No PR or implementation is diff --git a/docs/vterm-framing.md b/docs/vterm-framing.md index 4ac13f9..f10ad74 100644 --- a/docs/vterm-framing.md +++ b/docs/vterm-framing.md @@ -1150,8 +1150,9 @@ coverage remains beside the owning implementation. The criteria map as follows: paste_and_focus_are_exact, unsupported_keys_are_invisible}` and the real-TUI input/paste path. - **19:** `editor::tests::dispatch_prefix_state_is_independent_per_frontend`, + `terminal_escape_gates_local_bindings_and_double_escape_sends_interrupt`, `lua_surface_is_strict_fresh_transactional_and_context_safe`, and the - real-TUI terminal-escape/quit path. + real-TUI escaped editor-binding/quit path. - **20:** `terminal::input::tests::sgr_mouse_modes_modifiers_and_coordinates` plus the real-TUI editor-owned scroll/drag/copy path. - **21:** `terminal::view::tests::{copy_joins_soft_wraps_trims_default_blanks_and_separates_hard_rows,