Files
LithosAnanake/experiments/std79-exerciser/std79-exerciser.fth
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

25 lines
730 B
Forth

." T01=" 7 3 /MOD SWAP . . CR
." T02=" -7 3 /MOD SWAP . . CR
." T03=" 7 -3 /MOD SWAP . . CR
." T04=" -7 -3 /MOD SWAP . . CR
." T05=" 2147483647 1 + . CR
." T06=" -2147483648 NEGATE . CR
." T07=" -2147483648 ABS . CR
." T08=" -1 1 RSHIFT . CR
." T09=" -8 2 RSHIFT . CR
." T10=" 1 31 LSHIFT . CR
." T11=" -1 0 < . CR
." T12=" -1 0 U< . CR
." T13=" 123 456 M* SWAP D. CR
." T14=" -123 456 M* SWAP D. CR
." T15=" 100000 S>D SWAP 7 M/MOD . . CR
." T16=" 7 11 3 */ . CR
." T17=" 7 11 3 */MOD SWAP . . CR
." T18=" -5 S>D SWAP D. CR
." T19=" -5 S>D 3 S>D D+ SWAP D. CR
." T20=" -5 S>D DNEGATE SWAP D. CR
." T21=" -5 3 MIN . -5 3 MAX . CR
." T22=" 5 0 10 WITHIN . CR
." T23=" -1 0 AND . -1 0 OR . 5 3 XOR . CR
." T24=" -2147483648 2/ . CR