FABRIC-3.md §XXXV.12: closes two real gaps found by walking the disk-to- PDF pipeline end to end. (1) doe_trial_slot_t had no integrity check of its own -- 64 slots share one devblock via a read-modify-write, so a crash mid-write to any slot could silently corrupt its siblings with nothing to catch it. Added an 8-byte CRC (same discipline the control header already had), computed/verified the same way. (2) The campaign itself had no crash-resume -- a reboot always restarted the whole 18-trial loop from index 0 even with good persisted data already on disk. Since the trial matrix is fully deterministic from (seed, n-reps), resuming needs no persisted "which trials ran" state, just a count: DOE-RESUME-COUNT (new kernel primitive, same pattern as DOE-PERSIST-TRIAL) walks the ring counting CRC-valid records for a given ISA; MU-EXEC-CAMPAIGN's signature changes to accept a start-idx and seeds MU-RUN-ID/the DO loop from it. Each RUN-*-CAMPAIGN entry word now calls DOE-RESUME-COUNT before launching. Both block-namespace-checked to fit existing headroom before committing to the design -- no new blocks needed. Real bug caught by the build, not shipped: an implicit compiler-inserted alignment byte before slot_crc silently broke the hand-computed trailing pad size (doe_trial_slot_size_check failed to compile). Fixed with an explicit alignment field, matching log_slot_t's own zero-implicit- padding discipline. extract_doe_region.py now verifies both CRCs with the REAL CRC-64/XZ algorithm from block_subsystem.c's compute_crc64() (ported and verified bit-for-bit against a native C reference this session), replacing §XXXV.11's incorrect guessed implementation. Verified: clean compile on all 3 ISAs (amd64/aarch64/riscv64 -- amd64 verified via isolated build only, not boot, since the real per-ISA campaign is currently live on the only QEMU instance this project's own rule allows), both capsules pass mkcapsule --lint, CRC64 bit-exact via native reference. Live boot-verification explicitly deferred until that campaign finishes or is interrupted -- not claimed as tested when it wasn't. Found (not missed) a real compatibility consequence: the running campaign's data is in the old pre-CRC format, so it reads as "corrupt" under the new extractor and DOE-RESUME-COUNT will resume it from 0, not mid-campaign -- no data loss, cheap redundant re-run of ~1-2 trials. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BWpNjdwPtFLuVLaAq44L9K
scripts/
Utility scripts for building, profiling, DoE experiments, and documentation.
DoE / experiment scripts
| Script | Purpose |
|---|---|
run_doe.sh |
Run a standard DoE experiment |
run_factorial_doe.sh |
2^7 factorial DoE |
run_factorial_doe_with_heartbeat.sh |
Factorial DoE with heartbeat metrics |
run_nested_doe.sh |
Nested DoE design |
run_ablation_study.sh |
Physics loop ablation |
run_optimization_doe.sh |
Optimization-focused DoE |
run_quick_doe_test.sh |
Quick smoke-check DoE (1 rep) |
extract_doe.sh |
Extract CSV rows from QEMU serial logs |
Build / profile scripts
| Script | Purpose |
|---|---|
perf-profile.sh |
Linux perf profiling harness |
perf-profile_control.sh |
Control run for perf comparison |
rundisk.sh |
Boot a disk image in QEMU |
qemu_screenshot.sh |
Capture QEMU serial output |
Phase 8 / identity testing scripts
| Script | Purpose |
|---|---|
bleach_zuse_img.sh |
Reset disk/zuse.img back to pristine/unminted (blank) state, for repeatable first-boot mint-flow testing |
FORTH capsule scripts
| Script | Purpose |
|---|---|
4th-apply-init.sh |
Apply init.4th patches to capsule set |
4th-update-init.sh |
Update init.4th across capsule variants |
Documentation scripts
| Script | Purpose |
|---|---|
asciidoc-to-latex.sh |
Convert AsciiDoc to LaTeX |
convert-markdown-to-asciidoc.sh |
Markdown → AsciiDoc |
doxygen-xml-to-asciidoc.py |
Doxygen XML → AsciiDoc |
generate-doxygen-appendix.sh |
Build Doxygen API appendix |
build_patent_structure.sh |
Scaffold patent document structure |
setup-ide-integration.sh |
Configure IDE integration |
analyze_heartbeat_stability.R |
R analysis of heartbeat stability data |
analyze_opp2_regression.py |
Python regression analysis |
gen_pe_reloc.py |
PE relocation table generator (see also tools/) |
remove_loop_conditionals.sh |
Remove loop conditional guards |
See also
experiments/bare_metal/README.md— DoE protocols- Project root