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
19 lines
1.3 KiB
Markdown
19 lines
1.3 KiB
Markdown
# 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).
|