From 074466f271de3fa57184447ba94726b45c7a313c Mon Sep 17 00:00:00 2001 From: Robert Allan James Date: Tue, 11 Aug 2026 23:44:30 -0400 Subject: [PATCH] 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 --- FABRIC.md | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/FABRIC.md b/FABRIC.md index 638e5b4..b31f070 100644 --- a/FABRIC.md +++ b/FABRIC.md @@ -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.5a–4.5f are done**, ahead of whatever would otherwise