Completed the FORTH-79 standard-dictionary cross-ISA exerciser campaign: all
9 identities (zuse, rajames/bob, 00-06) x all 3 architectures (amd64,
aarch64, riscv64), 27 legs total. No crashes, no heap corruption across the
full run -- real-world validation that the WIREBIND use-after-free fix
(commit 9142dda, FABRIC-3.md SXIII) holds under genuine multi-cycle load,
not just the synthetic repro used to verify it.
Cross-identity parity is perfect: 0 diffs across all 9 identities on each
architecture. Two real bugs found in double-precision (D.) output, reported
per this project's standing rule (report, don't fix without being asked):
- M* on a negative operand -> D. reports DOUBLE-OVERFLOW, universally
across all three architectures (engine-level bug, not arch-specific).
- D+ on two negative doubles -> D. reports DOUBLE-OVERFLOW on aarch64
only; amd64 and riscv64 both correctly print -2. cell_t width confirmed
64-bit on all three (ruled out as the cause); exact mechanism still open.
Also fixed a test-harness timing issue (run_identities.sh): the retry
budget for USE-after-attach was too tight for boots with several live VMs
already accumulated, causing false "FAILED to USE" verdicts on identities
that actually succeeded a few seconds later. Widened the budget and
switched to smaller per-boot batches (2-3 identities) as the reliable
pattern for this shape of campaign.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EXieurDfDSsDFdnSyusuWo
FORTH-79 Standard-Dictionary Cross-ISA Exerciser
std79-exerciser.fth is a 24-case, FORTH-79-standard-words-only program (no kernel-specific
extensions) covering /MOD, negate/abs boundary values, RSHIFT/LSHIFT on negatives,
M*/M/MOD mixed precision, *//*/MOD, S>D/D+/DNEGATE double-cell ops, MIN/MAX/
WITHIN/AND/OR/XOR. It is not a capsule — feed it as raw text to a running REPL (serial
console, e.g. via socat - UNIX-CONNECT:<serial_sock> < std79-exerciser.fth), not through EXEC.
Written to test whether the same FORTH-79 word set behaves identically across every minted
identity (zuse, rajames/bob, 00–06) and every supported architecture (amd64, aarch64,
riscv64) — see FABRIC-3.md §XII/§XII.4 for the full campaign writeup, including the two real
D./double-precision bugs this found (one universal across all three architectures, one
aarch64-specific), and the WIREBIND heap-corruption bug (§XIII) found and fixed along the way
while getting the campaign's automation working reliably.
results-20260910/ holds the raw captured output for all 27 (identity × architecture)
combinations from that campaign — <arch>-<identity>.txt. Cross-identity parity within each
architecture is perfect (0 diffs across all 9 identities, all three architectures).