FABRIC.md: swap 4.5/4.6 -- -O0 finding moves to 4.5, Artemis last moves to 4.6
Captain Bob: the -O0-kernel finding (with its 4.5a-4.5f scoping) takes priority over Artemis-last, so it moves up to 4.5 and Artemis moves down to 4.6. Updated the three other places in this document that referenced "the 4.5 Artemis boundary" by number to point at 4.6 instead, with a note on the renumbering history for anyone reading those passages later. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
2e22303ef1
commit
e5b4f4b814
@@ -4366,9 +4366,10 @@ document and committing that amendment as its own item.*
|
||||
> This closes the keyboard-input slice opened at 4.3.5. Next per the 2026-08-07 sequencing
|
||||
> note below: glyph rendering (stroke-based font capsules), not yet scoped.
|
||||
|
||||
> **Sequencing noted 2026-08-07, not yet scoped:** keyboard input (4.3.5–4.3.5f) →
|
||||
> glyph rendering (stroke-based font capsules) → REPL — in that order, before the 4.5
|
||||
> Artemis boundary (renumbered from 4.4, 2026-08-11 — REPL now has its own 4.4 section).
|
||||
> **Sequencing noted 2026-08-07, not yet scoped:** keyboard input (4.3.5-4.3.5f) →
|
||||
> glyph rendering (stroke-based font capsules) → REPL — in that order, before the 4.6
|
||||
> Artemis boundary (renumbered from 4.4, then from 4.5, 2026-08-11 — REPL now has its own
|
||||
> 4.4 section, and Artemis moved down to make room for item 4.5's -O0 finding).
|
||||
> Recorded so the order is not lost between sessions; neither glyph
|
||||
> rendering nor REPL has *Done when* criteria yet. Per §25.0 rule 2, each gets scoped in
|
||||
> detail at its own checkpoint, not now.
|
||||
@@ -4977,8 +4978,8 @@ document and committing that amendment as its own item.*
|
||||
⋯ *(4.3.x is open-ended — more items get appended here as framebuffer/keyboard Console work*
|
||||
*is scoped item by item, developed on the fly per §25.0. 4.4 below is a new, independent*
|
||||
*section for the REPL itself — separate because the REPL is independent of the screen-output*
|
||||
*and keyboard work above. 4.5 (renumbered from 4.4, 2026-08-11) is unaffected by anything*
|
||||
*added above this marker.)*
|
||||
*and keyboard work above. Artemis's item (renumbered from 4.4 to 4.5, then to 4.6,*
|
||||
*2026-08-11) is unaffected by anything added above this marker.)*
|
||||
|
||||
- [x] **4.4 — Design-only: lock the prompt format and color values.** No code. Write down the
|
||||
exact target string — `[VM name] ok>` for now, `(user)` added later per 4.4s — and the exact
|
||||
@@ -5330,10 +5331,7 @@ document and committing that amendment as its own item.*
|
||||
so the prompt's final shape isn't lost, not because it's ready to build.
|
||||
*Refs:* §27.8, CLAUDE.md ACL section (Phase 8).
|
||||
|
||||
- [ ] **4.5 — Artemis last.** It works today; it is the thing that cannot be broken.
|
||||
*Refs:* §10.
|
||||
|
||||
- [ ] **4.6 — 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.** Found while investigating why moving `console_fb_init()` earlier
|
||||
in boot (4.4g) stalled boot indefinitely (12,700+ lines logged, still running after 3
|
||||
minutes vs. a normal few-second boot). Cross-cutting — affects the entire kernel, not just
|
||||
@@ -5388,12 +5386,12 @@ document and committing that amendment as its own item.*
|
||||
is shared. This is a real, specific, isolated bug (one field, not a sprawling unknown), not
|
||||
a hypothetical one — but it is unaudited, and enabling `-O2` before fixing it would ship a
|
||||
live regression.
|
||||
**Not scheduled as one item — broken out below (4.6a–4.6f) per §25.0 rule 1, same treatment
|
||||
**Not scheduled as one item — broken out below (4.5a–4.5f) per §25.0 rule 1, same treatment
|
||||
as 4.4's own design-only lock before 4.4a onward.** Nothing below is started; this is
|
||||
scoping only, per Captain Bob's explicit instruction 2026-08-11.
|
||||
*Refs:* discovered via 4.4g; independent of Console work.
|
||||
|
||||
- [ ] **4.6a — Full ISR/interrupt-context global-state audit, all three architectures.**
|
||||
- [ ] **4.5a — Full ISR/interrupt-context global-state audit, all three architectures.**
|
||||
Investigation only, no code change. For each architecture, enumerate every vector actually
|
||||
wired to a handler (amd64: IDT/APIC vectors in `arch/amd64/interrupts.c`; aarch64: GIC
|
||||
vectors in `arch/aarch64/interrupts.c`; riscv64: PLIC/trap causes in
|
||||
@@ -5406,22 +5404,22 @@ document and committing that amendment as its own item.*
|
||||
*Done when:* a written inventory exists here (or in a linked scratch doc) covering every
|
||||
handler on all three architectures, with every non-`volatile` ISR-touched global listed by
|
||||
file:line, or an explicit "none found" recorded per architecture.
|
||||
*Refs:* 4.6.
|
||||
*Refs:* 4.5.
|
||||
|
||||
- [ ] **4.6b — Fix every hazard 4.6a found.** Depends on 4.6a. Code fix, no optimization
|
||||
- [ ] **4.5b — Fix every hazard 4.5a found.** Depends on 4.5a. Code fix, no optimization
|
||||
flags touched yet. `TimeTrustState.ticks` is the one already-confirmed instance — mark it
|
||||
`volatile`, or fold it into the existing `g_pending_counter`/`g_pending_valid`-style
|
||||
ISR→mainline handoff pattern already used elsewhere in `heartbeat.c`, whichever fits the
|
||||
finding better once 4.6a's full inventory is in hand. Any further hazards 4.6a surfaces get
|
||||
finding better once 4.5a's full inventory is in hand. Any further hazards 4.5a surfaces get
|
||||
fixed here too, not deferred.
|
||||
*Done when:* every hazard from 4.6a's inventory is fixed; three-arch boot still clean at
|
||||
*Done when:* every hazard from 4.5a's inventory is fixed; three-arch boot still clean at
|
||||
the unchanged `-O0` (this item changes correctness under future optimization, not present
|
||||
behavior, so a clean boot here proves no regression was introduced, not that optimization
|
||||
is now safe).
|
||||
*Refs:* 4.6, 4.6a.
|
||||
*Refs:* 4.5, 4.5a.
|
||||
|
||||
- [ ] **4.6c — Decide and record the target optimization flags.** Design-only, no code.
|
||||
Depends on 4.6b (deciding flags before the known hazard is fixed is premature). Candidates
|
||||
- [ ] **4.5c — Decide and record the target optimization flags.** Design-only, no code.
|
||||
Depends on 4.5b (deciding flags before the known hazard is fixed is premature). Candidates
|
||||
to weigh, not yet chosen: matching the hosted/StarForth ladder's
|
||||
`-O2 -flto=auto -fuse-linker-plugin -DNDEBUG` (this repo's own `Makefile`'s
|
||||
`TARGET_CFLAGS_standard`, and CLAUDE.md already documents that plain `-flto` without
|
||||
@@ -5432,38 +5430,41 @@ document and committing that amendment as its own item.*
|
||||
actually uses `assert()` anywhere before copying that flag by habit from the hosted ladder.
|
||||
*Done when:* an exact flag set is chosen and written down here with the reasoning, before
|
||||
any Makefile edit.
|
||||
*Refs:* 4.6, CLAUDE.md "Important: Linker Configuration".
|
||||
*Refs:* 4.5, CLAUDE.md "Important: Linker Configuration".
|
||||
|
||||
- [ ] **4.6d — Apply the chosen flags to `Makefile.starkernel`; build all three
|
||||
architectures.** Depends on 4.6b (hazard fixed) and 4.6c (flags decided). Code change:
|
||||
- [ ] **4.5d — Apply the chosen flags to `Makefile.starkernel`; build all three
|
||||
architectures.** Depends on 4.5b (hazard fixed) and 4.5c (flags decided). Code change:
|
||||
add the flags to `COMMON_CFLAGS` (shared across all three `ARCH_CFLAGS` blocks, so this is
|
||||
one change, not three). Optimization can surface warnings `-O0` never triggers (e.g.
|
||||
`-Wmaybe-uninitialized`) under the existing `-Wall -Werror -Wextra` standard — budget time
|
||||
to fix those, not to weaken the warning set.
|
||||
*Done when:* all three architectures build with zero warnings under the existing
|
||||
`-Wall -Werror -Wextra` standard.
|
||||
*Refs:* 4.6, 4.6c.
|
||||
*Refs:* 4.5, 4.5c.
|
||||
|
||||
- [ ] **4.6e — Three-arch acceptance boot with optimization enabled.** Depends on 4.6d. This
|
||||
- [ ] **4.5e — Three-arch acceptance boot with optimization enabled.** Depends on 4.5d. This
|
||||
is the actual gate, per CLAUDE.md's non-negotiable acceptance criteria — a kernel that has
|
||||
only ever been built and accepted at `-O0` has no track record at any other optimization
|
||||
level, so this is a full fresh verification, not a formality.
|
||||
*Done when:* all three architectures boot clean to `ok>`/`zuse)ok>`, POST's dictionary-hash
|
||||
parity check still passes, logs captured in `logs/` per CLAUDE.md.
|
||||
*Refs:* 4.6, CLAUDE.md acceptance criteria.
|
||||
*Refs:* 4.5, CLAUDE.md acceptance criteria.
|
||||
|
||||
- [ ] **4.6f — Retry the 4.4g `console_fb_init()` reorder now that optimization is live.**
|
||||
Depends on 4.6e. This is the original motivating case: both attempts this session (bare,
|
||||
- [ ] **4.5f — Retry the 4.4g `console_fb_init()` reorder now that optimization is live.**
|
||||
Depends on 4.5e. This is the original motivating case: both attempts this session (bare,
|
||||
and with the `fb_scroll_rows()` volatile fix alone) stalled boot indefinitely at `-O0`.
|
||||
*Done when:* the reorder from 4.4g completes in a reasonable time (no multi-minute stall)
|
||||
on a three-arch boot, and an amd64 screendump shows the fuller boot transcript that was
|
||||
4.4g's whole point.
|
||||
*Refs:* 4.4g, 4.6.
|
||||
*Refs:* 4.4g, 4.5.
|
||||
|
||||
> **Aside, not a task:** the ACL-RWT DoE campaign's overhead numbers (CLAUDE.md, "measured
|
||||
> overhead +0.0054%–+0.0088%") were all measured at `-O0`. Nobody has asked whether those
|
||||
> 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.6 ever lands.
|
||||
> optimization level. Not scoped here — flagging so it isn't lost if 4.5 ever lands.
|
||||
|
||||
- [ ] **4.6 — Artemis last.** It works today; it is the thing that cannot be broken.
|
||||
*Refs:* §10.
|
||||
|
||||
---
|
||||
|
||||
@@ -5969,8 +5970,9 @@ of slot.
|
||||
### 27.6 Glyph rendering, UTF-8 Latin, capsule-loaded (4.3.6–4.3.6g)
|
||||
|
||||
Scoped 2026-08-09, next after the 4.3.5f checkpoint, per the 2026-08-07 sequencing note
|
||||
(§25.5): keyboard input → glyph rendering → REPL, before the 4.5 Artemis boundary (renumbered
|
||||
from 4.4, 2026-08-11 — REPL now has its own 4.4 section).
|
||||
(§25.5): keyboard input → glyph rendering → REPL, before the 4.6 Artemis boundary (renumbered
|
||||
from 4.4, then 4.5, 2026-08-11 — REPL now has its own 4.4 section, and Artemis moved down to
|
||||
make room for item 4.5's -O0 finding).
|
||||
|
||||
**Purpose and boundary.** Render text onto the CANVAS region of the Stadium UI (per the
|
||||
reviewed mockup: a fixed REPL strip at the bottom of the screen, a separate large CANVAS
|
||||
|
||||
Reference in New Issue
Block a user