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
49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
[06] (zuse) ok> ." T01=" 7 3 /MOD SWAP . . CR
|
|
[06] T01=1 2
|
|
[06] (zuse) ok> ." T02=" -7 3 /MOD SWAP . . CR
|
|
[06] T02=-1 -2
|
|
[06] (zuse) ok> ." T03=" 7 -3 /MOD SWAP . . CR
|
|
[06] T03=1 -2
|
|
[06] (zuse) ok> ." T04=" -7 -3 /MOD SWAP . . CR
|
|
[06] T04=-1 2
|
|
[06] (zuse) ok> ." T05=" 2147483647 1 + . CR
|
|
[06] T05=2147483648
|
|
[06] (zuse) ok> ." T06=" -2147483648 NEGATE . CR
|
|
[06] T06=2147483648
|
|
[06] (zuse) ok> ." T07=" -2147483648 ABS . CR
|
|
[06] T07=2147483648
|
|
[06] (zuse) ok> ." T08=" -1 1 RSHIFT . CR
|
|
[06] T08=9223372036854775807
|
|
[06] (zuse) ok> ." T09=" -8 2 RSHIFT . CR
|
|
[06] T09=4611686018427387902
|
|
[06] (zuse) ok> ." T10=" 1 31 LSHIFT . CR
|
|
[06] T10=2147483648
|
|
[06] (zuse) ok> ." T11=" -1 0 < . CR
|
|
[06] T11=-1
|
|
[06] (zuse) ok> ." T12=" -1 0 U< . CR
|
|
[06] T12=0
|
|
[06] (zuse) ok> ." T13=" 123 456 M* SWAP D. CR
|
|
[06] T13=56088
|
|
[06] (zuse) ok> ." T14=" -123 456 M* SWAP D. CR
|
|
[06] T14=DOUBLE-OVERFLOW
|
|
[06] (zuse) ok> ." T15=" 100000 S>D SWAP 7 M/MOD . . CR
|
|
[06] T15=14285 5
|
|
[06] (zuse) ok> ." T16=" 7 11 3 */ . CR
|
|
[06] T16=25
|
|
[06] (zuse) ok> ." T17=" 7 11 3 */MOD SWAP . . CR
|
|
[06] T17=2 25
|
|
[06] (zuse) ok> ." T18=" -5 S>D SWAP D. CR
|
|
[06] T18=-5
|
|
[06] (zuse) ok> ." T19=" -5 S>D 3 S>D D+ SWAP D. CR
|
|
[06] T19=-2
|
|
[06] (zuse) ok> ." T20=" -5 S>D DNEGATE SWAP D. CR
|
|
[06] T20=5
|
|
[06] (zuse) ok> ." T21=" -5 3 MIN . -5 3 MAX . CR
|
|
[06] T21=-5 3
|
|
[06] (zuse) ok> ." T22=" 5 0 10 WITHIN . CR
|
|
[06] T22=-1
|
|
[06] (zuse) ok> ." T23=" -1 0 AND . -1 0 OR . 5 3 XOR . CR
|
|
[06] T23=0 -1 6
|
|
[06] (zuse) ok> ." T24=" -2147483648 2/ . CR
|
|
[06] T24=-1073741824
|