From 5689c397fca3144df7a5fc58865ad1a0756a090e Mon Sep 17 00:00:00 2001 From: Robert Allan James Date: Fri, 28 Aug 2026 23:28:10 -0400 Subject: [PATCH] Bug-fix sweep: repl reentrancy, virtio/blocksys bounds, identity CRCs, LOG_LINE_MAX Code review fixes, all compile clean (hosted gcc + aarch64/riscv64 kernel flags): - repl.c (H1): reentrancy guards on the MSG-TICK idle pump. sk_repl_idle() now defers when Hera is mid-interpret (g_mama_interpreting) or when its own vm_interpret is on the stack (g_idle_pump_active), so a blocking KEY/EXPECT/QUERY inside a dispatched line can no longer re-enter the interpreter and clobber the in-flight input buffer. - virtio_rng.c: clamp device-returned used_len to VRNG_BUF_SIZE before the caller's data_buf copy, closing a device-controlled OOB read. - block_subsystem.c: first-write path now keys off created_time==0 instead of dead magic==0 so fresh blocks get a real created_time stamp; first_free/ last_allocated fixed to absolute Forth LBNs (set in blk_compute_fresh_geometry from slot->start_lbn, no longer the wrong physical-BAM-index values from compute_totals_from_B); physical-bounds guard on blk_meta_zone_read/write prevents unsigned underflow on a corrupt fence >= device size. - capsule_zuse_boot.c / capsule_wirebind.c: identity seed validated magic -> version -> CRC-64 (compute_crc64 over offsetof(crc)) before trusting it, so a corrupt/format-mismatched record is refused, never loaded. - log.h / starkernel/log.h: unused LOG_LINE_MAX 256 renamed LOG_MSG_LINE_MAX to lift the include-order collision with vm.h's LOG_LINE_MAX 64; stale include-order comments dropped (kernel_main.c, shim.c, capsule_birth.c). - FABRIC-3.md: three stale-doc carry-forward items closed [x] with cbe7b49 notes. Real KEY/?TERMINAL/QUERY/EXPECT bodies (console WIP): - repl.h/repl.c: sk_console_getkey()/sk_console_key_available()/ sk_console_readline() public bodies; non-destructive peek buffers the found byte so a following KEY returns it. - shim.c: getchar()/fgetc()/fgets()/sf_terminal_ready() routed through the real console paths instead of stubs; sf_terminal_ready() in platform_io.h with sf_terminal_ready() implemented for the hosted build (linux/io.c, POSIX select on fd 0) wired into Makefile. - io_words.c: ?TERMINAL now returns actual terminal-readiness, not constant 0. Artifacts: minted disk/artemis.img + rebuilt lfs kernel; BLOCK_MAP.md, doe csv + qemu log regenerated. --- FABRIC-3.md | 18 +- Makefile | 2 +- capsules/BLOCK_MAP.md | 2 +- disk/artemis.img | Bin 31457280 -> 31457280 bytes .../runs/doe-amd64-20260828-224112.csv | 0 include/log.h | 9 +- include/platform_io.h | 47 + include/starkernel/log.h | 9 +- include/starkernel/repl.h | 38 + lfs/amd64/starforth | Bin 1544776 -> 1544776 bytes .../amd64/qemu-amd64-20260828-224112.log | 9326 +++++++++++++++++ src/block_subsystem.c | 37 +- src/platform/linux/io.c | 49 + src/starkernel/capsule/capsule_birth.c | 9 +- src/starkernel/capsule/capsule_wirebind.c | 19 +- src/starkernel/capsule/capsule_zuse_boot.c | 8 + src/starkernel/kernel_main.c | 6 +- src/starkernel/repl.c | 145 +- src/starkernel/virtio/virtio_rng.c | 8 +- src/starkernel/vm/host/shim.c | 54 +- src/word_source/io_words.c | 4 +- 21 files changed, 9742 insertions(+), 48 deletions(-) create mode 100644 experiments/bare_metal/runs/doe-amd64-20260828-224112.csv create mode 100644 include/platform_io.h create mode 100644 logs/20260828-224112/amd64/qemu-amd64-20260828-224112.log create mode 100644 src/platform/linux/io.c diff --git a/FABRIC-3.md b/FABRIC-3.md index 88cfc98..bbc1099 100644 --- a/FABRIC-3.md +++ b/FABRIC-3.md @@ -70,18 +70,24 @@ decisions get added here, not to `FABRIC-2.md`. Follow the same discipline `FABR ### From FABRIC-2.md §J — Maintainability sweep (2026-08-18) -- [ ] `docs/lithosananke/ROADMAP.md` and `M7.1.md` — stale `Branch: lithosananke` (no such +- [x] **Fixed 2026-08-26 (commit `cbe7b49`), stale carry-forward closed 2026-08-28.** + `docs/lithosananke/ROADMAP.md` and `M7.1.md` — stale `Branch: lithosananke` (no such branch exists post-split), `M7.1.md`'s "Status: Design Complete" (shipped and live, not just designed), `ROADMAP.md`'s self-contradiction (M8 marked OBSOLETE in one place, still a live success criterion in another), and its stale "AHCI driver" claim for M9 (real - implementation is `virtio_blk.c`) — not fixed, flagged. + implementation is `virtio_blk.c`) — all corrected by `cbe7b49`; `ROADMAP.md` also gained + corrected `BLOCK`/`BUFFER`/`UPDATE`/`FLUSH` and block-device-abstraction `[x]` marks. -- [ ] Top-level `ROADMAP.md` (StarForth-era, "Phase 0 Complete... Phase 1 Starting," dated - 2025-12-14) — badly stale, no historical/superseded banner to warn a reader. Not fixed. +- [x] **Fixed 2026-08-26 (commit `cbe7b49`), stale carry-forward closed 2026-08-28.** Top-level + `ROADMAP.md` (StarForth-era, "Phase 0 Complete... Phase 1 Starting," dated + 2025-12-14) — marked OBSOLETE by `cbe7b49` (Captain Bob's call: more than stale), pointing + to `docs/lithosananke/ROADMAP.md` and `FABRIC*.md` for current status. -- [ ] `docs/03-architecture/word-acl/DESIGN.md` says ACL Phase 7 (LithosAnanke kernel parity) +- [x] **Fixed 2026-08-26 (commit `cbe7b49`), stale carry-forward closed 2026-08-28.** + `docs/03-architecture/word-acl/DESIGN.md` says ACL Phase 7 (LithosAnanke kernel parity) is still "remaining" — direct contradiction with `.claude/CLAUDE.md`, which states Phase 7 - is independently verified complete. Not fixed. + is independently verified complete. Phase 7 restated as independently-verified complete and + the stale lithosananke-branch-parity framing removed by `cbe7b49`. - [x] Confirmed accurate, not stale (2026-08-26): `VM-FLEET-ATTRACTOR-DESIGN-20260705.md`'s claim that `doe-campaign.4th` is "broken and being superseded." Live-ran `SMOKE-CAMPAIGN` diff --git a/Makefile b/Makefile index 5ca300a..a8c0ca2 100644 --- a/Makefile +++ b/Makefile @@ -433,7 +433,7 @@ LDFLAGS += -nostdlib PLATFORM_SRC = src/platform/starforth_minimal.c PLATFORM_ALLOC_SRC = src/platform/alloc_kernel.c else -PLATFORM_TIME_SRC = src/platform/linux/time.c src/platform/platform_init.c +PLATFORM_TIME_SRC = src/platform/linux/time.c src/platform/linux/io.c src/platform/platform_init.c PLATFORM_ALLOC_SRC = src/platform/alloc_host.c endif diff --git a/capsules/BLOCK_MAP.md b/capsules/BLOCK_MAP.md index 3a62f23..bb69c44 100644 --- a/capsules/BLOCK_MAP.md +++ b/capsules/BLOCK_MAP.md @@ -1,5 +1,5 @@ # Capsule Block Manifest — Auto-generated - + diff --git a/disk/artemis.img b/disk/artemis.img index 8d281f02cfa649e8b37ab1cc55ecf0d13a778b36..ffcecb8890f652d2a16a10b5adffa2ee603280e3 100644 GIT binary patch delta 4764 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" itself. + * + * @param buf Destination buffer + * @param size Buffer capacity, including the NUL terminator + * @param active_vm VM whose idle dispatch runs while waiting + * @return number of characters placed in buf, not counting the NUL + */ +int sk_console_readline(char *buf, int size, VM *active_vm); + #ifdef __cplusplus } #endif diff --git a/lfs/amd64/starforth b/lfs/amd64/starforth index 51942c17af92e2fa6ba7dadceadbb6524253632c..1f6c86cad558872cbe8071c51d681b3a538964ea 100755 GIT binary patch delta 209801 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 z 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

QY#dV z!_JVMto{06J$yoG*~sso<;mg)W0<5@#I?@wkPSyZ+X=MJc2s1iULyS+4b`9JPK zrU2UQQjU@N9Z!KU|RE8`PKH^xt&mVgkK#YMV(Qab59$gOao*J+(y#6pq0)$u{F*3gV?8` zY0kdi(feD;iZsw2imY{`wvrZI;jXfV7`wuV*Z&~d&=p07URMYudD#{RMeK6AcrT&*><-*Y0CH zIfOdIsHsa+vDJ`kkla-$ zn?{2gi`i2$vL~v7j*+E3Q3$TymK^Vi8mNAcvh1=L>IcaONrhf04CVn1dLjQd-OI3~ z-;J)CN{6g+sSg^|rSA$R=UWA<5@?iqNgk9#zT^VrVYh^7$p;AT4a?!^3nZjBs+pK7 z(waIcziV(yHu45HytUO%(Q(#(?#bSfmNGz-jEEpBdn4bPSkbljHaL)$VNRWMHjF-0eQCLTA4!p9b5SYPDVsj-!T%3xrw`3xlau$Tof z#Sp1iZ-x|dOskSeLgsr5V-%|FDX;V=E*!7 zXvkpMp{2qX|Y0*hhK*`$*@= zy#6Q<*J(la^hed5&V^bPQs}qgj5h(RXnUOz>fZ)<$f3iVliLdUeDKgGmo$0ME)UwOY&akb_n>=njS#EY#8-uRpHXRg0`|bpv@p6Q4KFlM zU4AMUwg3!{-8L1lF-A3~2qbiz(fkf>ish%?aTbWRy-(AYnQ$`E&dvt3lJ%~3X{Jjs zBh@SWQMpmmH^(ZlZGf@B!enX?@(=M4UB;9JNnji=4JVxpJ6WWCNvA=mnfIRK5W9(1 zJm7e3`GZkqry<8^dDYUx z7#JJ|lcK@MyR0}aceit`&>--XRC14;2l=saskG>CFqED zc*fE#yHZWoEy>^^sD0p~qY#~Lmgtm55{kHoHCg!vc`^i+x)6_{sD^V0=+ou}2ac%U z2_$hSifnd2pHo`rkh0ob9-N+VKZZ;DIsCE>T$Vi2cu!R!R^MR%vgDD5b09f96nXU@ z4fdcp!M#c~haQS&_p4v-#_)Ee?fpjY*p8{V7SSr7P>~kjwDn^#j6L7o9Ac;z^wVut z@d*IN`zeVZhWu+;v9;vqF1`|w@Y zhEa~SG|8ICl#LLNyTjshzd9pS;+OC!+x5)ALfL^m7-d+h~5RSWK^x41E!O0+n#xe@Dp=g;~t%}wQ7%SSLMI(@(?;FU!aJf}LK)(ysrww2-i5mg! zd>-jK0@`6jWvgmvL<}QPCC#?O+|eFT*Tz({UcCYURQi#>VG3JoszEsmt`qd{V^2(M z2L*xqjnVNpa%%+an*2k|Balz6Rqvro#lFuxo2ai5LKDMs0UkQ0rRYC{D@%8ZfdN(` zaBqkA77}`x29wm0$O8-v9EqwqoHzu{^8`G#g4-ooJs5kDR~wNtIXx1EHr=Zd$y2Jm zX{L9Ggfi{^r`T+o|Kn}L6Y??r3P!$*Y5H~=2ze^0mjSodHwRhexL!K=W98hvLnaSL zLEei&^1o{*X$Q$0j?`f%-&s{p2T+GHw*TF#dKv*^)wBE^K@fc3OW?zg6;zj|pcRx( zx@96?JiH<4HUefwDqpJ_3h*JbMC)H^}V~a0|S) zZP7^Nt(p9`w2tg(>hJ5w@qg4&i?^ipNaT*M?I%BtL?I6A;q>_bSxXN8silQ){#Px1 z{NsPsQao#}axaoL8aBCZ5#4AMT5|)af}74XOlc-tFh}Pr@LNCoXf(!*;&Y%aH%ssO zlgZzsQIM_=BxGw}(~crGel~#=P)kW0tZFG57^@{C=!o$XcE0(vrWw_wwKEKag)3mV zur`Zbw7 z7VTH}^DNCa#c+TwN#zkFZ5&F*As%G?IMg?E%EDq;yukDB6nMeNu29R0AsamYn~;#0 z@u+{rx1zP0++M=q%haV|QeF6En$1$RYEK+3cm6cfuP-3tR>6X>?*O@FESdn-`;qjV zfT}rP*~J_6Eq;$FBun9hU)?d+>1N+Ox!Hqa^L~)fdRrwkMi1QC$x&2b%LSv}F+noC zqg3euv7Lxwym!`y8MR>)`-$uI@EwvL`Gwz@2rrFe+EILJ`l&oJpux?Gvm8askHyFrWVrmKCD` zK|`HOUh0s$&W712+{D+7O_)rRw9>k`z<6=Nw&+$p0I=0UGpfnD6$lI0{ij=PhayFT zGHYO#N`C*Ew}@Z=E+$!%kxTuKwV=?wmD@p^&Qa(Mmfg2j0)RpB)HyLI8sIuX{{ik> z-7NR5E#&fK*s^bFL&rq*s%Ir*Vw^uqtnpq?qNX5k*z#{V1*UT+$dD$d#m6Lx``Ch9nu01h9j##1#IBQ%Q&6ydJgXC!zbqnEr=lvVAh<3a z-FlL)Q&HXM4zQlj&YLuXPZ;c`(uVsK&M4}S$zHDXf}Xp|7^&J5@1bRY*jtrcMmfCgxN=qp3B<1y}9i9lwWj&gSZK{z%J@Tn@+@Yia)Ta%gh5n<(y|@)( zXoBN+W3*ZKKc?vGV>k`s08ySu;%A{$oHB>ZpM?^tdctZ?UqHi5r=N7BJqeq7mZ^CP z-@=rylFze{f32Og5WLNG;aL{(W;gb;aK1FdT3G)avKvZT8c;*r>K8J{fRemDU_D7Q zn`^04(b8p$;+9z%yiK&TQ4(%7o6IqydaeP%)Z(P>B~4C_zeH9$;c(*c z3yQ)k4W!{OuxUMn=zc+-Xc}4a3*6gpE-5wm>1HwcrbZFu{VyooK8+3L;5a<$or8Sr zTUo9Ll6G@o3fgrRnK}mzclz{Rgb*IH!0scOi-$bs>LvhXv**nK@SK;(mQh7d#fM=ks=cDWPPp8m94E91_l1K?gs17iY^GMPS z(gCEegqou*WQT-izysUZ1xVu%4(kc6!6675c@r{j0h|d5xkeT(fCsY&=JU=6et4MR z>HGrJ#%B)9Z9#Jj43?tfvQtP*C5zNuh^FF5A98ph3}`3GorS0=_8gxZya;VYO#|VF z>rW;@BZ7Sd!$d7Tsp}{wajF%x6Q>cJcH(qG&;Z#72tDYn4kVt7;YsB=GGa08MQ$X^ z7bCy&3V4L9r6t^Oj+|T!J5J9glMjng2<#X8FG0b6=h#vCWpk{YmgWwFz5~;-ihT`{o0ToXlTpoX93OEHP zER>lfc`5QqSwD&XG$ws#dhRcf8C9Xp2q?TOkv$9sQPAxGj~hWF+F}G=nn+qq4?pI? zZzX=#CGDkePjsC`b}mH$Xc)P^6jg=A-?yd6JzX9}ho7VHo1G90ZPqb6`QM{(12l~P z*dp7U`FFCpphfJf%-ztQ$}EPbyHPLUlxe8QSCeNHE@|})foB^hQh%Sx>33+^m6u7z zGT2^!^M({JMQ-)9|H-Yx|B+ii0yB7;RXQu8rZ#!K48dWuiNx_&6zWmm3C>EuZ%bPo z;OB1-PavtkA`d$UE`33U{fgZ1^a*6Z|bmF#m0R`b(OvuqXU|lwEzvt(B;Y+xDm6Hykj6`!Bc~cTNwo#J;52D%k58PX?_* zeare&wxXJGQL!(cb|x4OO$neh_hgAYg-ur0Sxf{T&0V%0UAJ|vzf&!qUc)$QD(*%mZ$^P0 z<$%KP^@&3$P`H(oz_F`?$brqM$OY|CvtgG#XNE_~`CZAOEvQPw>FvT6JhU}-g(sYa z6HM?E3OfORXG{x+FXah86PK-MzK>ys0(_1uhMiNLA3Pakm)gbJleVxMOXm3_KPmm2 zZSLBw=r!_;r9V#$&v^b4BMUocXlDu-NVaT)Er4$W$mMNFmFLl!NqMxne`_`_xY*p&>Achn! zPp#N~V1;|7c}+q{{7#hAvMF4{KJy^vq9gxM|HK_003Vh(`7v9Llb~0FdM54M@XIGu z56*>&d%%~z%A5O;z+EV|>@d)h>-8nQccHk*=~fE zvmp+|^cH;So-d#4MN0%{mO;GHB8EEKMY*2-{`r0@x}q0}+=E;z%@nCT*z@yS z77ck=FVcMv^7d>4a#)XMzZ}!N;6caR#~(bZUO;{Mok)A&#JEc@a&QmotJ~ZYT>jKC z4}J&5sOfOc+Bta+$QU1D;o#Lc3!GvF`&!@vE0}758?0bGfTpu>^WcLRS(S?_sa*g< z_Jvk@=5%r~7k-<4s8uUEm=3MYrnkS=;AJk*X5Y@d0Eu#~5-p<&?6{8m$kN)$1{#&8 zr>|v{V0lAn}$Y*i10R$C6B6KiGAhbEc*#fWjnG2u!bg*pkV0 zurDdzi?+I59A1(n+1NFxC<#_Qjy*{JJ`_}Ig_X>FQohmMR*{@#cFw#4L*~!F!H`M& z1Um!>$#nb$$n_eafky`8{LfwTO$TUkYN?2D1f$uNI2 z!D>Q;8%k2{`>gAB&t0$|UA4jQU*--xjK&3_t>p1Tbiu8h7VbECreo9SwhRpU?4a|# z+*6N`J)C!G%7njVSqo9F{Fn;un=oP4RBPdVV)qpNiJFmnPhm^kn|yqVj-V;Id!Hc( zgw~P*8CI2bay?Bji$Hye<~eGMKP8Y^&ykGUk&%V45AQ`57ouBEW8xvKbZZQpD;`fK z7b17mkSu_u@;8p+7(e@ zP<j$UXIr3iIpmJV#m!7w6i& zhqVCOO{)A0^A%mL_FsDWE9v(EF8k%q`~c@IQB(5tBV0NXyH98pT1_^6LS5h#rtN36 z2^}PVd`1&dTN3sK^}z35$a@;8B}hNyJo1977JHk9XddK5nhQ>$zg>3AlY4nV~{^lW4L-wG#J;ny#wdK zh=(oqCi5_MM_0%uj3dx&auY-P%A~UmT-_#m8$1)uCoZ;-z6nXT#jQ{kvcwjjM+VYg ziEBW~7Ao;8G%I&n8At%L`CVmkAnHYKl*LAMe`hu@bed5zTFdR6$v8WF54n*pwMis)_Zl$@=KoGFLTB2(@ndpyGy>+Ey=R5%Ocy3NVj3OL-ZOIuj*7~1>u zhxL&=aRp-Qf(PRRZOBL$d>0#%N!yAz0{`BcOsj||;?UN_#ucx@wY6k}E9iNo5;rxz zj#uv>FV(mgZec@OyWt6_Y3>C#?1J$@1$pR!mtj8z(Rtz(HafEn@vnrJ+uSR*A$jym zL->;J1z%QvvsvVgmt*r+veFyJy7YNb9$bqv#`B4msoiMu+#83wROLL?!re!csy_Hg z#SVq#X#F&LZ{9o)%4PL`$2$5WRP=ycp)CYlJxe+QDjQsRq|dXG z4}M2lSHU+O*VLxVLUE>TT3BoELUTEhlDyvA4bhQ3PY z5TpYgb*T=>o#pF72BLuPL>}M(PX?lh??nFc%2HANQql2;4?naHk*5kFn>Qp`#2_s5 zp>?F(_YLVBf@|TGQ^}kV?B37GqQK@W%wHQ}z|cDW2ajoKo)ne1RmqYTvNE);BcGun zqvqvBwsYewYBbHXvxqprpAM?A!mc!MW0@I87Y(cx*%K0aDj&lB;57^TMLW``8vcNX z*CO4j$rc3&Cu6Gs*WpnoD2d1Q|O}=`t-_KehYujqSUNoR!!&|FavXz zJHKM)zn(9tD)|KHvRKuCjb>&_&Ur=3hvFctoJ^uZ@qFFHGIU^PGWf#`U4uMmRxtCc zK%bP|fj^A_rH&imNdNc(2;qO=1&=x_6Lc^ihW%4#SgD^<&46EXR!|%bn3LZa>2%x5 z9+>JvO?`?utC|77u?DtPnz2AcDdoX0N$W7|iH}YqgTkP`G2aTu-)>xM}D6K?;2?2E(~ zu%-slN8#`a3wu#**l6SG>wA(@Q8)#6>Pg(9@o22ON9IIht!f5rr6=moB*I(#aHuDS zJdMUxU~As7CicT;pOEmH*cb16LR!+#4Nu4r`nm8)?k_cQ5OR1$x8~`XDzBuGlrmy1} zbmp=;u2g0UxIwo(eY?_&zIASZ;%V-PCYI}^z}_9r?Gp1YjKhs^`#b(Pea_cPFP0~V!AgPaf|g6*}|aldjpEf<6EyDoh;Q+ z<`&u55c|b;dnX8J-n_{YV~Y}?6M&Kp*>sNqw(3;V{)8PH*spb5v13s@cE#UX65s78 zMhP3F3*q(}kAt17T=@p?R=_6gYuJsI>-duC@i;&?u%#1U+WMT^*{nK|D-Mum*tyw&gxRoK}!7Zi1bQKbnRRo+#Hz02-C z=qHF={=4dQjaW;V)IkJ523w)sgQpIp@=ufQKqMzUl7EJb;BpB3vVx|P#RE1P$*EKX z;ij*WWmqE0MH&#na9(2}H3llTLFMxs;XhL;xZ3@g>;!6B`0LbUeF97l6FZXq2{_it z&!Pwc-uf3ojc_nt-q4HxuP!U^c5SZv# zTXMS*PVX=r1mH~dcBS>&9T2bou2xjb6(_zfRn!17b);`x7&T+8xX+(tUSk}JZ?uLN z$#9Uv88BmN2sz7h|0J&(FcseBG3!z~8-?0&f9j}PEVP1AwN3y!oyJm9^_X9I_YaJxSKXkr~* zKJ=WM@VtR$)RoJ|dxEuM9o+hlKf275)fme~Lz+=r6YJ1ar}H@IQf0BAhxSDgF^WWGLM*UrA_Hr{%l97aC@x^Oo zTN3UX)w-lI$yHImLrTyzKq-dbXvbrlnnq2pR8qeQ9-%9~!YbI@rnKG)IdW}Xif%A; zNCB0UY}^%O2R%ft)e8EX@ld=KOEK)GD)JI0(k!w(c!2@Kz!c><-1ZGib~{k!NPGMHw6h^Clnu5AXxXk5mWFhMunJh0ZQ-d}lc>FG#}TpW3GXBq$FiKodR?9*)^2CA=ARk7j}KBcTmRyy*jy z7!_p-e}Xv#%y|0EVM^b66!kX zKKB%n^z!&`ESH|Af=yThcB(10Yr;yifEb$8giUAjqsX}_8^(4uqH#@G3)ZI*oo>qd z$Gf)p9{1sAg@^Vu`wr>~(D92Mo*%n+xqONuV%SMHtGiJBq4|Ge7?PLtuAQ_GNROpo zE`OG1#||o=lFP?5@yNp;&!{@!v~La+=i!-67YH7aaWJ>Y!*vl>GQM+oIqc^a9_19T zyE(Ea0`8oAA;_aG$$=iI8lo+~1^VD=(&9^&zXej2W~>;_3CA>J0iADSkxe8SvPL!V zz@UjS-$DKyBqpmjJIn;3ixB>+5YAiI3~=S*)hz$yFUn}fss@&VWx&pGa0@K5PO9oy z%#+Xgi~O3ivc;~VTLsDiKTv|A*Irr+({0#Kfe==2{U z${ahE*GN#|`(NxRU>zNSD*r`wR2dK2^LMDgw&(5J(XJ_6nkZ&S0r%zT`5k}L{k&2d zEWA^Y=j!v7-1oSV&4dv|;xQ*wVs?*zzZA;$@|5*(3(SzQCMJ5=l67HWr>qgJSQIAc z+-O>BR)ej+M`^8@SNydTT!H(~u6c*he2`oJgc#)BU;EuH8#yheAFh7~EmA?Ad7L*z z1+~0~Ej(#z*&hW^GYrhZeEPOK+N!RBPR&v->65onn>Ne`6M;k8VAwG?gJ!hB1kwHj z^ix~bs(?>)t|HsBV|1h~izsH}(M~#Ma>Q9|-w+$AXC0#w?O3VW|F%QQV^?gPV@2cS zarEXQEG`%Y!GO;YAecqoi7_Lt>Sood$7o_ZHmG#gDsH%P_$VR^MK~y_?i>+HPW2Ug zAef2V+GF;tAN6m~B8v3c|1~G0VN0YWd^thvzVP6EF*izY&w{;H-Lk7h3h{m4-E13< zkgfw8&nn%b#15=ju{#g=^qX;gK8zHx5WE84FvY-e5rRq|+S`HEWHXM?>kh0fo6_ED z>c|2mmbQzAbzv3qjoSScQ_OU@3ljBx4|?B)_0hJXu3cF$W{Xq1vZN9-4q_rKcW+}q zag|L(hlutO?ck0v5mcocD__WsH}}RV8{pm4un`#1C@X15H|AS1UvI3uqen6sw}ggV z;s^C#;%YJFWiQ-Kg|&EmNS)SqW2Necpr5P z7t>(ut#G?rqf&?E;6^Pa(&d}lzs+=Dln@tc)`R(KJ!wD>=HI0fZU*2Ej>-9oYqYRD zgkj1GtP|iiIexQMmMJIPpWj6AER0{K5QA+;r}Az)3cF&|H2d$iqX>21QK>8Rpa;rV zT`Jd;Rr2Ke)#Zl>xX#D2goj zMBns|y9VDB9>Oz}@_IE@?1f(c?aR~#PpuP;>%~eI$>!ZfTm*&~1n98Pk*(e$Fn%lT z?8O4wZ26iKi7~O4x;@brmRlGj&99@(@06+eRn0FuF-#Betu|jlV=q<8KwyQBJz%F= zhTG?-vb}K;#5?HaN^=muJa;#o-eT?3o9VTM8(^T!OI5I#E{eqbMqQ=dW-|Z8BC%?8 z?k8q)uVa^K{#WUuqf&iXDSchxj$j=h&g(igqIP{)Nf!Y`QT!@XB8Z|Kd?9I(mLbRy zCuNao=c0?v6Sc@3zR#BLcYu8zg)VweAcg+>7lWAOERxCGeF#D!NtNOCQG7cKY z7Bo?jtdxZ9a5sNMk9z`wmp(XNI)nZI9biQ_JJG~Z~&0M@?fVo(Xs<4#KKP%xPdLtc7m zY{N0cpu`Ez!87A!oth3_4 z_zRK;vGD5s|H@5LTSb)fyt^0va|6y6yBBQva%k)zR+IDt-3pU#FuUYY`80Q{<7%U; zU#(9DvuE1ILr&WLcK0(X{M^fF)f41!O0WZ;_5&WcN!9JVYd%|jhhb^VwcarmV(a#v zdW~d_TrV881Ki%z_K_^p_3#lppm4Tz{V29e8xoUlhqQnD)v?7V_o}ZL^C_H|gRYQD zcBag`iw*>9{T<5--w@}k3blF`WH_Ps*6*Z<(G1*9Zbu#>cTO@qg=)KW z>*~GJPSXCdbwCp9q;)N^!wz}zroiXBw%Gx@A6T8Hu*O=~^IPqZ zKKH5fRQ8i=H3uO39-W-ZO1Z{304MKJ_Ec8J_30Kn%Yu8>vePgTsqIb^%q-A-!)A94 zIsvF$ZJu{&qnQ;A-t-VRePH?t-41*8YpXgNEw*T<+u*tv<#JhmpF>;=Udd&YrT1pm z+vle|uny{bLu~MANx0{yV}UnizH>Y&LszG>exC6Hrcc2|+oHN0UWQs&uy)s`3=Ouh zMQl%L$~S|ZVdbY-ugqZU8LM@kCeLDitXC2(orUF-FD1E9ep<#U4x7WzE14zf@+{WG zHDbLZw%4ibY&NKFc|oa9*=|?mYY!hm7zc4$@)<(JMH1k+c)Vk~bx%N*tN=PU8{PLq zXT7lYf+mKyj?VlVd2IfR<$-63TY`VEnx#IocIlKL|csd zR4jl*VV+CrIav}nZ1C)j{^nlLC|?HB+}~J(pkxGWI|jPqR-e2yiJay)fU&11wgmZa zU?tjvwJ*S3Y=Z&+-o?!=Ily<|Y%xG*Bt;@ia6`Hr<(GRnRO^7R$i=3H{mtL~2hy;m zth@X9C1~f8o?%TkEMo~>U&_kXw@g5{9QRAdwZo*(h;ZK7KRAFt%-2PaK^epe>ZEW~ zY%efQ=K|XefN*50N!b3%ybAv(VN%0FI7#3D8nlcV4N(YSb^URFVa{P0sDJy@&Sk82 z{`AENEb341ma$UtzaB7qkN^wI1zBM=MuLBMc`hWy1?U-Ag96mJk=pyQ-=l{!IBmu~ioNNkv&I$lCjB!Cq0H5LJ% zt6=1JAl)29tCq7eCA_$Ghx!S#t8lZotM5(u`?`LlEN89aM;%hFt}_T$>32tB)dqIo zZI<#pwq)L=c#AO_lp-FA9<-*U=h{)WXw*B%w7mN=c2RCs8If~BnJ|uzE&~I_wej6C zvD5_}T7D@~Nzm~qsIke%Z_{Wwjt;G09qL^5#Nqp+s4r%IV&GI;i}7_;^}oVXi+gh@V{*q-{`6a7X2cLg|}fqv^x_px6k|9FU0z6~S))vTD? zr*@7AoES}})vRp5y#?Pj&K`|%UaIl0JfKOVY0hd^)W7FQNEtlrtEh)ZAt69FI#*bO z(R5}tD_@w+%oP@qbb|5CX9^olZflr-d_PE4GKZ=XaJm==7}YJ0?HuZIS$4%?{oyJ| zpybm0T#?FB4sV9Z6#ecCKz+)C`h}x#Y?HHG%mW|9;eP`jqy!^&_N#xKM79B`0#a1+ zQJ})0{Pte!g*D7s8+3V(mnKGgUX*;bnOQlC58I9VfKZE8T5s#OwXCSN=RB*IW?x05 zrMjOWHEixz?9jvZ5wX)C#*Fz8K4$V!nvBe+PLHT!)ul~LQDBOu1!Oc$t?R3l1`X8I zM_5%8)r-dc&Wx@vzPPDdyLCrs@9(U->r@BeM7s6E?-&NVE#Bo|TG4}wZ(xo6`#%-6 ze{5BCcPWOHsXGg$@lzd`uu+@`P|5~ojChTqH7YTarFx+9n7<>{csSMQ^ce-t=85@( zezT9l%#%BjwNeiV5q94kQRWS&&l^}9Hd#w8|6q-ZHH8G+a@`X}F8YvRVw3p2<7zH5 znPcIBzi9g(Y>hNpQ^4BkPxMqhqB-r(z!CnuGw@PbPPaF*GG(81RZT*<9Gd`M3>v!ay=<7y;b!cq7L-w$*#C4~*fyC&{uRn4D#BZ4|{pjh@%wJoe^ zd~v{_y5_#GIhkqd(L#&Cb_AIZg0(`R;gTAJ=xcaWGV|fAVP6!$yzxji_Sq|3^L#HN z!HcIN4dzw5$nd!nLhlT*3!5;90oN{~_ZP|1&;*PQWsR_qz z`#0=qA}A%CslcXe*1Ve*n8Lcw=aea$Ft384@N{)#8JT zxab=L%tBl^#xQvB&Q*@?>oKE7`LO3JPC?U(p{xSE+sbOz``TBPq(uH#QV1?|X{$<# zdMkR?Ddt?K=IFX{VQu%&plxiBOAot@@JPD7jTQ0vG)<^h@K9CnJPPV9R?=^0{asG< zQ8g}WND13nkbV~C9bDwD?0QH= zcCa?_`=<)kqwr8w*FOSbwK2H|=O9X1*i#1QY*oo3@UZ8T99f_}OS6i&ic+64 z3dFoEGI+igCVD!^b9B$rLHuAB7aI(pk5I+B_^E{Nra086bGiedLnJ!Wq3tZ(|4Kw& zPm2Q^K>BivkfOW)paDBsWtaO9!NZdyXvI!ex>WmD!h|BZk{_i(^4*RY57xVWCMfgM#&s|(gq-8(Pfy%OQO4!A!wbXFxRAWF& z9`}4a41HNU;GR%HtWQo-BmDwYAkIm4#Q85yc>$6Yjv~_t+}5E+``!r z(F5zL_ik)kNK(Ug;}kQPAbqF`{m!n8_>VM@G_ecn@E=6dq>8vP?q~s#?0sGeC*~yO zntF(vx?LnsQNd4=mDSbOqi`$pa(RF_aof^E~J*V@$U01Kth`&mI>Gi*SlE>CudSiTn`7GqX5cb>Z-wLHM`JO9>MWj{#i`&n&T zd;r|hYRXj4<<@ZS&l~^4{gQJ#+qsLY+@S}Vmv1lF4c&7mIdpg51MW__+zAJnkMoF5 zs@jRv^8nP|ILJKwLY@j&+a~7mU%C~%d;ZL;*<&AuMNr@+#uH5JuSxS6!75>)nM)6Rd-bZ4(?uPTCDcWAXJUw4(gn9FVD#)V3k?T3%># z&Z)Ky{?};pVV2}l93u*zcODq2P8uuH(nAqeSjIbqci08ttv5K@iffnxLDnj$l63-E zZhi^jlx0B)GYY9@bepJ}Vf#lwJymD`yab*6nJu-*DI?I?qiOsSOL;cL{;T6 z2x(6h)0v;PIyFgW#p0Vk5q1s36oXKhqciPLg!V6E9a2wn+M}S2wCE1t z-QvD)2RR*KG4U7R5||$V@q;vn`3@uW@7sV9-CCdTt9{~P&>UTD@Y>ulJP-xnqAQPZ zWNNrJ(yS}NQQgs%`d$;klzZxoUd3EXK5U02Z`PsW`N}Jv`2Sp@1BTE?s_A2LP3H_p zIYT~CA>}=Nl%x9tSlb6tg`uj;(Jkg-zwb5EbRNF{Hn*l4&%;~Z*u$pOA`XQ!aus$2 ziPB~r4L-_>MW?FfbObg>SC(T+!IWH&rx?W$%CJBsD-E*T{Pk@csNby>K7X-|E*xdv z@n=GBeo#X^ZK_L1cDam3D-SDqUavCJLqE>OrMWD1zz9knv+Izfzv?61%fgSB*+R~@lf+(Sx!}oQxyx^Ox%3~lg8mJvSX)!!;UDM=j8?0wS8;iwc8c?)aUQql|7pgcz*$w0o|k?R zr=QK~|Ab9>nmy2OyDz*kCola#PT!N$_k5od{{urwq!(h`D=$MRX9(sDbFzO_u=1`@ z5R#YPnbT`Hz46tL^siNqY8~|PybphU3m7h}21A>VKQct9F}N6;$3q)9{R&S13tHg+ z#yIhgFlc37`f;3o1gG!*><9XI!(f<#82_A?A(}IUbB4J8b7@gE1`&Dbi*R}mPQU#} z4;g=khwL+E%JWrx+?lxi{GbUv4h~OAozl~}kL1+Nh1NXu)H8#5#5Y7_;Dg~{QS*5n&QXJNMBpoZ z+=^(`uMrNZJl%?LDi2Q8>h%v+7$ZQh%6hp8R8LoessgA)H3@l<5CoO4Fe`MpzM~MH z;-qPuG%@oBfreIUw9+|)gMJaGpS{vr`6RogWu-=u`)O9Z(46I{t1WR(d=M=zxVl?` z>YZkV%e??Ex=bk@coQP33u6k*R9b=|DePi@4-M1L;`by`i!;nXb5FA}VPot*F8>pJwHX)(22o2vAa35uszIiBEr7 zbZ!Ib;$O_b-VLBue=)BigCn_5bXP$i(Xu7q{@K`bj>% z(t>FXa_y7*A%>HOKyw_9x^vClRn4ugG!&Yn zay36|ldE~gT%mdCtsgYU*fql;YUHD#P*wNyQfhXF^^Kp?7YgI^i=9iE8PJ>9A6u?l z!hf-W9`>6JICzi%W1oIl+8j(>r0O0u;Pzln7fvYH81I;Cha*(4WVYr=!={^VnwE~w z6ZUMPxR!v)k;^~de{tkB40#8JxyF+h!_nNQZ2zjQ5zJ{ z-UH#i_|6~KGD#&F3uQdZDBd99T_2qC1xBgm{VhiGTaC+lE!|mE$EWwn_>=?72 zZ=c9^K(8;MM`v02V)eMnG-Vx#M8>I)u)i2- zws;T1j7nr+F=ggr3O>(T7k~P%z4lOo7xOMk*Z@CF8O54RseV2DyvYALE9?mp*syZ=6{sq95o!KAKRj~hCcSh`WgUW;>xJs(Fo z7nrx*JAV#w2z^X+4MGh&0fBc$Ui}`6bwp18unNU;g^nQM9H+)yXl2-%(};RpVzmu* zRpy)jd}sC`+I)!x79W($eRqN2zV-^;Y7x`(uRMioo%(|Yx(CzQi@4>p>}5<7uO|5t zt5@7NmpfSHK6%2yefWgRUC3MI-ap6@rR@21@-m{7f3TY1e}A`X_k0m0Kkho=r-b>c zQGFd^&-e9Qa2L4<6fns(S7@X8H1-OF_5lQlOIN-N%{QO+Tw$eZ{>*v!GMV|SD*VE) z_WV98SKmQ^kZu2djv0g43UJ|>=j8b}t7$knP{^&AM{dtwRTnnNZmKYGY#mZxfkU-Pm-j0~BOC_J1 zEZA@t5Fjd@{T}mPsnqQz3o1S+S8T8<)F>6#oG!%HteR`=i0Q)E z0Wud`561Suo5-#8RJks>a-*ixxI2(rLX~^w)OWd>>1rkPiI+;%31(I9b)H+f6M9_t zP@Bjc&~P_&ci6kYOl9vv?igqS!Y_~9R%RM{mknU~Ytz-cI3fRgDAl~j8nf=9lyHxY zWe;o7r+aL8iK2BmtD$+2yXFuS@=JVh92Z}Z!hSntcR8ANpOs-1yV17$IA5H<6J5Q} zD*2y0jhXSN5;zqVA0^HK@fZCb^pkQj4=DR;Qs4tt$}oQwF95pAv(V$i`~@D$$gR}% z0V~qMn+IBBdXz6$gvZ!zY~6tr3VfxcCFjt;^VT~`JCj`H#nSS*G#HHbB+6L?du z1KK4+w`?YzdB94RdxvSnkQ`e^3g4}qfH+}82A|*L^$ovsC`-lvoXW8;qJ*PwXnE zm{473JYs`l`0A#6bHQY&KZo-gYb^o+Kgi!gFvx+}n$V2)K4d*vsY+Dz5vx_WT&kBQ z_6ho_2@64MseTf#akFXQBP897iq`Fq*Z?hSZJ}aMSYQ===>;YjjQn9=;tR&RCayG; zJ>g|S9oq1&lC8xrH2ewk_AQJZJ80rXjy?Ed(tMcs}t$4!9vsKgS%oFC*b)ibI zl0VFbU--kWBL(l8xT4U}=La2Y61mI6!N4VsJ|{FaRt2>b4-W5sj=~k@OTJH70UDq% zH`xa`3h~yKqm>FP$5xr?jKX~673TkdtD32<4VF#&4c@dELx6>4zWiag%z$^*GA~|q z^TfV-LSD=AofVc{od#Bm@veAq%U+zJtv2Qxv*(#Fy4z6461lK-*kfn-pRk%jcO~1Q?PcjCNRmF^= zF&$J6?pd4^ODPx3K_f~GiSLO@#hQK9oO{n4EROF)m z4#Tw={=lkQstH<7VlgZRi3yjP!kBud&`+_Uszq@IG{%#F!`vut5zWc$sSdF%?u$l& zA$6=>;b2u?TP}qUf&=jh2V|?THH#q~7aNwh;hN^WQV zyvMA*@fO+#P?YhVZOHE#t5_uq!&V_v8OViM z8v39^o)ge(vv9f&=- zh)hgBS`6JBh+VmeO9EkXAc}I`qOsU35Y-%rMQtzzsA5(Kj3+P_ofrPi7oF2%J8Jpu z20E~d;pap_GkKa36B(1s0ORVw^ae(J?JY6Mu1efv(-dHkRdnd**$SY{D*#p()?)pL zXSPxkX~}aI=pO~m_)2|q{s;}L&mZQnU_AI2>cgs(raRAB<%st|fa|y10_7L}s=Wi^ zr~J(vb^{MV{4WoqB#1$ux^o7Z*Bd++f~ffm+;k9`jq4%Jk0RRgfo0=tq8F?zo8)Ot zf59d&<{v=yUf~Xa9Dj;`#kMog_f+jQGqDJN>!jDLhn8*4rrU3DTC4Xfih0Y7?DH;4 zddtGt=Ye$OEn2^S0!Vqw0*bYH3vV7tf9hoR3&(5HeZASe4u|O~y``XctV(?58>1$l zekM+xX!hji4mqV?g|8`rMg-075?=T6_Q>q_7PMwVHvaXilESv(>1NhV;Ntwo@qhO* z{NE6V|H)(bxPwP9a^hqV7c%Q!a0!0T_`my8{vU5p@R-~bn}bx{NnxD<@GwoxUxxM1@PiFxn#D^A1_X^MTAj2im6F5 zGNsAvuDkx)h^>7`O&PksUQ>^3R@XHhkQj^J;{MxfT9=LE#@$}iy==COU42D~@7W#p zAj{hO12)dGb1!J(CtPW?qX=bwVnJ@zUcfc_Uymk*ReE79_L*JP8lqRaYxbqXWMsR8 znY>dJb|sUXzOr3q;#UCmT1CAPt8ig1pir#Eb9d4tg>}oMhhN#t_>`wuUajiTL^Hb*&5s43`71MC8aO|RS^{WPit05Hs z5$}&_P>LhXekBmnM`f7}CGlc5#@gn4N|ocEL9$+Z!JL8*b>+Ojus)wY`8<+6>7YNt zn%KTcVYd{crqtxFdjesRn)Sbc$9ye__rc75ZxC?RedQqcO#W}M;Xga282DMNi}_z3 z6{c~%VAfsBMaZ#ki4QayStC399ktCrDwU0o05Z{i6qMm7Tf%nX&HOFtvA3&nA6}Ef zs^Q#@IbpUG%ZAFul%|!Intp}R+LNf&R?UO0X&@>GBHL0lYZk-p$IyEpJ7xHXzHmYdL38^1 zi;4HNB^RPOzQ&>Mx+k=jNhMg?V>-d4dPS#!3V!w1IO_^RL8Ms;;vHRQo&E`xkfa9n z^K&t}z4!+%>29!ViVys3*6k3GlR=t%NNeuvZ;ueO6rS0FMEW~_FzZ|%(+WunuDKI9 zR6R&N-3GiynokBbz+KPIy5%C2m2}tNSyw?wyc^`EP0%=BGwY^4qWrStukQ;u(o>Uk z&fjco`G{)BQaM)XG4+xq?*b=*nE;9536BzDT@u}g z;5`9$N187qUm|wqZV7RKw*{PMQ>ep5IF;Vr=bC$;H0wU&&6E+f0{+dxb3K3d)Bods z<30_}C#{aJ48}d&6WHlJmeZhcK()ziJi{NBUE-ojNpBeP7Fs1?X{(-E{xN{BJLuiyxCicn;US|4LB7PNqaQswX%vu+-LO-VDQ znxq)BG4%m$$S<{Fzuu>B`K3~9&^;>UBvmRlWD&m$qHh}ROgW702^wsQj?qUx2)U%R zUPMEjq@v8_KAD}6S-lp~AN=`dA^qhf`Ll})={cTGTNX+vre*Jv!C7kIq|A~~+{)ae zAkUa$;I~k)uP+ZY0SE!(}mEDYDlMs)~O*< zDc7r^L^U*54P7?#YPJCaqLl47Q)f5nXRqToc`b01|GTI2f5TyX=7HA&w*}^=!2ByP z*KUehpz2kD`CDKv3(Q6QD>JbAX=yjx617K)`ZdyGh~%iKUoGy9Z&6csX>`!h8*1Wu z#D<78j`igaIkprW>3jnn46|ysOb4F$T%LkL))7 z@4kiq8#Y~6BYQ?*P7BOQfjMzqMAmp*V2%n*y1*R9zcL5hjK6wni3L5TP z%ty@bL$6zd3QDacFW@cLVgcr}3u5tu3hQ|WIJ@oE(Xro6zE6`0ca zSMJ$(UB86`jyS6Ll?Y|);;ztpFVrR7uTWWo)Ue&h%Rd-rcK76LI?WYfpY1$$yjTqR z5aN9iE&5X~co!>yK{;R1cIfW&a3){R*H2DEmO62n(hQPU$Pmck1=qF?`vXysyV}EW zLgFbW?l<>EoV5ou0R89^=?Y5~ndK{0D=d|dF9XXG-GlJYeT;tPOVFWjs0Sn>;X~Om zlVeid$A59vH2ujfF-Ci;Ud}y$4f+&*lTOkH-RS+W<^Cnand*5<0W9P)_41aAvHX`P-dieM=H*3UP`d5W2ch{6!r}_%qz`WT zDXY=VfjOry(gAO&ebvQhMcvXAO*D2DP{gpQWVdFrc^!Y{7C^=Z= zSNvrc>Fh46b0<^RCGuVbc?@TfCm#FX*3?l5YG@u!1+WN8-+7L6O@FN5H{El z4tOn02}N9>gFaHY$NAEdCaTnyu2|1RV;*&h+>1zlmFCXnnsuc-aRZb^6P$)xcbGT2 z5PeK$IjAh06suESJUM_F16@u*>QF=~AGLoIXE6kx;myxuY_RLR6%7`@;~+Kc&K1~Q z8{@>Jus_?1nU~X$5rf-r{?g+SmU9{pOC=mvI8j8ZR^T!ZriLBBL#g?m^7~5FaoGkJ zKPe4|mdv-6)z=~L_Hqs~{(cV8PJix&$j!rRt%#(v44c7C+SjJgfAlFs;cXkgtwuSt zi4uGz|H56HV@7o<&N+djG3P)mOy_8~uT&@aa=ge3EAR-1iCEnji}nb0DGys@P56s{sBMc&oE(Az^xLfCe7o|dfq~q>E z+;YG7<9Txuc9%c2*k6o;s?q2&^9`*#1+Ve=c$!mGYV3K1lbE~U0#76YvgOwC^t7l{ zKHTRs4ov9|y&ml@5C3}E!{qdnX^;2QbWbTgngAjAXQzD-WH|NSRkLpxw>{NZ8FTdzS^X5n4-Gzf>!J$Yhkl z588M=783XZH$PL>?I_>56V?hSWevWAn)yJ4BM>&3n_W{b6yhi9n_bJCIaOED&R=>D zOv=gJ&%dOGU7q{Osal(#6k5CEp`5~YKZyM_31XXZv1j`AqpSW>P1oH3#SH=O@0wI3 zK&r;ZPNL=kl3%AzoOUDBW!}lVIV3EC!>@P(K4q$|Is!Zjb`z{HVJ~)gI!tJfxg&_~ zhlg^J*O94VY!V#{kZPKo6ESmMEF?|r<;c=+Gh`)TsF|`71=wWv%S0eacNhO!6u4&v zkk+wI$vA?5iwH2~l*^Pfks6kiLYQeHjV>uQX8Ez{w4_v2{}dTapK_2p!lL_o0@+GR zO^aBOakW!*X5e76epWMNR7mgWPR&Y5!L0EFiZ3Pk=qqvFq?=q%>y|$>|Ej!D{_hPT;eKKMNtmetOo#_DL6%g$#ekHi@Q`ucg*}q zxsUys>X~j-IZ^H&xUs`_`!fX$%jZ4Me~=$#ZPvP4>jz1n8C&(5>Xwy`v5ht>D<>JW zY`#K8%1gtU{Dh{Lmx9=>$F!}ybdUKa(61GweXQOiYFSYVF7Ec|OHNaZ{2u3|VnXl6 zU1(vh_#WG&wqi*{$$DsAR#7UXWfh*&j!M!;mbK5ixiX#wj5emu+?kKs%=fIjLZqgQ zO~fa-t4q~cqX|^2x|G_c#A6hb6FecXZ&oa&g>~JD+_L2fkFC3gqi3pUrlP|*dbWzb z_Xy}oD*Ay~FbgZR)9PcCs^W^GSc<73jbtZoQd$kEzst~3?wZ&7j_#92QAkbcRIydq zvGiK+;m)6#UXEIdLuQY(7Oo}L)wUy{WEn9mBt37VXI9)ec5zd9g*A#$X=*| z(lCn1;bbdE(7RBn5$iO9!fHzw*||I9QAZlclCJ(fp^n5@!B^HvVNyPsEgD8C5z;8O zW;lI{Kx3Kjy49zF0KzNN*775LPn759zK8>mzoY4eHr?@l z^r|6p=KTItE>gO~X7shXL`h3zR#f`_d`TTAsNHlj0aZYOnQ3%XdH+DpIWH@pr<6)_t9 zWmwSl4^c&Ywb1fzQi#i$7*)ra82Y!H)SSINK;^qjEg9QE6T3_8+0&+UrMq<8K;<8mg)9UkzUdu77$G-y+F9vM7MfL>1^^ITG3nDVJKGzI(w-)=dBSs+goYC zPf}uhH7jl)Nx7k)#rHDXmg5gOZ*pzWR~0RuQCThM2k$~RV>BvTpnGsME;$@liVo-KAu9S072R$J(6xY8l6LbOPuz=fnhyM?HOQEv5?#UyhT^5l_!U<{6SxKcsOZBS-9n9TITgKz+iz9TD>xeCL+Fk-x~TYD+ks!G z;uAUkkQ#x^RU-P2c?8C(=-wQ?Ohunj(cT>0Sw%PG=o_l?O)B~)Zh9RR9mvstsN6GG zRUDiv+vX#T|?2!FRy={4HD1U#H{UJN7Bl}C^wa)90^NyWy&T)D-Kzi+I#D-01 zG%eKcE{4-;?tLTa<3MQ_dwkTob&yn0%Pt?Gql2YzHV0RF4UuXVxf{VRIIGm^h(4E( zVXDBn0ks<<&0(9<@ws(W;V;*ceyG&T*(+W2BmL5?l2qok$m@ILF+QBttP`Yy3LkCCcqS=&X{+GC|4E%RGRy~atuIB%dY zIW`%!CEZ)4^;$4q+RI9Tpk%s|Dvf6^lBnfO%x*18qO~)j{q`@^bC$Hx`9cS=r^4L9YM3p(Vywn^a+)WF zhxX~nyAj!FVDL>mT)EJMUspJ(mJ)-PkhH0~NZ>_Rg5M{Mu5ofkAv_G-PEq1K$-t%@ zr-k#-;WJ#JYxB^~uDMLnze-Pi$F)bJ{t%ysv{ld3kfet7YERAPBSPMjDR#b8lg$}J zo90WEna3r%H6NMk(nTt|Kzhk;P9!%%c=ZKpLXw&JT(JI4ybbO$fu1gefa7DS;3BCc z+c27pi*PUHi_sWAgiH`NK8>X{i;$eJ#?Xt!k}u^fLJO20M}CW?gaS|EKv;gfAbc>2 z{#-0YFnk~qgq2u&Ecq>w+OqLy$fJntP1Bc1ec6}4tgn_x&bSeK41M`c8d`K->=#^t z#=GuugVFiMwaPK(7tP9jQCwmvc`1yIA4U3Q=#Eq!MsCZc>8yVoEnF^jVxKbT4S!}0 zq2?>3@@!Owb^HpctCm$9Mb}m$@pg@*wyQ8H*!wtHR!JG`DZcl(num{(WwmsiJsUu+ z*GLywgAt@n!d)nJ)=GZ)*u!4b`A=yfYtoC}{wXbDTY6e&ZIo`v>{1u&kZsa3Evwqu z>b67rggXp7TAg-D?->hgN7_Bo7fn^iqhGu1FbzO zb!NNPkoFkd*0MEKI))x`^XAm^m{c@C+l-<6@X|CjtY$fkAyRVm$lkIwUf!8mmm zt38T4|H6v2C*yJH9rJ8V6;DVD*!V`)V<#k8>wK&c?`*j5GSS5hl*)pQDd?osfc+gw z15cud)+^F_>!h?v%eFV58K0A~yLvI{Duk&{l*! z_jE_)#Xr@Uj_XTfEPi{sTW_D2CTm%(Zr1J>r4v$xJyA&WyjNt#JwqINV<@+;kJ{s0 zgtSMrmwHi)zojCE>KxTqMGaO_DPA<`Z>f8ci%oQpHR(fk{_wa8Cd<@oB9pi`sY!4D zM)mY^DjohuD#8lQp@098>gZ`|As9En$&x=NwUTcQ3cM->vemPx$yF(uZ7^ErUzN&g zS$uUmd`(JaJyWRpb*UkHS(oNrm-@2?)#%H0X${+Gq*eb)vsfFWTF`^DrNZ>n4LIRr zRhoZ8+F5vBJ&_CTNsYDinAD&m8}6mi=3wuH40HLR3ZT$Gg%$S~j#i zUA!;dXXbLW>w%Qb=9HyP4>4$1P=?k&lIAj2hUz|+PO}=N$>|A-VL$-uqDF zw^9uIScK-kl@!(^h~nR&mR;yg>)uJj*a+WTSG8fzKGu|Mw0?ER7E!&_MfK9p-rv1s z;$Ctp#htItjqnt}K-KtXbzJ&l_%@uf-b)R9{`wKb_aeMfc zIk;!w*TVGaleD~0>mk_3-UoMk1YxMo2i?LWHfWU9KsEe7{NF zf%^v*(%8-eqi&B%YAkDQ&mqx~-l<{N*HF7}QXLjkjOKomesw-E038!cSpGFsB}c06 zcWO0H6pKg{<1rrCje|WPF&mbxri2`+ZDAh-vF#y&Cr?<>PN(P-9=8qr@%<>DvxGm z@>{36${n;)ca7e9&rKepWiP)`ivn^KTmOv~6p&Z4ILR8Smk*;q{e?bx$ZuKm&y-bA ze#{!orfZ(^05)SGH7F!k$H!o=dddT}&nN;RFCCjD>Y8v&BHf5Agbe?DCYAG&!`Swj zG{8$vV8Ju3Prc+hT9%$olM2gIrCQkqXu=-Jj{?2r1BF~$s^!0!qx?6t&>L?#pq!6| zXSF_jEM@j9gaBrHuY|)}7;q>slble;K+k`4 z_*7j9yz$Y&%qE;SHB67NLM4mJW!a;t6jM|V_56J*K$m>ba#}EtrQTeB?-JN_w6TZy%s({AE*EDD6`e;>CwF}w1nB0gp zY)XF=lgky0n(~8>7lKDr&sC<-%VP38|A9^NcywjT4<4PJLaY4bh$gLofEk{3c)qEH zK(0Hh+6#A{y`C0baaE4Pqk07SFGKe=nV$Q~-oeQ#V5;s8-ts!|Ji^Mp!tfS`>8R}@ zk+iyl$rM{$4y_Q+k$)I?Cj^P8_D~Se|kONAuNXnCSmmq*hb`7=r8m%|?^^E7Vy@cF=y>Cp}CFDw#-u?2U zPt|;T5AYxI?b627(qGQY8Nh~a!NohmDbxjaJ2L`-z0$CF1nxn$i>DEi#LLkn-E%y&=-a3zE<^VZ z55sm)T;&vMqsRv&Y2#>EIk`xmO#q()hsY2KVePmAi*6pEv3}?W_@UHJK|qavto@DC z<3xg+s66@u$X8}EblvResk#<;<2@Z7nbV z#{8d9^9pivga0TD6Yg<)Q;ms-u-udymUM`=Rgi;O(I@nvg8U~N_Lyc@lsB=%kF518 z$-Y{4^ci)jESF;+o>`|hq^tgWsZEMRrBX|B=aP&uIB zbpQ^P0-tRx%BoWN9&HVkr?Tj66j~c~(Ag|XtSzUxTzZF_h+=iho8#29jvUDTmBqhl%%HuTz#?`J5B6uT8M74ZqWw9~>U?obHFoLC#TNgEtP{B9D5q zx7RLL9X>yVYRhCv<-3V2I(*2vPCdC8o1c$5)sy?z+1Q7dGl4Xj69-@xFw3Oh<~|=_ zeR3RFGV#@9_s2bu$}LonuJ}_pe8Zpgxt`pfEiOxK>dPHjD^J=~U+(POtUVX#-o8C~ zgv&L&M~l8$ATIjCuyg|ge4?q>YU&m)&n!F#{bqg2U;HK+i*5}9NU){9lQu%0RohL6 zL1wBkNI>_eaetNLAWPChK2=#xcLRN0F6=0ty!_5;3_01lJsaqBguLA?>-^^&eh>d0 z<)210t%3ZCU4B9n8p`w7CSUT1l)XKF^(~~)M(pET1F(#nYK-b<4ULq0YT1*uv?NOQ zH_mCyXVOtSwTH$$%XAyi1=FW=2P66yXAp=^ox%--qYka2tSH&rcP*gYxS@E8%H_itBP(@37oT6d+u#_}IE zDu0zV5tcYjN_O1itfWe}3&VCExxyM9zr55-Rz2DL8~={;R9$IcgzvB%jHNa%a7SYrY(n8|evTHHEUQ#dl4wr zRN4N*{VgD@zL2Ijl|#iWYg4&alg1Z#Ia8Ei%n6-%CrF0;2A=%bXJcE>0qQzepQKvw zT%t%D_mN=QcS_CVZI_8mzG@jYj**A4qwUEWBQGpeX$gd!#A=SE=azcqp@hR&L;WAmrZPI1T?+3QEIdmF6a=8KR0f z-U78iG?EW!4;6iiqnmMbe5(68jyI|JSBr%OU+_>WtL*i;^g62a0F`|>XVL0OQ?JRfKvJAyqv#T7SWqtNi=WcShj_o2qj9QPUa91>W zAnun6Cm%e7OyYDS3siwOHwuBD_FH3m$?+0< zwT;g9k>B9Ed~~F*JlpW8)_3L4lLhUa-PFGyYMQ26TGdZZHk8goQbZ+j-A#4+%X3)P zW;)kj?#jkbpo#h6Dn&6JdmM#+8sOFB1Pt{YzuAY=p>8q8(> zz>7Ym9SGnbse&?qc;}aRB=r?Hzh;&0z_OM=$HRLJ*H^BT@gBI*jM;$WqgYE7rt%eWJl=t}dlv!tc?#Zj0(QeoSmHSyCr2=r> zVE<)cp#|M~_X~Sbu? z!%qNp!%1D+r6pQ?1p!PE8T31@~_d&6lOAhd3;FY!&T`m0PgO z8^|?IF5xrsDSV(!If?zGG1}A>c(g>zTXz*Th?C3vXMtH>pnmLJ)}?cTsqcXe|*jp+_dW@cn!SAmUzPnE=D1bVDJ8 zVzl>7mWZCF&^Gv}OdR?Go0^8I>dQSW)5Z~xetuBr~xU0q#WUEK|ae$t!br;1gC-MwktRIydH zt~m5x{fq(np;`J$@E!aO&Tr|)Cf9joR7GVp#@py%R7Um#dOcNKD6H>Av(m*&HSYF= z0YmlYj?c-ujo#>(fAx#EIP>;61_FJ?Yp!Ql4BL9r{Ar>=__ZgknI<+A`u8OJG_jIf zT@aSbC5pLyQpS_MrV4VwhVOP6Nd)8a&pr2Nh(9xXrl-)txT-`eb$I z>icQMW&?2>&677v>$=m>>6i*0?oQ_ENU8H>+B;pW=JM{6QoEJA)9dM|O&nkmGy@HO zq8l}zA-3{r0kl5jDc6%NhB*i%Sfq}Z=&u=~q4Xdg)!L}gWJHBwbJ$O6S+Crt8#6Fl z>vxIj&J@2l&g{zT&Pzc`uWs_}rkfxpxlP1y58)Y7e~|E**xXa70?1$dYf$Y`-Mi9@ znJ88Dt`uMvBZYTeD9H@gINgONn=uhgzd*aqVy%RVT_WMF&dVslyH-67+CGB2?OF^K zFDQk64!E)b|GGkFa0d9>!iT8sGvOu~XNi@3CV^ZVe%8Jajk;NJWKQz zY@LZ_VI-N}nRf7J|ITz}mRM83oilD0v8J&_DTsjks@(AFrHBAcZ%EUcxD72lH}5a` z{R7^Gbk~+a{v1>3UiDPycJ-pk7SYRPW+#PF;?L1iix}p0{v3)MeJMF0JWJWtjM~v< zouiu;F;N(Gj;hWUX9?TR+IG$sM{9-7XQ=8Nah-7ZG+mh^mi0+FjYdp|%M4#+j0}N? z95R>mJxM=T>>L(dk729H6hNcwk7RrxLk_(jYo!;j)Vq1-&W@S`|0 zbi_R5Q2F}5RsgL=`&>Xv0qQ8vi#e3B5aZAH$LP>PFi!e0dcRQ2aQl?&2`ALvSp)Qk z{GaF2#>FCTwO@p8v1JZjTZB&3E0_EigYfFnFN7g~AGLunUMu{TLmxr9Rprp`O8tqr*(*xGeotejlDi z+Jg+!$G=~tDuPxhz41M zq8B2p7~%d<WQIGah`(lQurTdcfqk<_T7uyQ~$FbwwyC1vu5zw@>mMEv6 zb_|8YhfmA#gq@5J{bs}X9O{rMRu`J((2Pv6nUK+#PG^cu4ElY%FwIT%qTKK{Iu;*c z&7n%mv91!mkA^LWxH27~>C44z|7&|ds?S)8Pe;vPL`XlCyCWe=n+j>iXcHzVN|`H1=c?%D zDmo^fs{aPXuvjd${Y~s`=sg1@A?lQ2Q!^!nLK7YR4bzYwG4%E~(O7N}&$rzP6c2uv z(?K4ik_W5gqoz{QO3YzHccW1+LDr`kPdB8DmCzlh?xOW8#oDQ{Jk}Mp98;PqnJhqL zdHy)1m_ZypU*(uSD!N%3@*J(AUu6It@1lHUV-+1bg%?RhpXcbtDmqw2_vW!9f#y;u z$>gq{u%X=8;htukm`$U97Y7K3cGA_~MPEZNo&XLHBTrJES zM4#87LT@#us%xS0x7kjKYsGqzL-7^6?y3sv^;ji|4vkSQk4G!jlE~3vU`3Q`uZs4? zzKONsJfZbATg!D~kl=QGEWXtH5N{jfnz1x_y;#A!85#o2`~ngTV*TZ2^jT}jz0I_H zJx0b)yXg6POb{y6rYe7mzX^YDqBDPrZG_yN6ud#K7W6p^A{Firo4NeMm}4>@b<7p` zrk*t8gq@VULG0*pW+Rt_hx8eLf-ueKv6HTEfGa_>zEtrquvNlDlzjkJMNszZ^^{K= zHJ+CKC6*SJM$(SI#3sdKB4M-Zfuhl0kJ5{&n6@K@TYOh|Y8t_+1g>>bzRwIWz z&~mq!(jW{1A*?>t@j%U^!6bQ|Csw>GA%+$^*47Qcl>Ccng&SyKPLZxhm(ajJTP#UE zw~94Fbcl`phyxHa!McOH1el}(K9ZQ@cI1_YMw4cY-a=cqiU)*>>uB6IF+ng_qr=-U zrS4IUo^KPomM%RSU90{shbm){>{U7U_}{Hc{kDq@d#*)L-Z}}2M;YF{m{WsE76SOq z)H-Q0uX5dI87{SE)xW_P&l-ZeLX38iWKg?up#-}35Ye=w(cZI-V z^w1_|3Qt$j%pLGwxwnB_cfyofZWT@131zGfT)cLP=LO43D!E&%RHfI-Z{(D(ej4}D zLjmTGKyTEkz0sqFQh)}-XwYuhts4xcqr1fb!>8dO2~bHURaZz{htbE~VrPB8Z+vKO zetXO~s4B-QQolW7f1zDC9p3|ud-DoSEuKDF)Qr4oXYPLYYP!W zsM|iVqT7}4P@CdrUL0f9AvAxV=;Jl9dI=4`X|P{{*`W-l8~0_>{(WK>x4xNQ^gdmO zOk2hMBGbB$Smvo&BkD75p*_=#8&{Jt3+AK3UujvE=x1n-EOz}2=7tbhS6TUlhJ)!; zme^i6x{5*$pz}6YNWDuhM5Qbm4Dxv@`I|}#`K&=S?SR-o7`>DZ9T3L}9xch3EtV~R z<`=M$B?&snhj^HK;?j-V0nw(^kB>ewx;A*W&MKOmE%uKX1+WPxR#~JG{Oya4pf^G( z_W1NHcl)bPMILXciO!YDa8Rr!jQXA84npg7YDqH=LK<&Pq^k$TDZ>2z)cugSM4$T8 zH%(AEKy898p=uL&{zS76qX}kLq-}@M1i2Mx-VrfM|JRalB6aasBi*Z@MryQ#y5%6! zo)F5&L8N!V)axkBQgt)whocyyd^72nqfptVET%U{#ofXllWlXZC}@S&U1<9;=rk)A z()(kuh)-E+i#jd_YlX%?Qr8psmXbe`<%GCB@^~P)9^H^PNBOc!{dVdOCaBp;8Qs=% z^jZ}ys_1v!DCKX=Kt9f=6@QD#!u0tzpOfMZtzV0|_>%N{1u!Lc;+@T$!B@3W%T4E! z`)Q133z}2HX>n!~=jPgfxuYs0h;o~|GK#F7v)D1R5H#Y(GP31H4_F-}ow27yLSRFLn!BKxVx zejHgNj#{1-qdfNl28DFT0F!=rmflM`Fq;;g6|1M-wqUNzMZGfN246h$MXb$DMUBPU z4`2E<)$O1}v6gcDRJcN@OZZ>$i&gw$j_UR$9lGu#qpA$oU?tw&~p@Vdum;SzBbZu)RXOyX`FP%9j8Up(Os|xO@ z;&}bWddipMmRN|L7ei8C%<|OaopP)VWaLjiWa^ubWrwIU9By;K=b58E>ERE#x+sj} z2Y~0Po1-pqN~>zzLfjnbm;;4W((!5^j+#@&D^EK|TK5&-wInBK`IW$GyfcgTo`-sJ z1ShJV7c(R3b>+g){2*D9JKuo=Lb@@YLl9gSwwuoq`Z$8uU_(Lhco$lCK`c{tUrDYH zNU44(;~9PyQXq<(%-0qyx(%i1{spm5LIahidL@nK3x$M*k{HC)UGapIRcy7GRM#c zt?;D#7h$A{_oQ-{#6@MVA_F9_KmLEvZuX$_mq6RugFG&S_K}A|yUg@IXtUkv&}Hrg z;7-~r;-XUT-4$B>2+$sOPZ?-2T-VdOE8<6&n{EoG`gj^~T{KifC_i>+;D3GKI)K0Z zK+j~PBQ12JmsiE)$fng`)`y|34eTCRL6eW{7Bsuy+JOF)A8$T{J~P)J9D8an-zf5r z$$U^=xto5vCN^x|w}=vQsH&$Thr&P#P2i|J5airPoL@Fq4|L&KvF6JO=67&Za93s& z23N#Tx{utoE|tG728X`Eb@NKjNbj6SaV$(6vR42nDJxbMU0I#-tJ8is)k^%& zZ+!&tx8Hhp0{_1i@O0n7j8ySuUp~{jh4{3^4I2vbjD=DQo39$_*!&h4BIBavC7 zzeyy!y!0cAG}2L|k<>GU7ipyJ_Yi5gBy6fmhA?TE)4K0?oKievZ^{glo_SdZBT8|T z`OK@8XuKwTy5?^lZ2P^6)KV0p``g~skXq`62|g4TBTW{1C)p0iNc*%xv=?PG0-#(w zk{V0rg}&$LT4U+6@S&vbS`%rIAWZO}xMrxXZY}9pGwGJ_<4M~eCdo%DymO<&@rZe+ zg)Oc*Pikigk`kl=!p?ZxumowBTcs54<;CsfbN)czIuxsYR(N>Q2*b@q#Wi^P=c~^U zx5d=Dt3<-KGSq9dRLb_LtMr{~r6~BFsFDBrHuA4nk>`=OtIv>=vuNG`>1SbzpRMXZ z>3i48Zx$BCTY-3edVdNX5fb}H3H7aN$D+5WVSmt>QIZvRjoXmx_pY9vP*ex#M@0Fm zPh(JZdi;a5Nk~n$Et@1AE+^C(NCTEh<%N<1$+Ar9=_!;@B2;x%pHZGA=;Jc!Phm?N z+aH-yd#$jvpG~_$I^|vLL_%?@cGAU*>^mhtVM&6T&X@!W+a=kBH9j`4-BLSI*b+cP z_Dj(veS)+Q9(fnJ49D}NT(K+J_DfMtHLBFq$Ssy&Z=BRh=+Ts#WJ#&QnPGG|OKRsd zsuuL2LVpT4AT@LfY>no9Gwp39_51@M4lCLl@fI4PNLxekx=uo!QMcCJo z0uM^6la?j~t0~xNpp~uk$Sk+O@#XOe~N+M!~?c zJ+UBfIecSh+4@<9dOn9m;}pT{_xEcN8S0L!}~A5DUBVB=xt2ACUsJf~BUdU5?aG5I(`rD_1fKO-)pgDm)N1D`j zhb%NY`O;sHIh4Y4zsizuU|IM;QXJIJ2_HkZ<_G8)FgCX zAZpy2bh0R+W!Nj(xkpCUYkdByycFbS03CE(%}sax}oo2Ta3+VB5|(L z@JsywO*zfE=Uofxe^Oc@Y%`F{DJey0V4$>9Qb%EIS-NsciV%9YAl+%Ht{)`may?;sMocOF=hYYXv|Nj7VxNXiXXmG_2T!*k(PmkGra5;%{34MAq=HOv3Q>YT)$nD zIxS0|k%@O44P1{$h97~S$$Sy*jNU2BaSh+|-YN4{p+uyGlJ`I={Kp;Pa-=jzNZu{u zyWrzl{zu0NPCNxE1Zep=444*a0bY?z217Dw^v1&QdO-<P5iD(Ex{M zfgAY52#5L^%mCog77xCNjF0&duZ5vtXS{df@AzSZ6yB5%&XI~aUiFov`ajZ&^HQ|n z;!ZctOWg#Ep6XqY0@{w&Bh|sVX>H&vpv_I_s~Ze}SsH`?gi1V|#NV`7+|YHzTY3SU z_V|I>^`tZelY55e8aLz6EB)M^$g_z>*IZBQFGyu$B7ijwKFiZJY0sGY8Y%%`mTGcv zB_1~LH(<;@%O zTc1&guB^8iV%%uoMX7teO*)jfuWmCQI2IiLyjIff+ON^n@3L|_<-6wM4JFUiQHM)X zmDolIBH?6fI<|F9JC82R7knb2S0mXdAWeOBmGQ`tBJs~tM}ml7m!r%&KOG&sB&E4* zD}kWZe?br>T$Y}A94uZF=f+ywIO$EtP}(cBR0pQl!f~1d;a?SL%LMD&x|M2d)0y0%_`1 z>9Nqmg+^Y(U>D;;v#(*Oec?>H>(a$CFPwPhAMmeM$qoLdRLLzTD!eYWaQO)kq-$}a zb~mJ$K4t_{8Y<_d%SN~kTclJ#u+hSc?{6uNcTC_T`J0QSX}&ZVMUBx+#SU$9|!$Hzk~G@e6&rDOC{Gtfi1!kk9=k>U>KIahW6G zdn~$+63w^;jkxwqT7653OpOItuAhWE(D|-R$HbbKhr|1|2fQI4FRs?b$$9@}W&OGb zX`zU;Gp;3ruZmH~zlIxUhu-;w-<&c(?8u7p+MVnxDEO2R8nO{;?r0Lj@<3B}EvQe2b9g{@Sf z81=dRSbR^aD+G0?`uC&&mvS6xkpzMI-9zWM zX=%niX>+l9+L~1VzSJu+O8+X2e%e{iD%eoXsjZPtdGz{$R6TXD z5?N_8eMUo`fJN%A!fK!$^%-F*ELwrZ&D3Z3DuBHh%rLa<`y8Q;&<8G{Pi(^ytZJXZ zp^_>`x>R|OqpXt46kQcO0nV3vteg_Y;d;-E-paCVRO0{@-X)B-K7>TFPoSuOq{uQ` zaAKjOLLDDu$0Z-UlrKI}#y?Ugp?Vj(^^eq4sQrm5%2Hk3hmR4^^Ru;ZT`2fS!)2+A zaO@+^=FfheX&ry2e59kY6eEb8$<+>_Abz9>yA)h=dnZ(AdI4c9 z{5kl6*Ql~HAwK<}R)5sAB%z-Fwhv^sOL4-S4|Lit%@DSAq|T4P;@jU-8lDjYI~FDQ z8om|(N-+8T|4MKG&9qBp=+z_XV(F6ARla`5oA;zXy*+0iD7^3JZk{w$aC=9sA4{#u zA1+YvV+_D;;_vB4v`3meFGQplDKBAj8&W{okEOb)H8|3IEBu>h9W?LSqq?R&n51Rrdw=N}5h=(7X#&%j~+H4%X7Gy8iFoc}0g z;K3!`Af)BOG3j|){q|Bm2tInt3B}X;lG{z9DZTzlP0B_6_VGNYqi<=>6A0ZJ-_wRC zl7CNkqyn|7H2NS)=c$6eiACqb744Nc3!nWP!t@V?WG~ZBf{0<%oEk>8bMlvNtsMnG|J+ zsqdoMHJjHJ4zBv_f`{?+XS(uCs#7m7=smXAyfs-nY2{mZ$HXTK=sBQDu#VR@w?@{J zo55cis^;qmzK}hwt6Jx!-%!GH$uBidNdU+BVAoTQ>|KuQ(1{yOeJAaS?|VMMVt9jS zaIHIu2S%9Vc<^}*^n$H;P2>sASHcCRFljzO@#ah1H^v;d5iPg|0PaoK9sVW$zad~U zPs&UPGmgY-UOBE3(8K4_#CmzJILde(j|6koVPie;h#IauLIOArXFVVa|Kar=Adc6E zujrQ-QUzTP2Pp5Ntgl3;UPul6M*ze*7(9C@h4XB_ep)*Jc8f0I6;*yIjctD7WrU^? zn70O6d?Vh`FHVc*Nm=~KxppC7a(|5~9zIUcyD`HwyzOPv>OH zcqLWv-1!1z7Q;F`!mnWkw_GyqeI+HNw%~A{(fjMXe7eR8U1Aox)BZ8&T;S4;coX?zQ*etTn4IXuK_ z=nRahiKSGwxmloo`$S$*`*~zO6HCgH^Zb=*SQhWHM-=x=968b#$AfglWVTr-DsPmM zw>0`Wop>$%Q$Kt(I@2EX4rM$^H)cLVmqd40WS}t}A$%uxrs7+xT~jMH!GaGpOV38p zvp14Y=|oP0s+2!o<#?SEwip^bqriM=V`{gjoGovf%&(M#l6GNKlRGJtN!V5jM|XMF zG=2=Mep;BqA1Ox_J%J;ZE3GJ1MhYmnpYqT}@&_9Kz+KU#eQ%0BqtC##pIppV0tP3w zzvg^uJ|!Q#!i&?#UsNJU86#0~7!a5G@qYS4F|BgUFVa2qgeNEs<9Lg-4Cy(T&WQr_9ys&@Z9ig_6~}&5Vh?IZF(yurgl)0K{ZLp7c9||ht--oK0--)4<2?L z^@39Qw+1%BI;POxPZ^eV8&_lbSE+PsREK;;$c)BAt`p2J4ARZ#=tsOwtWmX9bRUi` zt)fS-cEyt23l;C9;%nEWxdoDs@Fc>vwm@>#3RmXaw!M>@X)C{e<)Z1=#1bmc@PXpV zYyP29WjTDE;-2?=Sk;ek)5~RVs_;STAzTii=^vyp;hKTAe2`lD-+bw!v3o&jam*^x z6T||IJqZ9gt1OlMD18#9ydnQjQcdB+7;5`T3Kpinpz)uiC5AO`pndcee==!LHz>S~ z9U~aV@+jmptlC!|;dm89$$n0=K1+>--`?0xeU?071bs&L3Nh12d$yi7DGli*VM=M84ovsX-jVpk8eO19bgmUN;dZA^d4MD%6Dt%Q{ z4;9t?2?Yp1mEtJwxq?_474_&bB?>HDm=jBB0y`+=#!y@_7A^GfrnF+LvTvW5V%P?+ z*z(LTx#a!4{})t*{W~iiD#j`ZK{52W7`rU^c+nA&9Tg@wpm`GW61Lx^H4^Jq>oV3^ zzqKEtLYDRcw?LIs4gk~TRKSWj!g&nUxl9 zKcs8UY@o2qnVPt;?Ls3D`sl*y35T61+LhH2FdrS`%31|%4*HsQHN2x(SMDS2%^pbm zlb-IlGH)R=h~B%h212PIs#~0O5!NtTT%3(?xdbbsGF7AD#ZgDjjB1r&BZS&+w7LXa zCp5f4?R0E^;MCjbK`=8V!6!1g%w#Mx)^~;7Vst1ZU4i^~4n?@JINk4axbzs0Z4d^} z+ceFMm8Z9QR@r;V3K1>yr5E!i!m?#&s^iXD3fnu;Om}7!CU&A6cYKzy6KOqIU2Pj% zeGlfU)jp(Vo-A0n(t(C~vH*SBJeZ5(USqmlE=OA3fqn+iV|oV9qX(^E=EL zb|8i(xjqoL;X|t+E~yA!Sbnub)aoL{zRy&{z?Qg-zvjZ{u6v)+83PN`rqL$@YwT1S zP#M#PW?pQNu=FWy@?up=G`q@4r!k2aO8{^CE2}zeRE}phu#Zan>gM;>v zPt?y3BCBc>y5q;9gbwX_`rcH%40>AP1!`V~h55aO5#C|9P~u@gn_3csguO>T%`3yo z3f1yyBY!q{OQ-qsWPA{CvGH`KH&bMp<&e^;1R zZz9e=gUKD%);JlrF{2r4yrJP`Su^3E*EU;OhBd%R7x~OJ@p*zdu0a0$(v}s-Dr<#Z zIrO+3Ywox16mQLYv8stIv>VhXOB{ySkN{t56U6*VXT5lbbJ&tJ>EDNHlgq|s6dvI{ z$k_Z8WdyP4kg~2guG9k05y^$81fOz!+yRv4C|dTYx`keMitYumO2XTdIBtc-37zj! zQh8QOIB=J&+z3v1kPjH(@y+T=l zV0}bWLfP*^hgb@&gu!8YF14=2$_qQMQA#C9?4YK!wGt}1)>XQUXG!TGuffqx%sJ*o zWw;8``x@ygv!OyUMiVQu2+vkeaiV1OY5la~$|o7BKc)SZSx~_71-#cP2ARA)mc87V zCXa(&YR}=y-#n^O9=V#Ys!jajDs>M-6VEF~H^W$v>w4_i;f>bs3b|Hc6IkhDsKxc!g}Xc8;DP)@Di18$|AhzMUZQbTS#Zg4;om$E zFSyW#s?5iGF%W2vWmxF@$^`L($^>%{DNGR5>d+S^xVZ0ICNKkm*wtFo$O^1@`kSB-t6)xUUQ!9iPQHHKXHRi+qrM`emybyTJpkVPXS&^-S+t1^XPRGGr-jLH-bcK#Pr#Ga+9 zHNh13KGM%M!4%aW{F^EC4-}^G`osKxnWEzv@{VNntL(hRN5zx}+z%aIwcQmDDXu5G z-$u!;t>FYSzBE)5S$>vIsgcls#@?hQku0=Eg?*@Z+-LM~KbD;|@+VwV2A%%mFld|W z`JBfZ6$lD+xAJ(%W$pAll2sN)-=Z>6tcvT|y?hA#M^3m&ZKGJM*BnQ9IarF1hh-2y zeJ`zzV(_25NoS*2s8b+lKb$=t&eD3o{c1O9Ol2S&`c7O6=zEvUuX^l9M0 zw)uihiARbx9N@ZNz{!mO_6OKxZ3?ZS;M2H8^SJSYPYollzbi~AhLbIEnm~1MdXY*C zD@5)#imS~Q37fCe_1Y|~a>?CXP~VcP;)oGm{7|II958LY0m zTb+oDW-@q1_yQ7d*@xSpkPsFr3zPer;HRIQBx^XW#V}o-7fBOJ5z0d`#Y5e*#Fj9Bj3GGRias%aQZ53h-P(#tsCi4 zG^;NBc7^=vvRb9Oro#mL&HTqAMQ^13byoZ@k z*%IHqj#h$y*%GvtLSy?z$S+>VU zg=KSI(KsWk5OL~z(3m9?zuAj_4ZpZ%e+;ilD3_ZRWHALXino!~Fm@ZAGBShUvy&bg zSqDQ*6%W3WiqU?&53VGNKw63GsZ9emL+69rzxWT9roHRvK?BxEXu6duHAHcLy+Yj@ zLc`WvpqN#xEdA1uwG*aqp%)D?F5EmzHDXxHn5TRj4t7vob`)(b(gM@Oo3G$#_yqF{ zl;-MY&Vff{D8}FxV*)2lZ>UKQ&ykv3rhPH2TKlXYkV=ju0R^@x%-g%4JAc^6;vIF< z<@vXDvvs{vH&0$WYj(X;r{I@1Dclr{jN}W~akwjb`!iciESoL}4=2#k#!%nHwe+bm zdn?3**z%jO=7LZrhZ;3wV}*V>w5u755$Xof$7Za(@XK*(YhuHFe>u$U3QL`N8Blcf zd{ihn;v?Ht6Z6-GeoTaFrq6IgDT{uBQLt*Zsd%^SEl}9<4vrWjV*>N?ewU5r_yuX+Mper#K$Ev!ZZe9#OJJn?11>@q zwG_Q}kXs`2u2}tnv!$|FUhwXO>4s%3ybzpZW~rfJBwbm zVI2(-*<1weRa(iM!51~;fNbj7mfdt(l?ireet?>^V|^Q3xasULkf!sRvX=ofqB`>d z&ie;1akr4M6M*I;QyzM~Eqtq=b{)k~W-kA^O%K{Z2kO6xT-vj$Lhcf()1HO9mtPE} z+mgXojF5ulMHAYyf!f)0r#%$cG1>O zteo}|UF^iV__zECDLRhHDr!YX3zu6@iJdW#dbo`Sb!OFs?b~QcXQ<`+YjmqKYZLu= ztIFW1?|5@B;w{4Mjc*fh@^a=*-bzt-^d1_^B4y&sz|4@)Q1LS@sFo z6O4FmFQQeiK*5CDNv!%EfNlj;ezq3meffmks=L<|bvl(xL2FcdBn{PI&1KLG$%ZWH zo0Fi;vWFtUFA1c6xB%=1omO01&(kif`|OV!QN}BV>cFA za;FX!@pL||bj(a|>*&{RY@u*cGqP1w4fxD7Ab|EyBLL@n5C4YA4g*~ zm!o^A=RI&$~DzrLD)PwaX-3YW?{dyW+C?AKl2+nuh zdN6Vux%I@bvS%m7_C&NFchZoateh~$N^^R$uzI{sp)Ie+#n;~+U&~JrboIdE%eCZ^ zvHI=l?NQ0;w{dfXK4S`(w&_Nfo%9+B2X+J*8uRoHoSA?8RAFIkr`XQWkAfk%kVv#E z#r0x`grN(lcyDIzmvzn=#d?a%9njj>5a4I}Apa~F|Mp>pl9%~N#y|*noT9WD?2G=B z(M1{2pUHo4fTDP0v<4_&^0z38e=M3<=!LM3Vrp6zwXcRs*ZgSL)rA?@LMV%Ah`REM2?u*Gw z@D+XxHURy-bw}zkfOQwFGimPtRzGa_ zNu|ApV(*_KO&vy+eCbJs@?C$S$0*`+;g1wNkcA0J>C|Q*3vsTN9-%2Nb#kW312Mb5 zAkf-@&^l&W=*d7fUwAf)(gv|VBGxhw_{3lt%YgoEUxG3hB^nx5nF!!yIIOIOJ9hG}a-N#^> zFe{T@kAWV0BZ0z`(HyuLr&}^BBWztp-zUR3Y-&suQotmGU_MHLv_CqTtSPLGFsBjS zPGRLMTp5coFe5)X*~FFJZTwIgx&N==NUX=2pat-7TqCM97K-G(rPN|9>nt3NrBw*m z7_by{7AvQL1`cEXQ9ex=gzIK^RaOOHB;HXUVCxfLN%Z>kB#O;E(#cX-HWR@jUa z*b?S2-GT>AC=`g97Li8Q=yF9FKHL9nBk&vtV%fx z4_U~h5|dd#^Z}0Vsp5?)z7fagE>k4y3XX28qRXo2@*KTx8TFgYh6vsB=*(pHtFZTx zZB#0Hu&{SLm7B^A`e$uH-2|%<{~o23a1ub=tg8E&Um4TEwfz7zHyZeFIOwLcQnks* zXF-P`zLLksTN4G-fje+lIOvA+MEy8vI5yCf2~Mb#7jLa!0w;^`g+4hVm)56)3sy$b zv2+%q_n*sK3RgDHLu>5VOrO(XXX{*&hD~EWzRgNvaKh*o5qa3 zUS&~hyVQ@jj8H!Q+9ov5z9rN;1LILDJa;o#aF^De$jR=lsG7Qk@K4_Lw;IVsjWmTv zst<|s?J&b_!D&VVkD5{vtE#2&#u>6`W(}`^7alfgI@_WZ4&9|)GuRt9!%Cbl6Q~qY z_pTT1oyj`-XSwlsm}yD-_?xoYyprEdW-%;vqi{0|@L$Lgs!>Co8yC6JS#r>7KlGE&eZb5t`=KAHtmF)N1t1%=#AJ3`o3nlDqt( zA$6a{O4pv%Cqm<#(ilflp{YZacwZX{Q#4FbFUuY^`Sc*}a^5wJEuho%q(2c^@cxdD z&SJ5_V{W=@AgX4c|Ae`a^rQrLSvZmy9rs*6^>1Zd4aqG*RV{2qK=+xPMUr-42_+0( z8Bi@hKr@TCl)_0*Q9dQ;sfE=S78Iu{voQn}22!ipSn!!&oKj|ESic=-^@CCB z1XtQ+WqwYpuerl{@G4!mvWhNRq?lj{dE`PR=CEd|S4yD(KdJ>7K0qme+gh;6^0`Wf z-Nn(FD!P@5PUYySD*9)R{#8ZSP|=|r-B(5bz|l)pw1(S!lIF4so^7t8*h5catgyswgl|T!Ga2W?+Lh@{9pQ42k@g4QMtgjNk;VM+Y+1X0{=6QUrp)?iUiKDlu=o1|6sNdcyx-&;FRMCHO zw4-$zsp!!hodUFCxqn5==VK8#zANpV&q4!^hoJ)Mbqjtz8rF5m$WRH`m zmp6nhUcdsqW`l;eO^kl~MefwYPcC#`MYR@S;kT_sLl6MHY+vbx02gF99m1%AHAseLKfjQ7%A#A&O!8mhkro;zA}rFXzfB4UZE`} zV7UB7X>MG!__;9A5*(Zu{W@h2XrolxYDtS1vAP3ZPX2~;(YK`BpLu2b2*sbdB7~Lm z*K-XpMjOpQ$^9}vsmC7_$uE!rHw?J1)b`Jrl(~p`_s#%V+4+nrAI#tNI3CVJ8vYHq z(N}P@BCvz3BEpWvFJ++?l@$ySh7!Kr2=dyiJ^3t#I`*&~nHIBFLP$IM&teuG@qSSW zEWo5x=ogz4BSMpe6WcX__z%+cHC~llu=(-gxd*XHH+vC@1j)2@8&xKDSg6{bUJyGe zbZ=)nu!I$8g}#$%_fN>E=44ymPpqC+*l>D*%NHtmN8sAH*g6J%!EeymgrI@dm%WVq+`p$ zMrFq>UIAJ8zAcqs!Kw!wY74G-a09cw#x>FlgygDY|1eqFb+U}qUTapf zNNldGn%u-`S@z!m{bK#%9V9{NApc3A^=n|QI2prp5Hm0Z!H9ahAl_Qa392#{L=At$ zQ2DiJrg1UUZY@g+TiIX9wKQU&DtH0B9Iy7h(CM&&OF$TpVli}XEsJcM+wcqJcE_t6 zjzmy9n-S)w-@!S9xCS{!Su{|D1) zg`mCEVm%k@XN< zgZGg5Ckre&$>gGWd&^!A71P9g4-q=frrLj^_J%a1fq!CEuwg@*`zLGc7K@T;k}H~U zgtq)^Z@T>_`$cfBPm?#W38}{2{Cat-53gObw7MQX(~>a=p#f%tLBTBwMF_r>SqdRH zVRAL8u0mKxiDps*z@tu=UZQWBydr&PtF zYS#Uuq-Qnp^pFN(A)R9?ur&u-7R^+0*8Qmhx%m#|D2!IhF&-ha&X=Ri(iY`mSjis{ zB2@>Z8x8H=71l|?@v+jyw$M3>NzeGhEX~w|NN0^-=PuM_DxFN9f&S3_438eo=MAcUP{@bZT>G?u%Gz^hkv z?zcwu=}1`{p|F*Vwq4uE)@p@`b!qx$_NPu~bLaVjr46fUQOp)rwc<0Jl7kL5vXP7C zNZi)I1oNad-)X+XeLk&VQO5x%v0b35wXH=9xA58e1Uj&VRji!MBjv=5K}QiXTsVdBpMm zj#%N_h-Hc*c1FZYk)+>-9J9w!{cR}eyW0QCaa+tcIWEN|#QYO^Njpc9mB*_;j&>oQ z$HaffYY{^)x3T&q_l+%q&2gDK-7$V7SA!AnMl8i{XMQEqR$@%Wxq8~f=#Qhh#Jbgx zMr>z3QGYjd!7ihLwJ>^HO(9;2SBCKhD23Fo^_CSXie&1V?!eDfj8iKd>)T!xyj7z-*z)}JzPfuDQX<{ zJ%&fD9MmewP|*IDk#q4awpTXxtF}{%<(Mv*rJ+dAz6P?{G4eyvi>{$MNN3FA=3m@- zhAU!}+;gNxUtg<#eJ%6#)n$y$z7s1d!q^GqyqlFxJvkY@#)#;szIk<(Ub7ev`D7nO zC#ndqx*`kek~#`{>v(jkzf`m{M^9B_Pf*c+bM!o*mGuPO^id@=%0?%Mx~mUC?Xb7D zP^n8bd?ru~A{RU>I1T=SMxrLp_4zC5}r zE!&6TI;IL8-p4u$_rs{{ehBVWVbpCuix4`5(Y*bvrFYXR7#c#lhDB&Tp?PW`gvWm_ z(VP9OQOzp=o3lf3I9cJ8V;T)M8W$CGKQQ*Du%e}htgalPxn-}5_bDMuD${pa%-8P+ zz;LixpWuq5!d2^bw5@h&%?0bZL2_?`4jle!_0e7c!;9tJhNZNRvtd( zu}IYb3Q0o`ayf05INqKGT-x_ydwoVX6d*mM9)P#(>r`kQWRAiYcY}FS`*D>C5Cf)s zFZPVUr}FO($qA-_Bg{K>11EvO&)yv*`O-=R(SWTHn4;T-MERIyk44b5Bep}QsPKr^ zO-<2FwJ8Iqgv?b^FZ^H+;?$G1y!}#YPYD^v;Sff4SHMxon)-}=2u=xURD^he9h^Y4 zfb06UBdnCrHJFYcVg9K;YKp1$KR|#K+qH{}NHI+bk;^Mp^1=Qi;HDkzhK?B5vr#*x zAo`3{z|un=BkBkH7$so=)p8Qn?kORsl!(s??OoIagk!WE6I72cJf@W8s_nLsQ1RrE z(e&#v77-NkCHC36XtV+??nzTgRJX-4(e&~do9(x%9Qxs;$0l>ib2t?fh^bL#dt7ST>VquYP8?}fI{ zsM|?4)o}8uV)(h7ce%(CDerztuTHYng6C8EH29l z*`w`a2g!Bb!R5w}X~-E?A=M9HxcTU(wS|C3i4!fuuw|v0Pg$R3Dj)PKSd;6jkM(= z{4N8H^zXPjvPKLtJmNwD_P%JB%p;3Sq)HnW9Yr^eS=aH+$!In_30o&r-mw8kH6 z(ZuVpE_}R=)1lZ!;r>;cb%S*+m2=CH(?0cOp1kcA-MGnu$nPc_<69PfkGpQDI#B=8 zii$KC4|zaCT62??D|PRtBl=bKWuAQICXXH(+|l?&tyBD?Es{S>&x-S%BW!S^O1D^V z-yk?B7UeP6N6BLt9`bh$Xyq+7S@6|S@NKN5JuX3QZ$rVKSCb~+hTY%@(QQ;-ixPD2 zHWtW2OOWmk^Ak#ypvrd;epH;=-(gLJg~jQoJFK~vsW`;md+p>sP(D6WoN#{$RkH(aQD|?0 zKjkWwT;O=x;q7VIT}%&>!|A8HnENJ#Q}$gJ)W)R7O$}3T7TSyv?;F#Eu@cbo`L-~L zT?MljnZ&F{4-WsK-6xz4B1c7oxva*|E&vT~M^X2X%?TIka}OKty#Mi-u7GV=Zg_ifqi&cH8hL(T8A2;VFO_++7kDd))Z zT}^Nn>~X$x)F1Zb#rLr+yx=mGc>qb|c9}9CKoTvuL}eaA%(z`rWQhEYnE7y#wmihz z=1@jgAHtb<%SHO|5LITmNag=wlgsaxc#qB3XXJAek)`U-N*MB{xneSUChw|3hyG#R z%NDQl4wX4V8l%Nt{QPh%2iDbl#ArEaq}G)h%2EC z7pI8HthCFsPN=jTsf|clJL}|euJSu1Q=P9v@>_3SSEBFi%rE#=8_J___srrw?J_EGniGt+lgor>Q{7f1jf}cF3f`g%tG&EO$1Kt1 zT%!`0Y97q1@#C_-UbbFOSU;^W{(Cy|6!NrZdF=RQeMvV&*fqw1h?wG$=5MV=2&NWeR-Pt9I_>?JZ*T+dWNPuV+!87Fz9wX|Nw z0_Z{zM-@z#2zUcSuUI2%14#FVwXGs?oFxgLgRe@-w8rB8_ZM%&u_6R5(!LDx1N(IB zEAf=ilI0EDOWVIC*L>DAzDzb05c6ThnX5ME7k(9lvY9#CpR))LVW8!Hx)y1FW4<(u z1F@vt%3EV5cf&*iR;njX^q+i|P?~t8^a5$@8NNjmyG)|qmIT|m`_t!q=3Tt7z*(~o zT@`0|P~cmv;6K(;qqperaYtzITUOpB@CaWQ49R^%i{8RqSb97i=42h;&_8ck^)k~1 zoPnhXsYL5g5&aO(DP_1+juPKcL;(`o=0}|i(23vr(ToB%Ks$n-7O=qZF0aEi_Wz9f z^i{&DV~;Tk2=uSXThYIwbCNw2L1rIuh#J0Q>;Bg~ z%DhwvjCjc7y=bwMQ$e>4_keel)Afade-#e=0E1G7xg72I$~-t9<0}jBkejLKksR$P z;t3Ufg`-1(mdDs0IXe~83JqOt&s?1Jf>6zQaS5jc-;K8r$x-HnCrX-zYKXMPg9emv z+Ag>|QCXeSXy2hXzb5YdSf#^5?&nVHbWV$VmT^;RaoY`$IliDxo%Keny{E~@4Gvjgjmr9?mkQAAWwK~OU>i^r%2jK?EnFO8=Geyq2MVLCjP!wYpd zmixBVhMx`xKN5kD0?C#q3Gn3ml82yk0=GB0ZQ6&PyKPv3X~7L5X| zjr_RAp?g2+2G~J|M{`(H{D4=_bl)-${mDnow=)mimi%5iJd_819Ppv%!nm(?N`pYb z)sX!C9R$5rr(z?)&(#oPJeYn#OU(GZ;J1E2aA`?f;?h25=fOl6tiK-utF6BC=&Y|@ z!P<$l;*F&dfS2hZ)zslE9#Rb*-pApkI$ZpMSdy39e2xd`_+pOF(Q!fd-iX7-4~kS$ z*lqM~g)1$;iuKw_Eu~9kFqC~ocghGay&LZVZma+ECp7#G47JotZ}jTIUjyu;gp!Iqu-{FIwDsw8K)dtC{uB?K9gSFHRy zLDAbZhPp7+1=oKI?p)HGXy*_xEO{i9SY$G>TFdTaM~I`J)Lvl zdqfux&a`(a55JH7`X#A(Oxhbw{qq5%9o?)gID32W2y9(y>sBoh2Vkg9*A#ovIe zbHHIb{B=HHTff_-`(Da@y8%|)p4JNC8t1X4@i!X}4E5C+#L&v>B=9I~S-+^`A9xt& zIc{}Qaq{3-Yu={ANgUpy!^3&#wssM&!_|4{GtVfa8w#UE@53{|U@L(oOSK#vgrR;t zqPVvb9x(4rD;R7guyT>c(C029$jwk(+6sAD@*>OMQ4Cw4F-(A=UOAv8@N6t#Tenek zxX~T>->Ji!IBe@S^K{t6;ki0Iox`?vHe82~-Ud8WhX=$;$$ynjD;*!r@fJF6;AyiJ z?%nxX+MdHuBX#)U6u`FnIiSO9Z^5@Whb{Yu@daW^h67fMTg)kfA$yHJoPMhTZ?;;0 z5~lmR!TmkLaRt=L9gf>ZnBzK}#^IxYRhNBA{SLw@2k*`kz-24>U z3XKfjpHskKEBSo0G=@8u5lnwYS=vo78JI}gKFfT2250nRj4 z591>b!&dxxb+{0ZqVG;+c@H5)^u93+47M^zoUA2r4h;3e1|@o+u*Tr+H53fCGT1Ru zV;G%@2weYAehw09+qW1x7!0=NwKYX!h(88~&1dHtrtMh?%=;YbeKn%7_* zK5!K9z_oasR;ZC&kmI)erH|J_Uw#C*yYBtRAi%c#&DY^IFw~E0P)5~OYyEpZ=dm@G z%R0|-9>hiPpsnoTu&oxF>2PNr#5NAcSe;sP+*S>9bi4)kK1=srg~PTw9-_nZIh@F0 z%Y=-H}JIF!Hv`1}H?d)jTdD-0vp-%( zNWTD;ACTf~>4!BTzn!6CG!MIk?E-%G{TCx%u{wu-PTPoT?V zgy8T*cvhQFM=_=u2k?M2-d*6uvMU+BabvLs+{aZ7us8T6Rl{OBrXPhT3sD8W_6_4l z%c8N-@foCgiieVEeBGBU$wEl-d%OpgX0+Ww*r%74D7~D*01II5<3zBZfoJy)?KX;_t<+L8qYXP~@t7wWBWTlT@Bm{n!h# zkaQvv36BA%+6U=Cvcf>~AF@?v0`_zx5QVlh&ot%%ggJ;^_8%B~)E6{xtWcKS=tHZ= z3jVC-EIK(>h&R+G&v8N-R-q5o9w*dg4|~(>aY8#bzBhdsC-h*h5!7zHP=Nh5gock7 zjv!QVZ3)=!8=YGxt2RBe_S-n0u&j0?fh z^~yu6+*?b6(|8{wcc7l!;{&wh-iD!0nf=eHr6w-H)h0{S^Uky=O(|mdWkHH4#(DJVhwY=B3dPV1YIJ z@LVULdp=V;rhVZXF9`_pc7J}8>X}*(PDp#1n9pva5V_TuP?FY`CYsoWzHVSI6z5 zxJXyMH;KktkhTt6Xp=?2Tde3?@2*I#KDeeB zyCPNyxuXiT!^klF1Xq~9pP#N%eL0t9aR)TA9CyCC2c|#U((37G8}lF1lj%Zz)*_W6 zW(Y-?wHvjZA&g`dQ|Q_ZA(lOSKm}(Ch1r9}6g3lg^kV8TQz*rXlqTy;p|x*$4_*g) zJnBUQIf!)_zpBU&Mlt4IIN+;Glf*{=oI7j!ni z;`VDl6@BF9{eP8M9nPNSdjzg2#y&`qA%~J?34zQ7=U!%E@R~GM5oQa1%n(k2bA`#Q z+(Ozm7oWIF3+eV;A%G>~E)KzdWC0El!+gGg8gui(0vg55WeaFEH>)n7bKIP}fIf5c z$$avg2Qy#+#c|Uzp9aBfHtQDBXZ4M3haMGqKhaTT#k3TTX{%+gnanJ?e4Q=!pCW4_77@q$HbSSuy4`r@4;O&2bKpT+pU!bB5=s%B^ zATFP4|79@S7{ce#1ZYq-E|mg*JF*2(HR!@Z0mrPz)2T&*FKarUvKI+4 z0S|}pt_dYhmU8@hiF!%5d*i6JE1G72tC}%{>Ma&lv$P@faj~$4bx)$TOVC@MCsM#t zA(KI;LY2;2~On9R+ zd%%KuNuD?gTrEU<=E;ZF$kWDO5HMTuTCc_9l$l1Y7D~Ap@`;bj)6K^2MC} z%XC_^1|6k;Z92b3$e-LyXKHKeBRY`vf3suBI0{Q z6Eb*aT~edr16ytJmeDitCJ)!&(lZI)N<(g3wRu5QFxb@-xO$VFi-8PxLlZ~g)WKx+ z>Sk@s8-R*ahkN|Ug&O&^@7c$(se}Z6sR>WBxF<~ixWhBXw!)(c+Dbc$N97kt>$SQ@ro@TvrN}J%vea2xIlxtje!%HrB zoemL4n!Q|77eG>jllL`ZaX26K?beIFuNMOHj%p&=#k%YYV0=ztHCmfc*zZD-%H0~E zrPu6?#)$8;fMyQmVmJ7VCT}lo&4I{5d1MS$Oqw~3{V#)2ec(ja--QC@cR{znL4FAw zb8(Jh;?XS)BMBxRy?eq>+WkzskiPx#<>of-JllzG{Vr6-qdUA^?eD>Zw}9poqZICD zjoMHhxz5x}rbBg#{zI7W`QwO--Eqd>3-PpFI)A3(DAdb8gaWdqo<6Vo*_~WB2v$!Q zt;y;^+k@soe{-en8&DvuI^EeIRPi`k4YLaUfkgGj?^-1ctVY2bF%v)jnamr78u`)n;|Z5E0L)#%C#P16~o zon0xX*|kE9w{|g9iZk5dDRacRhRs5hA&Qo57JT#8@63Je^wJ6wI-EMwxy^!~W54Jy zXpgQfT8xjQ>FZ`8B5y&s@ZOjBUTYq{(G;^qsL0AW(a0^r3f8_ep8OR&4A{ZlD#Rtv zt%BBr<`Rwb+2h|s#RvKwHatg)Xu>0a=~E!lkyi@t)a9B$U=sG3n-<>|y6>dZm;)?2 zgb#q#*mjDb?JOGA%bZ6)A_2H7SXH~9NR!34A@`PPtXBoE5^NO;3Z*zU%|w3N@a=C= zg=%dR0wbI|A;T#zM4UJdJK2l3^d{UJhM>5#8+ea0?G--?kJIjIF3d-?s}v9+RXWxu0szz(HFqF_7`m8ET?Lm39c-3-9fYHPqjWD86pcp3Q6m zJu<$Yl_+C}5F{TF^Q;c43Xo%Zh)3bBE8=-(Y&-B5vO1XWIjoTNu`$1{@g-&c{Gv(!e0gt&|Y(g6k3Y%C=O=_DV6c$6V(z6)* zg-~h+GBx9~axViPU3R6ZQtpVL7(5%{QK5gO3=@hw;d74({+|8*2ec}jDjpLe*bpCz zIWBn6gk!=87U@HV<5(ahXpYmFs}Ef|E>vQHK8kau@Y9fQRDu6QqDE8UlR_JBLtSk+ zNY`?kjV_5B52$%nYD{xZ3Y`tB=+BeFW41Jo?w=Ao4Y>M$N@!|mNb#qI>%J|`nrHJr zJ!42m^Mb^is+|!A8J^SjGs1n}=e7R9`9P267w0S5d{!7@7)r&@38~&;*gVaCmBT*- z;fd!#e|@ge_Bf$*PVi5Txn-=C1SjYwkK7*abZ8bUKOiGI3?Boi56mcIlpP zmE`U^9maW<=(OWG^1FaWG2V^ZT);@a$c^S+z>+V+joMukeCWXip#ryfUlfv)XW^dk ze_LgdAOvQwYN_?*^k=Rk&l+ye=^UM=uAuMhbfG1nFYENfK+u^wJ)tA$y*hoAyKe@K zb2jT>j2$N7sQMD}x`ZJ-){QP+M;mW^Nhr$NxzVso5a;n5(Em-DGY{nxSE2{K_q@`c z>vYg!(D!uuWeL!ibow!;kLz?6r}yaeK~8Vd=?k1*q0{M{o~zNx;XAlxiVm1NfF7gM zleqgJogTyKZaVG86Vytl=VMbPyPi(BbP&Bq~v?8!Rc@0=c`(|Z?!9-!07 z+`WrV`}1&H=yXT!9GaQHps(n37N<|>bRv&O&(rDU z9GI%pOF7-cmI$8EHaeZayG{e0zPSo?tWKZhbOYV*R&1AM$Le$s9!^D_KIj3uv`$0K z6)d9eIhHeh*MWtc>5WbgIYGOw3RT!W7y57ⅇV8g{HCx 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 diff --git a/logs/20260828-224112/amd64/qemu-amd64-20260828-224112.log b/logs/20260828-224112/amd64/qemu-amd64-20260828-224112.log new file mode 100644 index 0000000..e85b721 --- /dev/null +++ b/logs/20260828-224112/amd64/qemu-amd64-20260828-224112.log @@ -0,0 +1,9326 @@ +[=3hBdsDxe: loading Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0) +BdsDxe: starting Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0) +[=3hStarKernel UEFI Loader +Loading kernel from ESP... +[CKPT 001] Entered efi_main - ConOut live +RAW SERIAL UP +[CKPT 002] Serial (COM1) initialized +Monolithic build - kernel linked directly +Collecting boot information... +CmdLine: parsed OK +[CKPT 004] Command line parsed +[CKPT 005] Kernel stack allocation decided +[CKPT 006] Boot info collected (ACPI table located) +GOP: linear framebuffer found +[CKPT 007] GOP: linear framebuffer found +[CKPT 008] About to enter ExitBootServices retry loop +EBS... +EBS OK +Calling kernel_main (monolithic)... + + + _____ _ _ __ _ + / ____| | | |/ / | | + | (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| | + \___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ | + ____) | || (_| | | | . \ __/ | | | | | __/ | + |_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_| + +LithosAnanke v1.5.4 +Architecture: amd64 +Build: Aug 28 2026 22:40:34 + +UEFI BootServices: EXITED + +=== StarKernel Boot Information === +Memory map entries: 131 +Total memory: 1023 MB +Usable memory: 964 MB +=================================== + +PMM initialized. +PMM statistics: + Total pages: 248351 + Free pages : 246828 + Used pages : 1523 + Total MB : 970 + Free MB : 964 + Used MB : 5 + +VMM initialized (mapped RAM, CR3 switched) +VMM initialized (mapped RAM, CR3 switched) +VMM self-test: mapped OK at 0xffff800000000000 +VMM self-test complete. + +IDT installed. + +APIC: init... +APIC: IA32_APIC_BASE MSR=0x00000000fee00900 +APIC: stale-ISR drain: 0 EOI(s) issued +APIC: initialized (xAPIC MMIO, TPR=0, SIVR=0x1FF, EOI-clear) +APIC: init done + +I/O APIC: init... +I/O APIC: base=0xfec00000, gsi_base=0, overrides=5 + override: source=00 gsi=2 flags=0x0000 + override: source=05 gsi=5 flags=0x000d + override: source=09 gsi=9 flags=0x000d + override: source=0a gsi=10 flags=0x000d + override: source=0b gsi=11 flags=0x000d +i8042: keyboard ACKed enable-scanning +i8042: IRQ1 enabled in controller config byte +I/O APIC: keyboard IRQ1 routed (masked) + +Timer: init... +Timer: init start +Timer: PM_TMR_BLK discovered from FADT at port 1544 +Timer: VM mode detected (hypervisor present). +Timer: HPET calibration disabled (VM-exit MMIO would poison timing). +Timer: WARNING: invariant TSC not present under hypervisor. +Timer: continuing in RELATIVE mode (no determinism guarantees). +Timer: RDTSCP not present; using RDTSC (less serialized). +Timer: CPUID frequency unavailable; trying PM Timer... +Timer: trust=1 (0=NONE,1=REL,2=ABS), TSC=2101540994 Hz +Timer: init done + +Kernel heap initialized. +Heap statistics: + Total bytes: 536870872 + Free bytes: 536870872 + Used bytes: 0 + Peak bytes: 0 + Heap base addr: 24641536 + Heap end addr: 561512448 + +Heartbeat: init... +APIC Timer: calibrating... +APIC Timer: apic_hz=1006570245, tick_hz=100, initial_count=10065702 +APIC Timer: configured (masked, ready to start) +Heartbeat: init done +Kernel initialization complete. +Boot successful! + +Stadium: 83886 cells (5242 KB), 50 VM slots +VM: bootstrap parity... +VM arena allocated: 0xffff900000000000 + (5 MB) +[HADES][INFO ] [KRELTSC: 0] Registering FORTH-79 Standard word set... +[HADES][INFO ] [KRELTSC: 3490137] Registering FORTH-79 arithmetic words... +[HADES][INFO ] [KRELTSC: 26179713] FORTH-79 Standard word set registration complete +[Hera] POST: Running comprehensive test suite... +[Hera] [HADES][INFO ] [KRELTSC: 40146414] Starting comprehensive FORTH-79 modular test suite... +[Hera] [HADES][INFO ] [KRELTSC: 40976397] ============================================== +[Hera] [HADES][INFO ] [KRELTSC: 41949327] +[Hera] === Testing Module: Stack Words === +[Hera] [HADES][INFO ] [KRELTSC: 43233078] Running Stack Words Tests (Module 1: Foundation)... +[Hera] [HADES][TEST ] [KRELTSC: 44126712] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 45274488] Testing word: DUP +[Hera] [HADES][TEST ] [KRELTSC: 45984918] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 46877691] Running DUP.basic: 5 DUP . . CR +[Hera] 5 5 +[Hera] [HADES][TEST ] [KRELTSC: 54270951] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 55788138] Expected: Should print: 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] 5 5 +[Hera] [HADES][TEST ] [KRELTSC: 59074827] Running DUP.zero: 0 DUP . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 60239046] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 61594239] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 64050378] Running DUP.negative: -42 DUP . . CR +[Hera] -42 -42 +[Hera] [HADES][TEST ] [KRELTSC: 65272746] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 66511830] Expected: Should print: -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] -42 -42 +[Hera] [HADES][TEST ] [KRELTSC: 69033762] Running DUP.max_int: 2147483647 DUP . . CR +[Hera] 2147483647 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 70376124] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 71684382] Expected: Should duplicate max int +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] 2147483647 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 74814453] Running DUP.min_int: -2147483648 DUP . . CR +[Hera] -2147483648 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 76350750] Test passed +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 77751051] Expected: Should duplicate min int +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] -2147483648 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 80933202] Running DUP.empty_stack: DUP +[Hera] [HADES][ERROR] [KRELTSC: 81782862] DUP: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 82579476] Expected error occurred +[Hera] [HADES][TEST ] Testing DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 84004725] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 85099224] DUP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 86262603] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 87337845] Testing word: DROP +[Hera] [HADES][TEST ] [KRELTSC: 88055142] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 88964148] Running DROP.basic: 5 7 DROP . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 90167406] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 91533183] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 93781044] Running DROP.zero: 42 0 DROP . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 94915296] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 96262635] Expected: Should drop zero, print 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 98599977] Running DROP.negative: 10 -5 DROP . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 99786960] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 101111745] Expected: Should drop negative, print 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 103920390] Running DROP.double_drop: 1 2 3 DROP DROP . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 105172158] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 106583190] Expected: Should print: 1 +[Hera] 1 +[Hera] [HADES][INFO ] [KRELTSC: 116651325] L8[TABLE]: Config 17 → 0 regime=2 score=26214 L1=0 L2=0 L3=0 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 119443800] Running DROP.triple_drop: 1 2 3 4 DROP DROP DROP . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 120824949] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 122165904] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 124510407] Running DROP.sequential: 5 DROP 6 DROP 7 . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 125715849] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 127402863] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 129695475] Running DROP.single_item: 99 DROP DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 131016501] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 132354012] Expected: Should empty stack, depth=0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 134725269] Running DROP.depth_change: DEPTH 1 2 DROP DEPTH SWAP - . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 136270071] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 137640636] Expected: Should change depth by 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 140173005] Running DROP.preserve_depth: DEPTH 5 6 DROP DROP DEPTH = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 141676458] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 143035095] Expected: Should preserve net depth +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 145534536] L8[TABLE]: Config 0 → 1 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 146941830] Running DROP.max_int: 2147483647 DROP DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 148194207] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 149546250] Expected: Should drop max int +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 152095965] Running DROP.min_int: -2147483648 DROP DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 153367347] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 154710885] Expected: Should drop min int +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 157016013] Running DROP.with_dup: 5 DUP DROP . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 158212551] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 159539814] Expected: Should duplicate then drop +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 161959833] Running DROP.with_swap: 1 2 SWAP DROP . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 163175712] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 164844456] Expected: Should swap then drop +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 167211240] Running DROP.complex: 1 2 3 ROT DROP SWAP DROP . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 168614838] Test passed +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 169997205] Expected: Should handle complex sequence +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 172501749] Running DROP.empty_stack: DROP +[Hera] [HADES][ERROR] [KRELTSC: 173355483] DROP: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 174113667] Expected error occurred +[Hera] [HADES][TEST ] Testing DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 175579593] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 176485743] DROP: 15 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 177631083] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 178706535] Testing word: SWAP +[Hera] [HADES][TEST ] [KRELTSC: 179403420] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 180160785] Running SWAP.basic: 5 7 SWAP . . CR +[Hera] 5 7 +[Hera] [HADES][TEST ] [KRELTSC: 181362678] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 182699769] Expected: Should print: 7 5 +[Hera] 5 7 +[Hera] 5 7 +[Hera] 5 7 +[Hera] 5 7 +[Hera] 5 7 +[Hera] [HADES][TEST ] [KRELTSC: 185041059] Running SWAP.same_values: 42 42 SWAP . . CR +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 186280731] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 187636470] Expected: Should print: 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 [HADES][INFO ] [KRELTSC: 190166109] L8[TABLE]: Config 1 → 2 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 191363802] Running SWAP.zero_nonzero: 0 99 SWAP . . CR +[Hera] 0 99 +[Hera] [HADES][TEST ] [KRELTSC: 192589908] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 193940397] Expected: Should print: 99 0 +[Hera] 0 99 +[Hera] 0 99 +[Hera] 0 99 +[Hera] 0 99 +[Hera] 0 99 +[Hera] [HADES][TEST ] [KRELTSC: 196348803] Running SWAP.negative: -5 10 SWAP . . CR +[Hera] -5 10 +[Hera] [HADES][TEST ] [KRELTSC: 197566404] Test passed +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 198886989] Expected: Should print: 10 -5 +[Hera] -5 10 +[Hera] -5 10 +[Hera] -5 10 +[Hera] -5 10 +[Hera] -5 10 +[Hera] [HADES][TEST ] [KRELTSC: 201335295] Running SWAP.one_item: 42 SWAP +[Hera] [HADES][ERROR] [KRELTSC: 202370868] SWAP: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 203279454] Expected error occurred +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 204767073] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 205673286] Running SWAP.empty_stack: SWAP +[Hera] [HADES][ERROR] [KRELTSC: 206523471] SWAP: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 207381804] Expected error occurred +[Hera] [HADES][TEST ] Testing SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 208806801] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 209703921] SWAP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 210630105] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 211704486] Testing word: OVER +[Hera] [HADES][TEST ] [KRELTSC: 212419809] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 213179610] Running OVER.basic: 5 7 OVER . . . CR +[Hera] 5 7 5 +[Hera] [HADES][TEST ] [KRELTSC: 214604313] Test passed +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 215929014] Expected: Should print: 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] 5 7 5 +[Hera] [HADES][TEST ] [KRELTSC: 218388240] Running OVER.zeros: 0 0 OVER . . . CR +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 219583014] Test passed +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 220890180] Expected: Should print: 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 223224666] Running OVER.mixed: -1 42 OVER . . . CR +[Hera] -1 42 -1 +[Hera] [HADES][TEST ] [KRELTSC: 224376558] Test passed +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 225696450] Expected: Should print: -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] -1 42 -1 +[Hera] [HADES][TEST ] [KRELTSC: 228491235] Running OVER.one_item: 42 OVER +[Hera] [HADES][ERROR] [KRELTSC: 229372206] OVER: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 230292594] Expected error occurred +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 231722148] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 232587138] Running OVER.empty_stack: OVER +[Hera] [HADES][ERROR] [KRELTSC: 233401245] OVER: Insufficient stack items (need 2) +[Hera] [HADES][TEST ] [KRELTSC: 234263568] Expected error occurred +[Hera] [HADES][TEST ] Testing OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 235754841] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 236633124] OVER: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 237582807] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 238637490] Testing word: ROT +[Hera] [HADES][TEST ] [KRELTSC: 239337000] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 240326793] Running ROT.basic: 1 2 3 ROT . . . CR +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 241573857] Test passed +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 242886756] Expected: Should print: 2 3 1 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 245363832] Running ROT.zeros: 0 0 0 ROT . . . CR +[Hera] [HADES][INFO ] [KRELTSC: 246386532] L8[TABLE]: Config 2 → 3 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 247833222] Test passed +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 249139023] Expected: Should print: 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 251627145] Running ROT.mixed: -1 0 1 ROT . . . CR +[Hera] -1 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 253038345] Test passed +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 254385096] Expected: Should print: 0 1 -1 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] -1 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 256903794] Running ROT.two_items: 1 2 ROT +[Hera] [HADES][ERROR] [KRELTSC: 257767377] ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 258674661] Expected error occurred +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 260104950] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 261042075] Running ROT.one_item: 42 ROT +[Hera] [HADES][ERROR] [KRELTSC: 261865443] ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 262755045] Expected error occurred +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 264163956] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 265284369] Running ROT.empty_stack: ROT +[Hera] [HADES][ERROR] [KRELTSC: 266107317] ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 266985537] Expected error occurred +[Hera] [HADES][TEST ] Testing ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 268404906] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 269317608] ROT: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 270228966] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 271304019] Testing word: DEPTH +[Hera] [HADES][TEST ] [KRELTSC: 272019762] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 272799786] Running DEPTH.empty: DEPTH . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 273965265] Test passed +[Hera] [HADES][TEST ] Testing DEPTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 275379720] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 277726932] Running DEPTH.one_item: 42 DEPTH . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 278868912] Test passed +[Hera] [HADES][TEST ] Testing DEPTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 280234794] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 282549267] Running DEPTH.multiple: 1 2 3 DEPTH . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 283777494] Test passed +[Hera] [HADES][TEST ] Testing DEPTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 285110490] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 287469000] DEPTH: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 288396528] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 289436217] Testing word: PICK +[Hera] [HADES][TEST ] [KRELTSC: 290304084] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 291071991] Running PICK.pick_0: 1 2 3 0 PICK . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 292427604] Test passed +[Hera] [HADES][TEST ] Testing PICK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 293874651] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 296133264] Running PICK.pick_1: 1 2 3 1 PICK . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 297295866] Test passed +[Hera] [HADES][TEST ] Testing PICK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 298651815] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][INFO ] [KRELTSC: 300654774] L8[TABLE]: Config 3 → 4 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 302011542] Running PICK.pick_2: 1 2 3 2 PICK . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 303386013] Test passed +[Hera] [HADES][TEST ] Testing PICK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 304749669] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 307020021] PICK: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 307941144] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 308982807] Testing word: ROLL +[Hera] [HADES][TEST ] [KRELTSC: 309699264] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 310457490] Running ROLL.roll_1: 1 2 3 1 ROLL . . . CR +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 311858085] Test passed +[Hera] [HADES][TEST ] Testing ROLL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 313224072] Expected: Should print: 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] 1 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 315860013] Running ROLL.roll_2: 1 2 3 2 ROLL . . . CR +[Hera] 2 3 1 +[Hera] [HADES][TEST ] [KRELTSC: 317114742] Test passed +[Hera] [HADES][TEST ] Testing ROLL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 318453828] Expected: Should print: 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] 2 3 1 +[Hera] [HADES][TEST ] [KRELTSC: 320955243] ROLL: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 321902280] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 322953393] Testing word: ?DUP +[Hera] [HADES][TEST ] [KRELTSC: 323675646] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 324416064] Running ?DUP.nonzero: 42 ?DUP . . CR +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 325694607] Test passed +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 327055932] Expected: Should print: 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 329666925] Running ?DUP.negative: -5 ?DUP . . CR +[Hera] -5 -5 +[Hera] [HADES][TEST ] [KRELTSC: 330849897] Test passed +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 332213721] Expected: Should print: -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] -5 -5 +[Hera] [HADES][TEST ] [KRELTSC: 334620846] Running ?DUP.zero: 0 ?DUP DEPTH . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 335806947] Test passed +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 337174677] Expected: Should not dup: depth 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 339514035] Running ?DUP.empty_stack: ?DUP +[Hera] [HADES][ERROR] [KRELTSC: 340618677] ?DUP: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 341382195] Expected error occurred +[Hera] [HADES][TEST ] Testing ?DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 342843795] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 343736295] ?DUP: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 344663529] â–¶ Testing module: src/test_runner/modules/stack_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 345712332] Testing word: -ROT +[Hera] [HADES][TEST ] [KRELTSC: 346445274] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 347219901] Running -ROT.basic: 1 2 3 -ROT . . . CR +[Hera] 2 1 3 +[Hera] [HADES][TEST ] [KRELTSC: 348552519] Test passed +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 349868694] Expected: Should print: 1 3 2 +[Hera] [HADES][INFO ] [KRELTSC: 350824761] L8[TABLE]: Config 4 → 5 regime=2 score=26214 L1=0 L2=0 L3=0 L +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] 2 1 3 +[Hera] [HADES][TEST ] [KRELTSC: 353636682] Running -ROT.zeros: 0 0 0 -ROT . . . CR +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 354877383] Test passed +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 356215566] Expected: Should print: 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 358692642] Running -ROT.roundtrip: 1 2 3 -ROT ROT . . . CR +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 360023874] Test passed +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 361386753] Expected: Should restore original order +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 363935502] Running -ROT.two_items: 1 2 -ROT +[Hera] [HADES][ERROR] [KRELTSC: 364828170] -ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 365895600] Expected error occurred +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 367322109] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 368233299] Running -ROT.empty_stack: -ROT +[Hera] [HADES][ERROR] [KRELTSC: 369057339] -ROT: Insufficient stack items (need 3) +[Hera] [HADES][TEST ] [KRELTSC: 369945072] Expected error occurred +[Hera] [HADES][TEST ] Testing -ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 371388339] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 372296694] -ROT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 373278255] === Stack Words Summary: 0 passed, 0 failed, 0 skipped, 0 error +[Hera] [HADES][INFO ] [KRELTSC: 374382897] +[Hera] === Testing Module: Return Stack Words === +[Hera] [HADES][INFO ] [KRELTSC: 375529392] Running Return Stack Words Tests (Module 2)... +[Hera] [HADES][TEST ] [KRELTSC: 376500537] â–¶ Testing module: src/test_runner/modules/return_stack_words_ +[Hera] [HADES][TEST ] [KRELTSC: 377592201] Testing word: >R +[Hera] [HADES][TEST ] [KRELTSC: 378451773] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 379232616] Running >R.basic: 42 >R R@ . R> . CR +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 380724183] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 382090611] Expected: Should print: 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 384554541] Running >R.zero: 0 >R R@ . R> . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 385716282] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 387065007] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 389461359] Running >R.negative: -123 >R R@ . R> . CR +[Hera] -123 -123 +[Hera] [HADES][TEST ] [KRELTSC: 390826485] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 392111853] Expected: Should print: -123 -123 +[Hera] -123 -123 +[Hera] -123 -123 +[Hera] -123 -123 [HADES][INFO ] [KRELTSC: 394090305] L8[TABLE]: Config 5 → 6 regime=2 score=26214 L1=0 L2=0 L3=0 L + +[Hera] -123 -123 +[Hera] -123 -123 +[Hera] [HADES][TEST ] [KRELTSC: 395714256] Running >R.multiple: 1 2 >R >R R@ . R> . R@ . R> . CR +[Hera] 1 1 2 2 +[Hera] [HADES][TEST ] [KRELTSC: 397108593] Test passed +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 398411160] Expected: Should print: 2 2 1 1 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] 1 1 2 2 +[Hera] [HADES][TEST ] [KRELTSC: 401124465] Running >R.empty_stack: >R +[Hera] [HADES][ERROR] [KRELTSC: 401939202] >R: DSP underflow +[Hera] [HADES][TEST ] [KRELTSC: 402659607] Expected error occurred +[Hera] [HADES][TEST ] Testing >R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 404272218] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 405183975] >R: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 406127001] â–¶ Testing module: src/test_runner/modules/return_stack_words_ +[Hera] [HADES][TEST ] [KRELTSC: 407193444] Testing word: R> +[Hera] [HADES][TEST ] [KRELTSC: 407960679] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 408731841] Running R>.basic: 42 >R R> . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 409906098] Test passed +[Hera] [HADES][TEST ] Testing R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 411228678] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 413532798] Running R>.lifo_order: 1 2 >R >R R> . R> . CR +[Hera] 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 414778350] Test passed +[Hera] [HADES][TEST ] Testing R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 416269623] Expected: Should print: 2 1 +[Hera] 1 2 +[Hera] 1 2 +[Hera] 1 2 +[Hera] 1 2 +[Hera] 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 418724145] Running R>.empty_rstack: R> +[Hera] [HADES][ERROR] [KRELTSC: 419558748] R>: RSP underflow +[Hera] [HADES][TEST ] [KRELTSC: 420286944] Expected error occurred +[Hera] [HADES][TEST ] Testing R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 421717884] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 422683275] R>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 423592911] â–¶ Testing module: src/test_runner/modules/return_stack_words_ +[Hera] [HADES][TEST ] [KRELTSC: 424657611] Testing word: R@ +[Hera] [HADES][TEST ] [KRELTSC: 425369868] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 426150417] Running R@.basic: 42 >R R@ . R> DROP CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 427360185] Test passed +[Hera] [HADES][TEST ] Testing R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 428873613] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 431246214] Running R@.non_destructive: 99 >R R@ R@ = . R> DROP CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 432637758] Test passed +[Hera] [HADES][TEST ] Testing R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 433958343] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 [HADES][INFO ] [KRELTSC: 435772911] L8[TABLE]: Config 6 → 7 regime=2 score=26214 L1=0 L2=0 L3=0 L + +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 437317776] Running R@.empty_rstack: R@ +[Hera] [HADES][ERROR] [KRELTSC: 438148872] R@: RSP underflow +[Hera] [HADES][TEST ] [KRELTSC: 438897774] Expected error occurred +[Hera] [HADES][TEST ] Testing R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 440341293] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 441423633] R@: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 442367457] === Return Stack Words Summary: 0 passed, 0 failed, 0 skipped, +[Hera] [HADES][INFO ] [KRELTSC: 443475375] +[Hera] === Testing Module: Memory Words === +[Hera] [HADES][INFO ] [KRELTSC: 444602571] Running Memory Words Tests (Module 3)... +[Hera] [HADES][TEST ] [KRELTSC: 445519830] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 446582997] Testing word: ! +[Hera] [HADES][TEST ] [KRELTSC: 447292209] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 448045899] Running !.basic: 42 HERE ! HERE @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 449600487] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 450971514] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 453490968] Running !.zero: 0 HERE ! HERE @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 454671210] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 456039339] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 458355807] Running !.negative: -999 HERE ! HERE @ . CR +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 459618390] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 460946766] Expected: Should print: -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 463390746] Running !.overwrite: 111 HERE ! 222 HERE ! HERE @ . CR +[Hera] 222 +[Hera] [HADES][TEST ] [KRELTSC: 464736342] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 466255860] Expected: Should print: 222 +[Hera] 222 +[Hera] 222 +[Hera] 222 +[Hera] 222 +[Hera] 222 +[Hera] [HADES][TEST ] [KRELTSC: 468717732] Running !.max_int: 2147483647 HERE ! HERE @ . CR +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 470106546] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 471425388] Expected: Should store max int +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 474123678] Running !.min_int: -2147483648 HERE ! HERE @ . CR +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 475464339] Test passed +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 476828940] Expected: Should store min int +[Hera] [HADES][INFO ] [KRELTSC: 477716631] L8[TABLE]: Config 7 → 8 regime=2 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 480933222] Running !.empty_stack: ! +[Hera] [HADES][TEST ] [KRELTSC: 481762155] Expected error occurred +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 483184044] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 484097670] Running !.one_item: 42 ! +[Hera] [HADES][TEST ] [KRELTSC: 484902936] Expected error occurred +[Hera] [HADES][TEST ] Testing ! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 486322872] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 487239816] !: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 488178789] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 489264888] Testing word: @ +[Hera] [HADES][TEST ] [KRELTSC: 489956733] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 490734447] Running @.after_store: 123 HERE ! HERE @ . CR +[Hera] 123 +[Hera] [HADES][TEST ] [KRELTSC: 492150582] Test passed +[Hera] [HADES][TEST ] Testing @ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 493486770] Expected: Should print: 123 +[Hera] 123 +[Hera] 123 +[Hera] 123 +[Hera] 123 +[Hera] 123 +[Hera] [HADES][TEST ] [KRELTSC: 495904059] Running @.multiple_reads: 456 HERE ! HERE @ HERE @ = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 497253792] Test passed +[Hera] [HADES][TEST ] Testing @ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 498569232] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 500993619] Running @.empty_stack: @ +[Hera] [HADES][TEST ] [KRELTSC: 501817974] Expected error occurred +[Hera] [HADES][TEST ] Testing @ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 503217456] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 504290577] @: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 505202313] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 506279235] Testing word: C! +[Hera] [HADES][TEST ] [KRELTSC: 506991282] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 507773427] Running C!.basic: 65 HERE C! HERE C@ . CR +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 509280408] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 510621153] Expected: Should print: 65 +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 512962737] Running C!.zero: 0 HERE C! HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 514178700] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 515514426] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 517922643] Running C!.high_byte: 255 HERE C! HERE C@ . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 519184848] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 520510368] Expected: Should print: 255 +[Hera] 255 +[Hera] 255 +[Hera] 255 +[Hera] [HADES][INFO ] [KRELTSC: 522333021] L8[TABLE]: Config 8 → 9 regime=2 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] 255 +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 524070225] Running C!.truncation: 256 HERE C! HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 525391083] Test passed +[Hera] [HADES][TEST ] Testing C! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 526799511] Expected: Should print: 0 (truncated) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 529395426] C!: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 530309178] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 531366297] Testing word: C@ +[Hera] [HADES][TEST ] [KRELTSC: 532050183] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 532816326] Running C@.after_cstore: 97 HERE C! HERE C@ . CR +[Hera] 97 +[Hera] [HADES][TEST ] [KRELTSC: 534097032] Test passed +[Hera] [HADES][TEST ] Testing C@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 535421691] Expected: Should print: 97 +[Hera] 97 +[Hera] 97 +[Hera] 97 +[Hera] 97 +[Hera] 97 +[Hera] [HADES][TEST ] [KRELTSC: 537789147] Running C@.zero_byte: 0 HERE C! HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 539016639] Test passed +[Hera] [HADES][TEST ] Testing C@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 540384726] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 542805648] C@: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 543736935] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 544809825] Testing word: , +[Hera] [HADES][TEST ] [KRELTSC: 545512380] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 546258741] Running ,.basic: 42 , HERE 8 - @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 547632645] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 548974797] Expected: Should compile 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 551317368] Running ,.negative: -999 , HERE 8 - @ . CR +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 552547527] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 553894740] Expected: Should compile -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 556502667] ,: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 557391807] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 558451950] Testing word: C, +[Hera] [HADES][TEST ] [KRELTSC: 559133904] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 559887447] Running C,.basic: 65 C, HERE 1 - C@ . CR +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 561212421] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 562563771] Expected: Should compile byte 65 +[Hera] 65 +[Hera] 65 +[Hera] [HADES][INFO ] [KRELTSC: 564046245] L8[TABLE]: Config 9 → 10 regime=2 score=6553 L1=0 L2=0 L3=0 L +[Hera] 65 +[Hera] 65 +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 566082132] Running C,.zero: 0 C, HERE 1 - C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 567450618] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 568798524] Expected: Should compile byte 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 571168227] C,: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 572070051] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 573137754] Testing word: 2, +[Hera] [HADES][TEST ] [KRELTSC: 573839112] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 574602567] Running 2,.roundtrip: 12345 67890 2, HERE 16 - 2@ . . CR +[Hera] 67890 12345 +[Hera] [HADES][TEST ] [KRELTSC: 576327129] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 577678122] Expected: Should print: 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] 67890 12345 +[Hera] [HADES][TEST ] [KRELTSC: 580652919] Running 2,.save-and-verify: 12345 67890 2, HERE 16 - 2@ 67890 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 582187830] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 583535505] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 586106010] 2,: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 587004495] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 588084126] Testing word: HERE +[Hera] [HADES][TEST ] [KRELTSC: 588821100] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 589596903] Running HERE.basic: HERE HERE = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 590762445] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 592398177] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 594693057] Running HERE.after_comma: HERE 42 , HERE SWAP - 1 CELLS = 0 S +[Hera] [HADES][INFO ] [KRELTSC: 595831929] L8[TABLE]: Config 10 → 11 regime=2 score=6553 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 597180360] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 598530114] Expected: Asserts HERE advances by exactly 1 CELLS (8 bytes +[Hera] [HADES][TEST ] [KRELTSC: 599971974] HERE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 600860148] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 601925835] Testing word: ALLOT +[Hera] [HADES][TEST ] [KRELTSC: 602656950] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 603434832] Running ALLOT.basic: HERE 10 ALLOT HERE SWAP - . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 604890237] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 606242868] Expected: Should print: 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 608607216] Running ALLOT.zero: HERE 0 ALLOT HERE SWAP - . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 609925638] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 611291184] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 613628421] Running ALLOT.negative: HERE -4 ALLOT HERE SWAP - . CR +[Hera] -4 +[Hera] [HADES][TEST ] [KRELTSC: 614962299] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 616314762] Expected: Should print: -4 +[Hera] -4 +[Hera] -4 +[Hera] -4 +[Hera] -4 +[Hera] -4 +[Hera] [HADES][TEST ] [KRELTSC: 618918741] ALLOT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 619876929] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 620941650] Testing word: PAD +[Hera] [HADES][TEST ] [KRELTSC: 621645234] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 622417257] Running PAD.basic: PAD PAD = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 623609091] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 624930012] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 627230016] Running PAD.different_from_here: PAD HERE = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 628504968] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 630011004] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 [HADES][INFO ] [KRELTSC: 631601019] L8[TABLE]: Config 11 → 12 regime=2 score=6553 L1=0 L2=0 L3=0 + +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 633381924] PAD: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 634329969] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 635403090] Testing word: +! +[Hera] [HADES][TEST ] [KRELTSC: 636093192] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 636838230] Running +!.basic: 10 HERE ! 5 HERE +! HERE @ . CR +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 638362599] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 639697569] Expected: Should print: 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 642155199] Running +!.by_zero: 42 HERE ! 0 HERE +! HERE @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 643738431] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 645096186] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 647505138] Running +!.negative: 10 HERE ! -3 HERE +! HERE @ . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 648828369] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 650166678] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 652555197] Running +!.accumulate: 0 HERE ! 1 HERE +! 2 HERE +! 3 HERE +! +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 653955393] Test passed +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 655614834] Expected: Should print: 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][INFO ] [KRELTSC: 657260121] L8[TABLE]: Config 12 → 13 regime=2 score=6553 L1=0 L2=0 L3=0 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 659368185] Running +!.empty_stack: +! +[Hera] [HADES][TEST ] [KRELTSC: 660295650] Expected error occurred +[Hera] [HADES][TEST ] Testing +! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 661797129] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 662794146] +!: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 663748113] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 664925961] Testing word: -! +[Hera] [HADES][TEST ] [KRELTSC: 665668101] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 666524649] Running -!.basic: 10 HERE ! 3 HERE -! HERE @ . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 668320653] Test passed +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 669765516] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 672261660] Running -!.by_zero: 42 HERE ! 0 HERE -! HERE @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 673627605] Test passed +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 674993466] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 677523420] Running -!.negative: 10 HERE ! -5 HERE -! HERE @ . CR +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 678879747] Test passed +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 680402919] Expected: Should print: 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 682834551] Running -!.empty_stack: -! +[Hera] [HADES][TEST ] [KRELTSC: 683719533] Expected error occurred +[Hera] [HADES][TEST ] Testing -! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 685135185] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 686029995] -!: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 686929047] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 687986061] Testing word: 2! +[Hera] [HADES][TEST ] [KRELTSC: 688659468] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 689396295] Running 2!.basic: 11 22 HERE 2! HERE @ . HERE 8 + @ . CR +[Hera] 11 22 +[Hera] [HADES][TEST ] [KRELTSC: 691037172] Test passed +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 692553120] Expected: Should print: 22 11 +[Hera] 11 22 +[Hera] 11 22 [HADES][INFO ] [KRELTSC: 694143198] L8[TABLE]: Config 13 → 14 regime=2 score=6553 L1=0 L2=0 L3=0 + +[Hera] 11 22 +[Hera] 11 22 +[Hera] 11 22 +[Hera] [HADES][TEST ] [KRELTSC: 696211719] Running 2!.zeros: 0 0 HERE 2! HERE @ . HERE 8 + @ . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 697569369] Test passed +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 698901609] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 701460984] Running 2!.negative: -1 -2 HERE 2! HERE @ . HERE 8 + @ . CR +[Hera] -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 702877182] Test passed +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 704209338] Expected: Should print: -2 -1 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 707039613] Running 2!.empty_stack: 2! +[Hera] [HADES][TEST ] [KRELTSC: 707876820] Expected error occurred +[Hera] [HADES][TEST ] Testing 2! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 709322796] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 710208492] 2!: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 711151938] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 712224534] Testing word: FILL +[Hera] [HADES][TEST ] [KRELTSC: 712940403] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 713711733] Running FILL.basic: HERE 8 65 FILL HERE C@ . HERE 1+ C@ . CR +[Hera] 65 65 +[Hera] [HADES][TEST ] [KRELTSC: 715451625] Test passed +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 716815176] Expected: Should print: 65 65 +[Hera] 65 65 +[Hera] 65 65 +[Hera] 65 65 +[Hera] 65 65 [HADES][INFO ] [KRELTSC: 719198340] L8[TABLE]: Config 14 → 15 regime=2 score=6553 L1=0 L2=0 L3=0 + +[Hera] 65 65 +[Hera] [HADES][TEST ] [KRELTSC: 720477492] Running FILL.zero_n: HERE 0 88 FILL +[Hera] [HADES][TEST ] [KRELTSC: 721367304] Test passed +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 722728755] Expected: Should do nothing +[Hera] [HADES][TEST ] [KRELTSC: 723689589] Running FILL.zero_byte: HERE 4 0 FILL HERE C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 724990161] Test passed +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 726361062] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 728660121] Running FILL.empty_stack: FILL +[Hera] [HADES][TEST ] [KRELTSC: 729532062] Expected error occurred +[Hera] [HADES][TEST ] Testing FILL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 731157630] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 732069261] FILL: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 732976482] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 734056659] Testing word: MOVE +[Hera] [HADES][TEST ] [KRELTSC: 734760390] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 735547029] Running MOVE.basic: HERE 65 OVER C! HERE 1+ 66 OVER C! HERE H +[Hera] 65 66 +[Hera] [HADES][TEST ] [KRELTSC: 737324805] Test passed +[Hera] [HADES][TEST ] Testing MOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 738664332] Expected: Should print: 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] 65 66 +[Hera] [HADES][TEST ] [KRELTSC: 741595176] Running MOVE.zero_n: HERE HERE 8 + 0 MOVE +[Hera] [HADES][TEST ] [KRELTSC: 742659141] Test passed +[Hera] [HADES][TEST ] Testing MOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 744001587] Expected: Should do nothing +[Hera] [HADES][INFO ] [KRELTSC: 744929934] L8[TABLE]: Config 15 → 16 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] [HADES][TEST ] [KRELTSC: 746256084] Running MOVE.empty_stack: MOVE +[Hera] [HADES][TEST ] [KRELTSC: 747132540] Expected error occurred +[Hera] [HADES][TEST ] Testing MOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 748564005] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 749474775] MOVE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 750399468] â–¶ Testing module: src/test_runner/modules/memory_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 751470552] Testing word: ERASE +[Hera] [HADES][TEST ] [KRELTSC: 752194128] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 752991519] Running ERASE.basic: HERE 4 65 FILL HERE 4 ERASE HERE C@ . HE +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 754587456] Test passed +[Hera] [HADES][TEST ] Testing ERASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 756228564] Expected: Should print: 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 758845605] Running ERASE.zero_n: HERE 0 ERASE +[Hera] [HADES][TEST ] [KRELTSC: 759757467] Test passed +[Hera] [HADES][TEST ] Testing ERASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 761121081] Expected: Should do nothing +[Hera] [HADES][TEST ] [KRELTSC: 762059235] Running ERASE.empty_stack: ERASE +[Hera] [HADES][TEST ] [KRELTSC: 762937749] Expected error occurred +[Hera] [HADES][TEST ] Testing ERASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 764395506] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 765300060] ERASE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 766317951] === Memory Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 767380026] +[Hera] === Testing Module: Arithmetic Words === +[Hera] [HADES][INFO ] [KRELTSC: 768799479] Running Arithmetic Words Tests (Module 5)... +[Hera] [HADES][TEST ] [KRELTSC: 769775307] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 770827932] Testing word: + +[Hera] [HADES][TEST ] [KRELTSC: 771528786] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 772324350] Running +.basic: 5 7 + . CR +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 773493819] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 774842481] Expected: Should print: 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 777217938] Running +.zero_add: 42 0 + . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 778376613] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 779731323] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 782332866] Running +.negative: -5 3 + . CR +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 783466404] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 784801626] Expected: Should print: -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 787057929] Running +.both_negative: -5 -3 + . CR +[Hera] -8 +[Hera] [HADES][TEST ] [KRELTSC: 788205537] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 789548151] Expected: Should print: -8 +[Hera] -8 +[Hera] -8 +[Hera] -8 +[Hera] -8 +[Hera] [HADES][INFO ] [KRELTSC: 791617806] L8[TABLE]: Config 16 → 18 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] -8 +[Hera] [HADES][TEST ] [KRELTSC: 793215465] Running +.overflow: 2147483647 1 + . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 794457447] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 795785025] Expected: Should overflow +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 798356979] Running +.underflow: -2147483648 -1 + . CR +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 799644951] Test passed +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 800959341] Expected: Should underflow +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 803627097] Running +.empty_stack: + +[Hera] [HADES][ERROR] [KRELTSC: 804496812] +: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 805244685] Expected error occurred +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 806818152] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 807730245] Running +.one_item: 42 + +[Hera] [HADES][ERROR] [KRELTSC: 808515624] +: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 809234013] Expected error occurred +[Hera] [HADES][TEST ] Testing + ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 810649266] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 811616211] +: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 812577087] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 813643845] Testing word: - +[Hera] [HADES][TEST ] [KRELTSC: 814354065] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 815112606] Running -.basic: 10 3 - . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 816221700] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 817550937] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 819915096] Running -.zero_sub: 42 0 - . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 821042124] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 822377073] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 824651478] Running -.from_zero: 0 5 - . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 825748203] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 827067402] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 829338300] Running -.negative: 5 -3 - . CR +[Hera] 8 +[Hera] [HADES][TEST ] [KRELTSC: 830481351] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 832025271] Expected: Should print: 8 +[Hera] 8 +[Hera] 8 +[Hera] 8 +[Hera] 8 +[Hera] 8 +[Hera] [HADES][TEST ] [KRELTSC: 834249591] Running -.same_values: 42 42 - . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 835419837] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 836759595] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 838975179] Running -.overflow: -2147483648 1 - . CR +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 840216510] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 841565277] Expected: Should underflow +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 844257498] Running -.underflow: 2147483647 -1 - . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 845536146] Test passed +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 846854673] Expected: Should overflow +[Hera] 2147483648 +[Hera] [HADES][INFO ] [KRELTSC: 848067066] L8[TABLE]: Config 18 → 19 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 850615731] Running -.empty_stack: - +[Hera] [HADES][ERROR] [KRELTSC: 851455311] -: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 852177522] Expected error occurred +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 853593804] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 854465850] Running -.one_item: 42 - +[Hera] [HADES][ERROR] [KRELTSC: 855263598] -: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 856131612] Expected error occurred +[Hera] [HADES][TEST ] Testing - ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 857530821] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 858418113] -: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 859325124] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 860387241] Testing word: * +[Hera] [HADES][TEST ] [KRELTSC: 861086415] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 861857493] Running *.basic: 6 7 * . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 863099580] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 864420711] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 866690433] Running *.by_zero: 42 0 * . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 867789258] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 869247582] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 871456761] Running *.by_one: 42 1 * . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 872578497] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 873883962] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 876147531] Running *.by_negative: 6 -7 * . CR +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 877301418] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 878592225] Expected: Should print: -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 881024613] Running *.negative_negative: -6 -7 * . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 882222117] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 883547994] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 885808035] Running *.large_numbers: 32767 2 * . CR +[Hera] 65534 +[Hera] [HADES][TEST ] [KRELTSC: 886999050] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 888300630] Expected: Should print: 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] 65534 +[Hera] [HADES][TEST ] [KRELTSC: 890697360] Running *.overflow: 65536 65536 * . CR +[Hera] 4294967296 +[Hera] [HADES][TEST ] [KRELTSC: 891936465] Test passed +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 893248314] Expected: May overflow +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] 4294967296 +[Hera] [HADES][TEST ] [KRELTSC: 895981023] Running *.empty_stack: * +[Hera] [HADES][ERROR] [KRELTSC: 896800128] *: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 897570450] Expected error occurred +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 898953657] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 899861718] Running *.one_item: 42 * +[Hera] [HADES][ERROR] [KRELTSC: 900636660] *: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 901360383] Expected error occurred +[Hera] [HADES][TEST ] Testing * ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 902811756] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 903754929] *: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 904657026] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 905742558] Testing word: / +[Hera] [HADES][TEST ] [KRELTSC: 906611769] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 907375980] Running /.basic: 15 3 / . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 908492109] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 909807213] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][INFO ] [KRELTSC: 911561700] L8[TABLE]: Config 19 → 20 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 913226622] Running /.by_one: 42 1 / . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 914338866] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 915642588] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 917937195] Running /.negative_dividend: -15 3 / . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 919302909] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 920654154] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 922910016] Running /.negative_divisor: 15 -3 / . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 924093303] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 925418886] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 927716160] Running /.both_negative: -15 -3 / . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 928883319] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 930205920] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 932564535] Running /.truncation: 7 3 / . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 933732786] Test passed +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 935034009] Expected: Should print: 2 (truncated) +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 937332459] Running /.by_zero: 42 0 / +[Hera] [HADES][ERROR] [KRELTSC: 938181048] /: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 938930601] Expected error occurred +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 940344657] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 941264562] Running /.empty_stack: / +[Hera] [HADES][ERROR] [KRELTSC: 942080601] /: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 942811317] Expected error occurred +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 944538630] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 945453138] Running /.one_item: 42 / +[Hera] [HADES][ERROR] [KRELTSC: 946282869] /: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 946994979] Expected error occurred +[Hera] [HADES][TEST ] Testing / ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 948473232] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 949362939] /: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 950287023] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 951339228] Testing word: MOD +[Hera] [HADES][TEST ] [KRELTSC: 952085547] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 952844823] Running MOD.basic: 17 5 MOD . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 954309069] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 955635576] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 958116957] Running MOD.exact_division: 15 3 MOD . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 959330946] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 960682632] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 963022956] Running MOD.by_one: 42 1 MOD . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 964167708] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 965523279] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 967824921] Running MOD.negative_dividend: -17 5 MOD . CR +[Hera] [HADES][INFO ] [KRELTSC: 968821434] L8[TABLE]: Config 20 → 21 regime=2 score=26214 L1=0 L2=0 L3=1 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 970352586] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 971703999] Expected: Should handle negative +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 974095248] Running MOD.negative_divisor: 17 -5 MOD . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 975341829] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 976686081] Expected: Should handle negative +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 979005678] Running MOD.small_by_large: 3 7 MOD . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 980209398] Test passed +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 981674799] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 984134067] Running MOD.by_zero: 42 0 MOD +[Hera] [HADES][ERROR] [KRELTSC: 984990762] MOD: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 985799136] Expected error occurred +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 987251937] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 988184694] Running MOD.empty_stack: MOD +[Hera] [HADES][ERROR] [KRELTSC: 989026563] MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 989791593] Expected error occurred +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 991226313] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 992134248] Running MOD.one_item: 42 MOD +[Hera] [HADES][ERROR] [KRELTSC: 992970573] MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 993736401] Expected error occurred +[Hera] [HADES][TEST ] Testing MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 995321040] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 996246762] MOD: 9 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 997155138] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 998217927] Testing word: /MOD +[Hera] [HADES][TEST ] [KRELTSC: 998980899] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 999760251] Running /MOD.basic: 17 5 /MOD . . CR +[Hera] 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 1001138628] Test passed +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1002494703] Expected: Should print: 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] 3 2 +[Hera] [HADES][TEST ] [KRELTSC: 1004902185] Running /MOD.exact: 15 3 /MOD . . CR +[Hera] 5 0 +[Hera] [HADES][TEST ] [KRELTSC: 1006076064] Test passed +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1007629098] Expected: Should print: 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] 5 0 +[Hera] [HADES][TEST ] [KRELTSC: 1010060646] Running /MOD.negative: -17 5 /MOD . . CR +[Hera] -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 1011318357] Test passed +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1012659753] Expected: Should handle negative dividend +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 1015258083] Running /MOD.by_zero: 42 0 /MOD +[Hera] [HADES][ERROR] [KRELTSC: 1016137878] /MOD: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1016928990] Expected error occurred +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1018370241] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1019420577] Running /MOD.empty_stack: /MOD +[Hera] [HADES][ERROR] [KRELTSC: 1020411735] /MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1021199991] Expected error occurred +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1022628075] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1023557556] Running /MOD.one_item: 42 /MOD +[Hera] [HADES][ERROR] [KRELTSC: 1024401084] /MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1025159310] Expected error occurred +[Hera] [HADES][TEST ] Testing /MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1026611376] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1027529580] /MOD: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1028456877] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1029581385] Testing word: ABS +[Hera] [HADES][TEST ] [KRELTSC: 1030299291] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1031065644] Running ABS.positive: 42 ABS . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1032504732] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1033868304] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1036097454] Running ABS.negative: -42 ABS . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1037236116] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1038577869] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 [HADES][INFO ] [KRELTSC: 1040837259] L8[TABLE]: Config 21 → 22 regime=2 score=26214 L1=0 L2=0 L3=1 + +[Hera] [HADES][TEST ] [KRELTSC: 1041822579] Running ABS.zero: 0 ABS . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1042948662] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1044417423] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1046712576] Running ABS.min_int: -2147483648 ABS . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1047960774] Test passed +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1049335707] Expected: Should print: 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1051959426] Running ABS.empty_stack: ABS +[Hera] [HADES][ERROR] [KRELTSC: 1052829246] ABS: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1053589656] Expected error occurred +[Hera] [HADES][TEST ] Testing ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1055050437] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1055970930] ABS: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1056940878] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1058159571] Testing word: NEGATE +[Hera] [HADES][TEST ] [KRELTSC: 1058930292] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1059680916] Running NEGATE.positive: 42 NEGATE . CR +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 1061028087] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1062418539] Expected: Should print: -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 1064720160] Running NEGATE.negative: -42 NEGATE . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1065960588] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1067367693] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1069880490] Running NEGATE.zero: 0 NEGATE . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1071008967] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1072389150] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1074661770] Running NEGATE.min_int: -2147483648 NEGATE . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1075999953] Test passed +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1077348972] Expected: Should print: 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1080015300] Running NEGATE.empty_stack: NEGATE +[Hera] [HADES][ERROR] [KRELTSC: 1080969288] NEGATE: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1081778565] Expected error occurred +[Hera] [HADES][TEST ] Testing NEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1083455604] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1084383279] NEGATE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1085318829] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1086397704] Testing word: MIN +[Hera] [HADES][TEST ] [KRELTSC: 1087121553] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1087889061] Running MIN.basic: 5 3 MIN . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1089177243] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1090556481] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1092788991] Running MIN.equal: 42 42 MIN . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1093925847] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1095541797] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1097829348] Running MIN.negative: -5 -3 MIN . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1099071267] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1100423646] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1102717812] Running MIN.mixed: -1 1 MIN . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1103860401] Test passed +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1105233297] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 [HADES][INFO ] [KRELTSC: 1106931483] L8[TABLE]: Config 22 → 23 regime=2 score=52428 L1=0 L2=0 L3=1 + +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1108717848] Running MIN.one_item: 42 MIN +[Hera] [HADES][ERROR] [KRELTSC: 1109611272] MIN: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1110386130] Expected error occurred +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1111879503] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1112775405] Running MIN.empty_stack: MIN +[Hera] [HADES][ERROR] [KRELTSC: 1113674310] MIN: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1114417248] Expected error occurred +[Hera] [HADES][TEST ] Testing MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1115905056] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1116807510] MIN: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1117746945] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1118805975] Testing word: MAX +[Hera] [HADES][TEST ] [KRELTSC: 1119519933] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1120454307] Running MAX.basic: 5 3 MAX . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1121760759] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1123143651] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1125412134] Running MAX.equal: 42 42 MAX . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1126568625] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1127926863] Expected: Should print: 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 1130280900] Running MAX.negative: -5 -3 MAX . CR +[Hera] -3 +[Hera] [HADES][TEST ] [KRELTSC: 1131432162] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1132960395] Expected: Should print: -3 +[Hera] -3 +[Hera] -3 +[Hera] -3 +[Hera] -3 +[Hera] -3 +[Hera] [HADES][TEST ] [KRELTSC: 1135259202] Running MAX.mixed: -1 1 MAX . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1136392236] Test passed +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1137762717] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1140030738] Running MAX.one_item: 42 MAX +[Hera] [HADES][ERROR] [KRELTSC: 1140934053] MAX: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1141696857] Expected error occurred +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1143188277] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1144096884] Running MAX.empty_stack: MAX +[Hera] [HADES][ERROR] [KRELTSC: 1144947804] MAX: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1145864811] Expected error occurred +[Hera] [HADES][TEST ] Testing MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1147338843] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1148253414] MAX: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1149191757] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1150252089] Testing word: 1+ +[Hera] [HADES][TEST ] [KRELTSC: 1150960839] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1151763606] Running 1+.basic: 5 1+ . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1152873078] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1154235810] Expected: Should print: 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1156538586] Running 1+.zero: 0 1+ . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1157758854] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1159101867] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 1161309471] Running 1+.negative: -1 1+ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1162428057] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1163795346] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1166028486] Running 1+.chain: 3 1+ 1+ 1+ . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1167193734] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1168565139] Expected: Should print: 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 1170970458] Running 1+.overflow: 2147483647 1+ . CR +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1172248014] Test passed +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1173602850] Expected: Should overflow +[Hera] 2147483648 +[Hera] 2147483648 [HADES][INFO ] [KRELTSC: 1175139735] L8[TABLE]: Config 23 → 24 regime=2 score=6553 L1=0 L2=0 L3=1 + +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 1177127616] Running 1+.empty_stack: 1+ +[Hera] [HADES][ERROR] [KRELTSC: 1177998990] 1+: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1178779875] Expected error occurred +[Hera] [HADES][TEST ] Testing 1+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1180201113] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1181115159] 1+: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1182028659] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1183310310] Testing word: 1- +[Hera] [HADES][TEST ] [KRELTSC: 1184020215] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1184810613] Running 1-.basic: 5 1- . CR +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 1185995538] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1187409258] Expected: Should print: 4 +[Hera] 4 +[Hera] 4 +[Hera] 4 +[Hera] 4 +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 1189589688] Running 1-.to_zero: 1 1- . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1190698740] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1192049838] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1194236190] Running 1-.to_negative: 0 1- . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1195583970] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1196931057] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1199233392] Running 1-.chain: 6 1- 1- 1- . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1200414348] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1201789365] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1204028238] Running 1-.underflow: -2147483648 1- . CR +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 1205293908] Test passed +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1206638916] Expected: Should underflow +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] -2147483649 +[Hera] [HADES][TEST ] [KRELTSC: 1209397308] Running 1-.empty_stack: 1- +[Hera] [HADES][ERROR] [KRELTSC: 1210257468] 1-: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1211002023] Expected error occurred +[Hera] [HADES][TEST ] Testing 1- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1212434349] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1213336089] 1-: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1214311056] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1215373635] Testing word: 2+ +[Hera] [HADES][TEST ] [KRELTSC: 1216083309] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1216873077] Running 2+.basic: 5 2+ . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 1218068124] Test passed +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1219422435] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 1221793923] Running 2+.zero: 0 2+ . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1222879602] Test passed +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1224199746] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1226438892] Running 2+.negative: -3 2+ . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1227580389] Test passed +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1228939803] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1231179432] Running 2+.empty_stack: 2+ +[Hera] [HADES][ERROR] [KRELTSC: 1232023842] 2+: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1232810292] Expected error occurred +[Hera] [HADES][TEST ] Testing 2+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1234418031] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1235345706] 2+: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1236262461] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1237338984] Testing word: 2- +[Hera] [HADES][TEST ] [KRELTSC: 1238047818] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1238811021] Running 2-.basic: 7 2- . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1240005438] Test passed +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1241377074] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1243611747] Running 2-.zero: 2 2- . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1244692617] Test passed +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1246207956] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1247630832] L8[TABLE]: Config 24 → 25 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1249559262] Running 2-.negative: 0 2- . CR +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 1250677911] Test passed +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1252028505] Expected: Should print: -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] -2 +[Hera] [HADES][TEST ] [KRELTSC: 1254300390] Running 2-.empty_stack: 2- +[Hera] [HADES][ERROR] [KRELTSC: 1255143204] 2-: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1255905483] Expected error occurred +[Hera] [HADES][TEST ] Testing 2- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1257341694] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1258442514] 2-: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1259338626] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1260419580] Testing word: 2* +[Hera] [HADES][TEST ] [KRELTSC: 1261115247] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1261875699] Running 2*.basic: 5 2* . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1263070788] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1264418820] Expected: Should print: 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1266690054] Running 2*.zero: 0 2* . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1267769286] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1269119502] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1271568753] Running 2*.negative: -3 2* . CR +[Hera] -6 +[Hera] [HADES][TEST ] [KRELTSC: 1272705147] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1274017752] Expected: Should print: -6 +[Hera] -6 +[Hera] -6 +[Hera] -6 +[Hera] -6 +[Hera] -6 +[Hera] [HADES][TEST ] [KRELTSC: 1276260993] Running 2*.one: 1 2* . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1277356458] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1278698127] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 1280958609] Running 2*.large: 1073741823 2* . CR +[Hera] 2147483646 +[Hera] [HADES][TEST ] [KRELTSC: 1282191078] Test passed +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1283672880] Expected: Should print: 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] 2147483646 +[Hera] [HADES][TEST ] [KRELTSC: 1286283600] Running 2*.empty_stack: 2* +[Hera] [HADES][ERROR] [KRELTSC: 1287142437] 2*: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1287916161] Expected error occurred +[Hera] [HADES][TEST ] Testing 2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1289372742] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1290275994] 2*: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1291203081] â–¶ Testing module: src/test_runner/modules/arithmetic_words_te +[Hera] [HADES][TEST ] [KRELTSC: 1292279898] Testing word: 2/ +[Hera] [HADES][TEST ] [KRELTSC: 1292992302] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1293780243] Running 2/.basic: 10 2/ . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1294997970] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1296530424] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 1298757495] Running 2/.odd: 7 2/ . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1299841809] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1301192508] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 1303389024] Running 2/.zero: 0 2/ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1304500218] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1305854403] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1308092121] Running 2/.negative_even: -10 2/ . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1309453173] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1310804628] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 1313045139] Running 2/.one: 1 2/ . CR +[Hera] [HADES][INFO ] [KRELTSC: 1313899125] L8[TABLE]: Config 25 → 26 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1315296570] Test passed +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1316603463] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1318834188] Running 2/.empty_stack: 2/ +[Hera] [HADES][ERROR] [KRELTSC: 1319832549] 2/: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1320794895] Expected error occurred +[Hera] [HADES][TEST ] Testing 2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1322483883] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1323424914] 2/: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1324353870] === Arithmetic Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 1325438583] +[Hera] === Testing Module: Logical Words === +[Hera] [HADES][INFO ] [KRELTSC: 1326575439] Running Logical Words Tests (Module 8)... +[Hera] [HADES][TEST ] [KRELTSC: 1327537449] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1328605467] Testing word: AND +[Hera] [HADES][TEST ] [KRELTSC: 1329470226] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1330243446] Running AND.both_true: -1 -1 AND . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1331481522] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1332830415] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1335273534] Running AND.first_false: 0 -1 AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1336439727] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1337819301] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1340066763] Running AND.second_false: -1 0 AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1341236022] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1342579686] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1344782922] Running AND.both_false: 0 0 AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1345942857] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1347497760] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1349746482] Running AND.bitwise: 85 51 AND . CR +[Hera] 17 +[Hera] [HADES][TEST ] [KRELTSC: 1350895938] Test passed +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1352226582] Expected: Should print: 17 +[Hera] 17 +[Hera] 17 +[Hera] 17 +[Hera] 17 +[Hera] 17 +[Hera] [HADES][TEST ] [KRELTSC: 1354507539] Running AND.empty_stack: AND +[Hera] [HADES][ERROR] [KRELTSC: 1355368329] AND: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1356139575] Expected error occurred +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1357602729] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1358496006] Running AND.one_item: 42 AND +[Hera] [HADES][ERROR] [KRELTSC: 1359529899] AND: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1360269708] Expected error occurred +[Hera] [HADES][TEST ] Testing AND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1361732295] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1362629919] AND: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1363639620] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1364694744] Testing word: OR +[Hera] [HADES][TEST ] [KRELTSC: 1365442071] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1366226043] Running OR.both_true: -1 -1 OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1367548182] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1368882669] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1371168120] Running OR.first_false: 0 -1 OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1372512015] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1373865108] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1376132814] Running OR.second_false: -1 0 OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1377286113] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1378667346] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 1380399195] L8[TABLE]: Config 26 → 27 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1382083500] Running OR.both_false: 0 0 OR . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1383202275] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1384742709] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1387019886] Running OR.bitwise: 85 51 OR . CR +[Hera] 119 +[Hera] [HADES][TEST ] [KRELTSC: 1388181102] Test passed +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1389502863] Expected: Should print: 119 +[Hera] 119 +[Hera] 119 +[Hera] 119 +[Hera] 119 +[Hera] 119 +[Hera] [HADES][TEST ] [KRELTSC: 1391785878] Running OR.empty_stack: OR +[Hera] [HADES][ERROR] [KRELTSC: 1392638394] OR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1393402878] Expected error occurred +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1394855406] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1395757209] Running OR.one_item: 42 OR +[Hera] [HADES][ERROR] [KRELTSC: 1396690617] OR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1397462808] Expected error occurred +[Hera] [HADES][TEST ] Testing OR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1398928188] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1399829235] OR: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1400752227] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1401823563] Testing word: XOR +[Hera] [HADES][TEST ] [KRELTSC: 1402546908] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1403298120] Running XOR.both_true: -1 -1 XOR . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1404578679] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1405936266] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1408244964] Running XOR.first_false: 0 -1 XOR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1409538690] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1410896256] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1413178578] Running XOR.second_false: -1 0 XOR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1414360668] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1415720985] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1417990308] Running XOR.both_false: 0 0 XOR . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1419161142] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1420525071] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1422833475] Running XOR.bitwise: 85 51 XOR . CR +[Hera] 102 +[Hera] [HADES][TEST ] [KRELTSC: 1424023251] Test passed +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1425376869] Expected: Should print: 102 +[Hera] 102 +[Hera] 102 +[Hera] 102 +[Hera] 102 +[Hera] 102 +[Hera] [HADES][TEST ] [KRELTSC: 1427743338] Running XOR.empty_stack: XOR +[Hera] [HADES][ERROR] [KRELTSC: 1428606123] XOR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1429364496] Expected error occurred +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1430816793] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1431724665] Running XOR.one_item: 42 XOR +[Hera] [HADES][ERROR] [KRELTSC: 1432593246] XOR: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1433336205] Expected error occurred +[Hera] [HADES][TEST ] Testing XOR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1435050414] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1436071245] XOR: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1437008055] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1438081260] Testing word: NOT +[Hera] [HADES][TEST ] [KRELTSC: 1438805634] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1439574843] Running NOT.true: -1 NOT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1440873231] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1442257908] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1444516542] Running NOT.false: 0 NOT . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1445647140] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1447205802] Expected: Should print: -1 +[Hera] [HADES][INFO ] [KRELTSC: 1448123082] L8[TABLE]: Config 27 → 28 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1450649970] Running NOT.positive: 42 NOT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1451814294] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1453168479] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1455359997] Running NOT.negative: -42 NOT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1456489986] Test passed +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1457885982] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1460237331] Running NOT.empty_stack: NOT +[Hera] [HADES][ERROR] [KRELTSC: 1461084156] NOT: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1461870396] Expected error occurred +[Hera] [HADES][TEST ] Testing NOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1463315763] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1464244698] NOT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1465197090] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1466322039] Testing word: = +[Hera] [HADES][TEST ] [KRELTSC: 1467037425] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1467809658] Running =.equal: 42 42 = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1468916589] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1470259518] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1472698794] Running =.not_equal: 42 43 = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1473831114] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1475176080] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1477381794] Running =.zero_equal: 0 0 = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1478529591] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1479864183] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1482111939] Running =.negative_equal: -42 -42 = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1483318011] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1484807415] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1487052441] Running =.negative_positive: -42 42 = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1488271974] Test passed +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1489644366] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1491857031] Running =.empty_stack: = +[Hera] [HADES][ERROR] [KRELTSC: 1492696212] =: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1493483061] Expected error occurred +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1494916878] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1495799025] Running =.one_item: 42 = +[Hera] [HADES][ERROR] [KRELTSC: 1496588037] =: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1497469281] Expected error occurred +[Hera] [HADES][TEST ] Testing = ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1498953120] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1499879052] =: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1500781191] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1501896921] Testing word: <> +[Hera] [HADES][TEST ] [KRELTSC: 1502607435] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1503390861] Running <>.not_equal: 42 43 <> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1504659912] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1506017730] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1508255679] Running <>.equal: 42 42 <> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1509408243] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1510987632] Expected: Should print: 0 +[Hera] [HADES][INFO ] [KRELTSC: 1511863899] L8[TABLE]: Config 28 → 29 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1514378607] Running <>.zero_equal: 0 0 <> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1515494505] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1516858455] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1519078743] Running <>.negative: -42 42 <> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1520242731] Test passed +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1521600465] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1524089763] Running <>.empty_stack: <> +[Hera] [HADES][ERROR] [KRELTSC: 1524932913] <>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1525686372] Expected error occurred +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1527122709] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1528037280] Running <>.one_item: 42 <> +[Hera] [HADES][ERROR] [KRELTSC: 1528884168] <>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1529642541] Expected error occurred +[Hera] [HADES][TEST ] Testing <> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1531306056] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1532270292] <>: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1533216846] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1534261554] Testing word: < +[Hera] [HADES][TEST ] [KRELTSC: 1535273670] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1536042879] Running <.less_than: 5 7 < . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1537491795] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1538844552] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1541343069] Running <.greater_than: 7 5 < . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1542636690] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1543976826] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1546222776] Running <.equal: 5 5 < . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1547307132] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1548855462] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1551068274] Running <.negative_positive: -5 5 < . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1552276509] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1553631933] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1555912848] Running <.negative_negative: -7 -5 < . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1557113208] Test passed +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1558449459] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1560966498] Running <.empty_stack: < +[Hera] [HADES][ERROR] [KRELTSC: 1561825524] <: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1562612226] Expected error occurred +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1564039260] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1564953915] Running <.one_item: 42 < +[Hera] [HADES][ERROR] [KRELTSC: 1565753763] <: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1566485865] Expected error occurred +[Hera] [HADES][TEST ] Testing < ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1567904058] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1568832888] <: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1569736686] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1570809723] Testing word: > +[Hera] [HADES][TEST ] [KRELTSC: 1571516814] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1572280710] Running >.greater_than: 7 5 > . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1573777569] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1575151725] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 1576626030] L8[TABLE]: Config 29 → 30 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1578570483] Running >.less_than: 5 7 > . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1579775148] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1581126645] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1583354367] Running >.equal: 5 5 > . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1584433200] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1585942659] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1588158642] Running >.positive_negative: 5 -5 > . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1589361207] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1590716988] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1592966760] Running >.negative_negative: -5 -7 > . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1594172517] Test passed +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1595506668] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1597976079] Running >.empty_stack: > +[Hera] [HADES][ERROR] [KRELTSC: 1598804529] >: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1599549672] Expected error occurred +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1601021625] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1601935251] Running >.one_item: 42 > +[Hera] [HADES][ERROR] [KRELTSC: 1602732138] >: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1603455588] Expected error occurred +[Hera] [HADES][TEST ] Testing > ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1604920107] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1605819201] >: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1606739232] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1607802924] Testing word: 0= +[Hera] [HADES][TEST ] [KRELTSC: 1608537378] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1609321161] Running 0=.zero: 0 0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1610550984] Test passed +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1611878940] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1614178482] Running 0=.positive: 42 0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1615343856] Test passed +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1616861421] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1619101995] Running 0=.negative: -42 0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1620235869] Test passed +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1621588290] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1623936531] Running 0=.empty_stack: 0= +[Hera] [HADES][ERROR] [KRELTSC: 1624771218] 0=: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1625550129] Expected error occurred +[Hera] [HADES][TEST ] Testing 0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1626996630] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1627899546] 0=: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1628838687] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1629944589] Testing word: 0< +[Hera] [HADES][TEST ] [KRELTSC: 1630669929] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1631451906] Running 0<.negative: -42 0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1632675492] Test passed +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1634036334] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1636465236] Running 0<.zero: 0 0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1637635818] Test passed +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1638997395] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1640993613] L8[TABLE]: Config 30 → 31 regime=2 score=6553 L1=0 L2=0 L3=1 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1642371360] Running 0<.positive: 42 0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1643488056] Test passed +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1644838377] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1647059337] Running 0<.empty_stack: 0< +[Hera] [HADES][ERROR] [KRELTSC: 1647893709] 0<: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1648837722] Expected error occurred +[Hera] [HADES][TEST ] Testing 0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1650280359] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1651186047] 0<: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1652110194] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1653183231] Testing word: 0> +[Hera] [HADES][TEST ] [KRELTSC: 1653894123] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1654669590] Running 0>.positive: 42 0> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1655886036] Test passed +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1657258113] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1659521409] Running 0>.zero: 0 0> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1660832985] Test passed +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1662190656] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1664439357] Running 0>.negative: -42 0> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1665568632] Test passed +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1666917357] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1669160808] Running 0>.empty_stack: 0> +[Hera] [HADES][ERROR] [KRELTSC: 1669984743] 0>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1670752041] Expected error occurred +[Hera] [HADES][TEST ] Testing 0> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1672185018] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1673095725] 0>: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1674185457] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1675280292] Testing word: 0<> +[Hera] [HADES][TEST ] [KRELTSC: 1675987194] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1676771313] Running 0<>.nonzero_pos: 42 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1678047861] Test passed +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1679415234] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1681685922] Running 0<>.nonzero_neg: -1 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1682834454] Test passed +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1684201071] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1686639171] Running 0<>.zero: 0 0<> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1687753368] Test passed +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1689089682] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1691290608] Running 0<>.empty_stack: 0<> +[Hera] [HADES][ERROR] [KRELTSC: 1692170928] 0<>: stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1692921363] Expected error occurred +[Hera] [HADES][TEST ] Testing 0<> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1694388780] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1695297828] 0<>: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1696226826] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1697313240] Testing word: U< +[Hera] [HADES][TEST ] [KRELTSC: 1698035661] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1698979485] Running U<.less: 3 5 U< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1700295870] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1701646569] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1703925636] Running U<.equal: 5 5 U< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1705117932] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1706476842] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1708734615] Running U<.greater: 7 5 U< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1709864583] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1711408146] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1713130104] L8[TABLE]: Config 31 → 32 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1714780137] Running U<.zero_one: 0 1 U< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1715931315] Test passed +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1717278675] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1719557469] Running U<.empty_stack: U< +[Hera] [HADES][ERROR] [KRELTSC: 1720389069] U<: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1721149689] Expected error occurred +[Hera] [HADES][TEST ] Testing U< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1722623238] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1723671453] U<: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1724677605] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1725752175] Testing word: U> +[Hera] [HADES][TEST ] [KRELTSC: 1726456956] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1727223435] Running U>.greater: 5 3 U> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1728474174] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1729851711] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1732180128] Running U>.equal: 5 5 U> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1733345523] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1734710712] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1737091671] Running U>.less: 3 5 U> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1738208619] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1739545122] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1741781391] Running U>.one_zero: 1 0 U> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1742924988] Test passed +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1744270647] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1746575040] Running U>.empty_stack: U> +[Hera] [HADES][ERROR] [KRELTSC: 1747403469] U>: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1748153505] Expected error occurred +[Hera] [HADES][TEST ] Testing U> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1749785772] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1750722435] U>: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1751648808] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1752719535] Testing word: WITHIN +[Hera] [HADES][TEST ] [KRELTSC: 1753445148] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1754226159] Running WITHIN.in_range: 3 1 5 WITHIN . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1755589878] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1757004438] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1759280103] Running WITHIN.at_low: 1 1 5 WITHIN . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1760464818] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1762050738] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1764343728] Running WITHIN.at_high: 5 1 5 WITHIN . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1765605765] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1766991912] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1768741611] L8[TABLE]: Config 32 → 33 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1770416949] Running WITHIN.below: 0 1 5 WITHIN . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1771634382] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1773001461] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1775418057] Running WITHIN.above: 6 1 5 WITHIN . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1776586707] Test passed +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1777981464] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1780513791] Running WITHIN.empty_stack: WITHIN +[Hera] [HADES][ERROR] [KRELTSC: 1781441949] WITHIN: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1782268971] Expected error occurred +[Hera] [HADES][TEST ] Testing WITHIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1783729920] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1784752872] WITHIN: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1785691908] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1786920513] Testing word: TRUE +[Hera] [HADES][TEST ] [KRELTSC: 1787904699] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1788689049] Running TRUE.value: TRUE . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1789908603] Test passed +[Hera] [HADES][TEST ] Testing TRUE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1791254010] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1793484189] Running TRUE.as_flag: TRUE 0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1794640533] Test passed +[Hera] [HADES][TEST ] Testing TRUE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1795983588] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1798244616] Running TRUE.in_and: TRUE TRUE AND . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1799568645] Test passed +[Hera] [HADES][TEST ] Testing TRUE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1800962646] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1803244926] TRUE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1804173777] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1805468280] Testing word: FALSE +[Hera] [HADES][TEST ] [KRELTSC: 1806445221] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1807393602] Running FALSE.value: FALSE . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1808874984] Test passed +[Hera] [HADES][TEST ] Testing FALSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1810646901] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1813898982] Running FALSE.as_flag: FALSE 0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1815116730] Test passed +[Hera] [HADES][TEST ] Testing FALSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1816496283] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1818771570] Running FALSE.in_or: TRUE FALSE OR . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1819975416] Test passed +[Hera] [HADES][TEST ] Testing FALSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1821311688] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1823615010] FALSE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1824749997] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1825815768] Testing word: >= +[Hera] [HADES][TEST ] [KRELTSC: 1826536992] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1827281736] Running >=.less: 3 5 >= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1828636719] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1829960202] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 1831971708] L8[TABLE]: Config 33 → 34 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1833379296] Running >=.greater: 5 3 >= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1834605843] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1835961645] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1838487084] Running >=.equal: 3 3 >= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1839605964] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1840992195] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1843263156] Running >=.negative: -1 0 >= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1844400264] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1845747351] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1848061152] Running >=.neg_neg: -1 -2 >= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1849380792] Test passed +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1850775171] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1853038887] Running >=.underflow: >= +[Hera] [HADES][ERROR] [KRELTSC: 1853868702] >=: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1854635244] Expected error occurred +[Hera] [HADES][TEST ] Testing >= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1856072064] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1856967987] >=: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1857899862] â–¶ Testing module: src/test_runner/modules/logical_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 1858979850] Testing word: <= +[Hera] [HADES][TEST ] [KRELTSC: 1859703153] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1860461715] Running <=.less: 3 5 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1861693911] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1863183945] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1865451252] Running <=.greater: 5 3 <= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1866663435] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1868075769] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1870271529] Running <=.equal: 3 3 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1871386167] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1872727710] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1875290865] Running <=.negative: -1 0 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1876444710] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1877792385] Expected: Should print: -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1880067336] Running <=.neg_neg: -2 -1 <= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1881215868] Test passed +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1882550460] Expected: Should print: -1 +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 1883737128] L8[TABLE]: Config 34 → 35 regime=2 score=52428 L1=0 L2=1 L3=0 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 1886010840] Running <=.underflow: <= +[Hera] [HADES][ERROR] [KRELTSC: 1886887821] <=: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1888036479] Expected error occurred +[Hera] [HADES][TEST ] Testing <= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1889509314] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1890428169] <=: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1891386777] === Logical Words Summary: 0 passed, 0 failed, 0 skipped, 0 err +[Hera] [HADES][INFO ] [KRELTSC: 1892452800] +[Hera] === Testing Module: Mixed Arithmetic Words === +[Hera] [HADES][INFO ] [KRELTSC: 1893667608] Running Mixed Arithmetic Words Tests (Module 7)... +[Hera] [HADES][TEST ] [KRELTSC: 1894667166] â–¶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 1895803035] Testing word: */ +[Hera] [HADES][TEST ] [KRELTSC: 1896505128] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1897441833] Running */.basic: 6 7 4 */ . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1898772078] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1900428033] Expected: Should print: 10 (6*7/4) +[Hera] [HADES][TEST ] [KRELTSC: 1901522196] Running */.exact_division: 12 5 3 */ . CR +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 1902734106] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1904098371] Expected: Should print: 20 (12*5/3) +[Hera] [HADES][TEST ] [KRELTSC: 1905039444] Running */.zero_multiply: 0 999 123 */ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 1906291506] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1907639748] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 1908457950] Running */.by_one: 42 5 1 */ . CR +[Hera] 210 +[Hera] [HADES][TEST ] [KRELTSC: 1909616541] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1910963313] Expected: Should print: 210 (42*5/1) +[Hera] [HADES][TEST ] [KRELTSC: 1911859971] Running */.truncation: 7 3 2 */ . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 1913266845] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1914624159] Expected: Should print: 10 (21/2 truncated) +[Hera] [HADES][TEST ] [KRELTSC: 1915566282] Running */.negative_multiply: -6 7 4 */ . CR +[Hera] -10 +[Hera] [HADES][TEST ] [KRELTSC: 1916813829] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1918190274] Expected: Should print: -10 +[Hera] [HADES][TEST ] [KRELTSC: 1919019291] Running */.negative_divisor: 6 7 -4 */ . CR +[Hera] -10 +[Hera] [HADES][TEST ] [KRELTSC: 1920297267] Test passed +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1921648281] Expected: Should print: -10 +[Hera] [HADES][TEST ] [KRELTSC: 1922489058] Running */.div_by_zero: 6 7 0 */ +[Hera] [HADES][ERROR] [KRELTSC: 1923395334] */: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1924157004] Expected error occurred +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1925828079] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1926778623] Running */.empty_stack: */ +[Hera] [HADES][ERROR] [KRELTSC: 1927618980] */: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1928400915] Expected error occurred +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1929823119] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1930748232] Running */.two_items: 1 2 */ +[Hera] [HADES][ERROR] [KRELTSC: 1931616162] */: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1932350280] Expected error occurred +[Hera] [HADES][TEST ] Testing */ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1933838025] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1934832018] */: 10 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1935818619] â–¶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 1936918914] Testing word: */MOD +[Hera] [HADES][TEST ] [KRELTSC: 1937780943] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1938790182] Running */MOD.basic: 17 3 5 */MOD . . CR +[Hera] 10 1 +[Hera] [HADES][TEST ] [KRELTSC: 1940176098] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1941524025] Expected: Should print: 1 10 (51/5 = 10 rem 1) +[Hera] [HADES][TEST ] [KRELTSC: 1942475283] Running */MOD.exact_division: 15 4 3 */MOD . . CR +[Hera] 20 0 +[Hera] [HADES][TEST ] [KRELTSC: 1943763087] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1945106205] Expected: Should print: 0 20 (60/3 = 20 rem 0) +[Hera] [HADES][TEST ] [KRELTSC: 1946081277] Running */MOD.zero_multiply: 0 999 123 */MOD . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 1947352575] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1948715979] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 1949539725] Running */MOD.by_one: 42 5 1 */MOD . . CR +[Hera] 210 0 +[Hera] [HADES][TEST ] [KRELTSC: 1951224849] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1952586867] Expected: Should print: 0 210 +[Hera] [HADES][TEST ] [KRELTSC: 1953443478] Running */MOD.remainder: 7 8 5 */MOD . . CR +[Hera] 11 1 +[Hera] [HADES][TEST ] [KRELTSC: 1954706187] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1956075492] Expected: Should print: 1 11 (56/5 = 11 rem 1) +[Hera] [HADES][TEST ] [KRELTSC: 1957015095] Running */MOD.negative: -7 3 4 */MOD . . CR +[Hera] -5 -1 +[Hera] [HADES][TEST ] [KRELTSC: 1958288220] Test passed +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1959635958] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 1960511595] Running */MOD.div_by_zero: 6 7 0 */MOD +[Hera] [HADES][ERROR] [KRELTSC: 1961453025] */MOD: Division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1962431058] Expected error occurred +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1964116938] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 1965044529] Running */MOD.empty_stack: */MOD +[Hera] [HADES][ERROR] [KRELTSC: 1965927936] */MOD: Stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1966744332] Expected error occurred +[Hera] [HADES][TEST ] Testing */MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1968194991] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1969108974] */MOD: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1970041143] â–¶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 1971107292] Testing word: M+ +[Hera] [HADES][TEST ] [KRELTSC: 1971801258] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 1972595310] Running M+.basic: 0 100 200 M+ . . CR +[Hera] 300 0 +[Hera] [HADES][TEST ] [KRELTSC: 1973992209] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1975618764] Expected: Should print: 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 1976476089] Running M+.overflow: 0 2147483647 1 M+ . . CR +[Hera] 2147483648 0 +[Hera] [HADES][TEST ] [KRELTSC: 1977790605] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1979131686] Expected: Should handle overflow +[Hera] [HADES][TEST ] [KRELTSC: 1979985147] Running M+.negative: 0 -100 50 M+ . . CR +[Hera] -50 0 +[Hera] [HADES][TEST ] [KRELTSC: 1981228263] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1982553888] Expected: Should print: 50 -100 +[Hera] [HADES][TEST ] [KRELTSC: 1983432339] Running M+.zero_add: 0 42 0 M+ . . CR +[Hera] 42 0 +[Hera] [HADES][TEST ] [KRELTSC: 1984609137] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1985952822] Expected: Should print: 0 42 +[Hera] [HADES][TEST ] [KRELTSC: 1986766530] Running M+.both_negative: 0 -100 -200 M+ . . CR +[Hera] -300 0 +[Hera] [HADES][TEST ] [KRELTSC: 1988264796] Test passed +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1989637356] Expected: Should print: -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 1990494303] Running M+.empty_stack: M+ +[Hera] [HADES][TEST ] [KRELTSC: 1991332224] Expected error occurred +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1992759489] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1993706883] Running M+.one_item: 42 M+ +[Hera] [HADES][TEST ] [KRELTSC: 1994517504] Expected error occurred +[Hera] [HADES][TEST ] Testing M+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 1995977130] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 1996868517] M+: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 1997777733] â–¶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 1998873702] Testing word: M* +[Hera] [HADES][TEST ] [KRELTSC: 1999565316] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2000464998] Running M*.basic: 123 456 M* . . CR +[Hera] 0 56088 +[Hera] [HADES][TEST ] [KRELTSC: 2002143066] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2003440026] Expected: Should print: 56088 0 +[Hera] [HADES][TEST ] [KRELTSC: 2004344916] Running M*.by_zero: 999 0 M* . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2005510122] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2006853135] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2007661866] Running M*.by_one: 42 1 M* . . CR +[Hera] 0 42 +[Hera] [HADES][TEST ] [KRELTSC: 2008846455] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2010188103] Expected: Should print: 42 0 +[Hera] [HADES][TEST ] [KRELTSC: 2011030224] Running M*.negative: -123 456 M* . . CR +[Hera] -1 4294911208 +[Hera] [HADES][TEST ] [KRELTSC: 2012302740] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2013862494] Expected: Should print: -56088 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2014741638] Running M*.large_multiply: 65536 65536 M* . . CR +[Hera] 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 2016011403] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2017364496] Expected: Should handle large result +[Hera] [HADES][TEST ] [KRELTSC: 2018242233] Running M*.both_negative: -100 -200 M* . . CR +[Hera] 0 20000 +[Hera] [HADES][TEST ] [KRELTSC: 2019629409] Test passed +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2020983384] Expected: Should print: 20000 0 +[Hera] [HADES][TEST ] [KRELTSC: 2021834745] Running M*.empty_stack: M* +[Hera] [HADES][TEST ] [KRELTSC: 2022681444] Expected error occurred +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2024110410] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2025024624] Running M*.one_item: 42 M* +[Hera] [HADES][TEST ] [KRELTSC: 2026127607] Expected error occurred +[Hera] [HADES][TEST ] Testing M* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2027625138] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2028533850] M*: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2029451466] â–¶ Testing module: src/test_runner/modules/mixed_arithmetic_wo +[Hera] [HADES][TEST ] [KRELTSC: 2030504364] Testing word: M/MOD +[Hera] [HADES][TEST ] [KRELTSC: 2031223509] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2032012353] Running M/MOD.basic: 0 1000 100 M/MOD . . CR +[Hera] 10 0 +[Hera] [HADES][TEST ] [KRELTSC: 2033404989] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2034802497] Expected: Should print: 0 10 (1000/100) +[Hera] [HADES][TEST ] [KRELTSC: 2035713540] Running M/MOD.with_remainder: 0 1234 100 M/MOD . . CR +[Hera] 12 34 +[Hera] [HADES][TEST ] [KRELTSC: 2037027594] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2038634514] Expected: Should handle remainder +[Hera] [HADES][TEST ] [KRELTSC: 2039500050] Running M/MOD.double_dividend: 5001 0 10 M/MOD . . CR +[Hera] 2147913144729 6 +[Hera] [HADES][TEST ] [KRELTSC: 2040904026] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2042315583] Expected: Should print: 1 500 (5001/10) +[Hera] [HADES][TEST ] [KRELTSC: 2043211212] Running M/MOD.by_one: 0 42 1 M/MOD . . CR +[Hera] 42 0 +[Hera] [HADES][TEST ] [KRELTSC: 2044482993] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2045847027] Expected: Should print: 0 42 +[Hera] [HADES][TEST ] [KRELTSC: 2046675561] Running M/MOD.negative_dividend: -1 1000 100 M/MOD . . CR +[Hera] -42949662 -96 +[Hera] [HADES][TEST ] [KRELTSC: 2048077416] Test passed +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2049473769] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 2050355874] Running M/MOD.div_by_zero: 0 100 0 M/MOD +[Hera] [HADES][TEST ] [KRELTSC: 2051571375] Expected error occurred +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2053024743] Expected: Should cause division by zero +[Hera] [HADES][TEST ] [KRELTSC: 2053918146] Running M/MOD.empty_stack: M/MOD +[Hera] [HADES][TEST ] [KRELTSC: 2054778684] Expected error occurred +[Hera] [HADES][TEST ] Testing M/MOD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2056217247] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2057130243] M/MOD: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2058094542] === Mixed Arithmetic Words Summary: 0 passed, 0 failed, 0 skipp +[Hera] [HADES][INFO ] [KRELTSC: 2059162812] +[Hera] === Testing Module: Double Words === +[Hera] [HADES][INFO ] [KRELTSC: 2060266026] Running Double Number Words Tests (Module 6)... +[Hera] [HADES][TEST ] [KRELTSC: 2061252837] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2062326798] Testing word: 2DROP +[Hera] [HADES][TEST ] [KRELTSC: 2063142207] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2064234627] Running 2DROP.basic: 1 2 3 4 2DROP . . CR +[Hera] 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 2065697592] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2067039870] Expected: Should print: 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 2067840432] Running 2DROP.zeros: 0 0 42 99 2DROP . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2069067336] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2070434856] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2071250664] Running 2DROP.negative: -1 -2 100 200 2DROP . . CR +[Hera] -2 -1 +[Hera] [HADES][INFO ] [KRELTSC: 2082492741] L8[TABLE]: Config 35 → 36 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 2083407900] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2084797869] Expected: Should print: -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 2085693519] Running 2DROP.exact_four: 10 20 30 40 2DROP DEPTH . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 2087094786] Test passed +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2088732786] Expected: Should print: 2 +[Hera] [HADES][TEST ] [KRELTSC: 2089513608] Running 2DROP.empty_stack: 2DROP +[Hera] [HADES][TEST ] [KRELTSC: 2090423412] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2091866700] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2092804287] Running 2DROP.one_item: 42 2DROP +[Hera] [HADES][TEST ] [KRELTSC: 2093653023] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DROP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2095147089] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2096047464] 2DROP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2097120963] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2098176948] Testing word: 2DUP +[Hera] [HADES][TEST ] [KRELTSC: 2098908651] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2099674269] Running 2DUP.basic: 100 200 2DUP . . . . CR +[Hera] 200 100 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 2101212666] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2102583504] Expected: Should print: 100 200 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2103522351] Running 2DUP.zeros: 0 0 2DUP . . . . CR +[Hera] 0 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2104773804] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2106093087] Expected: Should print: 0 0 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2106978006] Running 2DUP.negative: -100 -200 2DUP . . . . CR +[Hera] -200 -100 -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2108374149] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2109796962] Expected: Should duplicate negatives +[Hera] [HADES][TEST ] [KRELTSC: 2110690323] Running 2DUP.depth_check: 10 20 2DUP DEPTH . CR +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 2111933040] Test passed +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2113326243] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 2114377398] Running 2DUP.empty_stack: 2DUP +[Hera] [HADES][TEST ] [KRELTSC: 2115525279] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2116948848] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2117879925] Running 2DUP.one_item: 42 2DUP +[Hera] [HADES][TEST ] [KRELTSC: 2118752097] Expected error occurred +[Hera] [HADES][TEST ] Testing 2DUP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2120236482] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2121141582] 2DUP: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2122105482] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2123149476] Testing word: 2OVER +[Hera] [HADES][TEST ] [KRELTSC: 2123870784] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2124620694] Running 2OVER.basic: 10 20 30 40 2OVER . . . . . . CR +[Hera] 20 10 40 30 20 10 +[Hera] [HADES][TEST ] [KRELTSC: 2126489736] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2127871641] Expected: Should print: 10 20 30 40 10 20 +[Hera] [HADES][TEST ] [KRELTSC: 2128792008] Running 2OVER.zeros: 0 0 99 88 2OVER . . . . . . CR +[Hera] 0 0 88 99 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2130215976] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2131572513] Expected: Should print: 0 0 99 88 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2132494203] Running 2OVER.mixed: -1 2 -3 4 2OVER . . . . . . CR +[Hera] 2 -1 4 -3 2 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2133898557] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2135464443] Expected: Should handle mixed signs +[Hera] [HADES][TEST ] [KRELTSC: 2136380274] Running 2OVER.depth_check: 1 2 3 4 2OVER DEPTH . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 2137647918] Test passed +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2139210066] Expected: Should print: 6 +[Hera] [HADES][TEST ] [KRELTSC: 2140037907] Running 2OVER.three_items: 1 2 3 2OVER +[Hera] [HADES][TEST ] [KRELTSC: 2141022345] Expected error occurred +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2142455637] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2143363089] Running 2OVER.empty_stack: 2OVER +[Hera] [HADES][TEST ] [KRELTSC: 2144226126] Expected error occurred +[Hera] [HADES][TEST ] Testing 2OVER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2145685374] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2146584552] 2OVER: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2147527956] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2148592236] Testing word: 2SWAP +[Hera] [HADES][TEST ] [KRELTSC: 2149328937] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2150078721] Running 2SWAP.basic: 10 20 30 40 2SWAP . . . . CR +[Hera] 20 10 40 30 +[Hera] [HADES][TEST ] [KRELTSC: 2151660777] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2153045412] Expected: Should print: 30 40 10 20 +[Hera] [HADES][TEST ] [KRELTSC: 2153915274] Running 2SWAP.zeros: 0 0 99 88 2SWAP . . . . CR +[Hera] 0 0 88 99 +[Hera] [HADES][TEST ] [KRELTSC: 2155261290] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2156615160] Expected: Should print: 99 88 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2157498756] Running 2SWAP.same_pairs: 42 42 42 42 2SWAP . . . . CR +[Hera] 42 42 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 2158885176] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2160248223] Expected: Should print: 42 42 42 42 +[Hera] [HADES][TEST ] [KRELTSC: 2161135599] Running 2SWAP.negative: -10 -20 30 40 2SWAP . . . . CR +[Hera] -20 -10 40 30 +[Hera] [HADES][TEST ] [KRELTSC: 2162565195] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2164244187] Expected: Should print: 30 40 -10 -20 +[Hera] [HADES][TEST ] [KRELTSC: 2165144835] Running 2SWAP.depth_check: 1 2 3 4 2SWAP DEPTH . CR +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 2166453891] Test passed +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2167832394] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 2168625564] Running 2SWAP.three_items: 1 2 3 2SWAP +[Hera] [HADES][TEST ] [KRELTSC: 2169572748] Expected error occurred +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2171018556] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2171923404] Running 2SWAP.empty_stack: 2SWAP +[Hera] [HADES][TEST ] [KRELTSC: 2172788604] Expected error occurred +[Hera] [HADES][TEST ] Testing 2SWAP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2174256735] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2175162990] 2SWAP: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2176208643] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2177592648] Testing word: 2ROT +[Hera] [HADES][TEST ] [KRELTSC: 2178418851] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2179186800] Running 2ROT.basic: 10 20 30 40 50 60 2ROT . . . . . . CR +[Hera] 20 10 60 50 40 30 +[Hera] [HADES][TEST ] [KRELTSC: 2180875725] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2182227432] Expected: Should print: 30 40 50 60 10 20 +[Hera] [HADES][TEST ] [KRELTSC: 2183151663] Running 2ROT.zeros: 0 0 1 1 2 2 2ROT . . . . . . CR +[Hera] 0 0 2 2 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 2184551628] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2185899912] Expected: Should rotate with zeros +[Hera] [HADES][TEST ] [KRELTSC: 2186776893] Running 2ROT.negative: -1 -2 3 4 -5 -6 2ROT . . . . . . CR +[Hera] -2 -1 -6 -5 4 3 +[Hera] [HADES][TEST ] [KRELTSC: 2188207791] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2190022821] Expected: Should handle negatives +[Hera] [HADES][TEST ] [KRELTSC: 2190903267] Running 2ROT.depth_check: 1 2 3 4 5 6 2ROT DEPTH . CR +[Hera] 6 +[Hera] [HADES][TEST ] [KRELTSC: 2192231664] Test passed +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2193599100] Expected: Should print: 6 +[Hera] [HADES][TEST ] [KRELTSC: 2194392564] Running 2ROT.five_items: 1 2 3 4 5 2ROT +[Hera] [HADES][TEST ] [KRELTSC: 2195359803] Expected error occurred +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2196790680] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2197716129] Running 2ROT.empty_stack: 2ROT +[Hera] [HADES][TEST ] [KRELTSC: 2198550858] Expected error occurred +[Hera] [HADES][TEST ] Testing 2ROT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2200021572] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2200925223] 2ROT: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2202066741] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2203181043] Testing word: D+ +[Hera] [HADES][TEST ] [KRELTSC: 2203910919] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2204670237] Running D+.basic: 100 200 300 400 D+ . . CR +[Hera] 600 400 +[Hera] [HADES][TEST ] [KRELTSC: 2206119405] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2207475438] Expected: Should print: 400 600 +[Hera] [HADES][TEST ] [KRELTSC: 2208310524] Running D+.zero_add: 42 99 0 0 D+ . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2209559079] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2210902323] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2211731760] Running D+.negative: -100 -200 50 75 D+ . . CR +[Hera] -125 -50 +[Hera] [HADES][TEST ] [KRELTSC: 2213037288] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2214550401] Expected: Should handle negatives +[Hera] [HADES][TEST ] [KRELTSC: 2215728984] Running D+.carry: 2147483647 0 1 0 D+ . . CR +[Hera] 0 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2217149445] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2218518141] Expected: Should handle carry +[Hera] [HADES][TEST ] [KRELTSC: 2219336847] Running D+.both_negative: -100 -200 -300 -400 D+ . . CR +[Hera] -599 -400 +[Hera] [HADES][TEST ] [KRELTSC: 2220710814] Test passed +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2222037699] Expected: Should add negatives +[Hera] [HADES][TEST ] [KRELTSC: 2222910165] Running D+.three_items: 1 2 3 D+ +[Hera] [HADES][TEST ] [KRELTSC: 2223786348] Expected error occurred +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2225206263] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2226102291] Running D+.empty_stack: D+ +[Hera] [HADES][TEST ] [KRELTSC: 2227152795] Expected error occurred +[Hera] [HADES][TEST ] Testing D+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2228589972] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2229502212] D+: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2230405296] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2231503764] Testing word: D- +[Hera] [HADES][TEST ] [KRELTSC: 2232202161] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2233002240] Running D-.basic: 500 600 100 200 D- . . CR +[Hera] 400 [HADES][INFO ] [KRELTSC: 2234377341] L8[TABLE]: Config 36 → 37 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] 400 +[Hera] [HADES][TEST ] [KRELTSC: 2235560964] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2236923171] Expected: Should print: 400 400 +[Hera] [HADES][TEST ] [KRELTSC: 2237752650] Running D-.zero_sub: 42 99 0 0 D- . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2239151397] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2240556927] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2241456315] Running D-.from_zero: 0 0 100 200 D- . . CR +[Hera] -201 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2242740402] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2244100320] Expected: Should print: -100 -200 +[Hera] [HADES][TEST ] [KRELTSC: 2244979149] Running D-.negative: 100 200 -50 -75 D- . . CR +[Hera] 274 150 +[Hera] [HADES][TEST ] [KRELTSC: 2246291838] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2247640227] Expected: Should handle negatives +[Hera] [HADES][TEST ] [KRELTSC: 2248512735] Running D-.borrow: 0 0 1 0 D- . . CR +[Hera] -1 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2249755998] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2251217556] Expected: Should handle borrow +[Hera] [HADES][TEST ] [KRELTSC: 2252406849] Running D-.same_values: 100 200 100 200 D- . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2253708702] Test passed +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2254851354] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2255341284] Running D-.three_items: 1 2 3 D- +[Hera] [HADES][TEST ] [KRELTSC: 2256028278] Expected error occurred +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2257480512] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2258431434] Running D-.empty_stack: D- +[Hera] [HADES][TEST ] [KRELTSC: 2259244701] Expected error occurred +[Hera] [HADES][TEST ] Testing D- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2260704432] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2261616693] D-: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2262545880] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2263615305] Testing word: DNEGATE +[Hera] [HADES][TEST ] [KRELTSC: 2264551359] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2265379977] Running DNEGATE.positive: 100 200 DNEGATE . . CR +[Hera] -201 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2266972575] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2268532434] Expected: Should negate positive double +[Hera] [HADES][TEST ] [KRELTSC: 2269559565] Running DNEGATE.negative: -100 -200 DNEGATE . . CR +[Hera] 199 100 +[Hera] [HADES][TEST ] [KRELTSC: 2271074988] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2272509834] Expected: Should negate negative double +[Hera] [HADES][TEST ] [KRELTSC: 2273440239] Running DNEGATE.zero: 0 0 DNEGATE . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2274740727] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2276164926] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2277305016] Running DNEGATE.max_positive: 2147483647 0 DNEGATE . . CR +[Hera] -1 -2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 2278866765] Test passed +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2280376119] Expected: Should negate max positive +[Hera] [HADES][TEST ] [KRELTSC: 2281293462] Running DNEGATE.one_item: 42 DNEGATE +[Hera] [HADES][TEST ] [KRELTSC: 2282345058] Expected error occurred +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2283851556] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2284752918] Running DNEGATE.empty_stack: DNEGATE +[Hera] [HADES][TEST ] [KRELTSC: 2285694180] Expected error occurred +[Hera] [HADES][TEST ] Testing DNEGATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2287216281] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2288131986] DNEGATE: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2289084105] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2290557780] Testing word: DABS +[Hera] [HADES][TEST ] [KRELTSC: 2291279634] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2292074358] Running DABS.positive: 100 200 DABS . . CR +[Hera] 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 2293503912] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2294853645] Expected: Should print: 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2295701037] Running DABS.negative: -100 -200 DABS . . CR +[Hera] 199 100 +[Hera] [HADES][TEST ] [KRELTSC: 2296976619] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2298339813] Expected: Should print: 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2299188507] Running DABS.zero: 0 0 DABS . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2300439729] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2301847548] Expected: Should print: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2302970250] Running DABS.mixed_sign: 100 -1 DABS . . CR +[Hera] 0 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2304270507] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2305647750] Expected: Should handle mixed sign +[Hera] [HADES][TEST ] [KRELTSC: 2306534958] Running DABS.min_double: -2147483648 -1 DABS . . CR +[Hera] 0 2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2308032321] Test passed +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2309438292] Expected: Should handle min double +[Hera] [HADES][TEST ] [KRELTSC: 2310350196] Running DABS.one_item: 42 DABS +[Hera] [HADES][TEST ] [KRELTSC: 2311227177] Expected error occurred +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2312695035] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2313613239] Running DABS.empty_stack: DABS +[Hera] [HADES][TEST ] [KRELTSC: 2314567332] Expected error occurred +[Hera] [HADES][TEST ] Testing DABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2316256908] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2317169043] DABS: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2318090292] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2319166647] Testing word: DMIN +[Hera] [HADES][TEST ] [KRELTSC: 2319879996] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2320654266] Running DMIN.basic: 100 200 300 400 DMIN . . CR +[Hera] 200 100 +[Hera] [HADES][TEST ] [KRELTSC: 2322091422] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2323436451] Expected: Should print: 100 200 +[Hera] [HADES][TEST ] [KRELTSC: 2324281197] Running DMIN.equal: 42 99 42 99 DMIN . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2325598569] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2326999773] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2328193581] Running DMIN.negative: -100 -200 -50 -75 DMIN . . CR +[Hera] -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2329583739] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2330949453] Expected: Should find min negative +[Hera] [HADES][TEST ] [KRELTSC: 2331847581] Running DMIN.mixed: -100 -1 100 0 DMIN . . CR +[Hera] -1 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2333127909] Test passed +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2334509646] Expected: Should handle mixed signs +[Hera] [HADES][TEST ] [KRELTSC: 2335395636] Running DMIN.three_items: 1 2 3 DMIN +[Hera] [HADES][TEST ] [KRELTSC: 2336323479] Expected error occurred +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2337857886] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2338769454] Running DMIN.empty_stack: DMIN +[Hera] [HADES][TEST ] [KRELTSC: 2339711808] Expected error occurred +[Hera] [HADES][TEST ] Testing DMIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2341182648] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2342095413] DMIN: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2343024411] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2344102068] Testing word: DMAX +[Hera] [HADES][TEST ] [KRELTSC: 2344814220] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2345577570] Running DMAX.basic: 100 200 300 400 DMAX . . CR +[Hera] 400 300 +[Hera] [HADES][TEST ] [KRELTSC: 2347050972] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2348409357] Expected: Should print: 300 400 +[Hera] [HADES][TEST ] [KRELTSC: 2349266157] Running DMAX.equal: 42 99 42 99 DMAX . . CR +[Hera] 99 42 +[Hera] [HADES][TEST ] [KRELTSC: 2350611018] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2351980365] Expected: Should print: 42 99 +[Hera] [HADES][TEST ] [KRELTSC: 2353133748] Running DMAX.negative: -300 -400 -100 -200 DMAX . . CR +[Hera] -200 -100 +[Hera] [HADES][TEST ] [KRELTSC: 2354516766] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2355844575] Expected: Should find max negative +[Hera] [HADES][TEST ] [KRELTSC: 2356734135] Running DMAX.mixed: -100 -1 100 0 DMAX . . CR +[Hera] 0 100 +[Hera] [HADES][TEST ] [KRELTSC: 2358000099] Test passed +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2359342230] Expected: Should handle mixed signs +[Hera] [HADES][TEST ] [KRELTSC: 2360215452] Running DMAX.three_items: 1 2 3 DMAX +[Hera] [HADES][TEST ] [KRELTSC: 2361158016] Expected error occurred +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2362617873] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2363526858] Running DMAX.empty_stack: DMAX +[Hera] [HADES][TEST ] [KRELTSC: 2364360894] Expected error occurred +[Hera] [HADES][TEST ] Testing DMAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2366092218] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2367020208] DMAX: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2367949815] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2369021424] Testing word: D= +[Hera] [HADES][TEST ] [KRELTSC: 2369749494] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2370559863] Running D=.equal: 100 200 100 200 D= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2371969446] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2373345135] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2374177848] Running D=.not_equal_low: 100 200 101 200 D= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2375463405] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2376807741] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2377831218] Running D=.not_equal_high: 100 200 100 201 D= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2379149409] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2380514829] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2381313879] Running D=.zero_equal: 0 0 0 0 D= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2382511425] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2383929198] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2384810652] Running D=.negative_equal: -100 -200 -100 -200 D= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2386134597] Test passed +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2387483427] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2388305535] Running D=.three_items: 1 2 3 D= +[Hera] [HADES][TEST ] [KRELTSC: 2389204377] Expected error occurred +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2390987361] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2391916758] Running D=.empty_stack: D= +[Hera] [HADES][TEST ] [KRELTSC: 2392741743] Expected error occurred +[Hera] [HADES][TEST ] Testing D= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2394191037] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2395107141] D=: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2396033577] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2397136266] Testing word: D< +[Hera] [HADES][TEST ] [KRELTSC: 2397834705] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2398608534] Running D<.less_than: 100 200 300 400 D< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2399964042] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2401321503] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2402128470] Running D<.greater_than: 300 400 100 200 D< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2403713445] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2405105787] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2405898474] Running D<.equal: 100 200 100 200 D< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2407181763] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2408526015] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2409336153] Running D<.negative_positive: -100 -1 100 0 D< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2410588824] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2411943555] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2412767616] Running D<.negative_negative: -300 -1 -100 -1 D< . CR +[Hera] -1 +[Hera] [HADES][INFO ] [KRELTSC: 2414128038] L8[TABLE]: Config 37 → 38 regime=2 score=26214 L1=0 L2=1 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 2415328041] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2416766058] Expected: Should compare negatives +[Hera] [HADES][TEST ] [KRELTSC: 2417643081] Running D<.high_word_diff: 100 200 100 300 D< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2418926769] Test passed +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2420302248] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2421110034] Running D<.three_items: 1 2 3 D< +[Hera] [HADES][TEST ] [KRELTSC: 2422004151] Expected error occurred +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2423612814] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2424519678] Running D<.empty_stack: D< +[Hera] [HADES][TEST ] [KRELTSC: 2425330677] Expected error occurred +[Hera] [HADES][TEST ] Testing D< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2426784948] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2427734988] D<: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2428876905] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2429958699] Testing word: D0= +[Hera] [HADES][TEST ] [KRELTSC: 2430679566] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2431447284] Running D0=.zero: 0 0 D0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2432682168] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2434051683] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2434867302] Running D0=.positive: 100 200 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2436058884] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2437417017] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2438239230] Running D0=.negative: -100 -200 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2439458343] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2441077569] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2442180111] Running D0=.zero_high: 0 100 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2443359345] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2444708238] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2445520308] Running D0=.zero_low: 100 0 D0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2446692213] Test passed +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2448059250] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2448884004] Running D0=.one_item: 42 D0= +[Hera] [HADES][TEST ] [KRELTSC: 2449725075] Expected error occurred +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2451178653] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2452094526] Running D0=.empty_stack: D0= +[Hera] [HADES][TEST ] [KRELTSC: 2453069367] Expected error occurred +[Hera] [HADES][TEST ] Testing D0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2454630213] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2455561353] D0=: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2456489826] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2457590982] Testing word: D0< +[Hera] [HADES][TEST ] [KRELTSC: 2458300026] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2459083305] Running D0<.negative: -100 -1 D0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2460391920] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2461813326] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2462682138] Running D0<.zero: 0 0 D0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2463862170] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2465233764] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2466436077] Running D0<.positive: 100 0 D0< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2467620267] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2468995767] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2469833562] Running D0<.negative_high_only: 100 -1 D0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2471087829] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2472478806] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2473288503] Running D0<.large_negative: -1 -1 D0< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2474522904] Test passed +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2475893994] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 2476711944] Running D0<.one_item: 42 D0< +[Hera] [HADES][TEST ] [KRELTSC: 2477573238] Expected error occurred +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2479395051] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2480472792] Running D0<.empty_stack: D0< +[Hera] [HADES][TEST ] [KRELTSC: 2481314430] Expected error occurred +[Hera] [HADES][TEST ] Testing D0< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2482774644] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2483682012] D0<: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2484627033] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2485673463] Testing word: S>D +[Hera] [HADES][TEST ] [KRELTSC: 2486393973] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2487175110] Running S>D.positive: 5 S>D . . CR +[Hera] 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2488444539] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2489835789] Expected: Should sign-extend positive: 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2490979428] Running S>D.negative: -5 S>D . . CR +[Hera] -1 -5 +[Hera] [HADES][TEST ] [KRELTSC: 2492392371] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2493752856] Expected: Should sign-extend negative: -1 -5 +[Hera] [HADES][TEST ] [KRELTSC: 2494709490] Running S>D.zero: 0 S>D . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2495846493] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2497206999] Expected: Should sign-extend zero: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2498123481] Running S>D.max_int: 2147483647 S>D . . CR +[Hera] 0 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 2499458346] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2500766646] Expected: Should extend max int: 0 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 2501723196] Running S>D.min_int: -2147483648 S>D . . CR +[Hera] -1 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2503170180] Test passed +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2504637429] Expected: Should extend min int: -1 -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 2505624345] Running S>D.empty_stack: S>D +[Hera] [HADES][TEST ] [KRELTSC: 2506474341] Expected error occurred +[Hera] [HADES][TEST ] Testing S>D ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2507927205] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2508824892] S>D: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2509783626] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2510852652] Testing word: D2* +[Hera] [HADES][TEST ] [KRELTSC: 2511581856] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2512363560] Running D2*.basic: 5 0 D2* . . CR +[Hera] 0 10 +[Hera] [HADES][TEST ] [KRELTSC: 2513672868] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2515040619] Expected: Should double 5: 0 10 +[Hera] [HADES][TEST ] [KRELTSC: 2516115252] Running D2*.zero: 0 0 D2* . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2517257316] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2518600623] Expected: Should double zero: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2519434218] Running D2*.negative: -1 -1 D2* . . CR +[Hera] -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 2520619227] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2521988742] Expected: Should double -1: -1 -2 +[Hera] [HADES][TEST ] [KRELTSC: 2522841531] Running D2*.carry: 0 1 D2* . . CR +[Hera] 2 0 +[Hera] [HADES][TEST ] [KRELTSC: 2523990672] Test passed +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2525372829] Expected: Should shift high cell: 0 2 +[Hera] [HADES][TEST ] [KRELTSC: 2526286854] Running D2*.empty_stack: D2* +[Hera] [HADES][TEST ] [KRELTSC: 2527152390] Expected error occurred +[Hera] [HADES][TEST ] Testing D2* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2528620836] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2529493092] D2*: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2530373055] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2531385528] Testing word: D2/ +[Hera] [HADES][TEST ] [KRELTSC: 2532069351] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2532802566] Running D2/.basic: 10 0 D2/ . . CR +[Hera] 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2534060781] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2535433761] Expected: Should halve 10: 0 5 +[Hera] [HADES][TEST ] [KRELTSC: 2536287999] Running D2/.negative: -2 -1 D2/ . . CR +[Hera] -1 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2537620512] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2539021443] Expected: Should halve -2: -1 -1 +[Hera] [HADES][TEST ] [KRELTSC: 2539877844] Running D2/.zero: 0 0 D2/ . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2541217266] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2542652637] Expected: Should halve zero: 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 2543552970] Running D2/.odd: 3 0 D2/ . . CR +[Hera] 0 1 +[Hera] [HADES][TEST ] [KRELTSC: 2544684618] Test passed +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2546058291] Expected: Should truncate toward zero: 0 1 +[Hera] [HADES][TEST ] [KRELTSC: 2547033720] Running D2/.empty_stack: D2/ +[Hera] [HADES][TEST ] [KRELTSC: 2547915510] Expected error occurred +[Hera] [HADES][TEST ] Testing D2/ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2549384397] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2550306276] D2/: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2551228407] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2552341134] Testing word: 2>R +[Hera] [HADES][TEST ] [KRELTSC: 2553060552] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2554126974] Running 2>R.roundtrip: 10 20 2>R 2R> . . CR +[Hera] 20 10 +[Hera] [HADES][TEST ] [KRELTSC: 2555654157] Test passed +[Hera] [HADES][TEST ] Testing 2>R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2557014222] Expected: Should store and retrieve: 20 10 +[Hera] [HADES][TEST ] [KRELTSC: 2557970667] Running 2>R.depth_after: 1 2 2>R DEPTH . 2R> DROP DROP CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2559359313] Test passed +[Hera] [HADES][TEST ] Testing 2>R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2560726287] Expected: Should empty data stack: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2561615322] Running 2>R.empty_stack: 2>R +[Hera] [HADES][TEST ] [KRELTSC: 2562485583] Expected error occurred +[Hera] [HADES][TEST ] Testing 2>R ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2563948737] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2564849049] 2>R: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2565800790] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2567253360] Testing word: 2R> +[Hera] [HADES][TEST ] [KRELTSC: 2568002388] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2568785184] Running 2R>.roundtrip: 5 6 2>R 2R> . . CR +[Hera] 6 5 +[Hera] [HADES][TEST ] [KRELTSC: 2570034180] Test passed +[Hera] [HADES][TEST ] Testing 2R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2571403884] Expected: Should retrieve double: 6 5 +[Hera] [HADES][TEST ] [KRELTSC: 2572318350] Running 2R>.depth: 9 8 2>R 2R> DEPTH . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 2573526501] Test passed +[Hera] [HADES][TEST ] Testing 2R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2574895155] Expected: Should push 2 items to data stack: 2 +[Hera] [HADES][TEST ] [KRELTSC: 2575860000] Running 2R>.empty_rstack: 2R> +[Hera] [HADES][TEST ] [KRELTSC: 2576733621] Expected error occurred +[Hera] [HADES][TEST ] Testing 2R> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2578181655] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2579384346] 2R>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2580385416] â–¶ Testing module: src/test_runner/modules/double_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2581455030] Testing word: 2R@ +[Hera] [HADES][TEST ] [KRELTSC: 2582165817] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2582935698] Running 2R@.peek: 3 4 2>R 2R@ . . 2R> DROP DROP CR +[Hera] 4 3 +[Hera] [HADES][TEST ] [KRELTSC: 2584362522] Test passed +[Hera] [HADES][TEST ] Testing 2R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2585715636] Expected: Should peek: 4 3 +[Hera] [HADES][TEST ] [KRELTSC: 2586511137] Running 2R@.non_destructive: 7 8 2>R 2R@ DROP DROP 2R> . . CR +[Hera] 8 7 +[Hera] [HADES][TEST ] [KRELTSC: 2587913853] Test passed +[Hera] [HADES][TEST ] Testing 2R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2589269172] Expected: Should leave rstack intact +[Hera] [HADES][TEST ] [KRELTSC: 2590143822] Running 2R@.empty_rstack: 2R@ +[Hera] [HADES][TEST ] [KRELTSC: 2590991865] Expected error occurred +[Hera] [HADES][TEST ] Testing 2R@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2592771111] Expected: Should cause return stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2593745364] 2R@: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2594714556] === Double Number Words Summary: 0 passed, 0 failed, 0 skipped, +[Hera] [HADES][INFO ] [KRELTSC: 2595882408] +[Hera] === Testing Module: Format Words === +[Hera] [HADES][INFO ] [KRELTSC: 2597006622] Running Format Words Tests (Module 10)... +[Hera] [HADES][TEST ] [KRELTSC: 2597951307] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2599036818] Testing word: BASE +[Hera] [HADES][TEST ] [KRELTSC: 2599798047] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2600610243] Running BASE.decimal: DECIMAL 42 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2601839583] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2603226843] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 2604235599] Running BASE.hex: HEX FF . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 2605516578] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2606909193] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 2607718701] Running BASE.octal: OCTAL 52 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2608926768] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2610335133] Expected: Should print: 52 +[Hera] [HADES][TEST ] [KRELTSC: 2611164738] Running BASE.base_store: 16 BASE ! 255 . CR +[Hera] 467 +[Hera] [HADES][TEST ] [KRELTSC: 2612464932] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2613808470] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 2614643031] Running BASE.base_fetch: BASE @ . CR +[Hera] 14 +[Hera] [HADES][TEST ] [KRELTSC: 2615815545] Test passed +[Hera] [HADES][TEST ] Testing BASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2617568646] Expected: Should print current base +[Hera] [HADES][TEST ] [KRELTSC: 2618447391] BASE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2619435420] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2620523556] Testing word: DECIMAL +[Hera] [HADES][TEST ] [KRELTSC: 2621287200] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2622041898] Running DECIMAL.from_hex: HEX FF DECIMAL . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 2623338396] Test passed +[Hera] [HADES][TEST ] Testing DECIMAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2624738487] Expected: Should print: 255 +[Hera] [HADES][TEST ] [KRELTSC: 2625561120] Running DECIMAL.from_octal: OCTAL 52 DECIMAL . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2626855917] Test passed +[Hera] [HADES][TEST ] Testing DECIMAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2628245445] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 2629228728] Running DECIMAL.state_persist: DECIMAL 42 . CR 42 . CR HEX 42 +[Hera] 42 +[Hera] 42 +[Hera] 66 +[Hera] [HADES][TEST ] [KRELTSC: 2631230448] Test passed +[Hera] [HADES][TEST ] Testing DECIMAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2632600425] Expected: Should maintain base +[Hera] [HADES][TEST ] [KRELTSC: 2633524236] DECIMAL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2634487968] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2635555377] Testing word: HEX +[Hera] [HADES][TEST ] [KRELTSC: 2636276118] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2637039447] Running HEX.from_decimal: DECIMAL 255 HEX . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 2638329876] Test passed +[Hera] [HADES][TEST ] Testing HEX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2639694246] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 2640532251] Running HEX.from_octal: OCTAL 52 HEX . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2641970184] Test passed +[Hera] [HADES][TEST ] Testing HEX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2643317460] Expected: Should print: 2A +[Hera] [HADES][TEST ] [KRELTSC: 2644179489] Running HEX.state_persist: HEX FF . CR DECIMAL 255 . CR +[Hera] 255 +[Hera] [HADES][INFO ] [KRELTSC: 2645577816] L8[TABLE]: Config 38 → 39 regime=2 score=52428 L1=0 L2=1 L3=0 +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 2646961779] Test passed +[Hera] [HADES][TEST ] Testing HEX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2648359014] Expected: Should maintain base +[Hera] [HADES][TEST ] [KRELTSC: 2649211425] HEX: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2650152078] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2651221482] Testing word: OCTAL +[Hera] [HADES][TEST ] [KRELTSC: 2651964861] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2652782811] Running OCTAL.from_decimal: DECIMAL 42 OCTAL . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2654330847] Test passed +[Hera] [HADES][TEST ] Testing OCTAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2655838689] Expected: Should print: 52 +[Hera] [HADES][TEST ] [KRELTSC: 2656690848] Running OCTAL.from_hex: HEX 2A OCTAL . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2657903934] Test passed +[Hera] [HADES][TEST ] Testing OCTAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2659275486] Expected: Should print: 52 +[Hera] [HADES][TEST ] [KRELTSC: 2660089089] Running OCTAL.state_persist: DECIMAL 42 . CR OCTAL 52 . CR +[Hera] 42 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2661701238] Test passed +[Hera] [HADES][TEST ] Testing OCTAL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2663059791] Expected: Should maintain base +[Hera] [HADES][TEST ] [KRELTSC: 2663918166] OCTAL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2664846828] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2665911129] Testing word: <# +[Hera] [HADES][TEST ] [KRELTSC: 2666728239] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2667800226] Running <#.basic: DECIMAL 42 S>D <# #S #> TYPE CR +[Hera] 774763251095801167872 +[Hera] [HADES][TEST ] [KRELTSC: 2670126459] Test passed +[Hera] [HADES][TEST ] Testing <# ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2671458867] Expected: Should format number +[Hera] [HADES][TEST ] [KRELTSC: 2672309304] Running <#.empty: 0 <# #> TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2673229692] Test passed +[Hera] [HADES][TEST ] Testing <# ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2674616637] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 2675438388] Running <#.negative: -42 <# #S #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2676723504] Test passed +[Hera] [HADES][TEST ] Testing <# ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2678101860] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 2678966388] <#: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2680179264] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2681251482] Testing word: # +[Hera] [HADES][TEST ] [KRELTSC: 2681955906] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2682735720] Running #.single_digit: 15 <# # #> TYPE CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 2684048031] Test passed +[Hera] [HADES][TEST ] Testing # ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2685390750] Expected: Should print rightmost digit +[Hera] [HADES][TEST ] [KRELTSC: 2686308639] Running #.multiple: 15 <# # # #> TYPE CR +[Hera] 15 +[Hera] [HADES][TEST ] [KRELTSC: 2687542074] Test passed +[Hera] [HADES][TEST ] Testing # ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2688887439] Expected: Should print digits right to left +[Hera] [HADES][TEST ] [KRELTSC: 2689872066] Running #.zero_pad: 5 <# # 0 # #> TYPE CR +[Hera] 05 +[Hera] [HADES][TEST ] [KRELTSC: 2691097962] Test passed +[Hera] [HADES][TEST ] Testing # ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2692638837] Expected: Should handle zero padding +[Hera] [HADES][TEST ] [KRELTSC: 2693899467] #: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2694967044] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2696037414] Testing word: #S +[Hera] [HADES][TEST ] [KRELTSC: 2696747991] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2697523878] Running #S.basic: 42 <# #S #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2698718001] Test passed +[Hera] [HADES][TEST ] Testing #S ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2700090897] Expected: Should convert all digits +[Hera] [HADES][TEST ] [KRELTSC: 2700979596] Running #S.zero: 0 <# #S #> TYPE CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2702140602] Test passed +[Hera] [HADES][TEST ] Testing #S ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2703496278] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 2704340751] Running #S.large: 1234567890 <# #S #> TYPE CR +[Hera] 1234567890 +[Hera] [HADES][TEST ] [KRELTSC: 2705684856] Test passed +[Hera] [HADES][TEST ] Testing #S ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2707307085] Expected: Should handle large numbers +[Hera] [HADES][TEST ] [KRELTSC: 2708217876] #S: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2709148218] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2710265544] Testing word: SIGN +[Hera] [HADES][TEST ] [KRELTSC: 2711074401] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2711855874] Running SIGN.negative: -42 ABS <# #S SIGN #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2713257708] Test passed +[Hera] [HADES][TEST ] Testing SIGN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2714586483] Expected: Should add minus +[Hera] [HADES][TEST ] [KRELTSC: 2715413778] Running SIGN.positive: 42 <# #S SIGN #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2716682892] Test passed +[Hera] [HADES][TEST ] Testing SIGN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2718058854] Expected: Should not add sign +[Hera] [HADES][TEST ] [KRELTSC: 2718904230] Running SIGN.zero: 0 <# #S SIGN #> TYPE CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2720412933] Test passed +[Hera] [HADES][TEST ] Testing SIGN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2721788496] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 2722620012] SIGN: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2723543886] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2724633240] Testing word: #> +[Hera] [HADES][TEST ] [KRELTSC: 2725351797] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2726119284] Running #>.normal: 42 <# #S #> TYPE CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2727317502] Test passed +[Hera] [HADES][TEST ] Testing #> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2728660851] Expected: Should terminate formatting +[Hera] [HADES][TEST ] [KRELTSC: 2729586027] Running #>.empty: 0 <# #> TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2730494046] Test passed +[Hera] [HADES][TEST ] Testing #> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2732087631] Expected: Should handle empty format +[Hera] [HADES][TEST ] [KRELTSC: 2732974440] Running #>.stack_effect: 42 <# #S #> SWAP . . CR +[Hera] 24 2 +[Hera] [HADES][TEST ] [KRELTSC: 2734324194] Test passed +[Hera] [HADES][TEST ] Testing #> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2735700891] Expected: Should leave addr u +[Hera] [HADES][TEST ] [KRELTSC: 2736575835] #>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2737511028] â–¶ Testing module: src/test_runner/modules/format_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2738602314] Testing word: HOLD +[Hera] [HADES][TEST ] [KRELTSC: 2739325596] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2740107720] Running HOLD.basic: 42 <# 46 HOLD #S #> TYPE CR +[Hera] 42. +[Hera] [HADES][TEST ] [KRELTSC: 2741373747] Test passed +[Hera] [HADES][TEST ] Testing HOLD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2742737781] Expected: Should insert dot +[Hera] [HADES][TEST ] [KRELTSC: 2743575618] Running HOLD.overflow: <# 257 HOLD #> +[Hera] [HADES][ERROR] [KRELTSC: 2744679441] HOLD: byte out of range (257) +[Hera] [HADES][TEST ] [KRELTSC: 2745730344] Expected error occurred +[Hera] [HADES][TEST ] Testing HOLD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2747232390] Expected: Should handle overflow +[Hera] [HADES][TEST ] [KRELTSC: 2748092004] HOLD: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2749054077] === Format Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 2750133246] +[Hera] === Testing Module: String Words === +[Hera] [HADES][INFO ] [KRELTSC: 2751263970] Running String Words Tests (Module 11)... +[Hera] [HADES][TEST ] [KRELTSC: 2752201746] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2753277534] Testing word: COUNT +[Hera] [HADES][TEST ] [KRELTSC: 2754034101] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2754840102] Running COUNT.basic: HERE S" Test" DROP COUNT . . CR +[Hera] 84 121 +[Hera] [HADES][TEST ] [KRELTSC: 2756709039] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2758305732] Expected: Should show length and addr+1 +[Hera] [HADES][TEST ] [KRELTSC: 2759228577] Running COUNT.empty: HERE 0 OVER C! COUNT . . CR +[Hera] 0 126 +[Hera] [HADES][TEST ] [KRELTSC: 2760567159] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2761927665] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 2762825436] Running COUNT.max_length: HERE 255 OVER C! COUNT . . CR +[Hera] 255 126 +[Hera] [HADES][TEST ] [KRELTSC: 2764209168] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2765593656] Expected: Should handle max length +[Hera] [HADES][TEST ] [KRELTSC: 2766469776] Running COUNT.string_bounds: HERE COUNT SWAP 1- = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2767800042] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2769302844] Expected: Should increment address +[Hera] [HADES][TEST ] [KRELTSC: 2770495224] Running COUNT.empty_stack: COUNT +[Hera] [HADES][ERROR] [KRELTSC: 2771390307] COUNT: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2772190344] Expected error occurred +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2773637475] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 2774538165] COUNT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2775488058] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2776539822] Testing word: -TRAILING +[Hera] [HADES][TEST ] [KRELTSC: 2777298825] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2778069777] Running -TRAILING.basic: HERE S" Test " -TRAILING TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2779688205] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2781079560] Expected: Should trim spaces +[Hera] [HADES][TEST ] [KRELTSC: 2781935373] Running -TRAILING.all_spaces: HERE S" " -TRAILING TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2783497689] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2784896541] Expected: Should handle all spaces +[Hera] [HADES][TEST ] [KRELTSC: 2785783245] Running -TRAILING.no_spaces: HERE S" Test" -TRAILING TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2787350202] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2788983939] Expected: Should handle no spaces +[Hera] [HADES][TEST ] [KRELTSC: 2790018525] Running -TRAILING.empty: HERE 0 -TRAILING TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2791243329] Test passed +[Hera] [HADES][TEST ] Testing -TRAILING ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2792895357] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 2793981918] -TRAILING: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2795255127] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2796359958] Testing word: CMOVE +[Hera] [HADES][TEST ] [KRELTSC: 2797218333] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2798093760] Running CMOVE.basic: HERE S" Test" DUP >R HERE 10 + SWAP CMOV + +[Hera] [HADES][TEST ] [KRELTSC: 2799686526] Test passed +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2801075004] Expected: Should copy string +[Hera] [HADES][TEST ] [KRELTSC: 2801913870] Running CMOVE.empty: HERE HERE 10 + 0 CMOVE +[Hera] [HADES][TEST ] [KRELTSC: 2802960153] Test passed +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2804333763] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 2805225675] Running CMOVE.overlap: HERE DUP 1+ 5 CMOVE +[Hera] [HADES][TEST ] [KRELTSC: 2806188861] Test passed +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2807831019] Expected: Should handle overlap +[Hera] [HADES][TEST ] [KRELTSC: 2808685383] Running CMOVE.bounds: HERE PAD 1000 CMOVE +[Hera] [HADES][ERROR] [KRELTSC: 2809674273] CMOVE: out-of-bounds (src=125 dst=5242368 n=1000) +[Hera] [HADES][TEST ] [KRELTSC: 2810675238] Expected error occurred +[Hera] [HADES][TEST ] Testing CMOVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2812145931] Expected: Should check bounds +[Hera] [HADES][TEST ] [KRELTSC: 2812990971] CMOVE: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2813947899] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2815036098] Testing word: CMOVE> +[Hera] [HADES][TEST ] [KRELTSC: 2815792896] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2816579430] Running CMOVE>.basic: HERE S" Test" DUP >R HERE 10 + SWAP CMO + +[Hera] [HADES][TEST ] [KRELTSC: 2817961755] Test passed +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2819357772] Expected: Should copy backward +[Hera] [HADES][TEST ] [KRELTSC: 2820485829] Running CMOVE>.empty: HERE HERE 10 + 0 CMOVE> +[Hera] [HADES][TEST ] [KRELTSC: 2821495215] Test passed +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2822905596] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 2823798054] Running CMOVE>.overlap: HERE DUP 1+ 5 CMOVE> +[Hera] [HADES][TEST ] [KRELTSC: 2824789149] Test passed +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2826243966] Expected: Should handle overlap +[Hera] [HADES][TEST ] [KRELTSC: 2827110027] Running CMOVE>.bounds: HERE PAD 1000 CMOVE> +[Hera] [HADES][ERROR] [KRELTSC: 2828122920] CMOVE>: out-of-bounds (src=125 dst=5242368 n=1000) +[Hera] [HADES][TEST ] [KRELTSC: 2829090768] Expected error occurred +[Hera] [HADES][TEST ] Testing CMOVE> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2830555434] Expected: Should check bounds +[Hera] [HADES][TEST ] [KRELTSC: 2831390247] CMOVE>: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2832499425] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2833744809] Testing word: COMPARE +[Hera] [HADES][TEST ] [KRELTSC: 2834507991] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2835302295] Running COMPARE.equal: HERE S" Test" HERE S" Test" COMPARE . +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2837068248] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2838470082] Expected: Should return 0 +[Hera] [HADES][TEST ] [KRELTSC: 2839274172] Running COMPARE.less: HERE S" Test1" HERE S" Test2" COMPARE . +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2840665716] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2842020867] Expected: Should return -1 +[Hera] [HADES][TEST ] [KRELTSC: 2842871514] Running COMPARE.greater: HERE S" Test2" HERE S" Test1" COMPAR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2844242898] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2845989762] Expected: Should return 1 +[Hera] [HADES][TEST ] [KRELTSC: 2846815944] Running COMPARE.different_lengths: HERE S" Test" HERE S" Test +[Hera] [HADES][INFO ] [KRELTSC: 2847973968] L8[TABLE]: Config 39 → 40 regime=2 score=6553 L1=0 L2=1 L3=0 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2849366520] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2850754872] Expected: Should handle lengths +[Hera] [HADES][TEST ] [KRELTSC: 2851627254] Running COMPARE.empty: HERE 0 HERE 0 COMPARE . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2853050172] Test passed +[Hera] [HADES][TEST ] Testing COMPARE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2854422564] Expected: Should handle empty +[Hera] [HADES][TEST ] [KRELTSC: 2855277936] COMPARE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2856251370] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2857349838] Testing word: SEARCH +[Hera] [HADES][TEST ] [KRELTSC: 2858433375] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2859198174] Running SEARCH.found: HERE S" Testing" HERE S" Test" SEARCH . +[Hera] -1 15 120 +[Hera] [HADES][TEST ] [KRELTSC: 2861122824] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2862491478] Expected: Should find substring +[Hera] [HADES][TEST ] [KRELTSC: 2863340046] Running SEARCH.not_found: HERE S" Testing" HERE S" Xyz" SEARC +[Hera] -1 7 141 +[Hera] [HADES][TEST ] [KRELTSC: 2864800113] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2866164819] Expected: Should return false +[Hera] [HADES][TEST ] [KRELTSC: 2866998225] Running SEARCH.empty_pattern: HERE S" Test" HERE 0 SEARCH . . +[Hera] -1 4 145 +[Hera] [HADES][TEST ] [KRELTSC: 2868477381] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2869898472] Expected: Should handle empty pattern +[Hera] [HADES][TEST ] [KRELTSC: 2871022686] Running SEARCH.empty_string: HERE 0 HERE S" Test" SEARCH . . +[Hera] -1 30 120 +[Hera] [HADES][TEST ] [KRELTSC: 2872487877] Test passed +[Hera] [HADES][TEST ] Testing SEARCH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2873894982] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 2874793677] SEARCH: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2875760349] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2876853588] Testing word: SCAN +[Hera] [HADES][TEST ] [KRELTSC: 2877593292] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2878372308] Running SCAN.basic: HERE S" Test,Data" BL SCAN TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2879816835] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2881182066] Expected: Should find space +[Hera] [HADES][TEST ] [KRELTSC: 2882001801] Running SCAN.not_found: HERE S" TestData" BL SCAN TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2883478122] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2884872438] Expected: Should scan to end +[Hera] [HADES][TEST ] [KRELTSC: 2885706159] Running SCAN.empty: HERE 0 BL SCAN TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2886811116] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2888176011] Expected: Should handle empty +[Hera] [HADES][TEST ] [KRELTSC: 2889020127] Running SCAN.all_delims: HERE S" " BL SCAN TYPE CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 2890480446] Test passed +[Hera] [HADES][TEST ] Testing SCAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2891843220] Expected: Should handle all delims +[Hera] [HADES][TEST ] [KRELTSC: 2892734670] SCAN: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2893690989] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2894762388] Testing word: SKIP +[Hera] [HADES][TEST ] [KRELTSC: 2895761778] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2896529811] Running SKIP.basic: HERE S" Test" BL SKIP TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2898200277] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2899563849] Expected: Should skip spaces +[Hera] [HADES][TEST ] [KRELTSC: 2900419242] Running SKIP.no_delims: HERE S" Test" BL SKIP TYPE CR +[Hera] Test +[Hera] [HADES][TEST ] [KRELTSC: 2901756648] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2903134479] Expected: Should not skip +[Hera] [HADES][TEST ] [KRELTSC: 2903950833] Running SKIP.empty: HERE 0 BL SKIP TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2904970236] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2906357391] Expected: Should handle empty +[Hera] [HADES][TEST ] [KRELTSC: 2907179121] Running SKIP.all_delims: HERE S" " BL SKIP TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2908630977] Test passed +[Hera] [HADES][TEST ] Testing SKIP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2909993415] Expected: Should skip all +[Hera] [HADES][TEST ] [KRELTSC: 2910811365] SKIP: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2911765185] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2912815815] Testing word: BLANK +[Hera] [HADES][TEST ] [KRELTSC: 2913567930] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2914355010] Running BLANK.basic: HERE 5 BLANK HERE 5 TYPE CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 2915894940] Test passed +[Hera] [HADES][TEST ] Testing BLANK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2917286421] Expected: Should fill with spaces +[Hera] [HADES][TEST ] [KRELTSC: 2918178018] Running BLANK.zero: HERE 0 BLANK HERE 0 TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 2919197463] Test passed +[Hera] [HADES][TEST ] Testing BLANK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2920784538] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 2921684766] BLANK: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2922636717] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2923710468] Testing word: S" +[Hera] [HADES][TEST ] [KRELTSC: 2924416572] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2925177087] Running S".interpret_len: S" hello" . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 2926398993] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2927767584] Expected: Should print: 5 (length) +[Hera] [HADES][TEST ] [KRELTSC: 2928666405] Running S".interpret_type: S" hello" TYPE CR +[Hera] hello +[Hera] [HADES][TEST ] [KRELTSC: 2929906770] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2931265218] Expected: Should print: hello +[Hera] [HADES][TEST ] [KRELTSC: 2932099401] Running S".empty: S" " . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2933372820] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2934713082] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 2935529835] Running S".compile_type: : TSQ S" world" TYPE CR ; TSQ +[Hera] world +[Hera] [HADES][TEST ] [KRELTSC: 2939231127] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2940604275] Expected: Should print: world +[Hera] [HADES][TEST ] [KRELTSC: 2941703898] Running S".compile_len: : TSQ2 S" forth" SWAP DROP . CR ; TSQ +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 2943219426] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2944568886] Expected: Should print: 5 +[Hera] [HADES][TEST ] [KRELTSC: 2945466993] Running S".compile_twice: : TSQ3 S" ab" TYPE S" cd" TYPE CR ; +[Hera] abcd +[Hera] [HADES][TEST ] [KRELTSC: 2947163814] Test passed +[Hera] [HADES][TEST ] Testing S" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2948585829] Expected: Should print: abcd +[Hera] [HADES][TEST ] [KRELTSC: 2949431625] S": 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2950357326] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2951423265] Testing word: BL +[Hera] [HADES][TEST ] [KRELTSC: 2952139491] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2952926760] Running BL.value: BL . CR +[Hera] 32 +[Hera] [HADES][TEST ] [KRELTSC: 2954093394] Test passed +[Hera] [HADES][TEST ] Testing BL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2955414357] Expected: Should print: 32 +[Hera] [HADES][TEST ] [KRELTSC: 2956265256] Running BL.as_char: BL EMIT CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 2957479455] Test passed +[Hera] [HADES][TEST ] Testing BL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2959303809] Expected: Should emit a space +[Hera] [HADES][TEST ] [KRELTSC: 2960196624] Running BL.in_scan: HERE S" a b" BL SCAN SWAP DROP . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 2961622020] Test passed +[Hera] [HADES][TEST ] Testing BL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2963041578] Expected: Should find space at offset 1 +[Hera] [HADES][TEST ] [KRELTSC: 2964009678] BL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2965001550] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2966129313] Testing word: SOURCE +[Hera] [HADES][TEST ] [KRELTSC: 2966920971] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2967736317] Running SOURCE.returns_pair: SOURCE SWAP DROP 0< NOT . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2969607753] Test passed +[Hera] [HADES][TEST ] Testing SOURCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2971285401] Expected: Should return non-negative length +[Hera] [HADES][TEST ] [KRELTSC: 2972428137] Running SOURCE.has_addr: SOURCE DROP 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 2973727008] Test passed +[Hera] [HADES][TEST ] Testing SOURCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2975134575] Expected: Should return non-null address +[Hera] [HADES][TEST ] [KRELTSC: 2976073737] SOURCE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2977026528] â–¶ Testing module: src/test_runner/modules/string_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2978092446] Testing word: >IN +[Hera] [HADES][TEST ] [KRELTSC: 2978821335] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2979584958] Running >IN.initial: >IN @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2980832799] Test passed +[Hera] [HADES][TEST ] Testing >IN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2982196791] Expected: Should return input offset +[Hera] [HADES][TEST ] [KRELTSC: 2983149582] Running >IN.advances: : TWIN >IN @ >IN @ - . CR ; TWIN +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 2985004071] Test passed +[Hera] [HADES][TEST ] Testing >IN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2986269237] Expected: Should print: 0 (no advance inside compiled word) +[Hera] [HADES][TEST ] [KRELTSC: 2987343303] >IN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 2988294099] === String Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 2989331520] +[Hera] === Testing Module: I/O Words === +[Hera] [HADES][INFO ] [KRELTSC: 2990428959] Running I/O Words Tests (Module 9)... +[Hera] [HADES][TEST ] [KRELTSC: 2991334668] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 2992340043] Testing word: . +[Hera] [HADES][TEST ] [KRELTSC: 2993042829] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 2993836902] Running ..positive: 42 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 2994984678] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2996549493] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 2997367317] Running ..negative: -42 . CR +[Hera] -42 +[Hera] [HADES][TEST ] [KRELTSC: 2998566858] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 2999931459] Expected: Should print: -42 +[Hera] [HADES][TEST ] [KRELTSC: 3000751467] Running ..zero: 0 . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3001793676] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3003162456] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3004005312] Running ..max_int: 2147483647 . CR +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3005211636] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3006590832] Expected: Should print: 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3007455339] Running ..min_int: -2147483648 . CR +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 3008667438] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3009980232] Expected: Should print: -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 3010875441] Running ..multiple: 1 2 3 . . . CR +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 3012042621] Test passed +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3013386957] Expected: Should print: 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 3014231220] Running ..empty_stack: . +[Hera] [HADES][TEST ] [KRELTSC: 3015056625] Expected error occurred +[Hera] [HADES][TEST ] Testing . ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3016503651] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3017421834] .: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3018364125] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3019421832] Testing word: CR +[Hera] [HADES][TEST ] [KRELTSC: 3020138541] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3021065208] Running CR.basic: 42 . CR 43 . CR +[Hera] 42 +[Hera] 43 +[Hera] [HADES][TEST ] [KRELTSC: 3022574709] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3023894790] Expected: Should print on separate lines +[Hera] [HADES][TEST ] [KRELTSC: 3024834225] Running CR.multiple: CR CR CR + + + +[Hera] [HADES][TEST ] [KRELTSC: 3025742832] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3027121671] Expected: Should print multiple newlines +[Hera] [HADES][TEST ] [KRELTSC: 3028042185] Running CR.no_stack_effect: DEPTH CR DEPTH = . CR + +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3029358129] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3030693330] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 3031557963] Running CR.after_output: 1 2 3 . . . CR +[Hera] 3 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 3032768865] Test passed +[Hera] [HADES][TEST ] Testing CR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3034347813] Expected: Should work after output +[Hera] [HADES][TEST ] [KRELTSC: 3035224668] CR: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3036161352] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3037172103] Testing word: SPACE +[Hera] [HADES][TEST ] [KRELTSC: 3038029113] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3038923923] Running SPACE.basic: 42 . SPACE 43 . CR +[Hera] 42 43 +[Hera] [HADES][TEST ] [KRELTSC: 3040332393] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3041778894] Expected: Should add space between numbers +[Hera] [HADES][TEST ] [KRELTSC: 3042731160] Running SPACE.multiple: SPACE SPACE SPACE +[Hera] [HADES][INFO ] [KRELTSC: 3044830593] L8[TABLE]: Config 40 → 0 regime=7 score=26214 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 3046270962] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3047436945] Expected: Should print multiple spaces +[Hera] [HADES][TEST ] [KRELTSC: 3048426360] Running SPACE.no_stack_effect: DEPTH SPACE DEPTH = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3050038929] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3051340593] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 3052245399] Running SPACE.with_text: 65 EMIT SPACE 66 EMIT CR +[Hera] A B +[Hera] [HADES][TEST ] [KRELTSC: 3053596056] Test passed +[Hera] [HADES][TEST ] Testing SPACE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3055020801] Expected: Should space between chars +[Hera] [HADES][TEST ] [KRELTSC: 3055970463] SPACE: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3056932998] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3057972750] Testing word: SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3058861029] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3059792190] Running SPACES.zero: 0 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3060898596] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3062307486] Expected: Should print no spaces +[Hera] [HADES][TEST ] [KRELTSC: 3063189780] Running SPACES.one: 1 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3064309500] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3065450703] Expected: Should print one space +[Hera] [HADES][TEST ] [KRELTSC: 3066310632] Running SPACES.multiple: 5 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3067453851] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3068605407] Expected: Should print five spaces +[Hera] [HADES][TEST ] [KRELTSC: 3069494295] Running SPACES.large: 20 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3070727142] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3072284124] Expected: Should print twenty spaces +[Hera] [HADES][TEST ] [KRELTSC: 3073206024] Running SPACES.negative: -5 SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3074107743] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3075458883] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3076302453] Running SPACES.with_output: 42 . 3 SPACES 43 . CR +[Hera] 42 43 +[Hera] [HADES][TEST ] [KRELTSC: 3077630829] Test passed +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3078982788] Expected: Should space output +[Hera] [HADES][TEST ] [KRELTSC: 3079839210] Running SPACES.empty_stack: SPACES +[Hera] [HADES][TEST ] [KRELTSC: 3080713566] Expected error occurred +[Hera] [HADES][TEST ] Testing SPACES ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3082171596] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3083080560] SPACES: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3084224178] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3085343625] Testing word: EMIT +[Hera] [HADES][TEST ] [KRELTSC: 3086101704] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3086865054] Running EMIT.letter_A: 65 EMIT CR +[Hera] A +[Hera] [HADES][TEST ] [KRELTSC: 3088000251] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3089337888] Expected: Should print: A +[Hera] [HADES][TEST ] [KRELTSC: 3090167115] Running EMIT.letter_Z: 90 EMIT CR +[Hera] Z +[Hera] [HADES][TEST ] [KRELTSC: 3091271295] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3092632641] Expected: Should print: Z +[Hera] [HADES][TEST ] [KRELTSC: 3093429087] Running EMIT.digit: 48 EMIT CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3094536144] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3095880333] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3096941484] Running EMIT.space_char: 32 EMIT CR +[Hera] +[Hera] [HADES][TEST ] [KRELTSC: 3098277483] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3099615267] Expected: Should print space +[Hera] [HADES][TEST ] [KRELTSC: 3100447602] Running EMIT.newline: 10 EMIT + +[Hera] [HADES][TEST ] [KRELTSC: 3101292096] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3102672804] Expected: Should print newline +[Hera] [HADES][TEST ] [KRELTSC: 3103502976] Running EMIT.high_ascii: 127 EMIT CR +[Hera]  +[Hera] [HADES][TEST ] [KRELTSC: 3104634330] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3106021632] Expected: Should print DEL char +[Hera] [HADES][TEST ] [KRELTSC: 3106904178] Running EMIT.truncation: 321 EMIT CR +[Hera] A +[Hera] [HADES][TEST ] [KRELTSC: 3108037968] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3109601649] Expected: Should truncate to low byte +[Hera] [HADES][TEST ] [KRELTSC: 3110488710] Running EMIT.negative: -1 EMIT CR +[Hera] ÿ +[Hera] [HADES][TEST ] [KRELTSC: 3111630627] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3112989600] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3113881365] Running EMIT.sequence: 72 EMIT 73 EMIT 10 EMIT +[Hera] HI +[Hera] [HADES][TEST ] [KRELTSC: 3115133112] Test passed +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3116489124] Expected: Should print: HI +[Hera] [HADES][TEST ] [KRELTSC: 3117347898] Running EMIT.empty_stack: EMIT +[Hera] [HADES][TEST ] [KRELTSC: 3118234770] Expected error occurred +[Hera] [HADES][TEST ] Testing EMIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3119714829] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3120620118] EMIT: 10 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3121745235] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3122979279] Testing word: KEY +[Hera] [HADES][TEST ] [KRELTSC: 3123716652] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3124528008] KEY: 0 passed, 0 failed, 4 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3125500749] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3126512634] Testing word: ?KEY +[Hera] [HADES][TEST ] [KRELTSC: 3127272645] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3128046873] ?KEY: 0 passed, 0 failed, 3 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3128960436] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3129998298] Testing word: TYPE +[Hera] [HADES][TEST ] [KRELTSC: 3130720173] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3131493708] Running TYPE.basic_string: HERE S" Hello" DUP >R HERE SWAP CM +[Hera] Hello +[Hera] [HADES][TEST ] [KRELTSC: 3132965535] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3134520690] Expected: Should print: Hello +[Hera] [HADES][TEST ] [KRELTSC: 3135436983] Running TYPE.empty_string: HERE 0 TYPE CR + +[Hera] [HADES][TEST ] [KRELTSC: 3136423458] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3137807022] Expected: Should print nothing +[Hera] [HADES][TEST ] [KRELTSC: 3138711492] Running TYPE.single_char: HERE 65 OVER C! 1 TYPE CR +[Hera] A +[Hera] [HADES][TEST ] [KRELTSC: 3140061792] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3141501930] Expected: Should print: A +[Hera] [HADES][TEST ] [KRELTSC: 3142409487] Running TYPE.numbers: HERE S" 12345" DUP >R HERE SWAP CMOVE H +[Hera] 12345 +[Hera] [HADES][TEST ] [KRELTSC: 3143831019] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3145204461] Expected: Should print: 12345 +[Hera] [HADES][TEST ] [KRELTSC: 3146035914] Running TYPE.zero_length: PAD 0 TYPE +[Hera] [HADES][TEST ] [KRELTSC: 3147222036] Test passed +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3148598040] Expected: Should handle zero length +[Hera] [HADES][TEST ] [KRELTSC: 3149506185] Running TYPE.one_item: PAD TYPE +[Hera] [HADES][ERROR] [KRELTSC: 3150393288] TYPE: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3151219890] Expected error occurred +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3152669856] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3153580353] Running TYPE.empty_stack: TYPE +[Hera] [HADES][ERROR] [KRELTSC: 3154405695] TYPE: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3155210646] Expected error occurred +[Hera] [HADES][TEST ] Testing TYPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3156656034] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3157594398] TYPE: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3158525832] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3159857106] Testing word: COUNT +[Hera] [HADES][TEST ] [KRELTSC: 3160603110] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3161371899] Running COUNT.basic: HERE S" Test" DROP C@ HERE 1+ SWAP COUNT +[Hera] 0 85 +[Hera] [HADES][TEST ] [KRELTSC: 3162824952] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3164217903] Expected: Should show length and addr+1 +[Hera] [HADES][TEST ] [KRELTSC: 3165130332] Running COUNT.empty: HERE 0 OVER C! COUNT . . CR +[Hera] 0 126 +[Hera] [HADES][TEST ] [KRELTSC: 3166498209] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3167883264] Expected: Should handle empty string +[Hera] [HADES][TEST ] [KRELTSC: 3168779229] Running COUNT.max_length: HERE 255 OVER C! COUNT . . CR +[Hera] 255 126 +[Hera] [HADES][TEST ] [KRELTSC: 3170216532] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3171841953] Expected: Should handle max length +[Hera] [HADES][TEST ] [KRELTSC: 3172958586] Running COUNT.zero_addr_plus_one: HERE COUNT SWAP 1- = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3174360504] Test passed +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3175752363] Expected: Should increment address +[Hera] [HADES][TEST ] [KRELTSC: 3176638815] Running COUNT.empty_stack: COUNT +[Hera] [HADES][ERROR] [KRELTSC: 3177498156] COUNT: Data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3178290297] Expected error occurred +[Hera] [HADES][TEST ] Testing COUNT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3179737386] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3180633498] COUNT: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3181567599] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3182610795] Testing word: EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3183342603] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3184104756] Running EXPECT.zero_length: PAD 0 EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3185663733] Test passed +[Hera] [HADES][TEST ] Testing EXPECT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3187099986] Expected: Should handle zero length +[Hera] [HADES][TEST ] [KRELTSC: 3187978815] Running EXPECT.one_item: PAD EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3188915373] Expected error occurred +[Hera] [HADES][TEST ] Testing EXPECT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3190376742] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3191293077] Running EXPECT.empty_stack: EXPECT +[Hera] [HADES][TEST ] [KRELTSC: 3192166740] Expected error occurred +[Hera] [HADES][TEST ] Testing EXPECT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3193694322] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3194602908] EXPECT: 3 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3195568593] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3196604628] Testing word: SPAN +[Hera] [HADES][TEST ] [KRELTSC: 3197573106] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3198355062] Running SPAN.zero_input: PAD 0 EXPECT SPAN @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3199755111] Test passed +[Hera] [HADES][TEST ] Testing SPAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3201110661] Expected: Should show zero +[Hera] [HADES][TEST ] [KRELTSC: 3201942093] Running SPAN.variable_test: SPAN @ SPAN @ = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3203251737] Test passed +[Hera] [HADES][TEST ] Testing SPAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3204628413] Expected: Should be consistent +[Hera] [HADES][TEST ] [KRELTSC: 3205486557] Running SPAN.address_test: SPAN 0<> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3206692230] Test passed +[Hera] [HADES][TEST ] Testing SPAN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3208065252] Expected: Should be valid address +[Hera] [HADES][TEST ] [KRELTSC: 3208938831] SPAN: 3 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3210242406] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3211264623] Testing word: WORD +[Hera] [HADES][TEST ] [KRELTSC: 3212001870] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3212794179] Running WORD.empty_input: BL WORD COUNT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3214447677] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3215810871] Expected: Should handle empty input +[Hera] [HADES][TEST ] [KRELTSC: 3216704505] Running WORD.space_delim: 32 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3217666914] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3219028848] Expected: Should use space as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3219947934] Running WORD.newline_delim: 10 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3220905324] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3222457329] Expected: Should use newline as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3223467681] Running WORD.tab_delim: 9 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3224362302] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3225690636] Expected: Should use tab as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3226589541] Running WORD.comma_delim: 44 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3227493255] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3228980076] Expected: Should use comma as delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3229899687] Running WORD.skip_leading: BL WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3230854179] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3232206054] Expected: Should skip leading spaces +[Hera] [HADES][TEST ] [KRELTSC: 3233100864] Running WORD.single_char: BL WORD COUNT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3234336063] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3236133915] Expected: Should parse single character +[Hera] [HADES][TEST ] [KRELTSC: 3237057096] Running WORD.long_word: BL WORD COUNT 0 > . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3238343304] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3239707548] Expected: Should parse long word +[Hera] [HADES][TEST ] [KRELTSC: 3240563760] Running WORD.zero_delim: 0 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3241460418] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3242798454] Expected: Should handle null delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3243706641] Running WORD.high_ascii: 127 WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3244605966] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3245960865] Expected: Should handle DEL delimiter +[Hera] [HADES][TEST ] [KRELTSC: 3246861156] Running WORD.count_format: BL WORD C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3248375004] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3249766149] Expected: Should have count byte +[Hera] [HADES][TEST ] [KRELTSC: 3250636431] Running WORD.count_value: BL WORD COUNT SWAP DROP . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3251966886] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3253326510] Expected: Should return count +[Hera] [HADES][TEST ] [KRELTSC: 3254192109] Running WORD.empty_stack: WORD +[Hera] [HADES][TEST ] [KRELTSC: 3255098385] Expected error occurred +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3256574391] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3257493015] Running WORD.multi_delim: BL WORD DROP BL WORD DROP +[Hera] [HADES][TEST ] [KRELTSC: 3258558324] Test passed +[Hera] [HADES][TEST ] Testing WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3260065494] Expected: Should handle multiple parses +[Hera] [HADES][TEST ] [KRELTSC: 3261164760] WORD: 14 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3262113183] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3263136009] Testing word: BASE_OUTPUT +[Hera] [HADES][TEST ] [KRELTSC: 3263933085] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3264711345] Running BASE_OUTPUT.decimal: 10 BASE ! 255 . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3265991526] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3267401550] Expected: Should print: 255 +[Hera] [HADES][TEST ] [KRELTSC: 3268227039] Running BASE_OUTPUT.hex: 16 BASE ! 255 . CR +[Hera] 597 +[Hera] [HADES][TEST ] [KRELTSC: 3269450436] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3270872094] Expected: Should print: FF +[Hera] [HADES][TEST ] [KRELTSC: 3271683282] Running BASE_OUTPUT.octal: 8 BASE ! 64 . CR +[Hera] 52 +[Hera] [HADES][TEST ] [KRELTSC: 3273163593] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3274602429] Expected: Should print: 100 +[Hera] [HADES][TEST ] [KRELTSC: 3275428947] Running BASE_OUTPUT.binary: 5 2 BASE ! . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 3276652554] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3278054493] Expected: Should print: 101 +[Hera] [HADES][TEST ] [KRELTSC: 3278898399] Running BASE_OUTPUT.base_restore: BASE @ DECIMAL 255 16 BA +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3280334925] Test passed +[Hera] [HADES][TEST ] Testing BASE_OUTPUT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3281747889] Expected: Should restore base +[Hera] [HADES][TEST ] [KRELTSC: 3282587448] BASE_OUTPUT: 5 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3283580916] â–¶ Testing module: src/test_runner/modules/io_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3284624742] Testing word: FORMAT_COMBO +[Hera] [HADES][TEST ] [KRELTSC: 3285703218] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3286548930] Running FORMAT_COMBO.number_space_number: DECIMAL 42 . SPACE +[Hera] 42 [HADES][INFO ] [KRELTSC: 3287963364] L8[TABLE]: Config 0 → 1 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 43 +[Hera] [HADES][TEST ] [KRELTSC: 3289155492] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3290555730] Expected: Should format: 42 43 +[Hera] [HADES][TEST ] [KRELTSC: 3291399930] Running FORMAT_COMBO.multi_line: DECIMAL 1 . CR 2 . CR 3 . CR +[Hera] 1 +[Hera] 2 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 3293313765] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3294720723] Expected: Should print on separate lines +[Hera] [HADES][TEST ] [KRELTSC: 3295648083] Running FORMAT_COMBO.indented: DECIMAL 5 SPACES 42 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3297025599] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3298816416] Expected: Should indent number +[Hera] [HADES][TEST ] [KRELTSC: 3299867634] Running FORMAT_COMBO.table_format: DECIMAL 1 . 3 SPACES 10 . +[Hera] 1 10 100 +[Hera] [HADES][TEST ] [KRELTSC: 3301337697] Test passed +[Hera] [HADES][TEST ] Testing FORMAT_COMBO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3302774664] Expected: Should format table +[Hera] [HADES][TEST ] [KRELTSC: 3303646605] FORMAT_COMBO: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3304685202] === I/O Words Summary: 0 passed, 0 failed, 0 skipped, 0 errors +[Hera] [HADES][INFO ] [KRELTSC: 3305759604] +[Hera] === Testing Module: Block Words === +[Hera] [HADES][INFO ] [KRELTSC: 3306905637] Running Block Words Tests (Module 16)... +[Hera] [HADES][TEST ] [KRELTSC: 3307850868] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3308931465] Testing word: BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3309660396] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3310655124] Running BLOCK.basic: 1 BLOCK DUP . CR +[Hera] 5238784 +[Hera] [HADES][TEST ] [KRELTSC: 3312712158] Test passed +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3314056452] Expected: Should return block address +[Hera] [HADES][TEST ] [KRELTSC: 3314946348] Running BLOCK.zero_block: 0 BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3315833199] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3317287701] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3318117726] Running BLOCK.large_block: 65536 BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3319054305] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3320515758] Expected: Should handle large number +[Hera] [HADES][TEST ] [KRELTSC: 3321389022] Running BLOCK.negative: -1 BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3322241958] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3324082251] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3324975822] Running BLOCK.empty_stack: BLOCK +[Hera] [HADES][TEST ] [KRELTSC: 3325847154] Expected error occurred +[Hera] [HADES][TEST ] Testing BLOCK ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3327317469] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3328240356] BLOCK: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3329220216] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3330286470] Testing word: BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3331046544] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3331810482] Running BUFFER.basic: 1 BUFFER DUP . CR +[Hera] 5238784 +[Hera] [HADES][TEST ] [KRELTSC: 3333550815] Test passed +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3334897713] Expected: Should return buffer address +[Hera] [HADES][TEST ] [KRELTSC: 3336047631] Running BUFFER.zero_block: 0 BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3336979443] Expected error occurred +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3338457717] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3339314034] Running BUFFER.flush_dirty: 2 BLOCK 1+ 2 BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3340383480] Test passed +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3341759631] Expected: Should flush if dirty +[Hera] [HADES][TEST ] [KRELTSC: 3342618762] Running BUFFER.empty_stack: BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3343601184] Expected error occurred +[Hera] [HADES][TEST ] Testing BUFFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3345066837] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3345983865] BUFFER: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3346917336] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3348127671] Testing word: UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3349098648] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3349968657] Running UPDATE.basic: 1 BLOCK UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3351197556] Test passed +[Hera] [HADES][TEST ] Testing UPDATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3352583493] Expected: Should mark block dirty +[Hera] [HADES][TEST ] [KRELTSC: 3353461818] Running UPDATE.multiple: 1 BLOCK UPDATE UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3354488151] Test passed +[Hera] [HADES][TEST ] Testing UPDATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3355876839] Expected: Should handle multiple updates +[Hera] [HADES][TEST ] [KRELTSC: 3356809848] Running UPDATE.no_block: 0 SCR ! UPDATE +[Hera] [HADES][TEST ] [KRELTSC: 3357789351] Expected error occurred +[Hera] [HADES][TEST ] Testing UPDATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3359276529] Expected: Should error: blk=0 is invalid +[Hera] [HADES][TEST ] [KRELTSC: 3360179340] UPDATE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3361467123] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3362656521] Testing word: SAVE-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3363441039] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3364213356] Running SAVE-BUFFERS.basic: SAVE-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3365456409] Test passed +[Hera] [HADES][TEST ] Testing SAVE-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3366897660] Expected: Should flush all buffers +[Hera] [HADES][TEST ] [KRELTSC: 3367768026] Running SAVE-BUFFERS.dirty_blocks: 1 BLOCK UPDATE SAVE-BUFFER +[Hera] [HADES][TEST ] [KRELTSC: 3368931720] Test passed +[Hera] [HADES][TEST ] Testing SAVE-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3370335633] Expected: Should save dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3371269545] Running SAVE-BUFFERS.no_dirty: SAVE-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3372224457] Test passed +[Hera] [HADES][TEST ] Testing SAVE-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3373955823] Expected: Should handle no dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3375062271] SAVE-BUFFERS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3376055151] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3377131191] Testing word: EMPTY-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3377920350] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3378679542] Running EMPTY-BUFFERS.basic: EMPTY-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3379846932] Test passed +[Hera] [HADES][TEST ] Testing EMPTY-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3381551922] Expected: Should invalidate all buffers +[Hera] [HADES][TEST ] [KRELTSC: 3382592409] Running EMPTY-BUFFERS.after_use: 1 BLOCK EMPTY-BUFFERS +[Hera] [HADES][TEST ] [KRELTSC: 3383799006] Test passed +[Hera] [HADES][TEST ] Testing EMPTY-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3385229715] Expected: Should invalidate used buffers +[Hera] [HADES][TEST ] [KRELTSC: 3386336058] Running EMPTY-BUFFERS.dirty_blocks: 1 BLOCK UPDATE EMPTY-BUFF +[Hera] [HADES][TEST ] [KRELTSC: 3387487425] Test passed +[Hera] [HADES][TEST ] Testing EMPTY-BUFFERS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3388918071] Expected: Should handle dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3389836926] EMPTY-BUFFERS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3390835644] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3391918047] Testing word: FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3392651220] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3393417594] Running FLUSH.basic: FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3394317024] Test passed +[Hera] [HADES][TEST ] Testing FLUSH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3395685195] Expected: Should save and invalidate buffers +[Hera] [HADES][TEST ] [KRELTSC: 3396663354] Running FLUSH.dirty_blocks: 1 BLOCK UPDATE FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3397707999] Test passed +[Hera] [HADES][TEST ] Testing FLUSH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3399362925] Expected: Should flush dirty blocks +[Hera] [HADES][TEST ] [KRELTSC: 3400265106] Running FLUSH.after_empty: EMPTY-BUFFERS FLUSH +[Hera] [HADES][TEST ] [KRELTSC: 3401355678] Test passed +[Hera] [HADES][TEST ] Testing FLUSH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3402813246] Expected: Should handle empty buffers +[Hera] [HADES][TEST ] [KRELTSC: 3403719081] FLUSH: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3404693439] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3405727731] Testing word: LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3406469598] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3407231268] Running LOAD.basic: 1 LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3408274695] Test passed +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3409628544] Expected: Should interpret block 1 +[Hera] [HADES][TEST ] [KRELTSC: 3410521842] Running LOAD.zero_block: 0 LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3411651432] Expected error occurred +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3413131491] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3413985981] Running LOAD.nonexistent: 9999 LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3414879174] Expected error occurred +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3416513772] Expected: Should handle missing block +[Hera] [HADES][TEST ] [KRELTSC: 3417546258] Running LOAD.empty_stack: LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3418410324] Expected error occurred +[Hera] [HADES][TEST ] Testing LOAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3419861130] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3420764928] LOAD: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3421717614] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3422806086] Testing word: LIST +[Hera] [HADES][TEST ] [KRELTSC: 3423828597] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3424593648] Running LIST.basic: 1 LIST + +[Hera] Block 1 + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + + + +[Hera] [HADES][TEST ] [KRELTSC: 3442341189] Test passed +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3443719692] Expected: Should display block 1 +[Hera] [HADES][TEST ] [KRELTSC: 3444598332] Running LIST.zero_block: 0 LIST +[Hera] [HADES][TEST ] [KRELTSC: 3445489131] Expected error occurred +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3446972991] Expected: Should handle block 0 +[Hera] [HADES][TEST ] [KRELTSC: 3447814650] Running LIST.nonexistent: 9999 LIST +[Hera] [HADES][TEST ] [KRELTSC: 3448926075] Expected error occurred +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3450397482] Expected: Should handle missing block +[Hera] [HADES][TEST ] [KRELTSC: 3451305879] Running LIST.empty_stack: LIST +[Hera] [HADES][TEST ] [KRELTSC: 3452155854] Expected error occurred +[Hera] [HADES][TEST ] Testing LIST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3453615984] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3454517871] LIST: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3455462892] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3456508629] Testing word: SCR +[Hera] [HADES][TEST ] [KRELTSC: 3457232457] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3457995408] Running SCR.basic: SCR @ . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 3459285690] Test passed +[Hera] [HADES][TEST ] Testing SCR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3460631475] Expected: Should show current block +[Hera] [HADES][TEST ] [KRELTSC: 3461707557] Running SCR.after_list: 1 LIST SCR @ . CR + +[Hera] Block 1 + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + +[Hera] 2d: +[Hera] + + + +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 3480289890] Test passed +[Hera] [HADES][TEST ] Testing SCR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3481623285] Expected: Should update after LIST +[Hera] [HADES][TEST ] [KRELTSC: 3482526936] Running SCR.after_load: 1 LOAD SCR @ . CR +[Hera] [HADES][TEST ] [KRELTSC: 3483473868] Test passed +[Hera] [HADES][TEST ] Testing SCR ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3484838931] Expected: Should update after LOAD +[Hera] [HADES][TEST ] [KRELTSC: 3485697390] SCR: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3486622629] â–¶ Testing module: src/test_runner/modules/block_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 3487669353] Testing word: THRU +[Hera] [HADES][TEST ] [KRELTSC: 3488475648] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3489525963] Running THRU.single_block: 1 1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3490839261] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3492201048] Expected: Should load single block (1-1) +[Hera] [HADES][TEST ] [KRELTSC: 3493137606] Running THRU.ascending: 1 3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3494023617] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3495410205] Expected: Should load blocks 1-3 in order +[Hera] [HADES][TEST ] [KRELTSC: 3496330131] Running THRU.descending: 3 1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3497235168] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3498598824] Expected: Should auto-swap and load 1-3 +[Hera] [HADES][TEST ] [KRELTSC: 3499507410] Running THRU.same_block: 2 2 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3500408037] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3502181256] Expected: Should load single block (2-2) +[Hera] [HADES][TEST ] [KRELTSC: 3503127453] Running THRU.zero_start: 0 3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3504088602] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3505526850] Expected: Should reject block 0 as start +[Hera] [HADES][TEST ] [KRELTSC: 3506448288] Running THRU.zero_end: 1 0 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3507318255] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3508762047] Expected: Should reject block 0 as end +[Hera] [HADES][TEST ] [KRELTSC: 3509687958] Running THRU.both_zero: 0 0 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3510543519] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3512025867] Expected: Should reject both blocks as 0 +[Hera] [HADES][TEST ] [KRELTSC: 3512947221] Running THRU.invalid_start: 9999 10000 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3514202706] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3515687658] Expected: Should reject invalid start block +[Hera] [HADES][TEST ] [KRELTSC: 3516851121] Running THRU.invalid_end: 1 9999 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3517771194] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3519223491] Expected: Should reject invalid end block +[Hera] [HADES][TEST ] [KRELTSC: 3520158558] Running THRU.both_invalid: 9998 9999 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3521084091] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3522536682] Expected: Should reject both invalid blocks +[Hera] [HADES][TEST ] [KRELTSC: 3523480989] Running THRU.empty_stack: THRU +[Hera] [HADES][TEST ] [KRELTSC: 3524338881] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3525793047] Expected: Should cause stack underflow (no args) +[Hera] [HADES][TEST ] [KRELTSC: 3527126820] Running THRU.one_arg: 1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3527961255] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3529381506] Expected: Should cause stack underflow (one arg) +[Hera] [HADES][TEST ] [KRELTSC: 3530390073] Running THRU.small_range: 1 2 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3531299667] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3532677036] Expected: Should load 2-block range +[Hera] [HADES][TEST ] [KRELTSC: 3533550363] Running THRU.medium_range: 1 5 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3534476316] Test passed +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3535840014] Expected: Should load 5-block range +[Hera] [HADES][TEST ] [KRELTSC: 3536721027] Running THRU.negative_start: -1 3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3537630159] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3539356926] Expected: Should handle negative start +[Hera] [HADES][TEST ] [KRELTSC: 3540394641] Running THRU.negative_end: 1 -3 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3541298586] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3542760648] Expected: Should handle negative end +[Hera] [HADES][TEST ] [KRELTSC: 3543673329] Running THRU.both_negative: -3 -1 THRU +[Hera] [HADES][TEST ] [KRELTSC: 3544592310] Expected error occurred +[Hera] [HADES][TEST ] Testing THRU ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3546055695] Expected: Should handle both negative +[Hera] [HADES][TEST ] [KRELTSC: 3546985869] THRU: 17 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3547982445] === Block Words Summary: 0 passed, 0 failed, 0 skipped, 0 error +[Hera] [HADES][INFO ] [KRELTSC: 3549061446] +[Hera] === Testing Module: Dictionary Words === +[Hera] [HADES][INFO ] [KRELTSC: 3550197399] Running Dictionary Words Tests (Module 4)... +[Hera] [HADES][TEST ] [KRELTSC: 3551217579] Testing word: HERE +[Hera] [HADES][TEST ] [KRELTSC: 3552156258] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3552923598] Running HERE.basic: HERE HERE = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3554136096] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3555495909] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 3556329693] Running HERE.after_comma: HERE 42 , HERE SWAP - 1 CELLS = 0 S +[Hera] [HADES][TEST ] [KRELTSC: 3557512224] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3558876132] Expected: Asserts HERE advances by exactly 1 CELLS (8 bytes +[Hera] [HADES][TEST ] [KRELTSC: 3559959858] Running HERE.after_c_comma: HERE 65 C, HERE SWAP - . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 3561298461] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3562668459] Expected: Should print: 1 +[Hera] [HADES][TEST ] [KRELTSC: 3563474607] Running HERE.after_allot: HERE 10 ALLOT HERE SWAP - . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 3565213008] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3566574732] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 3567370317] Running HERE.stability: HERE DUP HERE = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3568639011] Test passed +[Hera] [HADES][TEST ] Testing HERE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3570009660] Expected: Should be stable +[Hera] [HADES][TEST ] [KRELTSC: 3570813855] HERE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3571774584] Testing word: ALLOT +[Hera] [HADES][TEST ] [KRELTSC: 3572539740] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3573312309] Running ALLOT.basic: HERE 10 ALLOT HERE SWAP - . CR +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 3574742682] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3576140778] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 3577220325] Running ALLOT.zero: HERE 0 ALLOT HERE SWAP - . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3578519553] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3579890664] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3580709244] Running ALLOT.negative: HERE -4 ALLOT HERE SWAP - . CR +[Hera] -4 +[Hera] [HADES][TEST ] [KRELTSC: 3582054084] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3583450710] Expected: Should print: -4 +[Hera] [HADES][TEST ] [KRELTSC: 3584242998] Running ALLOT.large: HERE 100 ALLOT HERE SWAP - . CR +[Hera] 100 +[Hera] [HADES][TEST ] [KRELTSC: 3585638196] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3587008383] Expected: Should print: 100 +[Hera] [HADES][TEST ] [KRELTSC: 3587828076] Running ALLOT.after_use: ALIGN HERE 10 ALLOT 42 OVER ! @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3589363218] Test passed +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3590737983] Expected: Should store and retrieve +[Hera] [HADES][TEST ] [KRELTSC: 3591614838] Running ALLOT.empty_stack: ALLOT +[Hera] [HADES][TEST ] [KRELTSC: 3592495746] Expected error occurred +[Hera] [HADES][TEST ] Testing ALLOT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3593961714] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3594866793] ALLOT: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3595810995] Testing word: , +[Hera] [HADES][TEST ] [KRELTSC: 3596511450] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3597297795] Running ,.basic: 42 , HERE 1 CELLS - @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3598531734] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3599879766] Expected: Should compile 42 +[Hera] [HADES][TEST ] [KRELTSC: 3600700971] Running ,.negative: -999 , HERE 1 CELLS - @ . CR +[Hera] [HADES][INFO ] [KRELTSC: 3602031615] L8[TABLE]: Config 1 → 2 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] -999 +[Hera] [HADES][TEST ] [KRELTSC: 3603477129] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3604822179] Expected: Should compile -999 +[Hera] [HADES][TEST ] [KRELTSC: 3605669760] Running ,.zero: 0 , HERE 1 CELLS - @ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3606895446] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3608226027] Expected: Should compile 0 +[Hera] [HADES][TEST ] [KRELTSC: 3609034275] Running ,.max_int: 2147483647 , HERE 1 CELLS - @ . CR +[Hera] 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3610416516] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3611766165] Expected: Should compile max int +[Hera] [HADES][TEST ] [KRELTSC: 3612635397] Running ,.min_int: -2147483648 , HERE 1 CELLS - @ . CR +[Hera] -2147483648 +[Hera] [HADES][TEST ] [KRELTSC: 3614172093] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3615577371] Expected: Should compile min int +[Hera] [HADES][TEST ] [KRELTSC: 3616438896] Running ,.multiple: 10 , 20 , HERE 1 CELLS - @ . HERE 1 CELLS +[Hera] 20 20 +[Hera] [HADES][TEST ] [KRELTSC: 3617885628] Test passed +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3619207557] Expected: Should compile multiple +[Hera] [HADES][TEST ] [KRELTSC: 3620052765] Running ,.empty_stack: , +[Hera] [HADES][TEST ] [KRELTSC: 3620893269] Expected error occurred +[Hera] [HADES][TEST ] Testing , ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3622306674] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3623211396] ,: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3624095727] Testing word: C, +[Hera] [HADES][TEST ] [KRELTSC: 3624799122] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3625556529] Running C,.basic: 65 C, HERE 1 - C@ . CR +[Hera] 65 +[Hera] [HADES][TEST ] [KRELTSC: 3626912541] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3628265634] Expected: Should compile byte 65 +[Hera] [HADES][TEST ] [KRELTSC: 3629140263] Running C,.zero: 0 C, HERE 1 - C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3630342870] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3631825071] Expected: Should compile byte 0 +[Hera] [HADES][TEST ] [KRELTSC: 3632716017] Running C,.high_byte: 255 C, HERE 1 - C@ . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3634023393] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3635378649] Expected: Should compile byte 255 +[Hera] [HADES][TEST ] [KRELTSC: 3636260628] Running C,.truncation: 256 C, HERE 1 - C@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3637519977] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3638857677] Expected: Should truncate to 0 +[Hera] [HADES][TEST ] [KRELTSC: 3640021518] Running C,.negative: -1 C, HERE 1 - C@ . CR +[Hera] 255 +[Hera] [HADES][TEST ] [KRELTSC: 3641261631] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3642595824] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 3643434585] Running C,.multiple: 65 C, 66 C, HERE 2 - C@ . HERE 1 - C@ . +[Hera] 65 66 +[Hera] [HADES][TEST ] [KRELTSC: 3644848263] Test passed +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3646231386] Expected: Should compile multiple +[Hera] [HADES][TEST ] [KRELTSC: 3647082117] Running C,.empty_stack: C, +[Hera] [HADES][TEST ] [KRELTSC: 3647951643] Expected error occurred +[Hera] [HADES][TEST ] Testing C, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3649377186] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3650319981] C,: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3651304041] Testing word: 2, +[Hera] [HADES][TEST ] [KRELTSC: 3652221846] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3653253849] Running 2,.basic: 12345 67890 2, HERE 2 CELLS - 2@ . . CR +[Hera] 67890 12345 +[Hera] [HADES][TEST ] [KRELTSC: 3654766731] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3656105733] Expected: Should compile double +[Hera] [HADES][TEST ] [KRELTSC: 3656959362] Running 2,.zero: 0 0 2, HERE 2 CELLS - 2@ . . CR +[Hera] 0 0 +[Hera] [HADES][TEST ] [KRELTSC: 3658319217] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3659643435] Expected: Should compile zero double +[Hera] [HADES][TEST ] [KRELTSC: 3660541479] Running 2,.negative: -1000 -2000 2, HERE 2 CELLS - 2@ . . CR +[Hera] -2000 -1000 +[Hera] [HADES][TEST ] [KRELTSC: 3661987014] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3663347814] Expected: Should compile negative double +[Hera] [HADES][TEST ] [KRELTSC: 3664302327] Running 2,.large: 2147483647 -1 2, HERE 2 CELLS - 2@ . . CR +[Hera] -1 2147483647 +[Hera] [HADES][TEST ] [KRELTSC: 3666065025] Test passed +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3667409025] Expected: Should compile large double +[Hera] [HADES][TEST ] [KRELTSC: 3668306544] Running 2,.one_item: 42 2, +[Hera] [HADES][TEST ] [KRELTSC: 3669166641] Expected error occurred +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3670597770] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3671509422] Running 2,.empty_stack: 2, +[Hera] [HADES][TEST ] [KRELTSC: 3672320946] Expected error occurred +[Hera] [HADES][TEST ] Testing 2, ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3673760139] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3674667507] 2,: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3675598689] Testing word: PAD +[Hera] [HADES][TEST ] [KRELTSC: 3676323504] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3677286753] Running PAD.basic: PAD PAD = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3678468024] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3679845351] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 3680663700] Running PAD.different_from_here: PAD HERE = . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3681929601] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3683307495] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 3684105999] Running PAD.stability: PAD DUP PAD = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3685314570] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3686672367] Expected: Should be stable +[Hera] [HADES][TEST ] [KRELTSC: 3687512766] Running PAD.usable: PAD 42 OVER ! @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3688831272] Test passed +[Hera] [HADES][TEST ] Testing PAD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3690484938] Expected: Should be usable memory +[Hera] [HADES][TEST ] [KRELTSC: 3691447284] PAD: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3692355660] Testing word: SP@ +[Hera] [HADES][TEST ] [KRELTSC: 3693075540] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3693853191] Running SP@.depth_effect: 42 SP@ SWAP DROP SP@ = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3695226444] Test passed +[Hera] [HADES][TEST ] Testing SP@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3696595371] Expected: Should show stack effect +[Hera] [HADES][TEST ] [KRELTSC: 3697476426] Running SP@.empty_stack: DEPTH 0= SP@ AND . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3698744238] Test passed +[Hera] [HADES][TEST ] Testing SP@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3700110771] Expected: Should work on empty stack +[Hera] [HADES][TEST ] [KRELTSC: 3700995501] Running SP@.multiple_items: 1 2 3 SP@ SWAP DROP SWAP DROP SWA +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3702547779] Test passed +[Hera] [HADES][TEST ] Testing SP@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3703900998] Expected: Should track changes +[Hera] [HADES][TEST ] [KRELTSC: 3704745807] SP@: 3 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3705654582] Testing word: SP! +[Hera] [HADES][TEST ] [KRELTSC: 3706356066] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3707110113] Running SP!.basic_restore: 1 2 3 SP@ 4 5 6 DROP DROP DROP SP! +[Hera] 3 [HADES][TEST ] [KRELTSC: 3708549747] Test passed +[Hera] [HADES][TEST ] Testing SP! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3709692777] Expected: Should restore stack +[Hera] [HADES][TEST ] [KRELTSC: 3710558250] Running SP!.invalid_addr: 0 SP! +[Hera] [HADES][TEST ] [KRELTSC: 3711474963] Expected error occurred +[Hera] [HADES][TEST ] Testing SP! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3712917285] Expected: Should cause error +[Hera] [HADES][TEST ] [KRELTSC: 3713778243] Running SP!.empty_stack: SP! +[Hera] [HADES][TEST ] [KRELTSC: 3714679248] Expected error occurred +[Hera] [HADES][TEST ] Testing SP! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3716380038] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 3717302484] SP!: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3718223712] Testing word: LATEST +[Hera] [HADES][TEST ] [KRELTSC: 3718967406] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3719724498] Running LATEST.basic: LATEST LATEST = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3720984057] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3722366130] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 3723203169] Running LATEST.stability: LATEST DUP LATEST = . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3724476210] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3725869266] Expected: Should be stable +[Hera] [HADES][TEST ] [KRELTSC: 3726686019] LATEST: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3727944885] Testing word: COMPILATION +[Hera] [HADES][TEST ] [KRELTSC: 3728711427] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3729471144] Running COMPILATION.here_comma_sequence: HERE 10 , 20 , 30 , +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3730879488] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3732307614] Expected: Should advance HERE by 12 +[Hera] [HADES][TEST ] [KRELTSC: 3733221282] Running COMPILATION.mixed_compilation: HERE 42 , 65 C, 100 20 +[Hera] [HADES][INFO ] [KRELTSC: 3734714361] L8[TABLE]: Config 2 → 3 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3736122159] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3737532729] Expected: Should advance correctly +[Hera] [HADES][TEST ] [KRELTSC: 3738422835] Running COMPILATION.allot_comma_combo: HERE 10 ALLOT 99 , HER +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3740025429] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3741410148] Expected: Should combine allot and comma +[Hera] [HADES][TEST ] [KRELTSC: 3742325181] Running COMPILATION.pad_isolation: PAD 999 OVER ! HERE 42 , P +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 3743719287] Test passed +[Hera] [HADES][TEST ] Testing COMPILATION ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3745148211] Expected: PAD should be isolated +[Hera] [HADES][TEST ] [KRELTSC: 3746020782] COMPILATION: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3747056859] Testing word: STACK_MGMT +[Hera] [HADES][TEST ] [KRELTSC: 3747819285] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3748585890] Running STACK_MGMT.sp_round_trip: 42 43 SP@ >R 44 45 R> SP! . +[Hera] 43 42 +[Hera] [HADES][TEST ] [KRELTSC: 3750014604] Test passed +[Hera] [HADES][TEST ] Testing STACK_MGMT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3751434792] Expected: Should print: 43 42 +[Hera] [HADES][TEST ] [KRELTSC: 3752295498] Running STACK_MGMT.depth_preservation: 1 2 3 DEPTH >R SP@ >R +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3753943767] Test passed +[Hera] [HADES][TEST ] Testing STACK_MGMT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3755359524] Expected: Should preserve depth +[Hera] [HADES][TEST ] [KRELTSC: 3756198852] STACK_MGMT: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3757215525] === Dictionary Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 3758279490] +[Hera] === Testing Module: Dictionary Manipulation Words === +[Hera] [HADES][INFO ] [KRELTSC: 3759535080] Running Dictionary Manipulation Words Tests (Module 14)... +[Hera] [HADES][TEST ] [KRELTSC: 3760603518] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3761713935] Testing word: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 3762446982] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3763232361] Running CREATE.basic: CREATE test1 42 , test1 @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3765051066] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3766561155] Expected: Should create and store +[Hera] [HADES][TEST ] [KRELTSC: 3767458107] Running CREATE.empty_name: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 3768351594] Expected error occurred +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3769831800] Expected: Should handle empty name +[Hera] [HADES][TEST ] [KRELTSC: 3770714346] Running CREATE.redefine_shadows: CREATE T 1 , CREATE T 2 , T +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 3772254402] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3773632884] Expected: Newest definition should win (prints 2) +[Hera] [HADES][TEST ] [KRELTSC: 3774635508] Running CREATE.duplicate: CREATE test2 CREATE test2 +[Hera] [HADES][TEST ] [KRELTSC: 3775767492] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3777127011] Expected: Should allow redefinition (latest shadows) +[Hera] [HADES][TEST ] [KRELTSC: 3778523238] CREATE: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3779517189] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3780576744] Testing word: FORGET +[Hera] [HADES][TEST ] [KRELTSC: 3781307271] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3782079798] Running FORGET.basic: CREATE temp1 FORGET temp1 +[Hera] [HADES][TEST ] [KRELTSC: 3783862026] Test passed +[Hera] [HADES][TEST ] Testing FORGET ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3785201910] Expected: Should forget word +[Hera] [HADES][TEST ] [KRELTSC: 3786028134] Running FORGET.nonexistent: FORGET nonexistent +[Hera] [HADES][TEST ] [KRELTSC: 3787085757] Expected error occurred +[Hera] [HADES][TEST ] Testing FORGET ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3788526798] Expected: Should handle missing word +[Hera] [HADES][TEST ] [KRELTSC: 3789397395] Running FORGET.protected: FORGET FORGET +[Hera] [HADES][TEST ] [KRELTSC: 3790612056] Expected error occurred +[Hera] [HADES][TEST ] Testing FORGET ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3792075252] Expected: Should protect system words +[Hera] [HADES][TEST ] [KRELTSC: 3792989046] FORGET: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3793931568] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3795042552] Testing word: FENCE +[Hera] [HADES][TEST ] [KRELTSC: 3795809409] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3796573242] Running FENCE.basic: CREATE fnc1 FENCE CREATE fnc2 FORGET fnc +[Hera] [HADES][TEST ] [KRELTSC: 3797977785] Test passed +[Hera] [HADES][TEST ] Testing FENCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3799361076] Expected: Should forget a word defined after FENCE +[Hera] [HADES][TEST ] [KRELTSC: 3800388186] Running FENCE.protects_older: CREATE fnc3 CREATE fnc4 FENCE F +[Hera] [HADES][TEST ] [KRELTSC: 3801644364] Expected error occurred +[Hera] [HADES][TEST ] Testing FENCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3803319093] Expected: Should refuse to forget a word defined before FEN +[Hera] [HADES][TEST ] [KRELTSC: 3804470712] Running FENCE.forget_latest_keeps_predecessor: CREATE fnc5 FE +[Hera] [HADES][TEST ] [KRELTSC: 3805852764] Test passed +[Hera] [HADES][TEST ] Testing FENCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3807227970] Expected: Forgetting the newest word must not disturb an ol +[Hera] [HADES][TEST ] [KRELTSC: 3808302939] FENCE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3809270472] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3810324651] Testing word: IMMEDIATE +[Hera] [HADES][TEST ] [KRELTSC: 3811066812] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3811848789] Running IMMEDIATE.basic: : test3 42 ; IMMEDIATE test3 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3813768021] Test passed +[Hera] [HADES][TEST ] Testing IMMEDIATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3815206101] Expected: Should execute immediately +[Hera] [HADES][TEST ] [KRELTSC: 3816264795] Running IMMEDIATE.already_immediate: : test4 43 ; IMMEDIATE I +[Hera] [HADES][TEST ] [KRELTSC: 3817465764] Test passed +[Hera] [HADES][TEST ] Testing IMMEDIATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3818842419] Expected: Should handle double immediate +[Hera] [HADES][TEST ] [KRELTSC: 3819766692] IMMEDIATE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3820748505] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3821812050] Testing word: FIND +[Hera] [HADES][TEST ] [KRELTSC: 3822527520] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3823293831] Running FIND.existing: FIND DUP . CR +[Hera] 1032573864 +[Hera] [HADES][TEST ] [KRELTSC: 3824671410] Test passed +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3826032420] Expected: Should find system word +[Hera] [HADES][TEST ] [KRELTSC: 3826910430] Running FIND.user_word: : test5 44 ; FIND test5 . CR +[Hera] 1032748672 +[Hera] [HADES][TEST ] [KRELTSC: 3828633039] Test passed +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3829995435] Expected: Should find user word +[Hera] [HADES][TEST ] [KRELTSC: 3830840643] Running FIND.nonexistent: FIND nonexistent . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 3832123638] Test passed +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3833514804] Expected: Should return 0 +[Hera] [HADES][TEST ] [KRELTSC: 3834348210] Running FIND.empty: FIND +[Hera] [HADES][TEST ] [KRELTSC: 3835182498] Expected error occurred +[Hera] [HADES][TEST ] Testing FIND ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3836628054] Expected: Should error (no token) +[Hera] [HADES][TEST ] [KRELTSC: 3837509865] FIND: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3838435776] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3839520825] Testing word: DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3840319182] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3841371639] Running DEFINITIONS.basic: FORTH DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3842545539] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3843925113] Expected: Should set current to context +[Hera] [HADES][TEST ] [KRELTSC: 3844852410] Running DEFINITIONS.multiple: FORTH DEFINITIONS DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3845956149] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3847406094] Expected: Should be idempotent +[Hera] [HADES][TEST ] [KRELTSC: 3848264784] DEFINITIONS: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3849277299] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3850325745] Testing word: SMUDGE +[Hera] [HADES][TEST ] [KRELTSC: 3851061921] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3851843583] Running SMUDGE.during_def: : test6 SMUDGE 45 ; +[Hera] [HADES][TEST ] [KRELTSC: 3852977289] Test passed +[Hera] [HADES][TEST ] Testing SMUDGE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3854396049] Expected: Should hide incomplete def +[Hera] [HADES][TEST ] [KRELTSC: 3855296151] Running SMUDGE.outside_def: SMUDGE +[Hera] [HADES][TEST ] [KRELTSC: 3856222608] Expected error occurred +[Hera] [HADES][TEST ] Testing SMUDGE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3857691348] Expected: Should error outside def +[Hera] [HADES][TEST ] [KRELTSC: 3858559236] SMUDGE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3859498713] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3860593296] Testing word: LATEST +[Hera] [HADES][TEST ] [KRELTSC: 3861340791] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3862229847] Running LATEST.basic: LATEST @ . CR +[Hera] 1032614496 +[Hera] [HADES][TEST ] [KRELTSC: 3863519184] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3864912744] Expected: Should show latest word +[Hera] [HADES][TEST ] [KRELTSC: 3865904238] Running LATEST.after_def: : test7 46 ; LATEST @ . CR +[Hera] 1032634760 +[Hera] [HADES][TEST ] [KRELTSC: 3867602655] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3868985736] Expected: Should update after def +[Hera] [HADES][TEST ] [KRELTSC: 3869864901] Running LATEST.after_forget: CREATE test8 FORGET test8 LATEST +[Hera] 1032634760 +[Hera] [HADES][TEST ] [KRELTSC: 3871412937] Test passed +[Hera] [HADES][TEST ] Testing LATEST ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3872793141] Expected: Should update after forget +[Hera] [HADES][TEST ] [KRELTSC: 3873680874] LATEST: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3874626357] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3875693241] Testing word: >BODY +[Hera] [HADES][TEST ] [KRELTSC: 3876434310] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3877191885] Running >BODY.basic: CREATE test9 ' test9 >BODY . CR +[Hera] 1032749752 +[Hera] [HADES][TEST ] [KRELTSC: 3879097614] Test passed +[Hera] [HADES][TEST ] Testing >BODY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3880521750] Expected: Should get param field +[Hera] [HADES][TEST ] [KRELTSC: 3881384157] Running >BODY.variable: VARIABLE var1 ' var1 >BODY . CR +[Hera] 1032749992 +[Hera] [HADES][TEST ] [KRELTSC: 3883005210] Test passed +[Hera] [HADES][TEST ] Testing >BODY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3884393961] Expected: Should get var storage +[Hera] [HADES][TEST ] [KRELTSC: 3885255150] Running >BODY.nonexistent: ' NONEXISTENT >BODY +[Hera] [HADES][ERROR] [KRELTSC: 3886242045] ': word 'NONEXISTENT' not found +[Hera] [HADES][TEST ] [KRELTSC: 3887264535] Expected error occurred +[Hera] [HADES][TEST ] Testing >BODY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3888705975] Expected: Should handle missing word +[Hera] [HADES][TEST ] [KRELTSC: 3889583502] >BODY: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3890513613] â–¶ Testing module: src/test_runner/modules/dictionary_manipula +[Hera] [HADES][TEST ] [KRELTSC: 3891957531] Testing word: HIDDEN +[Hera] [HADES][TEST ] [KRELTSC: 3892695681] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3893457603] Running HIDDEN.basic: : test10 HIDDEN 47 ; +[Hera] [HADES][TEST ] [KRELTSC: 3894527973] Test passed +[Hera] [HADES][TEST ] Testing HIDDEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3895891797] Expected: Should hide word +[Hera] [HADES][TEST ] [KRELTSC: 3896692002] Running HIDDEN.outside_def: HIDDEN +[Hera] [HADES][TEST ] [KRELTSC: 3897594960] Expected error occurred +[Hera] [HADES][TEST ] Testing HIDDEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3899058618] Expected: Should error outside def +[Hera] [HADES][TEST ] [KRELTSC: 3899938371] HIDDEN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3901107504] === Dictionary Manipulation Words Summary: 0 passed, 0 failed, +[Hera] [HADES][INFO ] [KRELTSC: 3902338398] +[Hera] === Testing Module: Vocabulary Words === +[Hera] [HADES][INFO ] [KRELTSC: 3903818100] Running Vocabulary Words Tests (Module 15)... +[Hera] [HADES][TEST ] [KRELTSC: 3905279784] â–¶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 3906687099] Testing word: VOCABULARY +[Hera] [HADES][TEST ] [KRELTSC: 3907743252] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3908796003] Running VOCABULARY.basic: VOCABULARY TEST-VOC1 TEST-VOC1 DEFI +[Hera] [HADES][TEST ] [KRELTSC: 3912529215] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3913919583] Expected: Should create vocabulary +[Hera] [HADES][TEST ] [KRELTSC: 3914775165] Running VOCABULARY.create_and_switch: VOCABULARY MYVOC MYVOC +[Hera] 1032750664 +[Hera] [HADES][TEST ] [KRELTSC: 3918124791] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3919619256] Expected: Should create and switch +[Hera] [HADES][TEST ] [KRELTSC: 3920524440] Running VOCABULARY.word_isolation: VOCABULARY ISOLATED ISOLAT +[Hera] [HADES][TEST ] [KRELTSC: 3924580254] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3925962180] Expected: Should create word in isolated vocab +[Hera] [HADES][TEST ] [KRELTSC: 3926961717] Running VOCABULARY.cross_vocab_access: VOCABULARY V1 V1 DEFIN +[Hera] 11 +[Hera] [HADES][TEST ] [KRELTSC: 3931282719] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3932705805] Expected: Should access word across vocabs +[Hera] [HADES][TEST ] [KRELTSC: 3933705510] Running VOCABULARY.multiple_vocabs: VOCABULARY VA VOCABULARY +[Hera] [HADES][TEST ] [KRELTSC: 3936482781] Test passed +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3937880268] Expected: Should create multiple vocabs +[Hera] [HADES][TEST ] [KRELTSC: 3938814999] Running VOCABULARY.duplicate: VOCABULARY TESTVOC VOCABULARY T +[Hera] [HADES][ERROR] [KRELTSC: 3939997719] VOCABULARY: duplicate 'TESTVOC' +[Hera] [HADES][TEST ] [KRELTSC: 3940834611] Expected error occurred +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3942885135] Expected: Should handle duplicate +[Hera] [HADES][TEST ] [KRELTSC: 3943702182] Running VOCABULARY.empty_name: VOCABULARY +[Hera] [HADES][ERROR] [KRELTSC: 3944598777] VOCABULARY: missing name +[Hera] [HADES][TEST ] [KRELTSC: 3945382140] Expected error occurred +[Hera] [HADES][TEST ] Testing VOCABULARY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3946834374] Expected: Should handle empty name +[Hera] [HADES][TEST ] [KRELTSC: 3947720889] VOCABULARY: 7 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3948741699] â–¶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 3949766898] Testing word: FORTH +[Hera] [HADES][TEST ] [KRELTSC: 3950495451] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3951284211] Running FORTH.basic: FORTH DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3953515251] Test passed +[Hera] [HADES][TEST ] Testing FORTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3954846420] Expected: Should select FORTH vocab +[Hera] [HADES][TEST ] [KRELTSC: 3955736673] Running FORTH.persistence: FORTH : TEST1 42 ; TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 3957182544] Test passed +[Hera] [HADES][TEST ] Testing FORTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3958561488] Expected: Should find word in FORTH +[Hera] [HADES][TEST ] [KRELTSC: 3959440002] Running FORTH.from_other: VOCABULARY OTHER-VOC OTHER-VOC FORT +[Hera] [HADES][TEST ] [KRELTSC: 3962097363] Test passed +[Hera] [HADES][TEST ] Testing FORTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3963448965] Expected: Should return to FORTH +[Hera] [HADES][TEST ] [KRELTSC: 3964337580] FORTH: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3965269581] â–¶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 3966488799] Testing word: DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3967218612] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3967955901] Running DEFINITIONS.basic: FORTH DEFINITIONS +[Hera] [HADES][TEST ] [KRELTSC: 3970151556] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3971424303] Expected: Should set current vocabulary +[Hera] [HADES][TEST ] [KRELTSC: 3972320940] Running DEFINITIONS.new_vocab: VOCABULARY TEST-VOC6 TEST-VOC6 +[Hera] [HADES][TEST ] [KRELTSC: 3974985231] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3976350189] Expected: Should set new current +[Hera] [HADES][TEST ] [KRELTSC: 3977358987] Running DEFINITIONS.word_creation: VOCABULARY TEST-VOC7 TEST- +[Hera] [HADES][TEST ] [KRELTSC: 3980173638] Test passed +[Hera] [HADES][TEST ] Testing DEFINITIONS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3981580155] Expected: Should create in correct vocab +[Hera] [HADES][TEST ] [KRELTSC: 3982515033] DEFINITIONS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3983508900] â–¶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 3984590631] Testing word: CONTEXT +[Hera] [HADES][TEST ] [KRELTSC: 3985360680] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 3986137554] Running CONTEXT.basic: CONTEXT @ . CR +[Hera] 1032753824 +[Hera] [HADES][TEST ] [KRELTSC: 3987441444] Test passed +[Hera] [HADES][TEST ] Testing CONTEXT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3988848339] Expected: Should show current context +[Hera] [HADES][TEST ] [KRELTSC: 3989762511] Running CONTEXT.modify: CONTEXT @ 1+ CONTEXT ! +[Hera] [HADES][TEST ] [KRELTSC: 3990766437] Test passed +[Hera] [HADES][TEST ] Testing CONTEXT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3992448915] Expected: Should allow modification (impl-defined effect) +[Hera] [HADES][TEST ] [KRELTSC: 3993495345] Running CONTEXT.initial: FORTH CONTEXT @ . CR +[Hera] 1032619568 +[Hera] [HADES][TEST ] [KRELTSC: 3996002388] Test passed +[Hera] [HADES][TEST ] Testing CONTEXT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 3997376985] Expected: Should show FORTH vocab +[Hera] [HADES][TEST ] [KRELTSC: 3998240715] CONTEXT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 3999190524] â–¶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 4000250667] Testing word: CURRENT +[Hera] [HADES][TEST ] [KRELTSC: 4000984260] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4001763402] Running CURRENT.basic: CURRENT @ . CR +[Hera] 1032753824 +[Hera] [HADES][TEST ] [KRELTSC: 4003078800] Test passed +[Hera] [HADES][TEST ] Testing CURRENT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4004806617] Expected: Should show current vocab +[Hera] [HADES][TEST ] [KRELTSC: 4005883266] Running CURRENT.after_def: VOCABULARY TEST-VOC8 TEST-VOC8 DEF +[Hera] 1032754312 +[Hera] [HADES][TEST ] [KRELTSC: 4008921546] Test passed +[Hera] [HADES][TEST ] Testing CURRENT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4010326761] Expected: Should show new vocab +[Hera] [HADES][TEST ] [KRELTSC: 4011164598] Running CURRENT.protect: CURRENT @ 1+ CURRENT ! +[Hera] [HADES][INFO ] [KRELTSC: 4012346772] L8[TABLE]: Config 3 → 4 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] [HADES][TEST ] [KRELTSC: 4013480289] Test passed +[Hera] [HADES][TEST ] Testing CURRENT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4014863349] Expected: Should allow modification (impl-defined effect) +[Hera] [HADES][TEST ] [KRELTSC: 4015928742] CURRENT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4017114297] â–¶ Testing module: src/test_runner/modules/vocabulary_words_te +[Hera] [HADES][TEST ] [KRELTSC: 4018211127] Testing word: ORDER +[Hera] [HADES][TEST ] [KRELTSC: 4018951167] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4019720145] Running ORDER.basic: ORDER +[Hera] Search order: +[Hera] + + +[Hera] Current: + + +[Hera] [HADES][TEST ] [KRELTSC: 4021883061] Test passed +[Hera] [HADES][TEST ] Testing ORDER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4023279561] Expected: Should list search order +[Hera] [HADES][TEST ] [KRELTSC: 4024191864] Running ORDER.multiple: VOCABULARY TEST-VOC9 TEST-VOC9 DEFINI +[Hera] Search order: +[Hera] + + +[Hera] Current: + + +[Hera] [HADES][TEST ] [KRELTSC: 4027816128] Test passed +[Hera] [HADES][TEST ] Testing ORDER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4029294927] Expected: Should show all vocabs +[Hera] [HADES][TEST ] [KRELTSC: 4030540668] Running ORDER.after_forth: TEST-VOC9 FORTH ORDER +[Hera] Search order: + + +[Hera] Current: + + +[Hera] [HADES][TEST ] [KRELTSC: 4033519959] Test passed +[Hera] [HADES][TEST ] Testing ORDER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4034959362] Expected: Should show FORTH only +[Hera] [HADES][TEST ] [KRELTSC: 4035826725] ORDER: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4036822566] === Vocabulary Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 4037897220] +[Hera] === Testing Module: System Words === +[Hera] [HADES][INFO ] [KRELTSC: 4039033971] Running System Words Tests (Module 18)... +[Hera] [HADES][WARN ] [KRELTSC: 4039962402] Some system tests marked as unimplemented due to system-level e +[Hera] [HADES][TEST ] [KRELTSC: 4041069249] â–¶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4042395441] Testing word: QUIT +[Hera] [HADES][TEST ] [KRELTSC: 4043111982] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4043895975] Running QUIT.in_definition: : BAD-WORD QUIT ; +[Hera] [HADES][TEST ] [KRELTSC: 4045035288] Expected error occurred +[Hera] [HADES][TEST ] Testing QUIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4046487942] Expected: Should prevent compilation +[Hera] [HADES][TEST ] [KRELTSC: 4047376641] QUIT: 1 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4048413369] â–¶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4049485629] Testing word: ABORT +[Hera] [HADES][TEST ] [KRELTSC: 4050241503] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4051027596] Running ABORT.basic: ABORT +[Hera] [HADES][TEST ] [KRELTSC: 4051997376] Test passed +[Hera] [HADES][TEST ] Testing ABORT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4053361179] Expected: Should clear stacks and return to QUIT +[Hera] [HADES][TEST ] [KRELTSC: 4054524537] Running ABORT.with_data: 1 2 3 ABORT DEPTH . CR +[Hera] [HADES][TEST ] [KRELTSC: 4055807448] Test passed +[Hera] [HADES][TEST ] Testing ABORT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4057255335] Expected: Should clear stack +[Hera] [HADES][TEST ] [KRELTSC: 4058124651] Running ABORT.in_definition_runtime: : BAD-WORD ABORT ; 123 +[Hera] [HADES][TEST ] [KRELTSC: 4059348825] Test passed +[Hera] [HADES][TEST ] Testing ABORT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4060712103] Expected: ABORT may appear in a definition; when executed i +[Hera] [HADES][TEST ] [KRELTSC: 4061783229] ABORT: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4062746520] â–¶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4063808637] Testing word: ABORT" +[Hera] [HADES][TEST ] [KRELTSC: 4064584461] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4065354216] Running ABORT".condition_true: -1 ABORT" Error" + +[Hera] [HADES][TEST ] [KRELTSC: 4066801851] Test passed +[Hera] [HADES][TEST ] Testing ABORT" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4068200430] Expected: Should abort with message (no error; stacks clear +[Hera] [HADES][TEST ] [KRELTSC: 4069275462] Running ABORT".condition_false: 0 ABORT" Error" +[Hera] [HADES][TEST ] [KRELTSC: 4070285310] Test passed +[Hera] [HADES][TEST ] Testing ABORT" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4071643716] Expected: Should not abort +[Hera] [HADES][TEST ] [KRELTSC: 4072459146] Running ABORT".empty_stack: ABORT" +[Hera] [HADES][TEST ] [KRELTSC: 4073374893] Expected error occurred +[Hera] [HADES][TEST ] Testing ABORT" ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4074828891] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4075754907] ABORT": 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4076723343] â–¶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4077802029] Testing word: BYE +[Hera] [HADES][TEST ] [KRELTSC: 4078510254] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4079319279] BYE: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4080587469] â–¶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4081768950] Testing word: COLD +[Hera] [HADES][TEST ] [KRELTSC: 4082493492] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4083269358] COLD: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4084183908] â–¶ Testing module: src/test_runner/modules/system_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 4085244534] Testing word: WARM +[Hera] [HADES][TEST ] [KRELTSC: 4085954019] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4086713064] WARM: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4087676229] === System Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 4088731143] +[Hera] === Testing Module: Defining Words === +[Hera] [HADES][INFO ] [KRELTSC: 4089877680] Running Defining Words Tests (Module 13)... +[Hera] [HADES][TEST ] [KRELTSC: 4090821861] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4092104163] Testing word: : +[Hera] [HADES][TEST ] [KRELTSC: 4092895338] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4093697622] Running :.basic: : TEST1 42 ; TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4095069993] Test passed +[Hera] [HADES][TEST ] Testing : ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4096423632] Expected: Should define and execute +[Hera] [HADES][TEST ] [KRELTSC: 4097320332] Running :.empty_name: : +[Hera] [HADES][TEST ] [KRELTSC: 4098150966] Expected error occurred +[Hera] [HADES][TEST ] Testing : ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4099575480] Expected: Should handle empty definition +[Hera] [HADES][TEST ] [KRELTSC: 4100511912] Running :.nested: : TEST3 : ; +[Hera] [HADES][ERROR] [KRELTSC: 4101418923] Nested ':' inside a definition is not allowed +[Hera] [HADES][TEST ] [KRELTSC: 4102377741] Expected error occurred +[Hera] [HADES][TEST ] Testing : ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4103796627] Expected: Should prevent nested definition +[Hera] [HADES][TEST ] [KRELTSC: 4104967860] :: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4106003685] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4107060321] Testing word: ; +[Hera] [HADES][TEST ] [KRELTSC: 4107770331] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4108627446] Running ;.alone: ; +[Hera] [HADES][TEST ] [KRELTSC: 4109452221] Expected error occurred +[Hera] [HADES][TEST ] Testing ; ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4110892884] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4111818375] Running ;.immediate: : TEST4 42 ; IMMEDIATE TEST4 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4113248412] Test passed +[Hera] [HADES][TEST ] Testing ; ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4114597725] Expected: Should handle immediate +[Hera] [HADES][TEST ] [KRELTSC: 4115473425] ;: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4116375186] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4117715889] Testing word: CONSTANT +[Hera] [HADES][TEST ] [KRELTSC: 4118781156] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4119563784] Running CONSTANT.basic: 42 CONSTANT MEANING MEANING . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4121305251] Test passed +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4122717018] Expected: Should create constant +[Hera] [HADES][TEST ] [KRELTSC: 4123605402] Running CONSTANT.zero: 0 CONSTANT ZERO ZERO . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4124940813] Test passed +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4126324398] Expected: Should handle zero +[Hera] [HADES][TEST ] [KRELTSC: 4127178951] Running CONSTANT.negative: -1 CONSTANT MINUS MINUS . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 4128612747] Test passed +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4130231931] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 4131354738] Running CONSTANT.empty_stack: CONSTANT +[Hera] [HADES][TEST ] [KRELTSC: 4132425003] Expected error occurred +[Hera] [HADES][TEST ] Testing CONSTANT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4133918271] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4134818037] CONSTANT: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4135781118] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4136845986] Testing word: VARIABLE +[Hera] [HADES][TEST ] [KRELTSC: 4137623469] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4138415799] Running VARIABLE.basic: VARIABLE VAR1 42 VAR1 ! VAR1 @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4140053820] Test passed +[Hera] [HADES][TEST ] Testing VARIABLE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4141434171] Expected: Should create variable +[Hera] [HADES][TEST ] [KRELTSC: 4142454351] Running VARIABLE.multiple: VARIABLE VAR2 VARIABLE VAR3 +[Hera] [HADES][TEST ] [KRELTSC: 4143723780] Test passed +[Hera] [HADES][TEST ] Testing VARIABLE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4145135883] Expected: Should create multiple +[Hera] [HADES][TEST ] [KRELTSC: 4146016098] Running VARIABLE.store_fetch: VARIABLE VAR4 -99 VAR4 ! VAR4 @ +[Hera] -99 +[Hera] [HADES][TEST ] [KRELTSC: 4147494645] Test passed +[Hera] [HADES][TEST ] Testing VARIABLE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4148893455] Expected: Should store/fetch +[Hera] [HADES][TEST ] [KRELTSC: 4149850110] VARIABLE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4150833456] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4151902461] Testing word: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 4152650775] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4153426389] Running CREATE.basic: CREATE OBJ1 +[Hera] [HADES][TEST ] [KRELTSC: 4154395119] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4156066656] Expected: Should create word +[Hera] [HADES][TEST ] [KRELTSC: 4156916463] Running CREATE.with_data: CREATE OBJ2 42 , OBJ2 @ . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4158320796] Test passed +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4159702533] Expected: Should allow data +[Hera] [HADES][TEST ] [KRELTSC: 4160529723] Running CREATE.empty_name: CREATE +[Hera] [HADES][TEST ] [KRELTSC: 4161404961] Expected error occurred +[Hera] [HADES][TEST ] Testing CREATE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4162861521] Expected: Should handle empty name +[Hera] [HADES][TEST ] [KRELTSC: 4163742555] CREATE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4164696627] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4165784616] Testing word: DOES> +[Hera] [HADES][TEST ] [KRELTSC: 4166522661] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4167343635] Running DOES>.basic: : CONST CREATE , DOES> @ ; 42 CONST MEAN +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4170352473] Test passed +[Hera] [HADES][TEST ] Testing DOES> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4171757919] Expected: Should define behavior +[Hera] [HADES][TEST ] [KRELTSC: 4172625744] Running DOES>.multiple: : ARRAY CREATE DOES> SWAP CELLS + ; C +[Hera] [HADES][TEST ] [KRELTSC: 4173999543] Test passed +[Hera] [HADES][TEST ] Testing DOES> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4175336172] Expected: Should work with arrays +[Hera] [HADES][TEST ] [KRELTSC: 4176207105] Running DOES>.outside: DOES> +[Hera] [HADES][ERROR] [KRELTSC: 4177054287] DOES>: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4177798401] Expected error occurred +[Hera] [HADES][TEST ] Testing DOES> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4179218127] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4180321908] DOES>: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4181334507] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4182419976] Testing word: [ +[Hera] [HADES][TEST ] [KRELTSC: 4183103757] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4183863852] Running [.basic: : TEST5 [ 42 ] LITERAL ; TEST5 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4185441645] Test passed +[Hera] [HADES][TEST ] Testing [ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4186781361] Expected: Should enter interpret +[Hera] [HADES][TEST ] [KRELTSC: 4187636103] Running [.outside: [ +[Hera] [HADES][TEST ] [KRELTSC: 4188436161] Test passed +[Hera] [HADES][TEST ] Testing [ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4189761009] Expected: Should be allowed outside definition (no error) +[Hera] [HADES][TEST ] [KRELTSC: 4190848011] [: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4191749205] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4192993980] Testing word: ] +[Hera] [HADES][TEST ] [KRELTSC: 4193939988] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4194727152] Running ].basic: [ 42 ] . CR +[Hera] [HADES][TEST ] [KRELTSC: 4195626771] Test passed +[Hera] [HADES][TEST ] Testing ] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4196985156] Expected: Should resume compile +[Hera] [HADES][TEST ] [KRELTSC: 4197845673] Running ].nested: : TEST6 [ ] 42 ; TEST6 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4199189799] Test passed +[Hera] [HADES][TEST ] Testing ] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4200542367] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4201459689] ]: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4202363655] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4203524661] Testing word: DEFER +[Hera] [HADES][TEST ] [KRELTSC: 4204252962] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4205168247] Running DEFER.basic: DEFER DF1 : DF1W 42 . CR ; ' DF1W IS DF1 +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4207335489] Test passed +[Hera] [HADES][TEST ] Testing DEFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4208693139] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 4209517662] Running DEFER.uninit: DEFER DF2 DF2 +[Hera] [HADES][ERROR] [KRELTSC: 4210509723] DEFER runtime: no target set for 'DF2' +[Hera] [HADES][TEST ] [KRELTSC: 4211428515] Expected error occurred +[Hera] [HADES][TEST ] Testing DEFER ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4212904101] Expected: Should error: uninitialized deferred word +[Hera] [HADES][TEST ] [KRELTSC: 4213978608] DEFER: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4214934696] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4216089654] Testing word: IS +[Hera] [HADES][TEST ] [KRELTSC: 4216792272] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4217630634] Running IS.basic: DEFER IS1 : IS1W 99 . CR ; ' IS1W IS IS1 IS +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4219529118] Test passed +[Hera] [HADES][TEST ] Testing IS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4220881959] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4221715008] Running IS.not_defer: 42 IS DUP +[Hera] [HADES][ERROR] [KRELTSC: 4222615740] IS: 'DUP' was not created by DEFER +[Hera] [HADES][TEST ] [KRELTSC: 4223503116] Expected error occurred +[Hera] [HADES][TEST ] Testing IS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4224942939] Expected: Should error: DUP is not a DEFER word +[Hera] [HADES][TEST ] [KRELTSC: 4225920153] Running IS.not_found: 42 IS NOSUCH +[Hera] [HADES][ERROR] [KRELTSC: 4226837475] IS: word 'NOSUCH' not found +[Hera] [HADES][TEST ] [KRELTSC: 4227661662] Expected error occurred +[Hera] [HADES][TEST ] Testing IS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4229108919] Expected: Should error: word not found +[Hera] [HADES][TEST ] [KRELTSC: 4230034767] IS: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4231260243] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4232629947] Testing word: DEFER@ +[Hera] [HADES][TEST ] [KRELTSC: 4233376392] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4234153224] Running DEFER@.basic: DEFER DFA1 : DFA1W 7 . CR ; ' DFA1W IS +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 4236081465] Test passed +[Hera] [HADES][TEST ] Testing DEFER@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4237465407] Expected: Should print: -1 +[Hera] [HADES][TEST ] [KRELTSC: 4238294487] Running DEFER@.not_found: DEFER@ NOSUCH2 +[Hera] [HADES][ERROR] [KRELTSC: 4239335499] DEFER@: word 'NOSUCH2' not found +[Hera] [HADES][TEST ] [KRELTSC: 4240202190] Expected error occurred +[Hera] [HADES][TEST ] Testing DEFER@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4241687331] Expected: Should error: word not found +[Hera] [HADES][TEST ] [KRELTSC: 4242654381] DEFER@: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4243993341] â–¶ Testing module: src/test_runner/modules/defining_words_test +[Hera] [HADES][TEST ] [KRELTSC: 4245078726] Testing word: ['] +[Hera] [HADES][TEST ] [KRELTSC: 4245784662] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4246552800] Running ['].compile_xt: : BKT1 ['] DUP ; 77 BKT1 EXECUTE . . +[Hera] 77 77 +[Hera] [HADES][TEST ] [KRELTSC: 4248371736] Test passed +[Hera] [HADES][TEST ] Testing ['] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4249747908] Expected: Should print: 77 77 +[Hera] [HADES][TEST ] [KRELTSC: 4250591625] Running ['].pin_like: : BKT2 ['] DROP ; 1 2 BKT2 EXECUTE . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4252092348] Test passed +[Hera] [HADES][TEST ] Testing ['] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4253442858] Expected: Should print: 1 +[Hera] [HADES][TEST ] [KRELTSC: 4254271077] Running ['].not_found: : BKT3 ['] NOSUCHWORD ; +[Hera] [HADES][ERROR] [KRELTSC: 4255411041] [']': word 'NOSUCHWORD' not found +[Hera] [HADES][TEST ] [KRELTSC: 4256317737] Expected error occurred +[Hera] [HADES][TEST ] Testing ['] ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4257790845] Expected: Should error: word not found +[Hera] [HADES][TEST ] [KRELTSC: 4258696596] [']: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4259658669] === Defining Words Summary: 0 passed, 0 failed, 0 skipped, 0 er +[Hera] [HADES][INFO ] [KRELTSC: 4260713667] +[Hera] === Testing Module: Control Words === +[Hera] [HADES][INFO ] [KRELTSC: 4261922427] Running Control Words Tests (Module 12)... +[Hera] [HADES][TEST ] [KRELTSC: 4262892837] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4263982191] Testing word: IF +[Hera] [HADES][TEST ] [KRELTSC: 4264816164] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4265586822] Running IF.true: : TEST1 IF 42 ELSE 24 THEN ; -1 TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4267918599] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4269476694] Expected: Should take true branch +[Hera] [HADES][TEST ] [KRELTSC: 4270376460] Running IF.false: : TEST2 IF 42 ELSE 24 THEN ; 0 TEST2 . CR +[Hera] 24 +[Hera] [HADES][TEST ] [KRELTSC: 4271994006] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4273343319] Expected: Should take false branch +[Hera] [HADES][TEST ] [KRELTSC: 4274229435] Running IF.nested: : TEST3 IF IF 1 ELSE 2 THEN ELSE 3 THEN ; +[Hera] [HADES][INFO ] [KRELTSC: 4285255569] L8[TABLE]: Config 4 → 5 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4286683548] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4287784788] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4288444272] Running IF.no_else: : TEST4 IF 42 THEN ; -1 TEST4 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4290083343] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4291415478] Expected: Should work without ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4292282841] Running IF.empty_stack: IF +[Hera] [HADES][ERROR] [KRELTSC: 4293330258] IF: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4294032603] Expected error occurred +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4295471733] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4296375132] IF: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4297314609] Testing word: IF +[Hera] [HADES][TEST ] [KRELTSC: 4298031906] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4298793261] Running IF.true: : TEST1 IF 42 ELSE 24 THEN ; -1 TEST1 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4300354758] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4301717259] Expected: Should take true branch +[Hera] [HADES][TEST ] [KRELTSC: 4302564861] Running IF.false: : TEST2 IF 42 ELSE 24 THEN ; 0 TEST2 . CR +[Hera] 24 +[Hera] [HADES][TEST ] [KRELTSC: 4304099898] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4305478191] Expected: Should take false branch +[Hera] [HADES][TEST ] [KRELTSC: 4306534029] Running IF.nested: : TEST3 IF IF 1 ELSE 2 THEN ELSE 3 THEN ; +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4308109008] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4309430580] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4310311005] Running IF.no_else: : TEST4 IF 42 THEN ; -1 TEST4 . CR +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4311785415] Test passed +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4313111838] Expected: Should work without ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4313987685] Running IF.empty_stack: IF +[Hera] [HADES][ERROR] [KRELTSC: 4314789024] IF: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4315509555] Expected error occurred +[Hera] [HADES][TEST ] Testing IF ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4316954439] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4317848682] IF: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4318997046] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4320076173] Testing word: ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4320815541] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4321582608] Running ELSE.alone: ELSE +[Hera] [HADES][ERROR] [KRELTSC: 4322589516] ELSE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4323316914] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4324761840] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4325632185] Running ELSE.double: : BAD IF 1 ELSE ELSE 2 THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4326791133] ELSE: missing IF +[Hera] [HADES][TEST ] [KRELTSC: 4327497615] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4328971605] Expected: Should prevent double ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4329861375] ELSE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4330941699] Testing word: ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4331766474] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4332539694] Running ELSE.alone: ELSE +[Hera] [HADES][ERROR] [KRELTSC: 4333441959] ELSE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4334176539] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4335629655] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4336487022] Running ELSE.double: : BAD IF 1 ELSE ELSE 2 THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4337652942] ELSE: missing IF +[Hera] [HADES][TEST ] [KRELTSC: 4338378513] Expected error occurred +[Hera] [HADES][TEST ] Testing ELSE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4339854057] Expected: Should prevent double ELSE +[Hera] [HADES][TEST ] [KRELTSC: 4340744373] ELSE: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4341677760] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4342747668] Testing word: THEN +[Hera] [HADES][TEST ] [KRELTSC: 4343601486] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4344510009] Running THEN.alone: THEN +[Hera] [HADES][ERROR] [KRELTSC: 4345438125] THEN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4346161449] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4347645057] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4348503852] Running THEN.extra: : BAD IF 1 THEN THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4349581299] CF: underflow +[Hera] [HADES][ERROR] [KRELTSC: 4350292758] THEN: unmatched +[Hera] [HADES][TEST ] [KRELTSC: 4350993570] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4352460357] Expected: Should prevent extra THEN +[Hera] [HADES][TEST ] [KRELTSC: 4353349791] THEN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4354288743] Testing word: THEN +[Hera] [HADES][TEST ] [KRELTSC: 4355000475] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4355771448] Running THEN.alone: THEN +[Hera] [HADES][ERROR] [KRELTSC: 4356798852] THEN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4357527972] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4358971155] Expected: Should error outside IF +[Hera] [HADES][TEST ] [KRELTSC: 4359816888] Running THEN.extra: : BAD IF 1 THEN THEN ; +[Hera] [HADES][ERROR] [KRELTSC: 4360879845] CF: underflow +[Hera] [HADES][ERROR] [KRELTSC: 4361581665] THEN: unmatched +[Hera] [HADES][TEST ] [KRELTSC: 4362295938] Expected error occurred +[Hera] [HADES][TEST ] Testing THEN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4363728201] Expected: Should prevent extra THEN +[Hera] [HADES][TEST ] [KRELTSC: 4364630256] THEN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4365562845] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4366653732] Testing word: BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4367392092] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4368158466] Running BEGIN.until: : TEST5 0 BEGIN 1+ DUP 5 = UNTIL ; TEST5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4370458071] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4371858561] Expected: Should loop until true +[Hera] [HADES][TEST ] [KRELTSC: 4372719414] Running BEGIN.while: : TEST6 0 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4374814416] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4376195691] Expected: Should loop while true +[Hera] [HADES][TEST ] [KRELTSC: 4377108015] Running BEGIN.alone: BEGIN +[Hera] [HADES][ERROR] [KRELTSC: 4377980670] BEGIN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4378739232] Expected error occurred +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4380253080] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4381351905] BEGIN: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4382322189] Testing word: BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4383061599] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4383804915] Running BEGIN.until: : TEST5 0 BEGIN 1+ DUP 5 = UNTIL ; TEST5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4385314185] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4386739833] Expected: Should loop until true +[Hera] [HADES][TEST ] [KRELTSC: 4387596486] Running BEGIN.while: : TEST6 0 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] [HADES][INFO ] [KRELTSC: 4389083433] L8[TABLE]: Config 5 → 6 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4390604295] Test passed +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4391926812] Expected: Should loop while true +[Hera] [HADES][TEST ] [KRELTSC: 4392747891] Running BEGIN.alone: BEGIN +[Hera] [HADES][ERROR] [KRELTSC: 4393520250] BEGIN: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4394509203] Expected error occurred +[Hera] [HADES][TEST ] Testing BEGIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4395896484] Expected: Should error outside definition +[Hera] [HADES][TEST ] [KRELTSC: 4396802781] BEGIN: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4397773128] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4398851541] Testing word: UNTIL +[Hera] [HADES][TEST ] [KRELTSC: 4399583097] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4400368875] Running UNTIL.basic: : TEST8 BEGIN DUP 1- DUP 0= UNTIL ; 5 TE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4402038627] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4403398314] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4404232497] Running UNTIL.immediate: : TEST9 BEGIN 1 UNTIL ; IMMEDIATE +[Hera] [HADES][TEST ] [KRELTSC: 4405440018] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4407065838] Expected: Should be immediate +[Hera] [HADES][TEST ] [KRELTSC: 4407923772] Running UNTIL.no_begin: UNTIL +[Hera] [HADES][ERROR] [KRELTSC: 4408897437] UNTIL: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4409636070] Expected error occurred +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4411129926] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4412021313] UNTIL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4412962890] Testing word: UNTIL +[Hera] [HADES][TEST ] [KRELTSC: 4413688356] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4414484298] Running UNTIL.basic: : TEST8 BEGIN DUP 1- DUP 0= UNTIL ; 5 TE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4416107199] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4417481586] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4418318898] Running UNTIL.immediate: : TEST9 BEGIN 1 UNTIL ; IMMEDIATE +[Hera] [HADES][TEST ] [KRELTSC: 4419823968] Test passed +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4421206461] Expected: Should be immediate +[Hera] [HADES][TEST ] [KRELTSC: 4422049254] Running UNTIL.no_begin: UNTIL +[Hera] [HADES][ERROR] [KRELTSC: 4422904290] UNTIL: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4423654095] Expected error occurred +[Hera] [HADES][TEST ] Testing UNTIL ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4425127728] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4426027956] UNTIL: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4426978059] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4428051075] Testing word: WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4428784815] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4429624080] Running WHILE.basic: : TEST10 BEGIN DUP 5 < WHILE 1+ REPEAT ; +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4431296457] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4433061066] Expected: Should count up +[Hera] [HADES][TEST ] [KRELTSC: 4433895228] Running WHILE.zero_times: : TEST11 BEGIN DUP 0< WHILE 1+ REPE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4435437951] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4436896107] Expected: Should handle zero iterations +[Hera] [HADES][TEST ] [KRELTSC: 4438078470] Running WHILE.no_begin: WHILE +[Hera] [HADES][ERROR] [KRELTSC: 4439027733] WHILE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4439802465] Expected error occurred +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4441269399] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4442172546] WHILE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4443134976] Testing word: WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4443893916] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4444926633] Running WHILE.basic: : TEST10 BEGIN DUP 5 < WHILE 1+ REPEAT ; +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4446947253] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4448325525] Expected: Should count up +[Hera] [HADES][TEST ] [KRELTSC: 4449160968] Running WHILE.zero_times: : TEST11 BEGIN DUP 0< WHILE 1+ REPE +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4450699113] Test passed +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4452061173] Expected: Should handle zero iterations +[Hera] [HADES][TEST ] [KRELTSC: 4453011234] Running WHILE.no_begin: WHILE +[Hera] [HADES][ERROR] [KRELTSC: 4453853355] WHILE: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4454605218] Expected error occurred +[Hera] [HADES][TEST ] Testing WHILE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4456062870] Expected: Should error without BEGIN +[Hera] [HADES][TEST ] [KRELTSC: 4456977945] WHILE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4457928972] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4459154385] Testing word: REPEAT +[Hera] [HADES][TEST ] [KRELTSC: 4460033046] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4460836359] Running REPEAT.basic: : TEST12 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] [HADES][INFO ] [KRELTSC: 4462201653] L8[TABLE]: Config 6 → 7 regime=7 score=26214 L1=0 L2=0 L3=0 L +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4463788350] Test passed +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4465176324] Expected: Should terminate loop +[Hera] [HADES][TEST ] [KRELTSC: 4466086779] Running REPEAT.no_while: REPEAT +[Hera] [HADES][ERROR] [KRELTSC: 4467062628] REPEAT: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4467804600] Expected error occurred +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4469266326] Expected: Should error without WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4470147003] REPEAT: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4471108635] Testing word: REPEAT +[Hera] [HADES][TEST ] [KRELTSC: 4472089482] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4472850144] Running REPEAT.basic: : TEST12 BEGIN DUP 5 < WHILE 1+ REPEAT +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4474575441] Test passed +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4475951151] Expected: Should terminate loop +[Hera] [HADES][TEST ] [KRELTSC: 4476794280] Running REPEAT.no_while: REPEAT +[Hera] [HADES][ERROR] [KRELTSC: 4477653873] REPEAT: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4478396160] Expected error occurred +[Hera] [HADES][TEST ] Testing REPEAT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4479885858] Expected: Should error without WHILE +[Hera] [HADES][TEST ] [KRELTSC: 4480774410] REPEAT: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4481736294] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4482892806] Testing word: DO +[Hera] [HADES][TEST ] [KRELTSC: 4483616277] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4484707353] Running DO.basic: : TEST13 5 0 DO I . LOOP ; TEST13 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4487082831] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4488431703] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4489256982] Running DO.negative: : TEST14 -1 -5 DO I . LOOP ; TEST14 CR +[Hera] -5 -4 -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 4490898195] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4492258176] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 4493136669] Running DO.empty: : TEST15 0 0 DO LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4494196098] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4495677732] Expected: Should handle empty range +[Hera] [HADES][TEST ] [KRELTSC: 4496703288] Running DO.nested: : TEST16 3 0 DO 3 0 DO J I + . LOOP LOOP ; +[Hera] 0 1 2 1 2 3 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4498710867] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4500069126] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4500935943] DO: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4501849443] Testing word: DO +[Hera] [HADES][TEST ] [KRELTSC: 4502564682] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4503342375] Running DO.basic: : TEST13 5 0 DO I . LOOP ; TEST13 CR +[Hera] 0 1 2 3 [HADES][INFO ] [KRELTSC: 4505049150] L8[TABLE]: Config 7 → 8 regime=7 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 4506212172] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4507569759] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4508399847] Running DO.negative: : TEST14 -1 -5 DO I . LOOP ; TEST14 CR +[Hera] -5 -4 -3 -2 +[Hera] [HADES][TEST ] [KRELTSC: 4510383801] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4511757516] Expected: Should handle negative +[Hera] [HADES][TEST ] [KRELTSC: 4512615513] Running DO.empty: : TEST15 0 0 DO LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4513682838] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4515002583] Expected: Should handle empty range +[Hera] [HADES][TEST ] [KRELTSC: 4515896679] Running DO.nested: : TEST16 3 0 DO 3 0 DO J I + . LOOP LOOP ; +[Hera] 0 1 2 1 2 3 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4517756313] Test passed +[Hera] [HADES][TEST ] Testing DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4519088343] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4519947558] DO: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4520869647] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4522118454] Testing word: ?DO +[Hera] [HADES][TEST ] [KRELTSC: 4522825104] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4523606157] Running ?DO.basic: : TEST17 5 0 ?DO I . LOOP ; TEST17 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4525689924] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4527032391] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4527885789] Running ?DO.skip: : TEST18 1 1 ?DO I . LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4528985916] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4530360471] Expected: Should skip when equal +[Hera] [HADES][TEST ] [KRELTSC: 4531208640] Running ?DO.nested: : TEST19 3 0 ?DO 3 I ?DO J I + . LOOP LOO +[Hera] 0 1 2 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4532956743] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4534457319] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4535548836] ?DO: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4536515151] Testing word: ?DO +[Hera] [HADES][TEST ] [KRELTSC: 4537222179] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4537984080] Running ?DO.basic: : TEST17 5 0 ?DO I . LOOP ; TEST17 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4539609228] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4540974501] Expected: Should count 0 to 4 +[Hera] [HADES][TEST ] [KRELTSC: 4541804568] Running ?DO.skip: : TEST18 1 1 ?DO I . LOOP ; +[Hera] [HADES][TEST ] [KRELTSC: 4542918177] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4544281686] Expected: Should skip when equal +[Hera] [HADES][TEST ] [KRELTSC: 4545161334] Running ?DO.nested: : TEST19 3 0 ?DO 3 I ?DO J I + . LOOP LOO +[Hera] [HADES][INFO ] [KRELTSC: 4546446450] L8[TABLE]: Config 8 → 9 regime=7 score=6553 L1=0 L2=0 L3=0 L4 +[Hera] 0 1 2 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4548411084] Test passed +[Hera] [HADES][TEST ] Testing ?DO ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4549801851] Expected: Should handle nesting +[Hera] [HADES][TEST ] [KRELTSC: 4550714868] ?DO: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4551654471] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4552853109] Testing word: LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4553574522] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4554339426] Running LOOP.basic: : TEST20 5 0 DO I . LOOP ; TEST20 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4555966800] Test passed +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4557333249] Expected: Should increment by 1 +[Hera] [HADES][TEST ] [KRELTSC: 4558171443] Running LOOP.no_do: LOOP +[Hera] [HADES][ERROR] [KRELTSC: 4559078538] LOOP: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4560048423] Expected error occurred +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4561473588] Expected: Should error without DO +[Hera] [HADES][TEST ] [KRELTSC: 4562339649] LOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4563281037] Testing word: LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4564007049] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4564759668] Running LOOP.basic: : TEST20 5 0 DO I . LOOP ; TEST20 CR +[Hera] 0 1 2 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4566394455] Test passed +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4567763235] Expected: Should increment by 1 +[Hera] [HADES][TEST ] [KRELTSC: 4568613147] Running LOOP.no_do: LOOP +[Hera] [HADES][ERROR] [KRELTSC: 4569411756] LOOP: compile-only +[Hera] [HADES][TEST ] [KRELTSC: 4570161162] Expected error occurred +[Hera] [HADES][TEST ] Testing LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4571652330] Expected: Should error without DO +[Hera] [HADES][TEST ] [KRELTSC: 4572864051] LOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4573802604] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4574871861] Testing word: +LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4575587394] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4576374075] Running +LOOP.basic: : TEST21 10 0 DO I . 2 +LOOP ; TEST21 CR +[Hera] 0 2 4 6 8 +[Hera] [HADES][TEST ] [KRELTSC: 4578528990] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4579880739] Expected: Should count by 2 +[Hera] [HADES][TEST ] [KRELTSC: 4580712906] Running +LOOP.negative: : TEST22 0 10 DO I . -1 +LOOP ; TEST2 +[Hera] 10 9 8 7 6 5 4 3 2 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 4582580751] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4583948208] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4584972504] Running +LOOP.variable: : TEST23 10 0 DO I . DUP +LOOP ; 3 TE +[Hera] 0 3 6 9 +[Hera] [HADES][TEST ] [KRELTSC: 4586637405] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4588026513] Expected: Should use stack value +[Hera] [HADES][TEST ] [KRELTSC: 4588903662] +LOOP: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4589838225] Testing word: +LOOP +[Hera] [HADES][TEST ] [KRELTSC: 4590583158] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4591365681] Running +LOOP.basic: : TEST21 10 0 DO I . 2 +LOOP ; TEST21 CR +[Hera] [HADES][INFO ] [KRELTSC: 4592805840] L8[TABLE]: Config 9 → 10 regime=7 score=6553 L1=0 L2=0 L3=0 L +[Hera] 0 2 4 6 8 +[Hera] [HADES][TEST ] [KRELTSC: 4594278171] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4595653272] Expected: Should count by 2 +[Hera] [HADES][TEST ] [KRELTSC: 4596480588] Running +LOOP.negative: : TEST22 0 10 DO I . -1 +LOOP ; TEST2 +[Hera] 10 9 8 7 6 5 4 3 2 1 0 +[Hera] [HADES][TEST ] [KRELTSC: 4598535438] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4599930006] Expected: Should count down +[Hera] [HADES][TEST ] [KRELTSC: 4600759275] Running +LOOP.variable: : TEST23 10 0 DO I . DUP +LOOP ; 3 TE +[Hera] 0 3 6 9 +[Hera] [HADES][TEST ] [KRELTSC: 4602367413] Test passed +[Hera] [HADES][TEST ] Testing +LOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4603748499] Expected: Should use stack value +[Hera] [HADES][TEST ] [KRELTSC: 4604592216] +LOOP: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4605545994] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4606608888] Testing word: I +[Hera] [HADES][TEST ] [KRELTSC: 4607323644] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4608078132] Running I.basic: : TI 4 0 DO I . LOOP CR ; TI +[Hera] 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4609783416] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4611110007] Expected: Should print: 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4611983964] Running I.single: : TI1 1 0 DO I . LOOP CR ; TI1 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4613426286] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4614760206] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4615577463] Running I.offset: : TI2 5 3 DO I . LOOP CR ; TI2 +[Hera] 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4617029298] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4618406394] Expected: Should print: 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4619229468] Running I.in_expr: : TI3 3 0 DO I 2 * . LOOP CR ; TI3 +[Hera] 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4620806274] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4622233140] Expected: Should print: 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4623165813] I: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4624071123] Testing word: I +[Hera] [HADES][TEST ] [KRELTSC: 4624760238] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4625523798] Running I.basic: : TI 4 0 DO I . LOOP CR ; TI +[Hera] 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4627174545] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4628510166] Expected: Should print: 0 1 2 3 +[Hera] [HADES][TEST ] [KRELTSC: 4629346659] Running I.single: : TI1 1 0 DO I . LOOP CR ; TI1 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 4630942365] L8[TABLE]: Config 10 → 11 regime=7 score=6553 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 4632017817] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4633373304] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4634192850] Running I.offset: : TI2 5 3 DO I . LOOP CR ; TI2 +[Hera] 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4635927555] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4637253642] Expected: Should print: 3 4 +[Hera] [HADES][TEST ] [KRELTSC: 4638063885] Running I.in_expr: : TI3 3 0 DO I 2 * . LOOP CR ; TI3 +[Hera] 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4639604928] Test passed +[Hera] [HADES][TEST ] Testing I ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4640944560] Expected: Should print: 0 2 4 +[Hera] [HADES][TEST ] [KRELTSC: 4641820302] I: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4642696926] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4643769375] Testing word: J +[Hera] [HADES][TEST ] [KRELTSC: 4644470145] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4645278624] Running J.basic: : TJ 2 0 DO 3 0 DO J . LOOP LOOP CR ; TJ +[Hera] 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4647049155] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4648631799] Expected: Should print: 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4649526735] Running J.paired: : TJ2 2 0 DO 2 0 DO J I + . LOOP LOOP CR ; +[Hera] 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4651231725] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4652567325] Expected: Should print: 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4653417531] J: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4654321497] Testing word: J +[Hera] [HADES][TEST ] [KRELTSC: 4655011683] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4655789145] Running J.basic: : TJ 2 0 DO 3 0 DO J . LOOP LOOP CR ; TJ +[Hera] 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4657495122] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4658816400] Expected: Should print: 0 0 0 1 1 1 +[Hera] [HADES][TEST ] [KRELTSC: 4659728913] Running J.paired: : TJ2 2 0 DO 2 0 DO J I + . LOOP LOOP CR ; +[Hera] 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4661824314] Test passed +[Hera] [HADES][TEST ] Testing J ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4663151220] Expected: Should print: 0 1 1 2 +[Hera] [HADES][TEST ] [KRELTSC: 4664028348] J: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4664953041] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4666028115] Testing word: EXIT +[Hera] [HADES][TEST ] [KRELTSC: 4666747722] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4667619243] Running EXIT.early_return: : TEX 5 EXIT 99 ; TEX . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4669091973] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4670440089] Expected: Should print: 5 +[Hera] [HADES][TEST ] [KRELTSC: 4671244872] Running EXIT.cond_exit_pos: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] [HADES][INFO ] [KRELTSC: 4672630662] L8[TABLE]: Config 11 → 12 regime=7 score=6553 L1=0 L2=0 L3=0 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4674056898] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4675412490] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4676217546] Running EXIT.cond_exit_neg: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 4677802689] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4679170146] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 4679976546] Running EXIT.no_skipped: : TEX3 1 2 EXIT 3 ; TEX3 . . CR +[Hera] 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4681490562] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4682872740] Expected: Should print: 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4683696948] EXIT: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4684652175] Testing word: EXIT +[Hera] [HADES][TEST ] [KRELTSC: 4685535519] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4686311196] Running EXIT.early_return: : TEX 5 EXIT 99 ; TEX . CR +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 4687767987] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4689128745] Expected: Should print: 5 +[Hera] [HADES][TEST ] [KRELTSC: 4689934704] Running EXIT.cond_exit_pos: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4691468460] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4692808239] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4693634715] Running EXIT.cond_exit_neg: : TEX2 DUP 0> IF EXIT THEN NEGATE +[Hera] 4 +[Hera] [HADES][TEST ] [KRELTSC: 4695135837] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4696503231] Expected: Should print: 4 +[Hera] [HADES][TEST ] [KRELTSC: 4697310366] Running EXIT.no_skipped: : TEX3 1 2 EXIT 3 ; TEX3 . . CR +[Hera] 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4699069998] Test passed +[Hera] [HADES][TEST ] Testing EXIT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4700429328] Expected: Should print: 2 1 +[Hera] [HADES][TEST ] [KRELTSC: 4701262335] EXIT: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4702194336] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4703253660] Testing word: LEAVE +[Hera] [HADES][TEST ] [KRELTSC: 4704024969] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4704804489] Running LEAVE.basic: : TLV 0 5 0 DO I 3 = IF LEAVE THEN 1+ LO +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4706946783] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4708321695] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4709147373] Running LEAVE.at_start: : TLV2 0 5 0 DO LEAVE 1+ LOOP ; TLV2 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4710864270] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4712241093] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4713056880] Running LEAVE.qdloop: : TLV3 0 5 0 ?DO I 2 = IF LEAVE THEN 1+ +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 4714728060] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4716091254] Expected: Should print: 2 +[Hera] [HADES][TEST ] [KRELTSC: 4716913614] LEAVE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4717870437] Testing word: LEAVE +[Hera] [HADES][TEST ] [KRELTSC: 4718650440] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4719419943] Running LEAVE.basic: : TLV 0 5 0 DO I 3 = IF LEAVE THEN 1+ LO +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4721133228] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4722514062] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4723617633] Running LEAVE.at_start: : TLV2 0 5 0 DO LEAVE 1+ LOOP ; TLV2 +[Hera] [HADES][INFO ] [KRELTSC: 4725068355] L8[TABLE]: Config 12 → 13 regime=7 score=6553 L1=0 L2=0 L3=0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4726489614] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4727866836] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4728676680] Running LEAVE.qdloop: : TLV3 0 5 0 ?DO I 2 = IF LEAVE THEN 1+ +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 4730357289] Test passed +[Hera] [HADES][TEST ] Testing LEAVE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4731750555] Expected: Should print: 2 +[Hera] [HADES][TEST ] [KRELTSC: 4732538706] LEAVE: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4733481354] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4734545760] Testing word: UNLOOP +[Hera] [HADES][TEST ] [KRELTSC: 4735397142] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4736324544] Running UNLOOP.early_exit: : TUL 5 0 DO I 2 = IF UNLOOP 42 EX +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4738101144] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4739491848] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 4740311226] Running UNLOOP.full_loop: : TUL2 5 0 DO I 9 = IF UNLOOP 77 EX +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4741956870] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4743324936] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4744174365] UNLOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4745112582] Testing word: UNLOOP +[Hera] [HADES][TEST ] [KRELTSC: 4745867385] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4746626787] Running UNLOOP.early_exit: : TUL 5 0 DO I 2 = IF UNLOOP 42 EX +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4748352336] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4749709419] Expected: Should print: 42 +[Hera] [HADES][TEST ] [KRELTSC: 4750548264] Running UNLOOP.full_loop: : TUL2 5 0 DO I 9 = IF UNLOOP 77 EX +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4752229524] Test passed +[Hera] [HADES][TEST ] Testing UNLOOP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4753615566] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4754459640] UNLOOP: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4755417975] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4756482675] Testing word: AGAIN +[Hera] [HADES][TEST ] [KRELTSC: 4757220909] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4758002655] Running AGAIN.basic: : TAG 0 BEGIN 1+ DUP 3 = IF EXIT THEN AG +[Hera] 3 [HADES][INFO ] [KRELTSC: 4760001750] L8[TABLE]: Config 13 → 14 regime=7 score=6553 L1=0 L2=0 L3=0 + +[Hera] [HADES][TEST ] [KRELTSC: 4761101289] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4762495479] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4763324181] Running AGAIN.countdown: : CD 10 BEGIN 1- DUP 0= IF EXIT THEN +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4765048197] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4766410929] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4767244041] AGAIN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4768180557] Testing word: AGAIN +[Hera] [HADES][TEST ] [KRELTSC: 4768953504] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4769727060] Running AGAIN.basic: : TAG 0 BEGIN 1+ DUP 3 = IF EXIT THEN AG +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4771358865] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4772732937] Expected: Should print: 3 +[Hera] [HADES][TEST ] [KRELTSC: 4773825714] Running AGAIN.countdown: : CD 10 BEGIN 1- DUP 0= IF EXIT THEN +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4775609895] Test passed +[Hera] [HADES][TEST ] Testing AGAIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4776961938] Expected: Should print: 0 +[Hera] [HADES][TEST ] [KRELTSC: 4777780350] AGAIN: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4778720100] â–¶ Testing module: src/test_runner/modules/control_words_test. +[Hera] [HADES][TEST ] [KRELTSC: 4779786984] Testing word: CASE +[Hera] [HADES][TEST ] [KRELTSC: 4780522005] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4781308686] Running CASE.match_1: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 4784027997] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4785379494] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 4786450116] Running CASE.match_2: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 4788143451] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4789482684] Expected: Should print: 20 +[Hera] [HADES][TEST ] [KRELTSC: 4790321991] Running CASE.default: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 99 +[Hera] [HADES][INFO ] [KRELTSC: 4792473504] L8[TABLE]: Config 14 → 0 regime=6 score=26214 L1=0 L2=0 L3=0 +[Hera] [HADES][TEST ] [KRELTSC: 4793575290] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4794957237] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4795763826] Running CASE.zero_case: : TC CASE 0 OF 88 ENDOF 1 OF 77 ENDOF +[Hera] 88 +[Hera] [HADES][TEST ] [KRELTSC: 4797458694] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4799015193] Expected: Should print: 88 +[Hera] [HADES][TEST ] [KRELTSC: 4799835369] Running CASE.neg_case: : TC CASE -1 OF 55 ENDOF 44 SWAP ENDCA +[Hera] 55 +[Hera] [HADES][TEST ] [KRELTSC: 4801458333] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4802848239] Expected: Should print: 55 +[Hera] [HADES][TEST ] [KRELTSC: 4803718857] CASE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4804656381] Testing word: CASE +[Hera] [HADES][TEST ] [KRELTSC: 4805397051] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4806171678] Running CASE.match_1: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 10 +[Hera] [HADES][TEST ] [KRELTSC: 4807887189] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4809244209] Expected: Should print: 10 +[Hera] [HADES][TEST ] [KRELTSC: 4810067262] Running CASE.match_2: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 4811971290] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4813335492] Expected: Should print: 20 +[Hera] [HADES][TEST ] [KRELTSC: 4814144244] Running CASE.default: : TC CASE 1 OF 10 ENDOF 2 OF 20 ENDOF 9 +[Hera] 99 +[Hera] [HADES][TEST ] [KRELTSC: 4815858600] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4817230047] Expected: Should print: 99 +[Hera] [HADES][TEST ] [KRELTSC: 4818016182] Running CASE.zero_case: : TC CASE 0 OF 88 ENDOF 1 OF 77 ENDOF +[Hera] 88 +[Hera] [HADES][TEST ] [KRELTSC: 4819729992] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4821114879] Expected: Should print: 88 +[Hera] [HADES][TEST ] [KRELTSC: 4821947445] Running CASE.neg_case: : TC CASE -1 OF 55 ENDOF 44 SWAP ENDCA +[Hera] 55 +[Hera] [HADES][TEST ] [KRELTSC: 4823812140] Test passed +[Hera] [HADES][TEST ] Testing CASE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4825164183] Expected: Should print: 55 +[Hera] [HADES][TEST ] [KRELTSC: 4826009517] CASE: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4827024195] === Control Words Summary: 0 passed, 0 failed, 0 skipped, 0 err +[Hera] [HADES][INFO ] [KRELTSC: 4828098702] +[Hera] === Testing Module: StarForth Words === +[Hera] [HADES][INFO ] [KRELTSC: 4829245995] Running StarForth Words Tests (Module 17: StarForth Extensions) +[Hera] [HADES][TEST ] [KRELTSC: 4830353472] â–¶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 4831420104] Testing word: ENTROPY@ +[Hera] [HADES][TEST ] [KRELTSC: 4832194143] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4832984688] Running ENTROPY@.after_execution: : TESTWORD 1 1 + DROP ; TES +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 4834795581] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4836413820] Expected: Should show execution count > 0 +[Hera] [HADES][TEST ] [KRELTSC: 4837428351] Running ENTROPY@.zero_initial: : NEWWORD ; ' NEWWORD ENTROPY@ +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4838890161] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4840349745] Expected: Should show 0 for unused word +[Hera] [HADES][TEST ] [KRELTSC: 4841266626] Running ENTROPY@.multiple_calls: : ENTTEST 1 DROP ; ENTTEST E +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 4842801768] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4844218197] Expected: Should increment with each call +[Hera] [HADES][TEST ] [KRELTSC: 4845141987] Running ENTROPY@.null_addr: 0 ENTROPY@ +[Hera] [HADES][ERROR] [KRELTSC: 4846077684] ENTROPY@: null dictionary entry +[Hera] [HADES][TEST ] [KRELTSC: 4846924005] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4848455094] Expected: Should handle null address +[Hera] [HADES][TEST ] [KRELTSC: 4849619313] Running ENTROPY@.empty_stack: ENTROPY@ +[Hera] [HADES][ERROR] [KRELTSC: 4850565573] ENTROPY@: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4851371490] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4852870323] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4853771265] ENTROPY@: 5 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4854780966] â–¶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 4855836468] Testing word: ENTROPY! +[Hera] [HADES][TEST ] [KRELTSC: 4856588394] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4857382173] Running ENTROPY!.set_entropy: : ENTSET ; 42 ' ENTSET ENTROPY! +[Hera] 42 +[Hera] [HADES][TEST ] [KRELTSC: 4859204973] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4860583392] Expected: Should set entropy to 42 +[Hera] [HADES][TEST ] [KRELTSC: 4861773105] Running ENTROPY!.overwrite: : ENTOV ; 10 ' ENTOV ENTROPY! 20 +[Hera] [HADES][INFO ] [KRELTSC: 4863333762] L8[TABLE]: Config 0 → 14 regime=7 score=6553 L1=0 L2=0 L3=0 L +[Hera] 20 +[Hera] [HADES][TEST ] [KRELTSC: 4864795131] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4866223341] Expected: Should overwrite previous value +[Hera] [HADES][TEST ] [KRELTSC: 4867183797] Running ENTROPY!.zero_entropy: : ENTZERO ; 0 ' ENTZERO ENTROP +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 4868790990] Test passed +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4870214979] Expected: Should set entropy to 0 +[Hera] [HADES][TEST ] [KRELTSC: 4871090028] Running ENTROPY!.null_addr: 42 0 ENTROPY! +[Hera] [HADES][ERROR] [KRELTSC: 4872161994] ENTROPY!: null dictionary entry +[Hera] [HADES][TEST ] [KRELTSC: 4873004241] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4874681238] Expected: Should handle null address +[Hera] [HADES][TEST ] [KRELTSC: 4875600597] Running ENTROPY!.one_arg: 42 ENTROPY! +[Hera] [HADES][ERROR] [KRELTSC: 4876616976] ENTROPY!: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4877443347] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4878951987] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4879869288] Running ENTROPY!.empty_stack: ENTROPY! +[Hera] [HADES][ERROR] [KRELTSC: 4880770650] ENTROPY!: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4881589713] Expected error occurred +[Hera] [HADES][TEST ] Testing ENTROPY! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4883118975] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 4884031866] ENTROPY!: 6 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 4885041651] â–¶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 4886229999] Testing word: WORD-ENTROPY +[Hera] [HADES][TEST ] [KRELTSC: 4887201438] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 4887967686] Running WORD-ENTROPY.display_all: 1 DUP DUP DUP DROP DROP DRO +[Hera] Word Usage Statistics (Execution Heat Counts): + +[Hera] ============================================= + +[Hera] DEFER@: 2 + +[Hera] IS: 5 + +[Hera] DEFER: 4 + +[Hera] WORD-ENTROPY: 1 + +[Hera] ENTROPY!: 7 + +[Hera] ENTROPY@: 8 + +[Hera] ENDCASE: 10 + +[Hera] ENDOF: 18 + +[Hera] OF: 18 + +[Hera] CASE: 10 + +[Hera] EXIT: 119 + +[Hera] UNLOOP: 6 + +[Hera] J: 58 + +[Hera] I: 212 + +[Hera] LEAVE: 6 + +[Hera] +LOOP: 6 + +[Hera] LOOP: 48 + +[Hera] DO: 42 + +[Hera] ?DO: 10 + +[Hera] UNTIL: 8 + +[Hera] AGAIN: 4 + +[Hera] REPEAT: 10 + +[Hera] WHILE: 10 + +[Hera] BEGIN: 20 + +[Hera] THEN: 32 + +[Hera] ELSE: 14 + +[Hera] IF: 32 + +[Hera] (LEAVE): 6 + +[Hera] (+LOOP): 40 + +[Hera] (LOOP): 152 + +[Hera] (DO): 48 + +[Hera] (?DO): 12 + +[Hera] (0BRANCH): 142 + +[Hera] (BRANCH): 72 + +[Hera] DOES>: 3 + +[Hera] does_rt: 1 + +[Hera] LITERAL: 1 + +[Hera] LIT: 305 + +[Hera] FENCE: 3 + +[Hera] FORGET: 7 + +[Hera] ]: 3 + +[Hera] [: 4 + +[Hera] IMMEDIATE: 6 + +[Hera] CONSTANT: 4 + +[Hera] VARIABLE: 5 + +[Hera] CREATE: 23 + +[Hera] ;: 121 + +[Hera] :: 129 + +[Hera] ABORT": 3 + +[Hera] ABORT: 4 + +[Hera] QUIT: 1 + +[Hera] EXECUTE: 2 + +[Hera] ORDER: 3 + +[Hera] FORTH: 10 + +[Hera] CURRENT: 4 + +[Hera] CONTEXT: 5 + +[Hera] DEFINITIONS: 15 + +[Hera] VOCABULARY: 15 + +[Hera] ': 16 + +[Hera] FIND: 4 + +[Hera] >BODY: 2 + +[Hera] HIDDEN: 2 + +[Hera] SMUDGE: 2 + +[Hera] LATEST: 7 + +[Hera] SP@: 8 + +[Hera] SP!: 5 + +[Hera] PAD: 29 + +[Hera] 2,: 15 + +[Hera] C,: 18 + +[Hera] ,: 35 + +[Hera] ALLOT: 23 + +[Hera] ALIGN: 1 + +[Hera] HERE: 142 + +[Hera] SCR: 3 + +[Hera] THRU: 17 + +[Hera] LIST: 5 + +[Hera] LOAD: 5 + +[Hera] FLUSH: 3 + +[Hera] EMPTY-BUFFERS: 4 + +[Hera] SAVE-BUFFERS: 3 + +[Hera] UPDATE: 7 + +[Hera] BUFFER: 4 + +[Hera] BLOCK: 12 + +[Hera] SPACES: 10 + +[Hera] SPACE: 7 + +[Hera] TYPE: 43 + +[Hera] CR: 659 + +[Hera] EMIT: 15 + +[Hera] BLANK: 2 + +[Hera] SKIP: 4 + +[Hera] SCAN: 5 + +[Hera] SEARCH: 4 + +[Hera] COMPARE: 5 + +[Hera] CMOVE>: 4 + +[Hera] CMOVE: 6 + +[Hera] -TRAILING: 4 + +[Hera] LITERAL: 1 + +[Hera] [']: 3 + +[Hera] BL: 19 + +[Hera] SOURCE: 2 + +[Hera] >IN: 5 + +[Hera] S": 37 + +[Hera] (s"): 4 + +[Hera] WORD: 15 + +[Hera] SPAN: 4 + +[Hera] EXPECT: 4 + +[Hera] COUNT: 14 + +[Hera] OCTAL: 6 + +[Hera] HEX: 7 + +[Hera] DECIMAL: 14 + +[Hera] BASE: 9 + +[Hera] SIGN: 3 + +[Hera] HOLD: 2 + +[Hera] #>: 16 + +[Hera] #S: 11 + +[Hera] #: 5 + +[Hera] <#: 17 + +[Hera] .: 901 + +[Hera] D2/: 5 + +[Hera] D2*: 5 + +[Hera] D0<: 7 + +[Hera] D0=: 7 + +[Hera] 2R@: 3 + +[Hera] 2R>: 7 + +[Hera] 2>R: 7 + +[Hera] 2ROT: 6 + +[Hera] 2OVER: 6 + +[Hera] 2SWAP: 7 + +[Hera] 2DUP: 6 + +[Hera] 2DROP: 6 + +[Hera] D=: 7 + +[Hera] D<: 8 + +[Hera] DMIN: 6 + +[Hera] DMAX: 6 + +[Hera] DABS: 7 + +[Hera] DNEGATE: 6 + +[Hera] D-: 8 + +[Hera] D+: 7 + +[Hera] S>D: 7 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] M/MOD: 7 + +[Hera] M*: 8 + +[Hera] M+: 7 + +[Hera] FALSE: 18 + +[Hera] TRUE: 30 + +[Hera] WITHIN: 31 + +[Hera] U>: 25 + +[Hera] U<: 25 + +[Hera] <=: 31 + +[Hera] >=: 31 + +[Hera] >: 1 + +[Hera] <: 42 + +[Hera] =: 92 + +[Hera] 0<>: 22 + +[Hera] 0>: 27 + +[Hera] 0<: 12 + +[Hera] 0=: 47 + +[Hera] NOT: 1 + +[Hera] OR: 6 + +[Hera] AND: 7 + +[Hera] NEGATE: 6 + +[Hera] ABS: 1 + +[Hera] 1-: 36 + +[Hera] 1+: 80 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] /: 1 + +[Hera] *: 8 + +[Hera] -: 30 + +[Hera] +: 51 + +[Hera] CELLS: 14 + +[Hera] 2@: 4 + +[Hera] C!: 5 + +[Hera] C@: 9 + +[Hera] !: 15 + +[Hera] @: 39 + +[Hera] R>: 5 + +[Hera] >R: 7 + +[Hera] DEPTH: 15 + +[Hera] OVER: 22 + +[Hera] SWAP: 41 + +[Hera] DUP: 144 + +[Hera] DROP: 51 + +[Hera] ------------------------------------- + +[Hera] Total executions: 5332 + +[Hera] Total words: 467 + +[Hera] Average executions per word: 11 + +[Hera] [HADES][TEST ] [KRELTSC: 4954702662] Test passed +[Hera] [HADES][TEST ] Testing WORD-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 4956679308] Expected: Should display all word entropy stats +[Hera] [HADES][TEST ] [KRELTSC: 4957971942] Running WORD-ENTROPY.after_execution: : WDENT 1 2 + DROP ; WD +[Hera] Word Usage Statistics (Execution Heat Counts): + +[Hera] ============================================= + +[Hera] WDENT: 2 + +[Hera] DEFER@: 2 + +[Hera] IS: 5 + +[Hera] DEFER: 4 + +[Hera] WORD-ENTROPY: 2 + +[Hera] ENTROPY!: 7 + +[Hera] ENTROPY@: 8 + +[Hera] ENDCASE: 10 + +[Hera] ENDOF: 18 + +[Hera] OF: 18 + +[Hera] CASE: 10 + +[Hera] EXIT: 121 + +[Hera] UNLOOP: 6 + +[Hera] J: 58 + +[Hera] I: 212 + +[Hera] LEAVE: 6 + +[Hera] +LOOP: 6 + +[Hera] LOOP: 48 + +[Hera] DO: 42 + +[Hera] ?DO: 10 + +[Hera] UNTIL: 8 + +[Hera] AGAIN: 4 + +[Hera] REPEAT: 10 + +[Hera] WHILE: 10 + +[Hera] BEGIN: 20 + +[Hera] THEN: 32 + +[Hera] ELSE: 14 + +[Hera] IF: 32 + +[Hera] (LEAVE): 6 + +[Hera] (+LOOP): 40 + +[Hera] (LOOP): 152 + +[Hera] (DO): 48 + +[Hera] (?DO): 12 + +[Hera] (0BRANCH): 142 + +[Hera] (BRANCH): 72 + +[Hera] DOES>: 3 + +[Hera] does_rt: 1 + +[Hera] LITERAL: 1 + +[Hera] LIT: 309 + +[Hera] FENCE: 3 + +[Hera] FORGET: 7 + +[Hera] ]: 3 + +[Hera] [: 4 + +[Hera] IMMEDIATE: 6 + +[Hera] CONSTANT: 4 + +[Hera] VARIABLE: 5 + +[Hera] CREATE: 23 + +[Hera] ;: 122 + +[Hera] :: 130 + +[Hera] ABORT": 3 + +[Hera] ABORT: 4 + +[Hera] QUIT: 1 + +[Hera] EXECUTE: 2 + +[Hera] ORDER: 3 + +[Hera] FORTH: 10 + +[Hera] CURRENT: 4 + +[Hera] CONTEXT: 5 + +[Hera] DEFINITIONS: 15 + +[Hera] VOCABULARY: 15 + +[Hera] ': 16 + +[Hera] FIND: 4 + +[Hera] >BODY: 2 + +[Hera] HIDDEN: 2 + +[Hera] SMUDGE: 2 + +[Hera] LATEST: 7 + +[Hera] SP@: 8 + +[Hera] SP!: 5 + +[Hera] PAD: 29 + +[Hera] 2,: 15 + +[Hera] C,: 18 + +[Hera] ,: 35 + +[Hera] ALLOT: 23 + +[Hera] ALIGN: 1 + +[Hera] HERE: 142 + +[Hera] SCR: 3 + +[Hera] THRU: 17 + +[Hera] LIST: 5 + +[Hera] LOAD: 5 + +[Hera] FLUSH: 3 + +[Hera] EMPTY-BUFFERS: 4 + +[Hera] SAVE-BUFFERS: 3 + +[Hera] UPDATE: 7 + +[Hera] BUFFER: 4 + +[Hera] BLOCK: 12 + +[Hera] SPACES: 10 + +[Hera] SPACE: 7 + +[Hera] TYPE: 43 + +[Hera] CR: 659 + +[Hera] EMIT: 15 + +[Hera] BLANK: 2 + +[Hera] SKIP: 4 + +[Hera] SCAN: 5 + +[Hera] SEARCH: 4 + +[Hera] COMPARE: 5 + +[Hera] CMOVE>: 4 + +[Hera] CMOVE: 6 + +[Hera] -TRAILING: 4 + +[Hera] LITERAL: 1 + +[Hera] [']: 3 + +[Hera] BL: 19 + +[Hera] SOURCE: 2 + +[Hera] >IN: 5 + +[Hera] S": 37 + +[Hera] (s"): 4 + +[Hera] WORD: 15 + +[Hera] SPAN: 4 + +[Hera] EXPECT: 4 + +[Hera] COUNT: 14 + +[Hera] OCTAL: 6 + +[Hera] HEX: 7 + +[Hera] DECIMAL: 14 + +[Hera] BASE: 9 + +[Hera] SIGN: 3 + +[Hera] HOLD: 2 + +[Hera] #>: 16 + +[Hera] #S: 11 + +[Hera] #: 5 + +[Hera] <#: 17 + +[Hera] .: 901 + +[Hera] D2/: 5 + +[Hera] D2*: 5 + +[Hera] D0<: 7 + +[Hera] D0=: 7 + +[Hera] 2R@: 3 + +[Hera] 2R>: 7 + +[Hera] 2>R: 7 + +[Hera] 2ROT: 6 + +[Hera] 2OVER: 6 + +[Hera] 2SWAP: 7 + +[Hera] 2DUP: 6 + +[Hera] 2DROP: 6 + +[Hera] D=: 7 + +[Hera] D<: 8 + +[Hera] DMIN: 6 + +[Hera] DMAX: 6 + +[Hera] DABS: 7 + +[Hera] DNEGATE: 6 + +[Hera] D-: 8 + +[Hera] D+: 7 + +[Hera] S>D: 7 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] M/MOD: 7 + +[Hera] M*: 8 + +[Hera] M+: 7 + +[Hera] FALSE: 18 + +[Hera] TRUE: 30 + +[Hera] WITHIN: 31 + +[Hera] U>: 25 + +[Hera] U<: 25 + +[Hera] <=: 31 + +[Hera] >=: 31 + +[Hera] >: 1 + +[Hera] <: 42 + +[Hera] =: 92 + +[Hera] 0<>: 22 + +[Hera] 0>: 27 + +[Hera] 0<: 12 + +[Hera] 0=: 47 + +[Hera] NOT: 1 + +[Hera] OR: 6 + +[Hera] AND: 7 + +[Hera] NEGATE: 6 + +[Hera] ABS: 1 + +[Hera] 1-: 36 + +[Hera] 1+: 80 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] /: 1 + +[Hera] *: 8 + +[Hera] -: 30 + +[Hera] +: 54 + +[Hera] CELLS: 14 + +[Hera] 2@: 4 + +[Hera] C!: 5 + +[Hera] C@: 9 + +[Hera] !: 15 + +[Hera] @: 39 + +[Hera] R>: 5 + +[Hera] >R: 7 + +[Hera] DEPTH: 15 + +[Hera] OVER: 22 + +[Hera] SWAP: 41 + +[Hera] DUP: 144 + +[Hera] DROP: 54 + +[Hera] ------------------------------------- + +[Hera] Total executions: 5349 + +[Hera] Total words: 468 + +[Hera] Average executions per word: 11 + +[Hera] [HADES][TEST ] [KRELTSC: 5021387889] Test passed +[Hera] [HADES][TEST ] Testing WORD-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5022854340] Expected: Should show defined word entropy +[Hera] [HADES][TEST ] [KRELTSC: 5023784325] Running WORD-ENTROPY.stack_preserved: DEPTH WORD-ENTROPY DEPT +[Hera] Word Usage Statistics (Execution Heat Counts): + +[Hera] ============================================= + +[Hera] WDENT: 2 + +[Hera] DEFER@: 2 + +[Hera] IS: 5 + +[Hera] DEFER: 4 + +[Hera] WORD-ENTROPY: 3 + +[Hera] ENTROPY!: 7 + +[Hera] ENTROPY@: 8 + +[Hera] ENDCASE: 10 + +[Hera] ENDOF: 18 + +[Hera] OF: 18 + +[Hera] CASE: 10 + +[Hera] EXIT: 121 + +[Hera] UNLOOP: 6 + +[Hera] J: 58 + +[Hera] I: 212 + +[Hera] LEAVE: 6 + +[Hera] +LOOP: 6 + +[Hera] LOOP: 48 + +[Hera] DO: 42 + +[Hera] ?DO: 10 + +[Hera] UNTIL: 8 + +[Hera] AGAIN: 4 + +[Hera] REPEAT: 10 + +[Hera] WHILE: 10 + +[Hera] BEGIN: 20 + +[Hera] THEN: 32 + +[Hera] ELSE: 14 + +[Hera] IF: 32 + +[Hera] (LEAVE): 6 + +[Hera] (+LOOP): 40 + +[Hera] (LOOP): 152 + +[Hera] (DO): 48 + +[Hera] (?DO): 12 + +[Hera] (0BRANCH): 142 + +[Hera] (BRANCH): 72 + +[Hera] DOES>: 3 + +[Hera] does_rt: 1 + +[Hera] LITERAL: 1 + +[Hera] LIT: 309 + +[Hera] FENCE: 3 + +[Hera] FORGET: 7 + +[Hera] ]: 3 + +[Hera] [: 4 + +[Hera] IMMEDIATE: 6 + +[Hera] CONSTANT: 4 + +[Hera] VARIABLE: 5 + +[Hera] CREATE: 23 + +[Hera] ;: 122 + +[Hera] :: 130 + +[Hera] ABORT": 3 + +[Hera] ABORT: 4 + +[Hera] QUIT: 1 + +[Hera] EXECUTE: 2 + +[Hera] ORDER: 3 + +[Hera] FORTH: 10 + +[Hera] CURRENT: 4 + +[Hera] CONTEXT: 5 + +[Hera] DEFINITIONS: 15 + +[Hera] VOCABULARY: 15 + +[Hera] ': 16 + +[Hera] FIND: 4 + +[Hera] >BODY: 2 + +[Hera] HIDDEN: 2 + +[Hera] SMUDGE: 2 + +[Hera] LATEST: 7 + +[Hera] SP@: 8 + +[Hera] SP!: 5 + +[Hera] PAD: 29 + +[Hera] 2,: 15 + +[Hera] C,: 18 + +[Hera] ,: 35 + +[Hera] ALLOT: 23 + +[Hera] ALIGN: 1 + +[Hera] HERE: 142 + +[Hera] SCR: 3 + +[Hera] THRU: 17 + +[Hera] LIST: 5 + +[Hera] LOAD: 5 + +[Hera] FLUSH: 3 + +[Hera] EMPTY-BUFFERS: 4 + +[Hera] SAVE-BUFFERS: 3 + +[Hera] UPDATE: 7 + +[Hera] BUFFER: 4 + +[Hera] BLOCK: 12 + +[Hera] SPACES: 10 + +[Hera] SPACE: 7 + +[Hera] TYPE: 43 + +[Hera] CR: 659 + +[Hera] EMIT: 15 + +[Hera] BLANK: 2 + +[Hera] SKIP: 4 + +[Hera] SCAN: 5 + +[Hera] SEARCH: 4 + +[Hera] COMPARE: 5 + +[Hera] CMOVE>: 4 + +[Hera] CMOVE: 6 + +[Hera] -TRAILING: 4 + +[Hera] LITERAL: 1 + +[Hera] [']: 3 + +[Hera] BL: 19 + +[Hera] SOURCE: 2 + +[Hera] >IN: 5 + +[Hera] S": 37 + +[Hera] (s"): 4 + +[Hera] WORD: 15 + +[Hera] SPAN: 4 + +[Hera] EXPECT: 4 + +[Hera] COUNT: 14 + +[Hera] OCTAL: 6 + +[Hera] HEX: 7 + +[Hera] DECIMAL: 14 + +[Hera] BASE: 9 + +[Hera] SIGN: 3 + +[Hera] HOLD: 2 + +[Hera] #>: 16 + +[Hera] #S: 11 + +[Hera] #: 5 + +[Hera] <#: 17 + +[Hera] .: 901 + +[Hera] D2/: 5 + +[Hera] D2*: 5 + +[Hera] D0<: 7 + +[Hera] D0=: 7 + +[Hera] 2R@: 3 + +[Hera] 2R>: 7 + +[Hera] 2>R: 7 + +[Hera] 2ROT: 6 + +[Hera] 2OVER: 6 + +[Hera] 2SWAP: 7 + +[Hera] 2DUP: 6 + +[Hera] 2DROP: 6 + +[Hera] D=: 7 + +[Hera] D<: 8 + +[Hera] DMIN: 6 + +[Hera] DMAX: 6 + +[Hera] DABS: 7 + +[Hera] DNEGATE: 6 + +[Hera] D-: 8 + +[Hera] D+: 7 + +[Hera] S>D: 7 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] M/MOD: 7 + +[Hera] M*: 8 + +[Hera] M+: 7 + +[Hera] FALSE: 18 + +[Hera] TRUE: 30 + +[Hera] WITHIN: 31 + +[Hera] U>: 25 + +[Hera] U<: 25 + +[Hera] <=: 31 + +[Hera] >=: 31 + +[Hera] >: 1 + +[Hera] <: 42 + +[Hera] =: 92 + +[Hera] 0<>: 22 + +[Hera] 0>: 27 + +[Hera] 0<: 12 + +[Hera] 0=: 47 + +[Hera] NOT: 1 + +[Hera] OR: 6 + +[Hera] AND: 7 + +[Hera] NEGATE: 6 + +[Hera] ABS: 1 + +[Hera] 1-: 36 + +[Hera] 1+: 80 + +[Hera] */MOD: 8 + +[Hera] */: 10 + +[Hera] /: 1 + +[Hera] *: 8 + +[Hera] -: 30 + +[Hera] +: 54 + +[Hera] CELLS: 14 + +[Hera] 2@: 4 + +[Hera] C!: 5 + +[Hera] C@: 9 + +[Hera] !: 15 + +[Hera] @: 39 + +[Hera] R>: 5 + +[Hera] >R: 7 + +[Hera] DEPTH: 16 + +[Hera] OVER: 22 + +[Hera] SWAP: 41 + +[Hera] DUP: 144 + +[Hera] DROP: 54 + +[Hera] ------------------------------------- + +[Hera] Total executions: 5351 + +[Hera] Total words: 468 + +[Hera] Average executions per word: 11 + +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5086123497] Test passed +[Hera] [HADES][TEST ] Testing WORD-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5087788923] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 5088686757] WORD-ENTROPY: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5089701183] â–¶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5090779869] Testing word: RESET-ENTROPY +[Hera] [HADES][TEST ] [KRELTSC: 5091589671] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5092359174] Running RESET-ENTROPY.reset_defined: : RESETTEST 1 DROP ; RES +[Hera] [HADES][TEST ] [KRELTSC: 5093995977] Test passed +[Hera] [HADES][TEST ] Testing RESET-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5095416543] Expected: Should reset all entropy counters +[Hera] [HADES][TEST ] [KRELTSC: 5096392560] Running RESET-ENTROPY.double_reset: RESET-ENTROPY RESET-ENTRO +[Hera] [HADES][TEST ] [KRELTSC: 5097507891] Test passed +[Hera] [HADES][TEST ] Testing RESET-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5098934883] Expected: Should handle multiple resets +[Hera] [HADES][TEST ] [KRELTSC: 5099866212] Running RESET-ENTROPY.after_usage: 1 DUP DUP DUP DROP DROP DR +[Hera] [HADES][TEST ] [KRELTSC: 5101255152] Test passed +[Hera] [HADES][TEST ] Testing RESET-ENTROPY ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5102690376] Expected: Should reset after word usage +[Hera] [HADES][TEST ] [KRELTSC: 5103622587] RESET-ENTROPY: 3 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5104642347] â–¶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5105728215] Testing word: TOP-WORDS +[Hera] [HADES][TEST ] [KRELTSC: 5106503556] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5107277742] Running TOP-WORDS.display_top5: : TOPTEST 1 DROP ; TOPTEST TO +[Hera] Top 5 most frequently used words: + +[Hera] ================================== + +[Hera] 1. DROP: 6 + +[Hera] 2. TOPTEST: 5 + +[Hera] 3. EXIT: 5 + +[Hera] 4. LIT: 5 + +[Hera] 5. TOP-WORDS: 1 + +[Hera] [HADES][TEST ] [KRELTSC: 5111761053] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5113415580] Expected: Should display top 5 hot words +[Hera] [HADES][TEST ] [KRELTSC: 5114325153] Running TOP-WORDS.display_top10: 10 TOP-WORDS +[Hera] Top 10 most frequently used words: + +[Hera] ================================== + +[Hera] 1. DROP: 6 + +[Hera] 2. TOPTEST: 5 + +[Hera] 3. EXIT: 5 + +[Hera] 4. LIT: 5 + +[Hera] 5. TOP-WORDS: 2 + +[Hera] 6. ;: 1 + +[Hera] 7. :: 1 + +[Hera] [HADES][TEST ] [KRELTSC: 5118679881] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5120084802] Expected: Should display top 10 words +[Hera] [HADES][TEST ] [KRELTSC: 5121004287] Running TOP-WORDS.after_reset: RESET-ENTROPY 5 TOP-WORDS +[Hera] Top 5 most frequently used words: + +[Hera] ================================== + +[Hera] 1. TOP-WORDS: 1 + +[Hera] [HADES][TEST ] [KRELTSC: 5123495643] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5124908103] Expected: Should handle display after reset +[Hera] [HADES][TEST ] [KRELTSC: 5126155923] Running TOP-WORDS.single_word: 1 TOP-WORDS +[Hera] Top 1 most frequently used words: + +[Hera] ================================== + +[Hera] 1. TOP-WORDS: 2 + +[Hera] [HADES][TEST ] [KRELTSC: 5128524786] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5129942307] Expected: Should display top 1 word +[Hera] [HADES][TEST ] [KRELTSC: 5130836718] Running TOP-WORDS.large_count: 100 TOP-WORDS +[Hera] Top 100 most frequently used words: + +[Hera] ================================== + +[Hera] 1. TOP-WORDS: 3 + +[Hera] [HADES][TEST ] [KRELTSC: 5133169041] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5134624194] Expected: Should handle large count +[Hera] [HADES][TEST ] [KRELTSC: 5135520348] Running TOP-WORDS.zero_count: 0 TOP-WORDS +[Hera] TOP-WORDS: invalid count 0 + +[Hera] [HADES][TEST ] [KRELTSC: 5136980667] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5138668962] Expected: Should handle zero count +[Hera] [HADES][TEST ] [KRELTSC: 5139549429] Running TOP-WORDS.negative_count: -5 TOP-WORDS +[Hera] TOP-WORDS: invalid count -5 + +[Hera] [HADES][TEST ] [KRELTSC: 5141035935] Test passed +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5142440919] Expected: Should handle negative count +[Hera] [HADES][TEST ] [KRELTSC: 5143350597] Running TOP-WORDS.empty_stack: TOP-WORDS +[Hera] [HADES][ERROR] [KRELTSC: 5144300196] TOP-WORDS: data stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 5145120960] Expected error occurred +[Hera] [HADES][TEST ] Testing TOP-WORDS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5146614564] Expected: Should cause stack underflow +[Hera] [HADES][TEST ] [KRELTSC: 5147527581] TOP-WORDS: 8 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5148515127] â–¶ Testing module: src/test_runner/modules/starforth_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5149576992] Testing word: (- +[Hera] [HADES][TEST ] [KRELTSC: 5150381334] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5151383685] Running (-.comment_line: (- This is a comment +[Hera] 1 2 + . CR +[Hera] [HADES][WARN ] [KRELTSC: 5152862547] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5153669451] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5155054107] Expected: Should ignore rest of line +[Hera] [HADES][TEST ] [KRELTSC: 5155950639] Running (-.mid_line: 1 (- comment here +[Hera] 2 + . CR +[Hera] [HADES][WARN ] [KRELTSC: 5157164187] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5157953640] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5159353899] Expected: Should work mid-expression +[Hera] [HADES][TEST ] [KRELTSC: 5160226512] Running (-.no_stack_effect: DEPTH (- comment +[Hera] DEPTH = . CR +[Hera] [HADES][WARN ] [KRELTSC: 5161523535] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5162308305] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5163914595] Expected: Should not affect stack +[Hera] [HADES][TEST ] [KRELTSC: 5164808943] Running (-.multiple: 1 (- first +[Hera] 2 (- second +[Hera] + . CR +[Hera] [HADES][WARN ] [KRELTSC: 5166292866] (- comment not terminated +[Hera] [HADES][TEST ] [KRELTSC: 5167082718] Test passed +[Hera] [HADES][TEST ] Testing (- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5168426823] Expected: Should handle multiple comments +[Hera] [HADES][TEST ] [KRELTSC: 5169385641] (-: 4 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5170333476] === StarForth Words Summary: 0 passed, 0 failed, 0 skipped, 0 e +[Hera] [HADES][INFO ] [KRELTSC: 5171429088] +[Hera] === Testing Module: ACL Words === +[Hera] [HADES][INFO ] [KRELTSC: 5172536145] Running ACL Words Tests (Module 24)... +[Hera] [HADES][WARN ] [KRELTSC: 5175506595] ACL: denied '__acl_deny_test__' +[Hera] [HADES][INFO ] [KRELTSC: 5177026365] SKIP: STRICT mode test (ACL.4th not loaded) +[Hera] [HADES][INFO ] [KRELTSC: 5178146904] SKIP: ACL-TTL-COMPUTE (ACL.4th not loaded) +[Hera] [HADES][WARN ] [KRELTSC: 5179230315] vm_create_word: cannot shadow pinned word '__acl_shadow_target_ +[Hera] [HADES][TEST ] [KRELTSC: 5182329915] === ACL Words Summary: 29 passed, 0 failed, 0 skipped, 0 errors +[Hera] [HADES][INFO ] [KRELTSC: 5183437035] +[Hera] === Testing Module: Mama FORTH Words === +[Hera] [HADES][INFO ] [KRELTSC: 5184589788] Running Mama FORTH Words Tests (Capsule System M7.1)... +[Hera] [HADES][TEST ] [KRELTSC: 5185637079] Testing word: CAPSULE-COUNT +[Hera] [HADES][TEST ] [KRELTSC: 5186341083] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5186987463] CAPSULE-COUNT: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5188199268] Testing word: CAPSULE@ +[Hera] [HADES][TEST ] [KRELTSC: 5189108211] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5189870973] CAPSULE@: 0 passed, 0 failed, 3 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5190850854] Testing word: CAPSULE-FLAGS@ +[Hera] [HADES][TEST ] [KRELTSC: 5191641798] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5192418861] CAPSULE-FLAGS@: 0 passed, 0 failed, 3 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5193418251] Testing word: CAPSULE-LEN@ +[Hera] [HADES][TEST ] [KRELTSC: 5194220136] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5195007006] CAPSULE-LEN@: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5195978634] Testing word: CAPSULE-HASH@ +[Hera] [HADES][TEST ] [KRELTSC: 5196784362] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5197563231] CAPSULE-HASH@: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5198586183] Testing word: MAMA-VM-ID +[Hera] [HADES][TEST ] [KRELTSC: 5199348189] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5200129851] MAMA-VM-ID: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5201358540] Testing word: VM-COUNT +[Hera] [HADES][TEST ] [KRELTSC: 5202133041] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5202935787] VM-COUNT: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5203912392] Testing word: CAPSULE-BIRTH +[Hera] [HADES][TEST ] [KRELTSC: 5204720304] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5205506040] CAPSULE-BIRTH: 0 passed, 0 failed, 2 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5206506102] Testing word: CAPSULE-RUN +[Hera] [HADES][TEST ] [KRELTSC: 5207290200] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5208055440] CAPSULE-RUN: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5209050609] Testing word: CAPSULE-TEST +[Hera] [HADES][TEST ] [KRELTSC: 5209836072] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5210595537] CAPSULE-TEST: 0 passed, 0 failed, 1 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5211629514] === Mama FORTH Words Summary: 0 passed, 0 failed, 0 skipped, 0 +[Hera] [HADES][INFO ] [KRELTSC: 5212681551] +[Hera] === Testing Module: Q48.16 Words === +[Hera] [HADES][INFO ] [KRELTSC: 5214152664] Running Q48.16 Words Tests (Module 25)... +[Hera] [HADES][TEST ] [KRELTSC: 5215083930] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5216142309] Testing word: Q.+ +[Hera] [HADES][TEST ] [KRELTSC: 5216847027] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5217616698] Running Q.+.basic: 1 Q.FROM-INT 2 Q.FROM-INT Q.+ Q.TO-INT . C +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5219137266] Test passed +[Hera] [HADES][TEST ] Testing Q.+ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5220544329] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5222940345] Q.+: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5223913926] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5224967328] Testing word: Q.- +[Hera] [HADES][TEST ] [KRELTSC: 5225807307] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5226787230] Running Q.-.basic: 5 Q.FROM-INT 2 Q.FROM-INT Q.- Q.TO-INT . C +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5228251896] Test passed +[Hera] [HADES][TEST ] Testing Q.- ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5229599592] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][INFO ] [KRELTSC: 5231505783] L8[TABLE]: Config 14 → 0 regime=3 score=26214 L1=0 L2=0 L3=0 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5233206279] Q.-: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5234163816] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5235215790] Testing word: Q.* +[Hera] [HADES][TEST ] [KRELTSC: 5235920403] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5236705635] Running Q.*.basic: 3 Q.FROM-INT 4 Q.FROM-INT Q.* Q.TO-INT . C +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 5238345399] Test passed +[Hera] [HADES][TEST ] Testing Q.* ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5239691919] Expected: Should print: 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] 12 +[Hera] [HADES][TEST ] [KRELTSC: 5242063470] Q.*: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5243052969] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5244100491] Testing word: Q./ +[Hera] [HADES][TEST ] [KRELTSC: 5244834126] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5245608480] Running Q./.basic: 10 Q.FROM-INT 2 Q.FROM-INT Q./ Q.TO-INT . +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 5247114159] Test passed +[Hera] [HADES][TEST ] Testing Q./ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5248481784] Expected: Should print: 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] 5 +[Hera] [HADES][TEST ] [KRELTSC: 5250856737] Running Q./.by_zero: 5 Q.FROM-INT 0 Q.FROM-INT Q./ Q.TO-INT . +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5252585688] Test passed +[Hera] [HADES][TEST ] Testing Q./ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5253967068] Expected: Should print: 0 (division by zero yields q=0) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5256564348] Q./: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5257492842] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5258525958] Testing word: Q.ABS +[Hera] [HADES][TEST ] [KRELTSC: 5259286746] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5260048164] Running Q.ABS.basic: 3 Q.FROM-INT Q.NEG Q.ABS Q.TO-INT . CR +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5261516631] Test passed +[Hera] [HADES][TEST ] Testing Q.ABS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5262872811] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5265361143] Q.ABS: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5266313934] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5267358894] Testing word: Q.NEG +[Hera] [HADES][TEST ] [KRELTSC: 5268114747] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5268883641] Running Q.NEG.basic: 5 Q.FROM-INT Q.NEG Q.TO-INT . CR +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 5270215461] Test passed +[Hera] [HADES][TEST ] Testing Q.NEG ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5271641466] Expected: Should print: -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] -5 +[Hera] [HADES][TEST ] [KRELTSC: 5274007095] Q.NEG: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5274951780] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5276181162] Testing word: Q.LOG +[Hera] [HADES][TEST ] [KRELTSC: 5277037584] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5277811371] Running Q.LOG.of_one: Q.1 Q.LOG Q.TO-INT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5279218014] Test passed +[Hera] [HADES][TEST ] Testing Q.LOG ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5280576693] Expected: Should print: 0 (ln 1.0 = 0) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][INFO ] [KRELTSC: 5282437692] L8[TABLE]: Config 0 → 1 regime=3 score=26214 L1=0 L2=0 L3=0 L +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5284152531] Q.LOG: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5285107485] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5286175524] Testing word: Q.EXP +[Hera] [HADES][TEST ] [KRELTSC: 5286953028] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5287730511] Running Q.EXP.of_zero: Q.0 Q.EXP Q.TO-INT . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5289240579] Test passed +[Hera] [HADES][TEST ] Testing Q.EXP ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5290652703] Expected: Should print: 1 (e^0 = 1) +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5293009953] Q.EXP: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5293939182] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5295038427] Testing word: Q.SQRT +[Hera] [HADES][TEST ] [KRELTSC: 5295768408] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5296535601] Running Q.SQRT.of_four: 4 Q.FROM-INT Q.SQRT Q.TO-INT . CR +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 5298077253] Test passed +[Hera] [HADES][TEST ] Testing Q.SQRT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5299491498] Expected: Should print: 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] 2 +[Hera] [HADES][TEST ] [KRELTSC: 5302017000] Q.SQRT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5302971891] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5304045684] Testing word: Q.SIN +[Hera] [HADES][TEST ] [KRELTSC: 5304820122] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5305596786] Running Q.SIN.of_zero: Q.0 Q.SIN Q.TO-INT . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5307058512] Test passed +[Hera] [HADES][TEST ] Testing Q.SIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5308431933] Expected: Should print: 0 (sin 0 = 0) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5311007499] Q.SIN: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5311979442] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5313012978] Testing word: Q.COS +[Hera] [HADES][TEST ] [KRELTSC: 5313871752] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5314928178] Running Q.COS.of_zero: Q.0 Q.COS Q.TO-INT . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5316513174] Test passed +[Hera] [HADES][TEST ] Testing Q.COS ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5317906923] Expected: Should print: 1 (cos 0 = 1) +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5320278789] Q.COS: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5321211525] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5322274041] Testing word: Q.FROM-INT +[Hera] [HADES][TEST ] [KRELTSC: 5323047807] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5323840620] Running Q.FROM-INT.round_trip: 7 Q.FROM-INT Q.TO-INT . CR +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5325210219] Test passed +[Hera] [HADES][TEST ] Testing Q.FROM-INT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5326830012] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5329132515] Q.FROM-INT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5330124366] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5331184782] Testing word: Q.TO-INT +[Hera] [HADES][TEST ] [KRELTSC: 5331946053] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5332715304] Running Q.TO-INT.of_one: Q.1 Q.TO-INT . CR +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5333920011] Test passed +[Hera] [HADES][TEST ] Testing Q.TO-INT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5335336461] Expected: Should print: 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] 1 +[Hera] [HADES][TEST ] [KRELTSC: 5337555279] Q.TO-INT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5338530750] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5339796462] Testing word: Q.1 +[Hera] [HADES][TEST ] [KRELTSC: 5340513150] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5341280301] Running Q.1.raw_value: Q.1 . CR +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5342445843] Test passed +[Hera] [HADES][TEST ] Testing Q.1 ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5343790641] Expected: Should print: 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5346186825] Q.1: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5347142367] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5348157969] Testing word: Q.0 +[Hera] [HADES][TEST ] [KRELTSC: 5348868084] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5349669339] Running Q.0.raw_value: Q.0 . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5350784691] Test passed +[Hera] [HADES][TEST ] Testing Q.0 ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5352375063] Expected: Should print: 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5354611731] Q.0: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5355583548] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5356649403] Testing word: Q.SCALE +[Hera] [HADES][TEST ] [KRELTSC: 5357396373] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5358219342] Running Q.SCALE.raw_value: Q.SCALE . CR +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5359471278] Test passed +[Hera] [HADES][TEST ] Testing Q.SCALE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5360872293] Expected: Should print: 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] 65536 +[Hera] [HADES][TEST ] [KRELTSC: 5363253882] Q.SCALE: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5364414174] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5365442460] Testing word: Q.= +[Hera] [HADES][TEST ] [KRELTSC: 5366190459] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5366958576] Running Q.=.equal: Q.1 Q.1 Q.= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5368249257] Test passed +[Hera] [HADES][TEST ] Testing Q.= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5369588931] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 [HADES][INFO ] [KRELTSC: 5371080120] L8[TABLE]: Config 1 → 2 regime=3 score=26214 L1=0 L2=0 L3=0 L + +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5372891958] Running Q.=.not_equal: Q.1 Q.0 Q.= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5374079571] Test passed +[Hera] [HADES][TEST ] Testing Q.= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5375459859] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5377964739] Q.=: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5378905371] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5379944955] Testing word: Q.< +[Hera] [HADES][TEST ] [KRELTSC: 5380678380] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5381448681] Running Q.<.true: Q.0 Q.1 Q.< . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5382676509] Test passed +[Hera] [HADES][TEST ] Testing Q.< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5384035818] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5386400649] Running Q.<.false: Q.1 Q.0 Q.< . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5387569908] Test passed +[Hera] [HADES][TEST ] Testing Q.< ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5388966471] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5391498756] Q.<: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5392426557] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5393510094] Testing word: Q.> +[Hera] [HADES][TEST ] [KRELTSC: 5394222435] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5394977448] Running Q.>.true: Q.1 Q.0 Q.> . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5396216952] Test passed +[Hera] [HADES][TEST ] Testing Q.> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5397556332] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5399914590] Running Q.>.false: Q.0 Q.1 Q.> . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5401066251] Test passed +[Hera] [HADES][TEST ] Testing Q.> ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5402600406] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5404950642] Q.>: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5405888838] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5406937641] Testing word: Q.0= +[Hera] [HADES][TEST ] [KRELTSC: 5407659327] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5408444664] Running Q.0=.true: Q.0 Q.0= . CR +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5409634524] Test passed +[Hera] [HADES][TEST ] Testing Q.0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5411006202] Expected: Should print: -1 (true) +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] -1 +[Hera] [HADES][TEST ] [KRELTSC: 5413296987] Running Q.0=.false: Q.1 Q.0= . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5414653314] Test passed +[Hera] [HADES][TEST ] Testing Q.0= ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5416145763] Expected: Should print: 0 (false) +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5418460215] Q.0=: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5419396395] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5420441817] Testing word: Q.MAX +[Hera] [HADES][TEST ] [KRELTSC: 5421179064] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5421946488] Running Q.MAX.basic: 3 Q.FROM-INT 7 Q.FROM-INT Q.MAX Q.TO-INT +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5423410944] Test passed +[Hera] [HADES][TEST ] Testing Q.MAX ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5424810741] Expected: Should print: 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] 7 +[Hera] [HADES][INFO ] [KRELTSC: 5426933022] L8[TABLE]: Config 2 → 3 regime=3 score=26214 L1=0 L2=0 L3=0 L +[Hera] 7 +[Hera] [HADES][TEST ] [KRELTSC: 5428333659] Q.MAX: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5429287374] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5430316059] Testing word: Q.MIN +[Hera] [HADES][TEST ] [KRELTSC: 5431052949] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5431809999] Running Q.MIN.basic: 3 Q.FROM-INT 7 Q.FROM-INT Q.MIN Q.TO-INT +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5433245853] Test passed +[Hera] [HADES][TEST ] Testing Q.MIN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5434598946] Expected: Should print: 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5436899160] Q.MIN: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5437861968] â–¶ Testing module: src/test_runner/modules/q48_words_test.c +[Hera] [HADES][TEST ] [KRELTSC: 5438902791] Testing word: Q.PRINT +[Hera] [HADES][TEST ] [KRELTSC: 5439746928] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5440762257] Running Q.PRINT.of_one: Q.1 Q.PRINT CR +[Hera] 1.5u +[Hera] [HADES][TEST ] [KRELTSC: 5442291372] Test passed +[Hera] [HADES][TEST ] Testing Q.PRINT ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5443688124] Expected: Should print: 1.00000 +[Hera] 1.5u +[Hera] 1.5u +[Hera] 1.5u +[Hera] 1.5u +[Hera] 1.5u +[Hera] [HADES][TEST ] [KRELTSC: 5446017948] Q.PRINT: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5447007405] === Q48.16 Words Summary: 0 passed, 0 failed, 0 skipped, 0 erro +[Hera] [HADES][INFO ] [KRELTSC: 5448105285] +[Hera] === Testing Module: Inference Engine Words === +[Hera] [HADES][INFO ] [KRELTSC: 5449308816] Running Inference Engine Words Tests (Module 26)... +[Hera] [HADES][TEST ] [KRELTSC: 5450346090] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5451422172] Testing word: Q.VARIANCE +[Hera] [HADES][TEST ] [KRELTSC: 5452398756] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5453293587] Running Q.VARIANCE.three_cells: 100 HERE ! 200 HERE 8 + ! 300 +[Hera] 6666 +[Hera] [HADES][TEST ] [KRELTSC: 5455131528] Test passed +[Hera] [HADES][TEST ] Testing Q.VARIANCE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5456539347] Expected: Should print population variance of {100,200,300} +[Hera] [HADES][TEST ] [KRELTSC: 5457624081] Q.VARIANCE: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5458678260] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5459746110] Testing word: INFER-DECAY-SLOPE +[Hera] [HADES][TEST ] [KRELTSC: 5460593985] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5461346898] Running INFER-DECAY-SLOPE.three_cells: 300 HERE ! 200 HERE 8 +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5463438351] Test passed +[Hera] [HADES][TEST ] Testing INFER-DECAY-SLOPE ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5465114739] Expected: Should print decay slope for a decreasing traject +[Hera] [HADES][TEST ] [KRELTSC: 5466185361] INFER-DECAY-SLOPE: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5467227381] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5468289099] Testing word: INFER-WINDOW-WIDTH +[Hera] [HADES][TEST ] [KRELTSC: 5469133278] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5469897447] Running INFER-WINDOW-WIDTH.three_cells: 100 HERE ! 200 HERE 8 +[Hera] 3 +[Hera] [HADES][TEST ] [KRELTSC: 5471612160] Test passed +[Hera] [HADES][TEST ] Testing INFER-WINDOW-WIDTH ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5473232163] Expected: Should print an inferred window width (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5474303142] INFER-WINDOW-WIDTH: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5475335397] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5476384872] Testing word: INFER-RUN +[Hera] [HADES][TEST ] [KRELTSC: 5477214246] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5478310152] Running INFER-RUN.basic: INFER-RUN +[Hera] [HADES][TEST ] [KRELTSC: 5482802997] Test passed +[Hera] [HADES][TEST ] Testing INFER-RUN ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5484185994] Expected: Should run without error +[Hera] [HADES][TEST ] [KRELTSC: 5485058040] INFER-RUN: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5485958982] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5486899551] Testing word: INFER-WINDOW@ +[Hera] [HADES][TEST ] [KRELTSC: 5487563550] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5488446327] Running INFER-WINDOW@.after_run: INFER-RUN INFER-WINDOW@ . CR +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5491013556] Test passed +[Hera] [HADES][TEST ] Testing INFER-WINDOW@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5492471964] Expected: Should print last adaptive_window_width (no error +[Hera] [HADES][TEST ] [KRELTSC: 5493528936] INFER-WINDOW@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5494539918] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5495646912] Testing word: INFER-DECAY@ +[Hera] [HADES][TEST ] [KRELTSC: 5496441153] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5497223760] Running INFER-DECAY@.after_run: INFER-RUN INFER-DECAY@ Q.TO-I +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5499499551] Test passed +[Hera] [HADES][TEST ] Testing INFER-DECAY@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5500977531] Expected: Should print last adaptive_decay_slope (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5502046473] INFER-DECAY@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5503249773] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5504321844] Testing word: INFER-VARIANCE@ +[Hera] [HADES][TEST ] [KRELTSC: 5505142902] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5505915156] Running INFER-VARIANCE@.after_run: INFER-RUN INFER-VARIANCE@ +[Hera] 1169 +[Hera] [HADES][TEST ] [KRELTSC: 5508200712] Test passed +[Hera] [HADES][TEST ] Testing INFER-VARIANCE@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5509654941] Expected: Should print last window_variance_q48 (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5510704878] INFER-VARIANCE@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5511740052] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5513042388] Testing word: INFER-FIT@ +[Hera] [HADES][TEST ] [KRELTSC: 5513821845] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5514588576] Running INFER-FIT@.after_run: INFER-RUN INFER-FIT@ Q.TO-INT . +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5517267231] Test passed +[Hera] [HADES][TEST ] Testing INFER-FIT@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5518653357] Expected: Should print last slope_fit_quality_q48 (no error +[Hera] [HADES][TEST ] [KRELTSC: 5519749662] INFER-FIT@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5520711630] â–¶ Testing module: src/test_runner/modules/inference_words_tes +[Hera] [HADES][TEST ] [KRELTSC: 5521769064] Testing word: INFER-EARLY-EXIT@ +[Hera] [HADES][TEST ] [KRELTSC: 5522598669] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5523382284] Running INFER-EARLY-EXIT@.after_run: INFER-RUN INFER-EARLY-EX +[Hera] 0 +[Hera] [HADES][TEST ] [KRELTSC: 5527380159] Test passed +[Hera] [HADES][TEST ] Testing INFER-EARLY-EXIT@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5529243741] Expected: Should print 0 or 1 (no error) +[Hera] [HADES][TEST ] [KRELTSC: 5530089096] INFER-EARLY-EXIT@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5531169924] === Inference Engine Words Summary: 0 passed, 0 failed, 0 skipp +[Hera] [HADES][INFO ] [KRELTSC: 5532173199] +[Hera] === Testing Module: Physics Freeze Words === +[Hera] [HADES][INFO ] [KRELTSC: 5533542294] Running Physics Freeze Words Tests (Module 27)... +[Hera] [HADES][TEST ] [KRELTSC: 5534555565] â–¶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5535630471] Testing word: FREEZE-WORD +[Hera] [HADES][TEST ] [KRELTSC: 5536429647] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5537191632] Running FREEZE-WORD.basic: : __freeze_test_word__ ; S" __free +[Hera] 245 +[Hera] [HADES][TEST ] [KRELTSC: 5538890910] Test passed +[Hera] [HADES][TEST ] Testing FREEZE-WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5540490900] Expected: Should print: -1 (word is now frozen) +[Hera] [HADES][TEST ] [KRELTSC: 5541475590] FREEZE-WORD: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5542492683] â–¶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5543552847] Testing word: UNFREEZE-WORD +[Hera] [HADES][TEST ] [KRELTSC: 5544355173] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5545149771] Running UNFREEZE-WORD.basic: : __unfreeze_test_word__ ; S" __ +[Hera] 270 +[Hera] [HADES][TEST ] [KRELTSC: 5546822820] Test passed +[Hera] [HADES][TEST ] Testing UNFREEZE-WORD ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5548233201] Expected: Should print: 0 (freeze cleared) +[Hera] [HADES][TEST ] [KRELTSC: 5549181771] UNFREEZE-WORD: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5550163878] â–¶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5551239939] Testing word: FROZEN? +[Hera] [HADES][TEST ] [KRELTSC: 5551983675] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5552923845] Running FROZEN?.not_frozen: : __frozen_test_word__ ; S" __fro +[Hera] 224 +[Hera] [HADES][TEST ] [KRELTSC: 5554514679] Test passed +[Hera] [HADES][TEST ] Testing FROZEN? ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5555907567] Expected: Should print: 0 (freshly defined word is not froz +[Hera] [HADES][TEST ] [KRELTSC: 5557027875] Running FROZEN?.not_found: S" __nonexistent_freeze_xyz__" FRO +[Hera] 245 +[Hera] [HADES][TEST ] [KRELTSC: 5558401128] Test passed +[Hera] [HADES][TEST ] Testing FROZEN? ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5559780996] Expected: Should print: 0 (not-found treated as not frozen) +[Hera] [HADES][TEST ] [KRELTSC: 5560847166] FROZEN?: 2 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5561813019] â–¶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5562892356] Testing word: HEAT! +[Hera] [HADES][TEST ] [KRELTSC: 5563635378] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5564393478] Running HEAT!.basic: : __heat_store_test_word__ ; 999 S" __he +[Hera] 249 +[Hera] [HADES][TEST ] [KRELTSC: 5566395807] Test passed +[Hera] [HADES][TEST ] Testing HEAT! ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5567783109] Expected: Should print: 999 +[Hera] [HADES][TEST ] [KRELTSC: 5568600702] HEAT!: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5569532703] â–¶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5570602758] Testing word: HEAT@ +[Hera] [HADES][TEST ] [KRELTSC: 5571320370] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5572100100] Running HEAT@.of_fresh_word: : __heat_fetch_test_word__ ; S" +[Hera] 224 +[Hera] [HADES][TEST ] [KRELTSC: 5573618904] Test passed +[Hera] [HADES][TEST ] Testing HEAT@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5575018743] Expected: Should print: 0 (freshly defined word has zero he +[Hera] [HADES][TEST ] [KRELTSC: 5576103960] HEAT@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5577044172] â–¶ Testing module: src/test_runner/modules/physics_freeze_word +[Hera] [HADES][TEST ] [KRELTSC: 5578308708] Testing word: DECAY-RATE@ +[Hera] [HADES][TEST ] [KRELTSC: 5579085330] ------------------------ +[Hera] [HADES][TEST ] [KRELTSC: 5579868945] Running DECAY-RATE@.basic: DECAY-RATE@ . CR +[Hera] 224 +[Hera] [HADES][TEST ] [KRELTSC: 5581217901] Test passed +[Hera] [HADES][TEST ] Testing DECAY-RATE@ ... PASS +[Hera] [HADES][TEST ] [KRELTSC: 5582611797] Expected: Should print the compile-time DECAY_RATE_PER_US_Q +[Hera] [HADES][TEST ] [KRELTSC: 5583675909] DECAY-RATE@: 1 passed, 0 failed, 0 stubs, 0 errors +[Hera] [HADES][TEST ] [KRELTSC: 5584758459] === Physics Freeze Words Summary: 0 passed, 0 failed, 0 skipped +[Hera] [HADES][INFO ] [KRELTSC: 5585831349] FINAL TEST SUMMARY: +[Hera] [HADES][INFO ] [KRELTSC: 5586598290] Total tests run: 1050 +[Hera] [HADES][INFO ] [KRELTSC: 5587385853] Passed: 1012 +[Hera] [HADES][INFO ] [KRELTSC: 5588243745] Failed: 0 +[Hera] [HADES][INFO ] [KRELTSC: 5589001929] Stubs (not yet implemented): 38 +[Hera] [HADES][INFO ] [KRELTSC: 5589856734] Errors: 0 +[Hera] [HADES][INFO ] [KRELTSC: 5590824393] ALL IMPLEMENTED TESTS PASSED! +[Hera] [HADES][INFO ] [KRELTSC: 5591674809] Contract checks (A4'/A1): all passed +[Hera] [HADES][INFO ] [KRELTSC: 5592593328] ============================================== +[Hera] PARITY:M7.1a word_count=481 here=0x00000000000000d8 latest_id=650 hash=0x6b055f0da1cb1128 +[Hera] PARITY:OK +[Hera] POST: PASSED +[Hera] [HAL][exec] regions frozen: +[Hera] kernel.text: [0x000000003d339000, 0x000000003d380eda) +[Hera] VM: parity bootstrap complete +[Hera] PCI: init... +[Hera] PCI: ECAM mapped (amd64) +[Hera] virtio-blk: found device +[Hera] Artemis: virtio-blk attached +[Hera] virtio-rng: found device +[Hera] virtio-rng: ready +[Hera] virtio-input: no device on PCI bus 0 +[Hera] xhci: controller found, BAR0 mapped +[Hera] xhci: controller running +[Hera] xhci: hcc_params1=0x00087001 +[Hera] xhci: context size = 32 bytes +[Hera] xhci: device already connected at bring-up +[Hera] xhci: port status change -- device connected +[Hera] xhci: portsc=0x00021203 +[Hera] xhci: port enabled (PED set) +[Hera] xhci: enable slot command submitted +[Hera] Init: Mama birth... +[Hera] [HADES][WARN ] [KRELTSC: 5746847295] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 5751553017] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 5882644425] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 5884944198] ( Unterminated comment +[Hera] [HADES][WARN ] [KRELTSC: 6252858696] ( Unterminated comment + +[Hera] ================================================ +[Hera] LithosAnanke — FORTH-79 bare-metal kernel +[Hera] Stadium step one: Hera alone +[Hera] ================================================ +[Hera] Hera [live] +[Hera] ================================================ + +[Hera] (no identity) +[Hera] PARITY:MAMA_INIT capsule_id=0x9ac6523d24b80cd0 mode=m capsule_hash=0x9ac6523d24b80cd0 dict_hash=0xfc0c76a8eb317f8d +[Hera] Init: Mama birth OK +[Hera] ACL: CAPSULE-BIRTH pinned STRICT +[Hera] ACL: BIRTH pinned STRICT +[Hera] Starting heartbeat... +[Hera] APIC Timer: started (LVT=0x00020020 ICR=10065702) +[Hera] I/O APIC: keyboard IRQ1 unmasked +[Hera] Heartbeat running. +[Hera] Stadium words: promotions=634 evictions=0 +[Hera] Stadium conservation: resident_sum=43691 reservoir=21845 sum=65536 (Q48_ONE=65536) +[Hera] Stadium quota grant self-test: OK +[Hera] Hera reservoir=21845 +[Hera] test-vm reservoir=65536 +[Hera] Startup: birthing Hermes (fleet foundation)... +[Hermes] (no identity) +[Hermes] PARITY:BIRTH vm_id=0xe973024cd27f44fd-0xb31991ade89c94cb capsule_id=0x9d6119b69d4113af mode=p capsule_hash=0x9d6119b69d4113af dict_hash=0x45fdc16a894ce8a2 +[Hera] BIRTH: Hermes live +[Hera] Startup: Hermes live +[Hera] Startup: birthing Artemis (fleet foundation)... +[Artemis] Artemis: LithosAnanke disk -- resuming +[Artemis] Artemis: persist-read... +[Artemis] PASS: persist-read +[Artemis] Artemis ready +[Artemis] Artemis: 22998 data blocks +[Artemis] K-total=[HADES][WARN ] [KRELTSC: 9094659861] INFERENCE: Output validation failed, ignoring results +[Artemis] 0.5u +[Artemis] ARTEMIS-K=0.5u +[Artemis] (no identity) +[Artemis] PARITY:BIRTH vm_id=0x750c1d1535ee4f3c-0x929a66b656457589 capsule_id=0xfe6e570467368153 mode=p capsule_hash=0xfe6e570467368153 dict_hash=0xa0a99f9545c43b8d +[Hera] BIRTH: Artemis live +[Hera] Startup: Artemis live +[Hera] Heartbeat: 435 ticks, trust=0x00010000, variance=0x00000000 +[Hera] LithosAnanke v1.5.4 +[Hera] StarForth Version 3.1.0 + +[Hera] StarForth Emergency CLI +[Hera] FORTH-79 interpreter — type BYE or power off to exit + +[Hera] ok> xhci: enable slot succeeded +[Hera] xhci: address device command submitted +[Hera] xhci: address device succeeded +[Hera] xhci: get device descriptor submitted +[Hera] xhci: device descriptor received +[Hera] xhci: idVendor=0x000046f4 +[Hera] xhci: idProduct=0x00000001 +[Hera] xhci: bDeviceClass=0x00000000 +[Hera] xhci: get config descriptor submitted +[Hera] xhci: config wTotalLength=0x0000002c +[Hera] xhci: get config descriptor submitted +[Hera] xhci: full config descriptor received +[Hera] xhci: bInterfaceClass=0x00000008 +[Hera] xhci: bInterfaceSubClass=0x00000006 +[Hera] xhci: bInterfaceProtocol=0x00000050 +[Hera] xhci: confirmed Mass Storage / SCSI / BOT device +[Hera] xhci: bulk IN endpoint=0x00000081 +[Hera] xhci: bulk OUT endpoint=0x00000002 +[Hera] xhci: configure endpoint command submitted +[Hera] xhci: configure endpoint succeeded +[Hera] xhci: set configuration submitted +[Hera] xhci: device configured +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ CAPACITY10 +[Hera] xhci: CBW (READ CAPACITY10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: READ CAPACITY last LBA=0x0001ffff +[Hera] xhci: READ CAPACITY block size=0x00000200 +[Hera] blkio_usb: MSC device ready +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: USB drive recognized as a home-blocks drive +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] Zuse: identity confirmed from attached thumbdrive +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: CBW (TEST UNIT READY) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] xhci: unit ready -- issuing READ10 +[Hera] xhci: CBW (READ10) submitted +[Hera] xhci: CBW send completed +[Hera] xhci: BOT Data-In read submitted +[Hera] xhci: BOT Data-In read completed +[Hera] xhci: CSW receive submitted +[Hera] xhci: CSW status = PASS +[Hera] xhci: CSW data residue=0x00000000 +[Hera] ?TERMINAL . +[Hera] -1 ok +[Hera] ok>  +[Hera] ok +[Hera] ok> CREATE TBUF 40 ALLOT +[Hera] ok +[Hera] ok>  +[Hera] ok +[Hera] ok> TBUF 39 EXPECT TBUF SPAN @ TYPE + +[Hera] ok +[Hera] ok> hello captain bob +[Hera] [HADES][ERROR] [KRELTSC: 135085028295] UNKNOWN WORD: 'hello' +[Hera] ERRORR +[Hera] ok>  +[Hera] ok +[Hera] ok> KEY DUP EMIT SPACE . + +[Hera] 10 ok +[Hera] ok> Q?TERMINAL . +[Hera] [HADES][ERROR] [KRELTSC: 156103042368] UNKNOWN WORD: 'Q?TERMINAL' +[Hera] ERROR +[Hera] ok>  +[Hera] ok +[Hera] ok> Z[HADES][WARN ] [KRELTSC: 180471654657] INFERENCE: Output validation failed, ignoring results + +[Hera] [HADES][ERROR] [KRELTSC: 280822794504] UNKNOWN WORD: 'Z' +[Hera] ERROR +[Hera] ok> ?TERMINAL . +[Hera] 0 ok +[Hera] ok> CREATE TBUF 40 ALLOT +[Hera] ok +[Hera] ok> TBUF 39 EXPECT TBUF SPAN @ TYPE +[Hera] hello captain bob +[Hera] ok +[Hera] ok> KEY DUP EMIT SPACE . +[Hera] ok +[Hera] ok> ?TERMINAL . +[Hera] -1 ok +[Hera] ok> ZKEY DUP EMIT SPACE . +[Hera] [HADES][ERROR] [KRELTSC: 324865968063] UNKNOWN WORD: 'ZKEY' +[Hera] ERROR +[Hera] ok> VWORDS +[Hera] [HADES][ERROR] [KRELTSC: 393106673610] UNKNOWN WORD: 'VWORDS' +[Hera] ERROR +[Hera] ok> WORDS +[Hera] Words in current vocabulary: +[Hera] TBUF TBUF TEXT TCOLOR TSIZE TY TX DRAW-GLYPH +[Hera] DISPATCH-GLYPH DISPATCH-GENPUNCT DISPATCH-LATIN1 DISPATCH-ASCII-PUNCT DISPATCH-LOWER DISPATCH-UPPER DISPATCH-DIGIT G-ELLIPSIS +[Hera] G-EMDASH G-ENDASH G-RDQUOTE G-LDQUOTE G-RSQUOTE G-LSQUOTE G-NBSP G-PILCROW +[Hera] G-SECTION G-POUND G-DIVIDE G-MULT G-REGISTERED G-PLUSMINUS G-COPYRIGHT G-CENT +[Hera] G-DEGREE G-TILDE G-PIPE G-RBRACE G-LBRACE G-BACKTICK G-UNDERSCORE G-CARET +[Hera] G-RBRACKET G-BACKSLASH G-LBRACKET G-AT G-QMARK G-GT G-EQ G-LT +[Hera] G-SEMI G-COLON G-SLASH G-PERIOD G-HYPHEN G-COMMA G-PLUS G-STAR +[Hera] G-RPAREN G-LPAREN G-SQUOTE G-AMP G-PERCENT G-DOLLAR G-HASH G-DQUOTE +[Hera] G-BANG G-SPACE G-z G-y G-x G-w G-v G-u +[Hera] G-t G-s G-r G-q G-p G-o G-n G-m +[Hera] G-l G-k G-j G-i G-h G-g G-f G-e +[Hera] G-d G-c G-b G-a G-Z G-Y G-X G-W +[Hera] G-V G-U G-T G-S G-R G-Q G-P G-O +[Hera] G-N G-M G-L G-K G-J G-I G-H G-G +[Hera] G-F G-E G-D G-C G-B G-A G-9 G-8 +[Hera] G-7 G-6 G-5 G-4 G-3 G-2 G-1 G-0 +[Hera] G-ARC GA1 GA0 G-ELLIPSE GRY GRX G-CIRCLE GR +[Hera] GCY GCX EM-R DRAW-GLYPH DISPATCH-GLYPH DISPATCH-GENPUNCT DISPATCH-LATIN1 DISPATCH-ASCII-PUNCT +[Hera] DISPATCH-LOWER DISPATCH-UPPER DISPATCH-DIGIT TOFU G-TEST-GENPUNCT G-TEST-LATIN1 G-TEST-PUNCT G-TEST-LOWER +[Hera] G-TEST-UPPER G-TEST-DIGIT DECODE-UTF8 UTF8-ASSEMBLE-4 UTF8-ASSEMBLE-3 UTF8-ASSEMBLE-2 UTF8-ASSEMBLE-1 UCP +[Hera] USEQLEN ULEAD ULEN UADDR UTF8-CONT? UTF8-SEQ-LEN G-LINE GY2 +[Hera] GX2 GY1 GX1 EM-Y EM-X GCOLOR GSIZE GOY +[Hera] GOX EM-UNITS CUBE EDGE EN2 VERT CS ELLIPSE +[Hera] ELLIPSE-PT ERY ERX ARC ARC-SETUP ASTEP AEND ASTART +[Hera] CIRCLE CIRC-PT PY PX CCOLOR CRAD CZ CY +[Hera] CX LINE LINE-STEP LINE-STUCK? LINE-DONE? LINE-SETUP LSTEPS LCOLOR +[Hera] LERR LSY LSX LDY LDX LY2 LX2 LY +[Hera] LX CART-PLOT TO-RASTER CART-PLOT CART-Y PROJECT Z->DELTA ZD +[Hera] COS45 STARTUP-BANNER IDENTITY-BANNER-LEN IDENTITY-BANNER Q.SHOW CSV-LAST CSV-COL CRLF +[Hera] COMMA N. ACL-ZUSE-BOOT ACL-CA-KEY-HI ACL-CA-KEY-LO ACL-BOOT ACL-RECHECK ACL-TTL-COMPUTE +[Hera] ACL-TTL-MODE ACL-STRICT ACL-ENTRY ACL-MAX-TTL ACL-BASE-TTL ACL-TTL-MODE-VAL ACL-STRICT-MODE VM-CHILDREN +[Hera] VM-PARENT VM-TREE BOOT-BANNER .SEP __acl_initp_pin__ __acl_initp_free__ __acl_inh_dst__ __acl_inh_src__ +[Hera] __acl_read_test__ __acl_shadow_target__ __acl_heat_test__ __acl_strict_test__ __acl_ttl_test__ __acl_deny_test__ __acl_ec_test__ __acl_dst__ +[Hera] __acl_src__ __acl_pin_test__ EXEC CAPSULE-TEST VM-CALL VM-EXEC VM-STEP VM-PHYSICS-STATUS +[Hera] VM-CONSERVED? VM-COUNT MAMA-VM-ID PAIR-TEST RUNCAP-TEST MINT CAPSULE-RUN CAPSULE-BIRTH +[Hera] CAPSULE-LEN@ CAPSULE-FLAGS@ CAPSULE-HASH@ CAPSULE@ CAPSULE-COUNT EXEC USE STOP +[Hera] START KILL BIRTH CONNECT-ARTEMIS CONNECT-HERMES BYE MAMA CAPSULE-TEST +[Hera] VM-CALL VM-EXEC VM-STEP VM-PHYSICS-STATUS VM-CONSERVED? VM-COUNT MAMA-VM-ID PAIR-TEST +[Hera] RUNCAP-TEST MINT CAPSULE-RUN CAPSULE-BIRTH CAPSULE-LEN@ CAPSULE-FLAGS@ CAPSULE-HASH@ CAPSULE@ +[Hera] CAPSULE-COUNT EXEC USE STOP START KILL BIRTH CONNECT-ARTEMIS +[Hera] CONNECT-HERMES BYE HB-OFF HB-ON SCROLL-FWD SCROLL-BACK TTF-TEXT ALT+TAB +[Hera] KEY-EVENT VKBD-DEBUG VKBD-EVENT KBD-DEBUG KBD-SCAN FB-HEIGHT FB-WIDTH PLOT +[Hera] DEFER@ IS DEFER BAYES-BUCKET-UPPER BAYES-BUCKET-LOWER BAYES-BUCKET-MEAN BAYES-CACHE-UPPER BAYES-CACHE-LOWER +[Hera] BAYES-CACHE-MEAN L8-TABLE-FORCE L8-APPLY L8-UPDATE L8-MODE INFER-EARLY-EXIT@ INFER-FIT@ INFER-VARIANCE@ +[Hera] INFER-DECAY@ INFER-WINDOW@ INFER-RUN WINDOW-DIVERSITY INFER-WINDOW-WIDTH INFER-DECAY-SLOPE Q.VARIANCE Q.PRINT +[Hera] Q.MIN Q.MAX Q.0= Q.> Q.< Q.= Q.SCALE Q.0 +[Hera] Q.1 Q.TO-INT Q.FROM-INT Q.COS Q.SIN Q.SQRT Q.EXP Q.LOG +[Hera] Q.NEG Q.ABS Q./ Q.* Q.- Q.+ LOG-DEBUG-STR LOG-TEST-STR +[Hera] LOG-INFO-STR LOG-WARN-STR LOG-ERROR-STR LOG-DEBUG" LOG-TEST" LOG-INFO" LOG-WARN" LOG-ERROR" +[Hera] (do-log-debug) (do-log-test) (do-log-info) (do-log-warn) (do-log-error) LOG-LEVEL@ LOG-LEVEL! LOG-DEBUG +[Hera] LOG-TEST LOG-INFO LOG-WARN LOG-ERROR COMPARE-LOOKUPS SHOW-HEAT-OPTIMIZATION REORG-BUCKETS LOOKUP-STRATEGY! +[Hera] LOOKUP-STRATEGY@ HEAT-PERCENTILES FREEZE-CRITICAL DECAY-RATE@ ALL-HEATS SHOW-HEAT HEAT@ HEAT! +[Hera] FROZEN? UNFREEZE-WORD FREEZE-WORD PIPELINING-ANALYZE-WORD PIPELINING-STATS PIPELINING-ENABLE PIPELINING-RESET-ALL PIPELINING-SHOW-TOP-TRANSITIONS +[Hera] PIPELINING-SHOW-STATS PHYSICS-BAYESIAN-REPORT PHYSICS-BUILD-INFO PHYSICS-RESET-STATS PHYSICS-TOGGLE-CACHE PHYSICS-CACHE-STATS BENCH-DICT-LOOKUP ACL-INIT-PRIMITIVES +[Hera] ACL-INHERIT ACL-PIN ACL-ALLOW! ACL-TTL! ACL-MODE! ACL-WORD-ID ACL-HEAT@ ACL-ALLOW@ +[Hera] ACL-TTL@ ACL-PINNED? ACL-MODE@ HEARTBEAT-TICKS@ ZUSE-CERT-INSTALLED? ZUSE-PUBKEY@ ZUSE-SESSION? ZUSE-AUTHENTICATE +[Hera] WAIT RANDOM SEED VERSION INIT (- TOP-WORDS RESET-ENTROPY +[Hera] WORD-ENTROPY ENTROPY! ENTROPY@ STARFORTH HEARTBEAT-TICKS@ ZUSE-CERT-INSTALLED? ZUSE-PUBKEY@ ZUSE-SESSION? +[Hera] ZUSE-AUTHENTICATE WAIT RANDOM SEED VERSION INIT (- TOP-WORDS +[Hera] RESET-ENTROPY WORD-ENTROPY ENDCASE ENDOF OF CASE EXIT UNLOOP +[Hera] J I LEAVE +LOOP LOOP DO ?DO UNTIL +[Hera] AGAIN REPEAT WHILE BEGIN THEN ELSE IF (LEAVE) +[Hera] (+LOOP) (LOOP) (DO) (?DO) (0BRANCH) (BRANCH) DOES> does_rt +[Hera] LITERAL LIT [COMPILE] COMPILE FENCE FORGET ] [ +[Hera] STATE IMMEDIATE CONSTANT VARIABLE CREATE ; : EDIT +[Hera] SHOW S L ABORT" (ABORT") ABORT QUIT 79-STANDARD +[Hera] NOP EXECUTE PAGE SEE VLIST WORDS SAVE-SYSTEM REBOOT +[Hera] BYE WARM COLD \ ( (FIND) ORDER FORTH +[Hera] CURRENT CONTEXT DEFINITIONS VOCABULARY ' FIND INTERPRET TRAVERSE +[Hera] PFA NFA LFA CFA LINK> >LINK NAME> >NAME +[Hera] >BODY HIDDEN SMUDGE LATEST SP@ SP! PAD 2, +[Hera] C, , ALLOT ALIGN HERE --> SCR THRU +[Hera] LIST LOAD FLUSH EMPTY-BUFFERS SAVE-BUFFERS RELOCATE-BLOCK BLK-CONFIRM-FORMAT UPDATE +[Hera] BUFFER BLOCK ." (do-string) SPACES SPACE TYPE ?TERMINAL +[Hera] KEY CR EMIT BLANK SKIP SCAN SEARCH COMPARE +[Hera] CMOVE> CMOVE -TRAILING ENCLOSE NUMBER CONVERT [LITERAL] LITERAL +[Hera] ['] BL SOURCE >IN S" (s") WORD TIB +[Hera] QUERY SPAN EXPECT COUNT OCTAL HEX DECIMAL BASE +[Hera] SIGN HOLD #> #S # <# DUMP ? +[Hera] .S D.R D. U.R U. .R . D2/ +[Hera] D2* D0< D0= 2R@ 2R> 2>R 2ROT 2OVER +[Hera] 2SWAP 2DUP 2DROP D= D< DMIN DMAX DABS +[Hera] DNEGATE D- D+ S>D */MOD */ /MOD MOD +[Hera] M/MOD M* M- M+ FALSE TRUE WITHIN U> +[Hera] U< <= >= > < <> = 0<> +[Hera] 0> 0< 0= RSHIFT LSHIFT INVERT NOT XOR +[Hera] OR AND MAX MIN NEGATE ABS 2/ 2* +[Hera] 2- 2+ 1- 1+ */MOD */ /MOD MOD +[Hera] / * - + CELLS ERASE MOVE FILL +[Hera] 2! 2@ -! +! C! C@ ! @ +[Hera] R@ R> >R ROLL PICK DEPTH -ROT ROT +[Hera] OVER SWAP ?DUP DUP DROP +[Hera] Total: 733 words + +[Hera] ok +[Hera] ok> BYE +[Hera] BYE: reaping children +[Hera] Stadium: dispatch cell=42262 behaviour=COOL identity=0 +[Hera] PARITY:KILL vm_id=0xe973024cd27f44fd-0xb31991ade89c94cb name=Hermes +[Hera] Stadium: dispatch cell=63074 behaviour=COOL identity=0 +[Hera] PARITY:KILL vm_id=0x750c1d1535ee4f3c-0x929a66b656457589 name=Artemis +[Hera] BYE: cold restart diff --git a/src/block_subsystem.c b/src/block_subsystem.c index 6e18eda..3f9e85f 100644 --- a/src/block_subsystem.c +++ b/src/block_subsystem.c @@ -367,10 +367,13 @@ static void compute_totals_from_B(blk_volume_meta_t *m) { uint64_t payload4k = (m->total_devblocks > (1+B+R+F)) ? (m->total_devblocks - 1 - B - R - F) : 0; uint64_t storable = 3ULL * payload4k; m->total_blocks = (m->tracked_blocks < storable) ? m->tracked_blocks : storable; - uint64_t reserved = (uint64_t) BLK_DISK_SYS_RESERVED; - if (reserved > m->total_blocks) reserved = m->total_blocks; - m->first_free = BLK_DISK_SYS_RESERVED + reserved; - m->last_allocated = BLK_DISK_SYS_RESERVED + reserved - 1; + /* NOTE: first_free/last_allocated are intentionally NOT set here. They + * are absolute Forth LBN hints (readers in blk_allocate()/blk_mark_free() + * subtract slot->start_lbn), which this pure-geometry function cannot + * know -- it has no slot/LBN-base context. Setting them to a physical + * BAM index here made the first-free hint point at the wrong block; the + * slot's owner establishes them from slot->start_lbn instead (see + * blk_compute_fresh_geometry()). */ } /* ===== physical BAM I/O (sync to/from slot->bam[]) ===== */ @@ -530,6 +533,14 @@ static void blk_compute_fresh_geometry(blk_dev_slot_t *slot) { slot->vol_meta.meta_fence_blocks = BLK_META_FENCE_INIT; compute_totals_from_B(&slot->vol_meta); + /* Allocation hints are absolute Forth LBNs (see the readers' note at + * compute_totals_from_B()). This slot's first user-visible block is at + * slot->start_lbn, so that is the true "next free" hint on a fresh + * volume -- anything else (e.g. a physical BAM index) made the hint + * point into the wrong block and left blk_allocate() guessing. */ + slot->vol_meta.first_free = (uint64_t) slot->start_lbn; + slot->vol_meta.last_allocated = (uint64_t) slot->start_lbn - 1u; + if (sf_has_rtc()) slot->vol_meta.created_time = sf_realtime_ns(); else slot->vol_meta.created_time = sf_monotonic_ns(); @@ -941,7 +952,14 @@ int blk_update(uint32_t block_num) { uint8_t *blkdata = c->data + pack * BLK_FORTH_SIZE; c->meta[pack].checksum = compute_crc64(blkdata, BLK_FORTH_SIZE); uint64_t now = blk_get_timestamp(); - if (c->meta[pack].magic == 0) { + /* cache_load_devblock() already force-stamps magic on every load, so + * testing magic==0 here is dead code that silently dropped the + * first-write created_time stamp. A block that has never been written + * before has created_time==0 (the loaded slot was memset); an existing + * block carries its stamped-on-first-write non-zero created_time. Use + * that as the first-write signal so a fresh block records its true + * creation time. */ + if (c->meta[pack].created_time == 0) { c->meta[pack].magic = 0x424C4B5F5354524BULL; c->meta[pack].created_time = now; } @@ -1135,6 +1153,11 @@ int blk_meta_zone_read(uint32_t devblock_from_top, uint8_t buf[4096]) { blk_dev_slot_t *slot = first_disk_slot(); if (!slot || !slot->dev) return BLK_ENODEV; if (devblock_from_top >= slot->vol_meta.meta_fence_blocks) return BLK_EINVAL; + /* The fence index must also sit inside the physical device -- a corrupt + * volume whose meta_fence_blocks >= total_devblocks would otherwise pass + * the fence check and let (total_devblocks - 1 - devblock_from_top) + * underflow on the unsigned subtraction below, targeting a wild devblock. */ + if ((uint64_t) devblock_from_top >= slot->vol_meta.total_devblocks) return BLK_EINVAL; uint64_t devblock_idx = slot->vol_meta.total_devblocks - 1ULL - devblock_from_top; uint32_t base1k = (uint32_t) devblock_idx * 4u; @@ -1150,6 +1173,10 @@ int blk_meta_zone_write(uint32_t devblock_from_top, const uint8_t buf[4096]) { blk_dev_slot_t *slot = first_disk_slot(); if (!slot || !slot->dev) return BLK_ENODEV; if (devblock_from_top >= slot->vol_meta.meta_fence_blocks) return BLK_EINVAL; + /* Same physical-bounds guard as blk_meta_zone_read(): prevents the + * unsigned underflow of (total_devblocks - 1 - devblock_from_top) on a + * corrupt fence >= device size. */ + if ((uint64_t) devblock_from_top >= slot->vol_meta.total_devblocks) return BLK_EINVAL; uint64_t devblock_idx = slot->vol_meta.total_devblocks - 1ULL - devblock_from_top; uint32_t base1k = (uint32_t) devblock_idx * 4u; diff --git a/src/platform/linux/io.c b/src/platform/linux/io.c new file mode 100644 index 0000000..5762867 --- /dev/null +++ b/src/platform/linux/io.c @@ -0,0 +1,49 @@ +/* + StarForth — Steady-State Virtual Machine Runtime + + Copyright (c) 2023–2025 Robert A. James + All rights reserved. + + This file is part of the StarForth project. + + Licensed under the StarForth License, Version 1.0 (the "License"); + you may not use this file except in compliance with the License. + + You may obtain a copy of the License at: + https://github.com/star.4th@proton.me/StarForth/LICENSE.txt + + This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, + express or implied, including but not limited to the warranties of + merchantability, fitness for a particular purpose, and noninfringement. + + See the License for the specific language governing permissions and + limitations under the License. + + */ + +/* + * StarForth Platform IO - Linux/POSIX Backend + * + * Implements platform_io.h's terminal-readiness check using select() on + * fd 0, the standard POSIX non-blocking-stdin-peek idiom. Zero timeout: + * a single poll, never blocks. + * + * License: See LICENSE file + */ + +#include "../../../include/platform_io.h" +#include +#include + +int sf_terminal_ready(void) { + fd_set readfds; + struct timeval tv; + + FD_ZERO(&readfds); + FD_SET(STDIN_FILENO, &readfds); + tv.tv_sec = 0; + tv.tv_usec = 0; + + int r = select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv); + return (r > 0 && FD_ISSET(STDIN_FILENO, &readfds)) ? 1 : 0; +} diff --git a/src/starkernel/capsule/capsule_birth.c b/src/starkernel/capsule/capsule_birth.c index 91e8ba9..19b32d6 100644 --- a/src/starkernel/capsule/capsule_birth.c +++ b/src/starkernel/capsule/capsule_birth.c @@ -36,10 +36,11 @@ #include "starkernel/vm/stadium.h" /* item 4.1a -- stadium_grant_quota() */ #include "vm.h" #include "platform_alloc.h" -/* log.h after vm.h: vm.h's own LOG_LINE_MAX (persistent block-log, - * unrelated concept, unconditional #define) must win before log.h's - * #ifndef-guarded one sees it -- reversed order redefines and fails - * -Werror (found 2026-08-26 wiring in capsule signature logging). */ +/* No LOG_LINE_MAX include-order constraint anymore: vm.h's own + * LOG_LINE_MAX (persistent block-log, 64) and log.h's in-memory line + * length (renamed LOG_MSG_LINE_MAX, 256) are distinct names, so include + * order no longer redefines anything (the -Werror collision found + * 2026-08-26 wiring capsule signature logging is structurally gone). */ #include "log.h" /*=========================================================================== diff --git a/src/starkernel/capsule/capsule_wirebind.c b/src/starkernel/capsule/capsule_wirebind.c index e87f00d..8fbc6b4 100644 --- a/src/starkernel/capsule/capsule_wirebind.c +++ b/src/starkernel/capsule/capsule_wirebind.c @@ -19,8 +19,10 @@ #include "starkernel/user_identity_seed.h" #include "starkernel/console.h" #include "blkio.h" +#include "block_subsystem.h" /* compute_crc64() */ #include "freestanding/stdio.h" #include +#include /* WIREBIND_CERT_MAX_DEVBLOCKS: a sane upper bound on how much cert * content this reads, independent of whatever sig->cert_devblocks @@ -97,11 +99,24 @@ void capsule_wirebind_try_attach(struct blkio_dev *dev, return; } user_identity_seed_t idrec; - if (read_devblock(dev, sig->identity_src_offset, (uint8_t *)&idrec) != 0 || - idrec.magic != USER_IDENTITY_SEED_MAGIC) { + if (read_devblock(dev, sig->identity_src_offset, (uint8_t *)&idrec) != 0) { console_println("WIREBIND: verified cert but identity record unreadable -- refusing"); return; } + /* Same magic -> version -> CRC-64 discipline as capsule_zuse_boot.c: + * the identity record is the same on-disk format, so a corrupt or + * format-mismatched record must be refused rather than trusted. */ + if (idrec.magic != USER_IDENTITY_SEED_MAGIC || + idrec.version != USER_IDENTITY_SEED_VERSION) { + console_println("WIREBIND: verified cert but identity record unreadable -- refusing"); + return; + } + uint64_t want_crc = compute_crc64((const uint8_t *)&idrec, + offsetof(user_identity_seed_t, crc)); + if (want_crc != idrec.crc) { + console_println("WIREBIND: verified cert but identity record corrupt -- refusing"); + return; + } char username[USER_IDENTITY_USERNAME_MAX]; memcpy(username, idrec.username, sizeof(username)); diff --git a/src/starkernel/capsule/capsule_zuse_boot.c b/src/starkernel/capsule/capsule_zuse_boot.c index c8809e4..d783288 100644 --- a/src/starkernel/capsule/capsule_zuse_boot.c +++ b/src/starkernel/capsule/capsule_zuse_boot.c @@ -103,7 +103,15 @@ void capsule_zuse_boot_try_attach(struct blkio_dev *dev, user_identity_seed_t idrec; if (read_devblock(dev, sig->identity_src_offset, (uint8_t *)&idrec) != 0) return; + /* Same magic -> version -> CRC-64 discipline as genesis_marker_read(): + * this record carries Zuse's private key (the seed), so a corrupt or + * format-mismatched record must be refused, never loaded -- a bad CRC + * could otherwise install a garbage seed as Zuse's identity. */ if (idrec.magic != USER_IDENTITY_SEED_MAGIC) return; + if (idrec.version != USER_IDENTITY_SEED_VERSION) return; + uint64_t want_crc = compute_crc64((const uint8_t *)&idrec, + offsetof(user_identity_seed_t, crc)); + if (want_crc != idrec.crc) return; if (memcmp(idrec.pubkey, marker.zuse_pubkey, 32) != 0) return; /* not Zuse's drive */ console_println("Zuse: identity confirmed from attached thumbdrive"); diff --git a/src/starkernel/kernel_main.c b/src/starkernel/kernel_main.c index 58fcfab..05517d2 100644 --- a/src/starkernel/kernel_main.c +++ b/src/starkernel/kernel_main.c @@ -70,8 +70,10 @@ EFI_RUNTIME_SERVICES *g_sk_runtime_services = NULL; #include "starkernel/xhci_driver.h" #include "block_subsystem.h" #include "vm.h" /* DictEntry, vm_find_word, ACL_MODE_STRICT */ -#include "log.h" /* must follow vm.h: vm.h's LOG_LINE_MAX has no - include guard, log.h's does */ +#include "log.h" /* no include-order constraint anymore: vm.h's + LOG_LINE_MAX (persistent block-log, 64) and + log.h's line length (LOG_MSG_LINE_MAX, 256) + are distinct names */ #include "version.h" #endif diff --git a/src/starkernel/repl.c b/src/starkernel/repl.c index 437480e..2b8ac68 100644 --- a/src/starkernel/repl.c +++ b/src/starkernel/repl.c @@ -106,7 +106,7 @@ blkio_dev_t *sk_repl_get_attached_blk_dev(void) { /*=========================================================================== * Idle heartbeat service * - * Called from sk_readline when heartbeat_ticks() has advanced by at least + * Called from sk_console_readline()/sk_console_getkey() when heartbeat_ticks() has advanced by at least * SK_IDLE_BEAT_INTERVAL since the last service call. Extend this function * as higher-level subsystems (msg_fabric, capsule scheduler) come online. * @@ -118,6 +118,27 @@ blkio_dev_t *sk_repl_get_attached_blk_dev(void) { static uint64_t g_last_beat_tick; /* zero-initialized (BSS) */ +/* Reentrancy guards for the MSG-TICK pump inside sk_repl_idle(). + * + * sk_repl_idle() runs vm_interpret(mama, ...) (below) to VM-EXEC MSG-TICK + * into every live child VM (FABRIC-3.md Phase C). But sk_repl_idle() is + * itself called from the blocking KEY/EXPECT/QUERY reads (sk_console_getkey() + * / sk_console_readline(), which run *from inside* the executing VM's own + * vm_interpret once a FORTH word reads input mid-line). vm_interpret() is + * not reentrant -- it resets the VM's single input_buffer/input_pos/ + * input_length (vm_core.c) on entry. Calling vm_interpret(mama, ...) at that + * point would re-enter mama's interpreter mid-parse and silently truncate + * the rest of the line; if the pump's own MSG-TICK work then triggers another + * blocking read, it would also recurse unboundedly. Two flags keep the pump + * off every path that could re-enter an interpreter: + * - g_mama_interpreting: set while Hera is executing a dispatched line, so + * the pump defers to the next safe (prompt) boundary. + * - g_idle_pump_active: belt-and-suspenders; stops recursive re-entry + * from inside the pump's own vm_interpret call. + */ +static int g_mama_interpreting; /* zero-initialized (BSS) */ +static int g_idle_pump_active; /* zero-initialized (BSS) */ + static void sk_repl_idle(VM *active_vm) { /* Artemis Milestone 2d: xHCI Event Ring servicing. This is exactly the @@ -247,7 +268,7 @@ static void sk_repl_idle(VM *active_vm) * unless something genuinely needs writing -- so no separate * "is anything dirty" pre-check is needed here. * - * active_vm is passed in by the caller (sk_readline(), itself passed + * active_vm is passed in by the caller (sk_console_readline(), itself passed * through from sk_repl_run()/sk_repl_step()'s own already-resolved * VM) rather than read via sk_repl_get_active_vm() here -- that * accessor returns NULL whenever Tripod's USE word hasn't redirected @@ -270,9 +291,21 @@ static void sk_repl_idle(VM *active_vm) * absent there, not just untried. She is the only VM with a * persistent idle tick, so she walks the registry once per idle beat * and VM-EXECs MSG-TICK into every OTHER live VM's own dictionary. */ + VM *mama = (VM *)sk_get_mama_vm(); + + /* Reentrancy guard: never run the pump while mama is mid-interpret + * (a dispatched line, or recursively from within the pump's own + * vm_interpret). vm_interpret() clobbers the VM's single input + * buffer, so re-entering it here while KEY/EXPECT/QUERY blocks inside + * a live parse truncates the rest of that line. Deferring the MSG-TICK + * drain to the next prompt boundary is safe -- draining is best-effort + * and simply resumes next beat. */ + if (g_mama_interpreting || g_idle_pump_active) + return; + + g_idle_pump_active = 1; { - VM *mama = (VM *)sk_get_mama_vm(); - uint32_t count = capsule_vm_registry_count(); + uint32_t count = capsule_vm_registry_count(); uint32_t i; for (i = 0; i < count; i++) { VMRegistryEntry ent; @@ -295,6 +328,7 @@ static void sk_repl_idle(VM *active_vm) vm_interpret(mama, cmd); } } + g_idle_pump_active = 0; } /*=========================================================================== @@ -303,7 +337,7 @@ static void sk_repl_idle(VM *active_vm) * Translates sk_key_event_poll()'s converged Linux-keycode-namespace * stream (keyboard_words.c -- one implementation shared with KEY-EVENT, * live-verified on all three architectures per item 4.3.5f) into the same - * byte stream sk_readline() already reads from console_getc(): -1 for + * byte stream sk_console_readline() already reads from console_getc(): -1 for * "nothing ready", else a raw ASCII byte with '\n'/0x7F meaning the same * thing they mean for the serial path below. * @@ -393,16 +427,80 @@ static int sk_kbd_getc(void) return -1; } +/* One raw byte from either input source (serial console or the keyboard- + * event bridge), non-blocking, -1 if neither has one ready right now. Not + * itself a FORTH word -- the shared byte-fetch underneath sk_console_getkey()/ + * sk_console_key_available() (the standard dictionary's KEY/?TERMINAL, wired + * through shim.c's getchar()) and sk_console_readline() (QUERY/EXPECT, wired + * through shim.c's fgets()) alike. */ +static int sk_console_getc_raw(void) +{ + int c = console_getc(); + if (c < 0) c = sk_kbd_getc(); /* FABRIC.md 4.4v: second source, same buffer */ + return c; +} + +/* One-byte pushback so sk_console_key_available() can peek without losing + * the byte -- ?TERMINAL must be non-destructive (a caller checks readiness, + * then still expects KEY to return that same key). */ +static int g_console_pending_key = -1; + +/* KEY's real body (shim.c's getchar() calls this): blocks until a key is + * available, servicing the heartbeat/idle loop while waiting -- same + * cadence sk_console_readline() already uses below, so a KEY call mid-word + * never stalls the heartbeat or Hera's own idle dispatch. No echo -- that's + * the caller's job, same as any standard KEY implementation. */ +int sk_console_getkey(VM *active_vm) +{ + for (;;) { + int c; + if (g_console_pending_key >= 0) { + c = g_console_pending_key; + g_console_pending_key = -1; + } else { + c = sk_console_getc_raw(); + } + if (c >= 0) return c; + + heartbeat_service(); + uint64_t now = heartbeat_ticks(); + if (now - g_last_beat_tick >= SK_IDLE_BEAT_INTERVAL) { + g_last_beat_tick = now; + sk_repl_idle(active_vm); + } + arch_relax(); + } +} + +/* ?TERMINAL's real body (sf_terminal_ready(), shim.c): non-blocking peek -- + * a single poll, no idle-servicing loop (a false result must return + * immediately, not block). Buffers a found byte in g_console_pending_key so + * a following sk_console_getkey() returns the exact same key, not a + * different/later one. */ +int sk_console_key_available(void) +{ + if (g_console_pending_key >= 0) return 1; + int c = sk_console_getc_raw(); + if (c >= 0) { g_console_pending_key = c; return 1; } + return 0; +} + /*=========================================================================== - * sk_readline - line read from serial console with echo + * sk_console_readline - line read from serial console with echo * * Non-blocking poll of console_getc(). While no character is ready the idle * spin services the adaptive heartbeat at SK_IDLE_BEAT_INTERVAL tick cadence. * Supports backspace (0x7F and \b) and ignores other control characters. * Returns the number of characters placed in buf (not counting '\0'). + * + * Public (declared in repl.h): shim.c's fgets()/QUERY's own real body call + * this directly -- same line-editing behavior for a mid-word EXPECT/QUERY as + * for the REPL's own top-level prompt, since it's the same underlying + * console. Any g_console_pending_key left over from a ?TERMINAL peek is + * consumed first so a line read never drops a byte ?TERMINAL already saw. *===========================================================================*/ -static int sk_readline(char *buf, int size, VM *active_vm) +int sk_console_readline(char *buf, int size, VM *active_vm) { int n = 0; @@ -410,8 +508,13 @@ static int sk_readline(char *buf, int size, VM *active_vm) console_fb_draw_cursor(); /* show the cursor at the bare prompt, before any input */ for (;;) { - int c = console_getc(); /* non-blocking poll */ - if (c < 0) c = sk_kbd_getc(); /* FABRIC.md 4.4v: second source, same buffer */ + int c; + if (g_console_pending_key >= 0) { + c = g_console_pending_key; + g_console_pending_key = -1; + } else { + c = sk_console_getc_raw(); + } if (c < 0) { /* Service the heartbeat bottom half every idle iteration, not @@ -483,7 +586,7 @@ static int sk_readline(char *buf, int size, VM *active_vm) * that's a distinct, narrower mechanism this REPL no longer touches. * * Mirrors vm_repl() from src/repl.c: - * - Reads a line via sk_readline (non-blocking, heartbeat-serviced) + * - Reads a line via sk_console_readline (non-blocking, heartbeat-serviced) * - Calls vm_interpret * - Prints " ok" or " ERROR" * - When EMERGENCY_CONSOLE_ENABLED=1: resets vm->error and loops (recovery) @@ -536,9 +639,20 @@ static int sk_repl_line_calls_use(const char *input) static void sk_repl_dispatch_line(VM *vm, const char *input) { + /* H1 reentrancy guard: while this dispatched line executes on Hera + * herself, sk_repl_idle() must defer its MSG-TICK pump -- calling + * vm_interpret(mama, ...) from inside a mid-line KEY/EXPECT would + * re-enter mama's interpreter and clobber its in-flight input buffer + * (see the guard's comment at sk_repl_idle()). A child VM's console + * turn leaves mama idle, so the pump stays safe there and the guard is + * only latched for Hera. */ + int on_mama = (vm == (VM *)sk_get_mama_vm()); + int saved = g_mama_interpreting; + if (on_mama) g_mama_interpreting = 1; + if (sk_repl_line_calls_use(input)) { vm_interpret(vm, input); - return; + goto out; } const char *vn = console_get_vm_name(); if (vn) { @@ -564,13 +678,16 @@ static void sk_repl_dispatch_line(VM *vm, const char *input) "CONSOLE-CMD-EVENT 0 3 S\" %s\" 0 MSG-SEND", input); if (n > 0 && (size_t)n < sizeof(cmd)) { vm_interpret(vm, cmd); - return; + goto out; } } } } } vm_interpret(vm, input); + +out: + g_mama_interpreting = saved; } /*=========================================================================== @@ -603,7 +720,7 @@ int sk_repl_step(VM *vm) console_puts(SK_PROMPT_TEXT); } - sk_readline(input, sizeof(input), vm); + sk_console_readline(input, sizeof(input), vm); if (input[0] == '\0') { console_puts(" ok\n"); @@ -646,7 +763,7 @@ void sk_repl_run(VM *vm) * step()'s matching comment above. */ console_puts(SK_PROMPT_TEXT); - sk_readline(input, sizeof(input), active); + sk_console_readline(input, sizeof(input), active); if (input[0] == '\0') { console_puts(" ok\n"); diff --git a/src/starkernel/virtio/virtio_rng.c b/src/starkernel/virtio/virtio_rng.c index ab92338..9b17815 100644 --- a/src/starkernel/virtio/virtio_rng.c +++ b/src/starkernel/virtio/virtio_rng.c @@ -216,7 +216,13 @@ static int vrng_request(uint32_t *bytes_out) { } uint32_t used_slot = (uint32_t)s->last_used_idx & (VQUEUE_SIZE - 1u); - *bytes_out = s->used->ring[used_slot].len; + /* The device-controlled used length is trusted after this point: + * data_buf is only VRNG_BUF_SIZE bytes, so clamp anything larger to + * the buffer size to keep the caller's later data_buf copy in-bounds + * against a buggy or malicious device. */ + uint32_t used_len = s->used->ring[used_slot].len; + if (used_len > VRNG_BUF_SIZE) used_len = VRNG_BUF_SIZE; + *bytes_out = used_len; s->last_used_idx = s->used->idx; return 0; diff --git a/src/starkernel/vm/host/shim.c b/src/starkernel/vm/host/shim.c index 2d26879..5dbf78a 100644 --- a/src/starkernel/vm/host/shim.c +++ b/src/starkernel/vm/host/shim.c @@ -58,10 +58,17 @@ #endif #include "platform_time.h" #include "platform_lock.h" +/* No LOG_LINE_MAX include-order constraint anymore: vm.h's own + * LOG_LINE_MAX (persistent block-log line size, 64) and log.h's in-memory + * message line length (renamed LOG_MSG_LINE_MAX, 256) no longer share a + * name, so include order is irrelevant here. */ +#include "starkernel/repl.h" +#include "starkernel/vm/bootstrap/sk_vm_bootstrap.h" #include "log.h" #include "vm_host.h" #include "console.h" #include "kmalloc.h" +#include "platform_io.h" #include #include #include @@ -1126,12 +1133,39 @@ void rewind(FILE *stream) { (void)stream; } int fscanf(FILE *stream, const char *fmt, ...) { (void)stream; (void)fmt; return -1; } /** @brief Kernel @c sscanf(): always returns -1 — not implemented in shim. */ int sscanf(const char *str, const char *fmt, ...) { (void)str; (void)fmt; return -1; } -/** @brief Kernel @c fgets(): always returns @c NULL — no filesystem in kernel. */ -char *fgets(char *s, int size, FILE *stream) { (void)s; (void)size; (void)stream; return NULL; } +/* fgets()/getchar()'s real target: whichever VM the console is currently + * addressing (Tripod's USE redirect), or Mama when nothing is redirected -- + * the same fallback sk_repl_run()/sk_repl_step() themselves use, since + * neither fgets() nor getchar() has a VM* of its own to work with (unlike + * a FORTH primitive, which always does). */ +static VM *shim_console_vm(void) { + VM *active = sk_repl_get_active_vm(); + return active ? active : (VM *)sk_get_mama_vm(); +} + +/** @brief Kernel @c fgets(): real body -- QUERY/EXPECT's underlying line + * read, routed through sk_console_readline() (the same echo/backspace + * line editor the REPL's own prompt uses). @p stream is ignored: the + * kernel has exactly one input source, the attached console, regardless + * of which stdio handle a caller passes. Returns NULL only if @p s is + * NULL or @p size is non-positive, matching glibc's own fgets() contract; + * an empty line (bare Enter) still returns @p s with @p s[0] == '\0', + * same as glibc. */ +char *fgets(char *s, int size, FILE *stream) { + (void)stream; + if (!s || size <= 0) return NULL; + sk_console_readline(s, size, shim_console_vm()); + return s; +} /** @brief Kernel @c fputc(): ignores stream; emits @p c to kernel console. */ int fputc(int c, FILE *stream) { (void)stream; console_putc((char)c); return c; } -/** @brief Kernel @c fgetc(): always returns -1 (EOF) — no filesystem in kernel. */ -int fgetc(FILE *stream) { (void)stream; return -1; } +/** @brief Kernel @c fgetc(): real body -- same one input source as + * @c getchar(), @p stream ignored (see @c fgets() above). Forward-declared + * here since @c getchar() itself isn't defined until further down this + * file and shim.c has no shared stdio.h to declare it earlier (its own + * @c FILE typedef, above, would collide with freestanding/stdio.h's). */ +int getchar(void); +int fgetc(FILE *stream) { (void)stream; return getchar(); } /** * @brief Kernel @c __isoc99_sscanf() stub (ISO C99 internal sscanf symbol). @@ -1207,14 +1241,22 @@ const unsigned short ** __ctype_b_loc(void) { return &p; } -/** @brief Kernel @c getchar(): always returns -1 (EOF) — no stdin in kernel. */ -int getchar(void) { return -1; } +/** @brief Kernel @c getchar(): real body -- KEY's underlying single-key + * read, routed through sk_console_getkey() (blocks with heartbeat/idle + * servicing, no echo). See fgets()'s own doc comment on shim_console_vm(). */ +int getchar(void) { return sk_console_getkey(shim_console_vm()); } /** @brief Kernel @c getc(): ignores stream, same as @c getchar(). GCC's -O2 * folds @c getchar() call sites into @c getc(stdin) (FABRIC.md item 4.5d) -- * this symbol was never needed at -O0 because that fold pass is inactive * there. */ int getc(FILE *stream) { (void)stream; return getchar(); } +/** @brief Kernel @c sf_terminal_ready(): real body of the standard + * dictionary's ?TERMINAL word (platform_io.h) -- non-blocking peek via + * sk_console_key_available(), which buffers any found byte so a + * following KEY/getchar() still returns it. */ +int sf_terminal_ready(void) { return sk_console_key_available(); } + /* ----------------------------------------------------------------------------- * Misc platform stubs * ---------------------------------------------------------------------------*/ diff --git a/src/word_source/io_words.c b/src/word_source/io_words.c index 3f781b2..e8ad212 100644 --- a/src/word_source/io_words.c +++ b/src/word_source/io_words.c @@ -44,6 +44,7 @@ #include "include/io_words.h" #include "../../include/word_registry.h" #include "../../include/log.h" +#include "../../include/platform_io.h" #include @@ -104,8 +105,7 @@ static void io_word_question_terminal(VM *vm) { return; } - /* Simple implementation - always return false for now */ - vm->data_stack[++vm->dsp] = 0; + vm->data_stack[++vm->dsp] = sf_terminal_ready() ? -1 : 0; } /**