FABRIC.md: item 4.4p -- CANVAS geometry verified via one-shot probe, all three architectures
Verification only, no permanent code (matches this item's own title and 4.4i's same-shape precedent -- 4.4l-4.4o were geometry decisions, not drawing code). One-shot diagnostic probe in sk_repl() drew 4.4o's box outline plus a strip-top marker, then was reverted after capture per this document's write/run-once/capture/revert discipline. Measured pixel bounds directly from each screendump (not eyeballed) and confirmed exact matches against 4.4o's computed coordinates on all three architectures: amd64 box x:[320,959] y:[104,583], strip marker y:704; aarch64/riscv64 box x:[80,719] y:[4,483], strip marker y:504. Observed, not fixed here: on the small architectures the REPL banner text visibly overlaps the box's top edge, because vt100's cursor grid still spans the whole screen rather than being confined to the 96px strip -- a real gap between the landed REPL path and the mockup, belongs to 4.4q/4.4r's wiring work, not this item. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
68840bed0c
commit
277845e3bf
@@ -5563,13 +5563,56 @@ document and committing that amendment as its own item.*
|
||||
> - aarch64/riscv64: box bottom (raster) = 4+480 = 484 → `y_cartesian = 600−484 = 116`.
|
||||
> **Bottom-left (80, 116).**
|
||||
|
||||
- [ ] **4.4p — Three-arch screendump verification of 4.4l–4.4o.** Geometry only — not the
|
||||
- [x] **4.4p — Three-arch screendump verification of 4.4l–4.4o.** Geometry only — not the
|
||||
toggle or scrollback.
|
||||
*Done when:* screendump on all three architectures shows the 640×480 box centered within
|
||||
CANVAS at the computed coordinates, with the fixed gap above the REPL strip visible;
|
||||
three-arch QEMU boot + logs per CLAUDE.md.
|
||||
*Refs:* §27.8.
|
||||
|
||||
> **Done 2026-08-11 — one-shot diagnostic probe, reverted after capture, per this document's
|
||||
> established write/run-once/capture/revert discipline.** Nothing in 4.4l–4.4o produced
|
||||
> persistent drawing code (they were geometry decisions feeding 4.4q/4.4r, which build the
|
||||
> box for real); this item's own title is "verification", matching 4.4i's same-shape
|
||||
> no-permanent-code precedent. Probe drew the 4.4o box outline (4 `fb_fill_rect()` strips,
|
||||
> 2px stroke, green) plus a full-width red marker at 4.4n's strip-top edge (so the gap is
|
||||
> observable, not just the box), inserted in `sk_repl()` right after
|
||||
> `console_fb_enable_ttf()` — after the `-O2`/POST-safe boundary, before
|
||||
> `vt100_enable_ttf()`'s own `erase_display(2)` would otherwise still be pending (it isn't;
|
||||
> that runs inside `console_fb_enable_ttf()` itself, so the probe drawing correctly lands
|
||||
> *after* the clear, not wiped by it).
|
||||
>
|
||||
> **Measured, not eyeballed** — scanned each PNG's raw pixels in Python for the drawn
|
||||
> colors' bounding box, compared against 4.4o's computed values exactly:
|
||||
> - amd64: green box x:[320,959] y:[104,583] (640×480 exactly), red marker y:[704,705] —
|
||||
> matches 4.4o's (320,104) and 4.4n's strip-top y=704 precisely.
|
||||
> - aarch64: green box x:[80,719] y:[4,483] (640×480 exactly), red marker y:[504,505] —
|
||||
> matches (80,4) and y=504 precisely.
|
||||
> - riscv64: identical measured bounds to aarch64 (same resolution, same geometry) —
|
||||
> x:[80,719] y:[4,483], red marker y:[504,505].
|
||||
>
|
||||
> Screendumps:
|
||||
> [evidence/amd64/qemu-screenshot-20260811-202526-4.4p-canvas-geometry-probe.png](evidence/amd64/qemu-screenshot-20260811-202526-4.4p-canvas-geometry-probe.png),
|
||||
> [evidence/aarch64/qemu-screenshot-20260811-202845-4.4p-canvas-geometry-probe.png](evidence/aarch64/qemu-screenshot-20260811-202845-4.4p-canvas-geometry-probe.png),
|
||||
> [evidence/riscv64/qemu-screenshot-20260811-203207-4.4p-canvas-geometry-probe.png](evidence/riscv64/qemu-screenshot-20260811-203207-4.4p-canvas-geometry-probe.png).
|
||||
>
|
||||
> **Observed, not fixed here (belongs to later wiring items):** on aarch64/riscv64, where
|
||||
> the box top sits only 4px below the CANVAS top, the REPL banner text visibly overlaps the
|
||||
> box's top edge in the screendump. This is because `vt100`'s cursor grid still spans the
|
||||
> *entire* screen, top-anchored at (0,0) — it has never been confined to the 96px strip
|
||||
> 4.4n/4.4m defined; that confinement is §27.6's mockup intent but isn't any numbered item's
|
||||
> job yet. Not a geometry error in this item's own measured bounds (which are exact); a real,
|
||||
> known gap between the landed REPL text path and the mockup, worth its own item when
|
||||
> 4.4q/4.4r pick this up.
|
||||
>
|
||||
> Three-arch boot+log basis (probe code present during these particular boots, harmless —
|
||||
> drawing happens after POST/capsule birth, confirmed by unaffected `Failed: 0` and identical
|
||||
> dict-hashes): amd64 (`logs/20260811-202330/amd64/`), aarch64
|
||||
> (`logs/20260811-202700/aarch64/`), riscv64 (`logs/20260811-203102/riscv64/`).
|
||||
>
|
||||
> Probe code reverted from `repl.c` immediately after screendump capture; tree confirmed
|
||||
> clean.
|
||||
|
||||
- [ ] **4.4q — Scrollback, ~1000 lines.** A circular buffer of prior scroll-box lines, target
|
||||
depth approximately 1000 (Captain Bob's own qualification: "something along those lines,"
|
||||
not a hard-locked spec number). Storage mechanism (`kmalloc` ring buffer vs. static array)
|
||||
|
||||
Reference in New Issue
Block a user