FABRIC.md: defer toggle meta-key choice, add morning resume punch list

TAB was recorded too specifically in 4.4u/4.4v -- Bob deferred the exact
toggle key (TAB/Ctrl+TAB/other) to decide later; both items now say so
and 4.4v's interception scope is keyed off "whatever key gets chosen"
instead of hardcoded to TAB.

Added an explicit six-step breakpoint/punch list after 4.4v recording
the dependency-ordered resume sequence for tomorrow: pin 4.4u's open
numbers, redo 4.4n's CANVAS math, decide the toggle key, build 4.4v,
draw the scroll box's border, then build 4.4r.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-11 23:44:30 -04:00
co-authored by Claude Sonnet 5
parent fa8d7ab7dd
commit 074466f271
+36 -6
View File
@@ -5819,11 +5819,17 @@ document and committing that amendment as its own item.*
All REPL output/scrollback history (4.4q) renders inside this box. **Not yet drawn**
4.4t confined content to this rect but never stroked a visible border on it.
7. **Above the box: nothing, by default** — reserved blank space, no permanent content.
8. **The toggle (4.4r) is bound to the TAB key.** Toggling hides the box's contents; at that
point the box's own footprint *and* the blank space above it become one unified, full
8. **The toggle (4.4r) is bound to a meta key — exact key not yet decided** (candidates
floated: TAB, Ctrl+TAB, or something else; Bob deferred picking one, 2026-08-11 — "we'll
figure out what meta keys we wanna use for that part later"). Whatever key it ends up
being, it flips the same "flipping" behavior: toggling hides the box's contents, and at
that point the box's own footprint *and* the blank space above it become one unified, full
CANVAS free-play area for vector/graphics work. Toggling again restores the box and its
scrollback content undisturbed. **The REPL strip (steps 1-4) is never covered by this —
toggle state only ever affects the box and the space above it, never the bottom strip.**
4.4v's keyboard-bridge work needs to intercept *whatever* key is chosen before it reaches
the line buffer, not specifically TAB — don't hardcode TAB-interception logic assuming
this is locked.
**Colors, decided explicitly:** REPL strip characters — **bright white** (`0xFFFFFF`,
`FB_ANSI_PALETTE[15]`). The two horizontal lines bounding the REPL strip — **gray** (exact
shade not yet pinned to a specific palette index or RGB triple; use a mid-gray consistent
@@ -5887,10 +5893,11 @@ document and committing that amendment as its own item.*
confirm which `i8042.c` actually captures, don't assume — plus `virtio_input.c`'s `EV_KEY`
codes for aarch64/riscv64, both need a table); `sk_readline()` gains a second poll path
alongside its existing serial read, merging both sources into the same line buffer (matches
the "merged serial+keyboard source" language already on record from the 4.3.5 entries); TAB
specifically needs to be intercepted *before* it reaches the line buffer as a character, and
routed to whatever the 4.4r toggle word ends up being, not inserted as a literal tab
character.
the "merged serial+keyboard source" language already on record from the 4.3.5 entries);
whatever meta key 4.4u eventually settles on for the toggle (TAB/Ctrl+TAB/other — not decided
yet, see 4.4u step 8) needs to be intercepted *before* it reaches the line buffer as a
character, and routed to the 4.4r toggle word instead of inserted literally — the interception
mechanism should be keyed off "the chosen toggle key," not hardcoded to TAB specifically.
*Done when:* typing at a real (or QEMU-emulated) keyboard produces the same REPL behavior as
serial injection does today, on all three architectures, verified by QEMU boot with a
keyboard event injected via QEMU's own input-send-event monitor command (not socat/serial),
@@ -5898,6 +5905,29 @@ document and committing that amendment as its own item.*
CLAUDE.md.
*Refs:* §27.8, 4.3.5 series, 4.4r, 4.4u, `docs/lithosananke/ROADMAP.md` M8 section.
> **Session breakpoint, 2026-08-11 night — punch list for resume, not a new item.** Nothing
> below this line is implemented; recorded so "continue" tomorrow picks up exactly here
> instead of re-deriving it. In order:
> 1. **Pin 4.4u's still-open numbers with Bob**: exact gray RGB for the REPL-strip border
> lines (currently just "a mid-gray, not chosen"); reconcile the "~255/256 char" REPL
> input-line width against the real `INPUT_BUFFER_SIZE`=1025 (CLAUDE.md); confirm the
> 15px/15px REPL-strip gaps and 8px box gap are final, not just the current mockup
> working values.
> 2. **Redo 4.4n's CANVAS-rectangle math** once 4.4u's real (much smaller than 96px) strip
> height is pinned — this is arithmetic against already-known numbers, not a new design
> question, but must happen before any drawing code touches CANVAS sizing.
> 3. **Decide the toggle meta-key** (TAB/Ctrl+TAB/other) — explicitly deferred by Bob
> 2026-08-11, needed before 4.4v's interception code can be written.
> 4. **Build 4.4v** (keyboard→REPL bridge) — scancode/EV_KEY→ASCII tables, second poll path
> in `sk_readline()`, meta-key interception. Three-arch verified via QEMU's
> `input-send-event` monitor command, not socat/serial injection (that would only prove
> the REPL side works, not the keyboard side).
> 5. **Draw the scroll box's visible border** (4.4t confined content to the rect but never
> stroked a line on it — small, separable from 4.4v).
> 6. **Build 4.4r** (hide/show toggle) — depends on 1-5 above being real, not just planned.
> None of steps 1-6 has code yet. Do not skip ahead per §25.0 rule 1 — this order is also the
> dependency order, not an arbitrary preference.
- [ ] **4.5 — URGENT, flagged by Captain Bob 2026-08-11: the kernel build has never used any
compiler optimization.** **Blocking priority, set by Captain Bob 2026-08-11: no other
punch-list item is worked until 4.5a4.5f are done**, ahead of whatever would otherwise