==[ PI ]==
user@raspberrypi:~/ast-vm $ rm *.json *.md *.wal
rm: cannot remove '*.wal': No such file or directory
user@raspberrypi:~/ast-vm $ x-console hal-9000 restart
[-] Console hal-9000 is not running.
[+] Console hal-9000 created and executed via Event-Driven wrapper in
/home/user/ast-vm
user@raspberrypi:~/ast-vm $ x-console hal-9000 dump
user@raspberrypi:~/ast-vm $ /tmp/x_console_start_hal-9000.sh
[Daemon] Booting Mesh Control Plane...
[Daemon] Control Plane API & WebSocket listening on port 9000
user@raspberrypi:~/ast-vm $ { curl -X POST http://localhost:9000/nodes -H
"Content-Type: application/json" -d '{"nodeId": "Engine#Helsinki", "port":
8088}'; curl -X POST http://localhost:9000/nodes -H "Content-Type:
application/json" -d '{"nodeId": "Engine#Oulu", "port": 8089}'; curl -X POST
http://localhost:9000/nodes -H "Content-Type: application/json" -d '{"nodeId":
"Engine#Tampere", "port": 8050}';B }
{"status":"Created","nodeId":"Engine#Helsinki","port":8088}{"status":"Created",
"nodeId":"Engine#Oulu","port":8089}{"status":"Created","nodeId":"Engine#Tampere
","port":8050}user@raspberrypi:~/ast-vm $ x-console hal-9000 dumpocalhost:9000/
nodes -H "Conx-console hal-9000 follow '{"nodeId": "E
==========================================================
B B ENTERING LIVE FOLLOW MODE: hal-9000
B B Streaming output. Safe from input. Mouse works normally.
B B Streaming output. Safe from input. Mouse works normally.* TO EXIT: Press
'Ctrl+C'
==========================================================
user@raspberrypi:~/ast-vm $ /tmp/x_console_start_hal-9000.sh
[Daemon] Booting Mesh Control Plane...
[Daemon] Control Plane API & WebSocket listening on port 9000
[Daemon] Spawning Node: Engine#Helsinki on Port 8088...
[Daemon] Spawning Node: Engine#Oulu on Port 8089...
[Daemon] Spawning Node: Engine#Tampere on Port 8050...
[Engine#Tampere] Booted Actor#Math. Listening.
[Engine#Tampere] Booted Actor#Math. Listening.
---------------------- [LIVE FEED] -----------------------
==[ /PI ]==
==[ Elli ]==
elli:~$ nc vadelma 8050
{"status": "connected", "node": "Omega Mesh TCP Gateway"}
{"action": "call_other", "target_obj": "Actor#Math", "method":
"process_scores"}
{"action":"call_reply","target_obj":"Netcat#1","target_node":"Gateway#Engine#Ta
mpere","data":120,"source_node":"Engine#Tampere"}
==[ /Elli ]==
==[ Chrome ]==
HAUKI-X86 // Mission Control
[ Spawn Engine ]
Node ID (e.g., Engine#Kuopio)
B
Port (e.g., 8090)
BSPAWN
[ Deploy Actor ]
Engine#Tampere
B
Actor#Math
B
[
B "do",
B ["defvar", "scores", ["array", 10, 20, 30]],
B ["def", "process_scores", [],B
B B ["do",
B B B ["def", "double", ["x"], ["*", "x", 2]],
B B B ["def", "sum", ["acc", "x"], ["+", "acc", "x"]],
B B B ["let", [["doubled", ["list:map", "double", "scores"]]],
B B B B ["list:reduce", "sum", 0, "doubled"]
B B B ]
B B ]
B ],
B ["register-object", ["str", "Actor#Math"]]
]
BDEPLOY PAYLOAD
Engine#Helsinki
IDLE
SUSPEND
Engine#Oulu
IDLE
SUSPEND
Engine#Tampere
IDLE
SUSPEND
[SYS] Telemetry Stream Connected
[INFO] [Engine#Tampere] Booted Actor#Math. Listening.
[INFO] [Engine#Tampere] Booted Actor#Math. Listening.
[Engine#Tampere] WAL appended: process_scores()
[Engine#Tampere] WAL appended: process_scores() [Engine#Tampere] AST-MD
Snapshotted. WAL truncated.
==[ /Chrome ]==
The result 120 confirms absolute success.
Your custom virtual machine just dynamically resolved higher-order functions
(double and sum), passed them into recursive standard library methods
(list:map and list:reduce), sliced the arrays natively, reduced the payload to
120, and returned it. Because of the code/state separation patch, your AST-MD
snapshot remained completely pristine, storing only the scores: [10, 20, 30]
data.
(Note: The double Booted Actor#Math log is just a harmless race condition
where both the invisible stdlib deployment and the Actor#Math deployment fired
a completed message back to the Daemon. It doesn't affect execution).
Netcat is fantastic for raw backend testing, but modern architectures need
web-native ingestion. We are going to build an HTTP Ingress Gateway. By
treating an HTTP Response object exactly like a suspended Netcat socket, we
can make standard web browsers wait for CRDT mesh executions.