From a3b0bb8f077ac6e40a6482dd4c3884ccc4dcce89 Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Wed, 2 Sep 2026 13:47:37 +0200 Subject: [PATCH] docs(lane): step 3 counted events; record what it counts now The completion note said step 3 was closed. It was closed with an emission-only row, against a framing that rejects emission-only rows in as many words. The entry now says what the first version measured, what replaced it, and the structural cost --- a dev-dependency from pmacs-gpu on pmacs, three doc(hidden) test-support methods, and one shared panel fixture where daemon.rs previously had its own. It also names the mutation that distinguishes the two versions: dropping the daemon's panel horizontal arm. No count of emitted events can see that, which is the whole reason the framing asked for an effect. --- docs/active-work.md | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index c59ab71..5722721 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -322,7 +322,7 @@ lifetime tables made frontend-specific. **The both-axis effect witness is no longer owed**; see the completion note below, which is the authority on what this lane still has outstanding. -**Landed so far** (latest verified code head `241e82e`)**:** B1's per-target fractional +**Landed so far** (latest verified code head `e50f38a`)**:** B1's per-target fractional wheel residual (the producer), B2's daemon-side horizontal panel leg, B3/B7's shared `scroll_window_columns` with its saturated bound and wrap pin, B4's middle-click PRIMARY paste, **B6's minimap wheel routing**, @@ -503,14 +503,23 @@ complete**, and the lane's next step is the full pre-PR gate. The last three closed in order: -- **step 3's fractional both-axis panel witness** (`302ce14`) — 0.6 - vertical, then 0.6 horizontal, both reaching nothing, because a - single accumulator fed by both axes would have the second complete - the first. Rounding instead of banking fires the sub-threshold legs; - collapsing the axes fires the cross-axis one. +- **step 3's fractional both-axis panel witness** (`302ce14`, rewritten + at `e50f38a`). The first version **counted emitted events**, which is + the blind spot the framing exists to close — it says so directly: + *"Not 'a `PanelPointer` was emitted' — the observable effect on the + panel's viewport."* It now runs both halves in one row: this + frontend's `apply_wheel` as producer, a real `EditorState` with a live + panel window as receiver, and the panel's `(view_top, view_left)` as + the assertion. **`pmacs-gpu` gained a DEV-dependency on `pmacs`** for + it, and `pmacs` three `#[doc(hidden)]` test-support methods; the + daemon's own `semantic_panel_view` delegates to one of them, so there + is a single panel fixture rather than two. The mutation that settles + it is the receiver-side one no emission count could see: dropping + `PKind::ScrollLeft`/`ScrollRight` from the daemon's panel arm fires + this row. - **R4 and R5** (`e5ab16c`). -- **B1's disposal half** (`241e82e`) — and it needed mechanism, not - just a row. `BufferId` keying distinguishes panel A from panel B for +- **B1's disposal half** (`241e82e` for panels, `a7006fa` for + terminals) — and it needed mechanism, not just a row. `BufferId` keying distinguishes panel A from panel B for free, but **not a panel closed and reopened on the same persistent buffer**, where the successor carries the same key. The `Absent` arm reset eight pieces of panel state one line at a time with the wheel