From a70ee5fdc0b1f7a888b6826991cc5aba80738426 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Sun, 9 Aug 2026 16:01:58 +0200 Subject: [PATCH] docs: record review round 1 and the P1a block on the #227 lane The lane said "normal review; no merge authorization", which is no longer the state: two of three blockers are fixed and the third makes the PR merge-blocked behind the destination-capture lane. P1a is recorded as deliberately NOT fixed rather than outstanding. commit_to is the right mechanism and is not Lua-reachable outside a directory open --- DirectoryDestinationLua is nonconstructible by design and minted only in the path.open-directory dispatch --- so the fix is a prerequisite lane and this one adopts it afterwards. Recorded with the mechanical check that no diff line in either fix reaches the four named symbols, so a later reader does not have to take it on trust. The P2 entry keeps the reasoning for teardown over a canonicalized preflight, because the rejected option is the one that looks obviously better: a Lua canonicalizer would be a second copy of the Rust alias table and would go stale the day that table gains a name, reintroducing this exact bug for the new alias. Keymap::bind is the authority because it is what decides. Also recorded: there is no Lua-reachable canonicalization to build on, verified, and no binding was added to invent one. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai --- docs/active-work.md | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index a01d391..f3da0a3 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -269,8 +269,48 @@ census. **PR #227** — https://github.com/levineuwirth/pmacs/pull/227. Opened 2026-08-09 at `4002734`, after the framing was approved at revision 5 -and the full gate suite went green. Normal review; no merge -authorization. +and the full gate suite went green. **Now at `6c1631e`, MERGE-BLOCKED.** + +**Review round 1 found three blockers. Two are fixed; the third is why +this lane is blocked.** + +- **P1 fixed (`ffe5ae2`) — concurrent `status` opens were ordered by + `rev-parse` completion, not by invocation.** The generation was + minted on arrival, inside `start_status`, so the **slowest root + lookup won** rather than the newest invocation. It is now reserved at + the command and carried through the root-resolution callback, which + drops a superseded result **before any effect** — no spawn, no + `state.root` write, and no status message either, since a message + from a replaced invocation is as wrong as a panel from one. +- **P2 fixed (`6c1631e`) — a refused `keys` bind left a live, unowned + buffer.** The preflight compared **raw tokens** while `parse_key_code` + folds `RET`/`RETURN`/`ENTER` (and `SPC`/`SPACE`, `ESC`/`ESCAPE`, + `BS`/`BACKSPACE`, `DEL`/`DELETE`, case-insensitively) onto one chord, + so an alias spelling passed preflight and failed at bind time — + *after* buffer creation and intercept install. The partial rollback + removed only new keys, so later opens silently got `<2>`. + + **Fixed by full teardown, not by canonicalizing the preflight**, and + the reasoning is worth keeping: a Lua canonicalizer would be a second + copy of the Rust alias table and would go stale the day that table + gains a name, reintroducing this exact bug for the new alias. + `Keymap::bind` is the authority because it *is* what decides. There + is also **no Lua-reachable canonicalization** to build on — + `display_sequence` escapes only through `describe.key` and + `keymap.list`, both of which require the sequence to be bound + already. Verified; no binding was added for this. +- **P1a NOT fixed, and deliberately — it blocks this PR.** The async + completions display UI without capturing the initiating frontend + (`builtin/runtime/git.lua:609`, `:854`), so a result surfaces in + whichever frontend is active when git exits. `commit_to` is the right + mechanism and is **not Lua-reachable** outside a directory open, so + the fix lives in the **`destination-capture`** lane. This lane adopts + it after that lands. Verified untouched: no diff line in `ffe5ae2` or + `6c1631e` reaches `open_status_panel`, `show_diff_buffer`, + `pmacs.window.display` or `commit_to`. + +**Re-gated at `6c1631e`:** all 11 steps green, acceptance now 27 tests. +Both fixes mutation-verified. **Written with the lane's first commit, before the PR exists** — the standing correction from #171 and #215. This session it was missed on