149 lines
5.1 KiB
Forth
149 lines
5.1 KiB
Forth
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 ;
|