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** 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. 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. 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 8. **The toggle (4.4r) is bound to a meta key — exact key not yet decided** (candidates
point the box's own footprint *and* the blank space above it become one unified, full 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 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 — 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.** 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`, **Colors, decided explicitly:** REPL strip characters — **bright white** (`0xFFFFFF`,
`FB_ANSI_PALETTE[15]`). The two horizontal lines bounding the REPL strip — **gray** (exact `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 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` 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 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 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 the "merged serial+keyboard source" language already on record from the 4.3.5 entries);
specifically needs to be intercepted *before* it reaches the line buffer as a character, and whatever meta key 4.4u eventually settles on for the toggle (TAB/Ctrl+TAB/other — not decided
routed to whatever the 4.4r toggle word ends up being, not inserted as a literal tab yet, see 4.4u step 8) needs to be intercepted *before* it reaches the line buffer as a
character. 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 *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 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), 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. CLAUDE.md.
*Refs:* §27.8, 4.3.5 series, 4.4r, 4.4u, `docs/lithosananke/ROADMAP.md` M8 section. *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 - [ ] **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 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 punch-list item is worked until 4.5a4.5f are done**, ahead of whatever would otherwise