Files
LithosAnanake/capsules/init.4th
T

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 ;