FABRIC.md: item 4.5b complete -- TimeTrustState.ticks fixed, three-arch verified

Marks 4.5b done with the verification record (three log dirs, all reaching
[Hera] ok> at unchanged -O0). Routine artifacts from this session's
three-arch runs: capsules/BLOCK_MAP.md, disk/artemis.img, DOE CSVs, QEMU
serial logs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-11 10:09:56 -04:00
co-authored by Claude Sonnet 5
parent 5cbb04c60a
commit bc126c5a91
12 changed files with 54863 additions and 90 deletions
+13 -1
View File
@@ -5454,7 +5454,7 @@ document and committing that amendment as its own item.*
> No other ISR-reachable global state was found beyond what's listed above, on any of the
> three architectures.
- [ ] **4.5b — Fix every hazard 4.5a found.** Depends on 4.5a. Code fix, no optimization
- [x] **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
@@ -5466,6 +5466,18 @@ document and committing that amendment as its own item.*
is now safe).
*Refs:* 4.5, 4.5a.
> **Done 2026-08-11.** 4.5a found exactly one hazard, so this fixes exactly one field:
> `TimeTrustState.ticks` (`include/starkernel/timer.h:90`) marked `volatile` in place,
> rather than folded into the `g_pending_counter` handoff — `ticks` is a simple monotonic
> counter with a single ISR writer and no derived-state computation on the mainline side
> (unlike `window`/`variance`/`trust`, which genuinely need `heartbeat_service()`'s
> deferred-processing pattern), so a direct `volatile` on the one hazardous field is the
> narrower fix and leaves the struct's other fields — which don't need it — unaffected.
> Three-arch acceptance boot clean at unchanged `-O0`: amd64 `logs/20260811-100623/`,
> aarch64 `logs/20260811-100724/`, riscv64 `logs/20260811-100825/`, all reaching
> `[Hera] ok>`. This proves no regression, not that optimization is safe yet — that's
> 4.5e's job once 4.5c/4.5d actually turn it on.
- [ ] **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