docs: record the bottom-panel Stage 1 lane

Adds the lane to docs/active-work.md: branch, base, what Stage 1
implemented, the verification run, and the two known local-only test
caveats (the parallel-load GPU flake and compile_mode_acceptance's
single-thread requirement).

The durable handoff snapshot stays untouched until the PR merges, per
its own update protocol.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Levi Neuwirth 2026-07-24 14:20:16 -04:00
parent 683c9b86aa
commit 2a9c11461c
1 changed files with 49 additions and 0 deletions

View File

@ -54,6 +54,55 @@ git status --short --branch
The `git log` command must expose `0dd16a5` or a newer intentional main.
If it does not, stop and repair the remote/fetch configuration.
## Bottom-panel lane (window placement + side windows) — Stage 1 IN REVIEW
- Portable branch: `githubsucks/bottom-panel`, worktree
`../pmacs-bottom-panel`, based on `githubsucks/main` @ `ddaa80d`.
- Approved framing: `docs/bottom-panel-framing.md` revision 4, committed
as the branch's first commit (`c27f75a`).
- **Stage 1 implemented; no wire change (protocol stays v20).** What
landed on the branch:
- `src/window.rs`: `WindowParams` (`side` / `fixed_rows` / `dedicated`
+ implementation-owned `quit_action` and `origin_document`), `Side`,
a depth-bounded `QuitAction`, `MIN_WINDOW_OUTER_ROWS = 2`,
`Layout::compute(area, fixed)`, the `subtree_min_rows` /
`interactive_min_rows` recursions, `boundary_below`, and the three
new `FrontendView` fields (`panel_capable`, `frame_geometry`,
`panel_hidden`).
- `src/editor_core.rs`: `primary_document_window`, the non-side target
rule, `display_buffer` + the Q#BP3 placement policy, `quit_window`,
`reconcile_panel_layout_core`, `resize_boundary`, per-frontend
`JumpEntry`s, and the shared `resolve_target_buffer` seam that the
#148 initial-target bootstrap now routes through as well.
- `src/editor.rs`: the reconciliation transaction, geometry
declaration, the side-window `dispatch_idle_for` gate, the divider
paint, and the divider drag.
- `src/lua_bindings/window_panel.rs`: the whole `pmacs.window` panel
surface plus the shared adopter-placement helpers;
`builtin/runtime/window.lua` owns `window.panel-height` /
`window.min-height` and the resize commands.
- Adopters: `listview.open`, `compile.run`, `pmacs.terminal.open` all
take `display = "current" | "panel"` (Stage 1 default `"current"`);
LSP/compile visits route through `display_file`.
- Verification on this branch: `cargo fmt --check` clean; strict
workspace Clippy clean; 1,815 default + 1,992 CRDT library tests;
`bottom_panel_stage1_acceptance` 42/42; M4 121; required GPU 152;
`gpu_initial_target_acceptance` 1 default + 14 CRDT; vterm Stage 2 4 /
Stage 3 5; folding Stage 2 48; statusline 7; listview 6; desktop 11;
workspace sweep 3,103 passed across 86 suites; `git diff --check`
clean.
- **The sweep's only red was the known parallel-load GPU flake**:
`font_facts_out_of_range_sizes_fail_closed`,
`built_in_only_overwide_readout_…`, and
`statusline_wire_validation_is_atomic_…` fail under a loaded
workspace run (wgpu device contention) and pass both isolated and in
the dedicated `PMACS_REQUIRE_GPU=1 cargo test -p pmacs-gpu` gate.
- `compile_mode_acceptance` likewise needs `--test-threads=1` locally;
it is 67/67 there.
- Stage 2 (the GPU panel band, next available protocol version) has its
own re-framing obligation before implementation; Stage 3 is the default
placement flip.
## Folding lane (Arc 6) — Stages 1 and 2 MERGED; Stage 3 (GPU) is next
Both shipped stages are on `main`; nothing in this arc is in flight. Stage 3