Files
StarForth/capsules/per-isa-doe.4th
T
Robert Allan JamesandClaude Sonnet 5 2da746c01c Build DOE-PERSIST-TRIAL: block-backed DoE campaign persistence, live-verified
FABRIC-3.md §XXXV.3/.4 designed this and it was never built -- two live
campaigns got launched relying entirely on a live serial-log tail before
this was caught. doe_region.c/.h mirrors log_region.c's own growable-ring
pattern (own devblock_from_top fence at 98, past log_region's ceiling at
97) to persist one trial-summary record per completed trial straight to
disk/artemis.img, surviving past QEMU exit with no host required.

Verified end to end: booted amd64, called DOE-PERSIST-TRIAL at the
console, clean BYE, then read the raw disk bytes back with QEMU fully
dead -- confirmed the exact values passed in. Wired into both
multiuser-doe.4th and per-isa-doe.4th's trial markers. Clean build, zero
new warnings, all 3 ISAs; mkcapsule --lint passes both edited capsules.

FABRIC-3.md §XXXV.10 documents the fix and the root-cause correction: two
campaigns were launched on an unbuilt persistence design before this was
caught and fixed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BWpNjdwPtFLuVLaAq44L9K
2026-09-17 16:43:46 -04:00

49 lines
1.8 KiB
Forth

Block 5117
( per-isa-doe.4th - per-ISA DoE driver. FABRIC-3 SXXXIV.4/ )
( SXXXV.5/.7: 6-cell factorial from multiuser-doe.4th's own )
( MU-EXEC-CAMPAIGN, unchanged. Adds: one fixed seed per ISA, )
( N=3 reps/cell=18 trials/ISA (ratified 2026-09-17, not the )
( N=2 SXXXV.5 recommended). Load multiuser-doe.4th FIRST. )
20260917 CONSTANT AMD64-SEED
20260918 CONSTANT AARCH64-SEED
20260919 CONSTANT RISCV64-SEED
18 CONSTANT PER-ISA-NREPS
CREATE PER-ISA-TAG-BUF 16 ALLOT
VARIABLE PER-ISA-TAG-LEN
: PER-ISA-TAG! ( c-addr u -- )
DUP 16 MIN PER-ISA-TAG-LEN !
PER-ISA-TAG-BUF PER-ISA-TAG-LEN @ CMOVE ;
S" ?" PER-ISA-TAG!
Block 5118
( artemis.img is shared across all 3 ISAs' sequential runs )
( (SXXXV.2 item 2) -- tag each trial so records can be told )
( apart. Redefines MU-EMIT-TRIAL-MARKER (not ACL-pinned in )
( multiuser-doe.4th): same fields, isa= prefixed. )
: MU-EMIT-TRIAL-MARKER ( -- )
." MU-TRIAL isa=" PER-ISA-TAG-BUF PER-ISA-TAG-LEN @ TYPE
." run=" MU-RUN-ID @ .
." cfg=" MU-CFG @ .
." rep=" MU-REP @ .
." nw=" MU-NW @ .
." mode=" MU-MODE @ .
." fail=" MU-FAIL-COUNT @ . CR
MU-RUN-ID @ MU-CFG @ MU-REP @ MU-NW @
MU-MODE @ MU-FAIL-COUNT @
PER-ISA-TAG-BUF PER-ISA-TAG-LEN @ DOE-PERSIST-TRIAL ;
Block 5119
( Per-ISA entry points, single word, no args -- for boot )
( injection or the live console. Run ONE per boot: this repo's )
( one-QEMU-at-a-time rule keeps the 3 ISAs separate, sequential)
( boots, never auto-chained here. )
: RUN-AMD64-CAMPAIGN ( -- )
S" amd64" PER-ISA-TAG!
AMD64-SEED PER-ISA-NREPS MU-EXEC-CAMPAIGN ;
: RUN-AARCH64-CAMPAIGN ( -- )
S" aarch64" PER-ISA-TAG!
AARCH64-SEED PER-ISA-NREPS MU-EXEC-CAMPAIGN ;
: RUN-RISCV64-CAMPAIGN ( -- )
S" riscv64" PER-ISA-TAG!
RISCV64-SEED PER-ISA-NREPS MU-EXEC-CAMPAIGN ;