Files
LithosAnanake/experiments/std79-exerciser/README.md
T
Robert Allan JamesandClaude Sonnet 5 cc81edf00a
Build / build-amd64-iso (push) Waiting to run
Build / build-aarch64-iso (push) Waiting to run
Build / build-riscv64-img (push) Waiting to run
std79 exerciser campaign: 27/27 legs clean, two real D. bugs found (FABRIC-3.md §XII.4)
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
2026-09-10 23:13:13 -04:00

19 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).