113 lines
3.7 KiB
Markdown
113 lines
3.7 KiB
Markdown
# Hermes Tripod Integration Test — Results
|
|
|
|
**Date:** 2026-06-27
|
|
**Branch:** `lithosananke`
|
|
**Commit:** `fe4b2442`
|
|
**Script:** `tools/hermes_tripod_smoke.sh`
|
|
**Status:** PASS — 16/16
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
All six inter-VM message paths through the Tripod dispatched to the correct
|
|
recipient. HERMES-TICK ran clean. Arena was empty after reap.
|
|
|
|
---
|
|
|
|
## Output
|
|
|
|
```
|
|
>>> Tripod integration test
|
|
>>> [1] Hera->Hermes SPAWN-EVENT
|
|
[Hermes recv]
|
|
>>> [2] Hera->Artemis store request
|
|
[Artemis recv]
|
|
>>> [3] Hermes->Hera delivery confirm
|
|
[Hera recv]
|
|
>>> [4] Hermes->Artemis log store
|
|
[Artemis recv]
|
|
>>> [5] Artemis->Hera ACK
|
|
[Hera recv]
|
|
>>> [6] Artemis->Hermes route result
|
|
[Hermes recv]
|
|
>>> HERMES-TICK (cool all 6)
|
|
>>> HERMES-TICK ok
|
|
>>> MSG-ARENA clean (expect 0): 0
|
|
>>> === Tripod integration complete ===
|
|
```
|
|
|
|
---
|
|
|
|
## Validation Results
|
|
|
|
| # | Check | Result |
|
|
|---|-------|--------|
|
|
| 1 | test started | PASS |
|
|
| 2 | path1 header — `[1] Hera->Hermes SPAWN-EVENT` | PASS |
|
|
| 3 | path1 recv — `[Hermes recv]` | PASS |
|
|
| 4 | path2 header — `[2] Hera->Artemis store request` | PASS |
|
|
| 5 | path2 recv — `[Artemis recv]` | PASS |
|
|
| 6 | path3 header — `[3] Hermes->Hera delivery confirm` | PASS |
|
|
| 7 | path3 recv — `[Hera recv]` | PASS |
|
|
| 8 | path4 header — `[4] Hermes->Artemis log store` | PASS |
|
|
| 9 | path4 recv — `[Artemis recv]` | PASS |
|
|
| 10 | path5 header — `[5] Artemis->Hera ACK` | PASS |
|
|
| 11 | path5 recv — `[Hera recv]` | PASS |
|
|
| 12 | path6 header — `[6] Artemis->Hermes route result` | PASS |
|
|
| 13 | path6 recv — `[Hermes recv]` | PASS |
|
|
| 14 | HERMES-TICK ok | PASS |
|
|
| 15 | arena clean (expect 0): 0 | PASS |
|
|
| 16 | integration complete | PASS |
|
|
|
|
**Result: 16 passed, 0 failed**
|
|
|
|
---
|
|
|
|
## Architecture Notes
|
|
|
|
**Dispatch mechanism:** Name-length discriminator in `VM-EXEC-TRIPOD` —
|
|
Hera (len=4), Hermes (len=6), Artemis (len=7). No `COMPARE` word needed.
|
|
|
|
**Late-binding shim install:** `DEFER VM-EXEC` declared in `capsules/core/init.4th`.
|
|
The test wires `' VM-EXEC-TRIPOD IS VM-EXEC` from Block 9996 before Hermes loads.
|
|
This is the first live use of the new `DEFER`/`IS`/`DEFER@` C primitives (Module 27).
|
|
|
|
**DO loop in block content:** `DO...LOOP` is compile-only in StarForth.
|
|
`TRIP-ZERO-6` is compiled as a colon word at the top of Block 9997 so the
|
|
loop body compiles correctly before it is called.
|
|
|
|
**Routing order confirmed:**
|
|
|
|
| Path | Sender | Recipient | Type | `[VM recv]` |
|
|
|------|--------|-----------|------|------------|
|
|
| 1 | Hera | Hermes | SPAWN-EVENT (1) | `[Hermes recv]` |
|
|
| 2 | Hera | Artemis | 10 | `[Artemis recv]` |
|
|
| 3 | Hermes | Hera | SPAWN-EVENT (1) | `[Hera recv]` |
|
|
| 4 | Hermes | Artemis | 11 | `[Artemis recv]` |
|
|
| 5 | Artemis | Hera | 12 | `[Hera recv]` |
|
|
| 6 | Artemis | Hermes | 13 | `[Hermes recv]` |
|
|
|
|
---
|
|
|
|
## Bugs Addressed (prerequisite work)
|
|
|
|
| Bug | Description | Fix |
|
|
|-----|-------------|-----|
|
|
| H1 | `MSG-ALLOC` returned dirty nodes (free-list link in type field) | Zero node after allocation with `FILL` |
|
|
| H2 | `CH-COOL-ALL` only walked `CH-ACTIVE` list; raw `CH-ALLOC` nodes missed | Smoke test inserts CH1 into CH-ACTIVE before cooling |
|
|
| H3 | `MSG-SEND` had `DUP >R` leaving message address on data stack; field writes scrambled | Changed to `>R` |
|
|
|
|
---
|
|
|
|
## What This Does Not Test
|
|
|
|
- True async inter-process delivery (hosted FORTH is single-threaded; `VM-EXEC`
|
|
fires synchronously inside `MSG-DELIVER`)
|
|
- K≡1.0 fleet accounting across real VM boundaries
|
|
- Channel negotiation (`CH-REQUEST → CH-ACCEPT → ephemeral channel lifecycle`)
|
|
- Hera lifecycle decisions driven by fleet K telemetry
|
|
|
|
Those belong to the kernel integration test (three-arch QEMU boot with
|
|
real separate VM instances). This test validates the Hermes dispatch substrate.
|