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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
Levi Neuwirth 2026-08-09 16:01:58 +02:00
parent 6c1631eaa8
commit a70ee5fdc0
No known key found for this signature in database
1 changed files with 42 additions and 2 deletions

View File

@ -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