FABRIC.md: item 4.5f -- reorder experiment confirms -O2 fixes the stall

Uncommitted experiment (code reverted after capture, per Captain Bob):
moved console_fb_init() before capsule_birth_mama() in kernel_main.c,
amd64 only. At -O2 the boot completes cleanly and reaches ok> well
inside a 300s bound, versus the indefinite stall previously seen at
-O0. Real cost: ~12x more heartbeat ticks during boot from the extra
framebuffer scroll volume -- not free, but not a hang.

Screendump confirms the actual point of 4.4g: the framebuffer now
carries the full HADES/ECW/Stadium/self-test transcript, not just the
small post-birth tail.

This informs 4.4g's open reorder decision, it doesn't make it -- 4.5f
stays unchecked (single-arch feasibility check only, not the three-arch
acceptance pass its own done-when requires).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-11 17:06:09 -04:00
co-authored by Claude Sonnet 5
parent a1c9fc7330
commit 9b117c787f
6 changed files with 18314 additions and 36 deletions
+28
View File
@@ -5835,6 +5835,34 @@ document and committing that amendment as its own item.*
> numbers still hold, or even remain comparable, once the kernel is built at a different
> optimization level. Not scoped here — flagging so it isn't lost if 4.5 ever lands.
> **Experiment run, 2026-08-11 — uncommitted, reverted after capture, per Captain Bob's
> explicit instruction this was informational only (4.4g's reorder decision is still open,
> not made by this experiment).** `console_fb_init()`'s call site moved in `kernel_main.c`
> from after `capsule_birth_mama()` to just before it (same code, no logic changes). amd64,
> `-O2`: boot completed cleanly, reached `ok>` in well under the bounded 300s test window
> (previously stalled indefinitely at `-O0` — 12,700+ lines, still running after 3 minutes).
> Real cost, not zero: 2785 heartbeat ticks at 100 Hz vs. ~176231 ticks on the
> non-reordered `-O2` boot from 4.5d/4.5e — the framebuffer-visible fleet-birth/self-test
> transcript adds substantial real time (screen-draw + scroll volume), it just no longer
> hangs. Screendump confirms the actual point: the framebuffer now shows the full
> HADES/ECW/Stadium/self-test transcript, not just the small post-birth tail —
> `evidence/amd64/qemu-screenshot-20260811-170329-4.5f-reorder-experiment.png`. Captured via
> a QEMU HMP monitor socket + `screendump` (the `qemu` Makefile target runs `-display none`
> with no monitor by default; this run added `-chardev socket,id=mon0,... -mon
> chardev=mon0,mode=readline` to get one). `Makefile.starkernel`'s amd64 `qemu` target
> deadline was temporarily dropped from 43200s to 300s for this one test run, then reverted;
> `kernel_main.c`'s reorder was reverted immediately after the screendump was captured. Not
> run on aarch64/riscv64 — this was a single-architecture feasibility check, not the item's
> own three-arch acceptance pass, which only applies once the reorder is actually decided
> and landed.
>
> **What this answers and doesn't:** confirms the stall was specifically an `-O0` cost
> problem, not a correctness bug in the reorder itself — `-O2` alone is sufficient to make
> it viable. Does **not** decide 4.4g's open question (whether the reorder is wanted); it
> only removes "it hangs" as a reason not to. The real-cost number above (≈12× more
> heartbeat ticks) is new information for that decision and wasn't available before this
> run.
- [ ] **4.6 — Artemis last.** It works today; it is the thing that cannot be broken.
*Refs:* §10.