Block 2057 ( BOOT-BANNER - LithosAnanke REPL greeting ) : .SEP ." ================================================" CR ; : BOOT-BANNER CR .SEP ." LithosAnanke — FORTH-79 bare-metal kernel" CR ." Tripod v1: K=1.0 + Hermes events + Artemis storage" CR .SEP ." Tripod: Hera Hermes Artemis [live]" CR .SEP CR ; Block 2049 ( Hera init — Mama VM personality ) : VM-TREE ( -- ) ." Hera[0]>Hermes[1] Artemis[2]" CR ; : VM-PARENT ( -- id ) 0 ; : VM-CHILDREN ( -- ) ." Hermes[1] Artemis[2]" CR ; \ S" ACL.4th" EXEC S" lib.4th" EXEC S" common:msg.4th" USE S" process.4th" EXEC \ Tripod boot: Artemis -> Hermes -> Hera S" Artemis" BIRTH S" CD-INIT" S" Artemis" VM-EXEC S" Hermes" BIRTH S" CD-INIT" S" Hermes" VM-EXEC Block 2053 ( Phase 1: readiness handshake -- VM-FLEET-ATTRACTOR-DESIGN ) : READINESS-HANDSHAKE ( -- ) S" HERMES-ANNOUNCE-READY" S" Hermes" VM-EXEC S" ARTEMIS-ANNOUNCE-READY" S" Artemis" VM-EXEC S" 0 ENQUEUE-READY" S" Hermes" VM-EXEC S" HERMES-TICK" S" Hermes" VM-EXEC S" READY-ALL?" S" Hermes" VM-CALL IF S" READY-ACK" S" Hermes" VM-EXEC S" ARTEMIS-READY-ACK" S" Artemis" VM-EXEC LOG-TEST" PASS: readiness handshake" VM-PHYSICS-STATUS ELSE LOG-ERROR" FAIL: readiness handshake" THEN ; Block 2054 ( Phase 2: real broadcast -- VM-FLEET-ATTRACTOR-DESIGN ) VARIABLE BCAST-GOT : BCAST-RECV ( -- ) 1 BCAST-GOT +! ; : BROADCAST-TEST ( -- ) S" REGISTER-COMMON-MEMBERS" S" Hermes" VM-EXEC S" SEND-BROADCAST-TEST" S" Hermes" VM-EXEC S" HERMES-TICK" S" Hermes" VM-EXEC BCAST-GOT @ 0> S" BCAST-GOT @" S" Hermes" VM-CALL 0> AND S" BCAST-GOT @" S" Artemis" VM-CALL 0> AND IF LOG-TEST" PASS: broadcast reached all 3" VM-PHYSICS-STATUS ELSE LOG-ERROR" FAIL: broadcast reached all 3" THEN ; Block 2050 ( Hera boot — banner ) BOOT-BANNER READINESS-HANDSHAKE BROADCAST-TEST Block 2051 ( TRIPOD-TEST: 6 criteria per TRIPOD.md ) ( K holds continuously by construction; no tick-pump ) : TRIPOD-TEST ( -- ) LOG-INFO" === TRIPOD Acceptance ===" VM-CONSERVED? IF LOG-TEST" PASS: fleet K" ELSE LOG-ERROR" FAIL: K drift" THEN S" HERMES-TICK" S" Hermes" VM-EXEC LOG-TEST" PASS: Hermes liveness" S" ART-STATUS" S" Artemis" VM-EXEC LOG-TEST" PASS: Artemis ready" S" Hermes" KILL-VM LOG-TEST" PASS: reap" S" Hermes" BIRTH S" CD-INIT" S" Hermes" VM-EXEC VM-CONSERVED? IF LOG-TEST" K soak" ELSE LOG-ERROR" K soak" THEN LOG-INFO" === TRIPOD DONE ===" ; Block 2052 ( Run TRIPOD acceptance test + E2E msg flow ) TRIPOD-TEST : HERMES-E2E ( -- ) S" HERMES-MSG-TEST" S" Hermes" VM-CALL IF LOG-TEST" PASS: msg queued" ELSE LOG-ERROR" FAIL: msg queued" THEN S" HERMES-TICK" S" Hermes" VM-EXEC S" MSG-USED" S" Hermes" VM-CALL 0 > IF LOG-TEST" PASS: E2E msg flow" ELSE LOG-ERROR" FAIL: E2E msg flow" THEN ; HERMES-E2E Block 2055 ( Phase 3: fleet DoE -- one config per VM per run ) ( VM-FLEET-ATTRACTOR-DESIGN-20260705.md rev h. Not run at ) ( boot -- invoked via serial injection: ) ( SEED N-RUNS EXEC-FLEET-DOE ) VARIABLE FDOE-RUN-ID VARIABLE FDOE-HERA VARIABLE FDOE-HERMES VARIABLE FDOE-ARTEMIS : FLEET-DOE-HDR ( -- ) ." FLEETDOE,run_id,hera_cfg,hermes_cfg,artemis_cfg" CRLF ; : FLEET-DOE-ROW ( -- ) ." FLEETDOE," FDOE-RUN-ID @ CSV-COL FDOE-HERA @ CSV-COL FDOE-HERMES @ CSV-COL FDOE-ARTEMIS @ CSV-LAST ; Block 2056 ( FDOE-REMOTE-FORCE-CMD: cfg -> "N L8-TABLE-FORCE" command ) ( string for VM-EXEC, targeting the same 128-config table ) ( the remote VM's own heartbeat drives (ssm_l8_force_config, ) ( ssm_jacquard.c) -- no CASE lookup needed for a raw index. ) VARIABLE FDOE-CMD-POS VARIABLE FDOE-APPEND-LEN : FDOE-CMD-APPEND ( src-addr src-len -- ) DUP FDOE-APPEND-LEN ! FDOE-CMD-POS @ SWAP MOVE FDOE-APPEND-LEN @ FDOE-CMD-POS +! ; : FDOE-REMOTE-FORCE-CMD ( cfg -- addr len ) PAD FDOE-CMD-POS ! 0 SWAP <# #S #> FDOE-CMD-APPEND S" L8-TABLE-FORCE" FDOE-CMD-APPEND PAD FDOE-CMD-POS @ PAD - ; Block 2058 ( Per-run apply + workload. Workload is HERMES-TICK/ART-PING, ) ( not BROADCAST-TEST -- that would exhaust Hermes's fixed ) ( member/message arenas after ~20 runs by re-registering ) ( members and allocating message slots faster than heat-decay ) ( reap can free them. VM-EXEC/VM-CALL themselves are what ) ( trigger vm_physics_touch -- the workload just needs to reach ) ( Hermes and Artemis each run, not do anything expensive. ) : FDOE-APPLY-ALL ( hera-cfg hermes-cfg artemis-cfg -- ) FDOE-ARTEMIS ! FDOE-HERMES ! FDOE-HERA ! FDOE-HERA @ L8-TABLE-FORCE FDOE-HERMES @ FDOE-REMOTE-FORCE-CMD S" Hermes" VM-EXEC FDOE-ARTEMIS @ FDOE-REMOTE-FORCE-CMD S" Artemis" VM-EXEC ; : FLEET-DOE-WORKLOAD ( -- ) S" HERMES-TICK" S" Hermes" VM-EXEC S" ART-PING" S" Artemis" VM-EXEC ; Block 2059 ( Run loop: draws (hera,hermes,artemis) cfg independently and ) ( uniformly from 0-127 each, with replacement, for n-runs. ) : FLEET-DOE-RUN-ONE ( hera-cfg hermes-cfg artemis-cfg -- ) FDOE-APPLY-ALL FLEET-DOE-WORKLOAD FLEET-DOE-ROW 1 FDOE-RUN-ID +! ; : EXEC-FLEET-DOE ( seed n-runs -- ) SWAP SEED 0 FDOE-RUN-ID ! 1 LOG-LEVEL! FLEET-DOE-HDR 0 DO 0 127 RANDOM 0 127 RANDOM 0 127 RANDOM FLEET-DOE-RUN-ONE LOOP 3 LOG-LEVEL! ." FLEET-DOE: complete" CRLF ;