FABRIC-3.md: scope MSGMIGRATE, capture Console-driven interactive mint onboarding vision

Traced the actual Hermes mechanism before scoping: MSG-DELIVER already executes arbitrary FORTH source text on the destination VM via VM-EXEC, not a structured RPC -- migrating an interaction needs no new dispatch machinery, only a routing decision. Noted that every "VM" lives in one kernel address space, not a separate process, so messaging WIREBIND/BINDSTEP/CERTVERIFY is an architectural-discipline choice (uniform heat/audit participation in Compudynamics via Hermes), not a correctness requirement.

Decisions: real target is the Console VM (already real hardware: serial+framebuffer+PS2, not waiting on D.2b), a two-hop flow (Hera->Console reports attach outcome, Console->Hera requests the privileged operation), payload arguments encoded as literals directly in the FORTH text.

Captured a substantial new vision detail surfaced live while scoping this (D.6): blank-media minting is meant to be an interactive Console-driven onboarding form (Full Name/Address/City/State/Country/Metadata), not a bare programmatic MINT call -- connects forward into RUNCAP's deferred "default personality content" question and MINT's own scope. Capture only, not designed in detail, per this arc's own capture-first discipline.
This commit is contained in:
Robert Allan James
2026-08-27 15:15:54 -04:00
parent f84e679a88
commit 87c1bee101
+108 -4
View File
@@ -1377,7 +1377,12 @@ can't"):**
- **Message-bus migration scope.** Which specific interactions (attach detection, cert - **Message-bus migration scope.** Which specific interactions (attach detection, cert
verify, console bind) move to Hermes messages, and what do those message shapes look like? verify, console bind) move to Hermes messages, and what do those message shapes look like?
Entirely unscoped, explicitly deferred until after a hardwired version exists to migrate Entirely unscoped, explicitly deferred until after a hardwired version exists to migrate
*from*. *from*. **SCOPED 2026-08-27 (`FABRIC-3.md` §F.15)**: `MSG-DELIVER` already executes arbitrary
FORTH text on the target VM (`VM-EXEC`), so no new dispatch mechanism is needed. Real target
is a genuine Console VM (already real: serial+framebuffer+PS2), two-hop flow (Hera→Console
reports attach; Console→Hera requests the privileged operation with literal arguments).
Surfaced a substantial new vision detail along the way: blank-media minting is a Console-
driven interactive onboarding form, not a bare word call (§D.6).
- **Polymorphic block-boundary behavior for user VMs** — still just the one original sentence - **Polymorphic block-boundary behavior for user VMs** — still just the one original sentence
from 2026-08-25, never elaborated. from 2026-08-25, never elaborated.
- **SSD identity-store scope** — does the system-resident store (the block-fence built in - **SSD identity-store scope** — does the system-resident store (the block-fence built in
@@ -1464,7 +1469,7 @@ graph TD
MINT["❌ Ongoing MINT word (Phase 8 + D.3)<br/>SCOPED 2026-08-27 (§F.8) — GPT dropped, single-device confirmed OK"] MINT["❌ Ongoing MINT word (Phase 8 + D.3)<br/>SCOPED 2026-08-27 (§F.8) — GPT dropped, single-device confirmed OK"]
PENTAGON["📍 Pentagon: Hera/Hermes/Artemis/<br/>User-VM/Console, K5 (D.2b)"] PENTAGON["📍 Pentagon: Hera/Hermes/Artemis/<br/>User-VM/Console, K5 (D.2b)"]
MSGSHAPE["✅ Hermes message shape known<br/>(MSG-CELLS, MSG-ALLOC/DELIVER)"] MSGSHAPE["✅ Hermes message shape known<br/>(MSG-CELLS, MSG-ALLOC/DELIVER)"]
MSGMIGRATE[" Message-bus migration of<br/>attach/verify/bind (D.4)"] MSGMIGRATE[" Message-bus migration of<br/>attach/verify/bind (D.4) — SCOPED 2026-08-27 (§F.15)"]
SSDSCOPE["❓ SSD identity-store scope<br/>for regular users (D.4)"] SSDSCOPE["❓ SSD identity-store scope<br/>for regular users (D.4)"]
ROUNDTRIP["❓ Session state round-trip<br/>across attaches (D.4)"] ROUNDTRIP["❓ Session state round-trip<br/>across attaches (D.4)"]
@@ -1509,8 +1514,8 @@ graph TD
classDef open fill:#666,stroke:#333,color:#fff classDef open fill:#666,stroke:#333,color:#fff
classDef partial fill:#883,stroke:#333,color:#fff classDef partial fill:#883,stroke:#333,color:#fff
class M6,PH8,EXPIRE,MSGSHAPE,HOTPLUG,BMAPWRITE,BMAPREAD done class M6,PH8,EXPIRE,MSGSHAPE,HOTPLUG,BMAPWRITE,BMAPREAD done
class W10,STALL,FIRSTTOUCH,WIREBIND,BINDSTEP,DETACH,MINT,BMAPFMT,CERTVERIFY,RUNCAP,UNCLEAN blocked class W10,STALL,FIRSTTOUCH,WIREBIND,BINDSTEP,DETACH,MINT,BMAPFMT,CERTVERIFY,RUNCAP,UNCLEAN,MSGMIGRATE blocked
class ACLKEY,MSGMIGRATE,SSDSCOPE,ROUNDTRIP,POLYBLOCK open class ACLKEY,SSDSCOPE,ROUNDTRIP,POLYBLOCK open
class MIGSM partial class MIGSM partial
``` ```
@@ -1583,6 +1588,11 @@ finished). Dashed arrows = softer "gates/informs" relationships.
Unlike most nodes this session, this one designs genuinely new protocol machinery rather than Unlike most nodes this session, this one designs genuinely new protocol machinery rather than
finding existing infrastructure already covers it: no completion-code distinction and no finding existing infrastructure already covers it: no completion-code distinction and no
recovery of any kind existed before this pass, only a bounded-timeout safety net. recovery of any kind existed before this pass, only a bounded-timeout safety net.
- **`MSGMIGRATE` needed no new mechanism, only a routing decision** (§F.15) — `MSG-DELIVER`
already executes arbitrary FORTH text on the target VM. Scoping it also surfaced a real,
substantial vision expansion (§D.6): blank-media minting is meant to be an interactive,
Console-driven onboarding form, connecting forward into both `RUNCAP`'s deferred
"default personality content" question and `MINT`'s own scope.
**Not yet done:** an ordered plan (which node to attack first, given the graph). Per Captain **Not yet done:** an ordered plan (which node to attack first, given the graph). Per Captain
Bob's own framing, that's the next pass — "start asking and answering questions iteratively Bob's own framing, that's the next pass — "start asking and answering questions iteratively
@@ -2275,3 +2285,97 @@ current iterative pass, recorded so they aren't lost):**
mechanism, and the codebase/documentation are clean per the above audit, tag a v2.0.0 mechanism, and the codebase/documentation are clean per the above audit, tag a v2.0.0
release. Stated as the destination this whole planning arc is walking toward, not an release. Stated as the destination this whole planning arc is walking toward, not an
immediate next step. immediate next step.
### D.6 — Console-driven interactive mint onboarding (vision capture, 2026-08-27)
Surfaced live while scoping `MSGMIGRATE`'s message-target question (§F.15) — capture only, per
this arc's own "capture first, plan second" discipline; not designed in detail here.
**Stated directly:** the Console VM (real hardware ownership: serial + framebuffer + PS2
keyboard) is where blank-media minting actually happens interactively, not a bare programmatic
`MINT` call. Zuse's own thumbdrive becoming physically present is itself what starts
authentication (no separate manual step). For **blank** media specifically, the system pulls
up an interactive "user StarshipOS (LithosAnanke+StarForth) Mint" onboarding form on the
Console:
```
Full Name:
Address 1:
Address 2:
City:
State/Province:
Country:
Metadata: (hexdump of some encrypted metadata OR QR code later)
```
**Why this matters beyond `MSGMIGRATE` itself:** this directly informs two already-open
questions elsewhere rather than sitting alone —
- **`RUNCAP`'s deferred "default personality content" question (§F.6)**: this onboarding data
is very likely *part of* what a freshly minted identity's personality/init source encodes,
not a separate concern. Not confirmed as a final answer — flagged as the likely connection.
- **`MINT`'s own scope (§F.8)**: minting a new identity now has a real interactive-collection
step in front of the cert/keypair/header-writing mechanics already scoped there. The Console
becomes an active participant in `MINT`, not just Zuse triggering it standalone.
**Not designed here, explicitly deferred (per the user's own "later" on the metadata field):**
the "hexdump of some encrypted metadata OR QR code" field's actual mechanism, encoding, and
purpose; the exact validation/editing UX for the form itself (can a field be corrected before
submit? what happens on a blank/skipped field?); how collected form data actually reaches
`MINT`'s execution (addressed at the mechanism level only, in `MSGMIGRATE` below — the message
carries the values, the *encoding* of the metadata field itself is separate and unaddressed).
### F.15 — `MSGMIGRATE` (the last real design question)
Traced the actual Hermes mechanism before designing anything, rather than treating "message"
as an abstract placeholder. **Real finding: `MSG-DELIVER` (`capsules/hermes/init.4th:200-203`)
does `MSG-TO@ IDX>NAME VM-EXEC`** — a message's out-of-line payload (`PADDR`/`PLEN`) is
**arbitrary FORTH source text, executed on the destination VM via the ordinary interpreter**,
not a structured/typed RPC call. Migrating an interaction to Hermes needs no new dispatch
machinery at all — only a decision about what FORTH text goes where.
Also worth being explicit about, since it reframes why this migration is even worth doing:
every "VM" in this system is a Forth VM instance living inside **one kernel address space**,
not a separate OS process. There is no correctness reason `WIREBIND`/`BINDSTEP`/`CERTVERIFY`
*must* become messages — Hera's REPL can already call their C functions directly, today, once
built. The stated reason to migrate anyway is architectural discipline: routing through Hermes
gives uniform heat-tracking/`STADIUM-CELL` participation in Compudynamics and an audit trail
via `MSG-SEQ`, matching the standing "nothing is done until it's messaging" completion
criterion — not solving an isolation problem that doesn't exist here.
**Decisions made 2026-08-27:**
1. **Real target: the Console VM**, not a self-addressed message to Hera. There is a real
Console VM today (serial + framebuffer + PS2 keyboard) — this isn't waiting on D.2b's
pentagon to become real, it already is. Corrects this pass's own first framing (a
self-addressed-to-Hera fallback was floated and explicitly rejected in favor of this).
2. **The flow is two hops, not one:**
- **Hop 1 (Hera → Console):** Hera's existing hardwired attach detection
(`homeblocks_sig_check()`, unchanged — this is Milestone 2 hardware-driver work, not
something that itself becomes a message; nothing exists to receive a message before
detection happens) results in a message to the Console VM reporting the outcome —
recognized identity, or blank/foreign media.
- **Console-side behavior (not itself a message):** for a recognized identity, the Console
proceeds toward the existing cert-verify/bind flow; for blank media, the Console runs the
interactive mint-onboarding form (§D.6) using its own owned hardware (framebuffer/PS2).
- **Hop 2 (Console → Hera):** once the Console has what it needs — either confirmation to
proceed with a recognized identity, or the completed onboarding fields for a new one — it
sends a message *back* to Hera to actually execute the privileged operation
(`MINT`/`WIREBIND`/`BINDSTEP`), since Hera owns the VM registry these operations mutate.
3. **Payload shape: arguments encoded as literals directly in the payload text**, not a
dedicated no-argument word reading global state. E.g. the Console's hop-2 message to Hera
for a mint would look like a human-typed command line with the collected fields pushed as
string literals ahead of the word call (`S" Robert James" S" 123 Main St" ... MINT`) — more
flexible than a fixed no-argument word, at the cost of the Console needing to build that
text safely (not addressed here — see deferred list).
**Not yet scoped (deferred within this node):** the exact literal-encoding/escaping mechanism
for building a multi-field FORTH command string safely on the Console side (a real concern —
untrusted-ish human-typed onboarding text landing in FORTH source text merits care, not
assumed away); the precise message `TYPE` values for each of the three migrated interactions
(this pass decided the mechanism and direction, not the constant catalog); whether
`CERTVERIFY`'s own re-verify-live behavior (`BINDSTEP`, §F.9) changes shape once it's Console-
mediated rather than a direct Hera-side check; how this reconciles with `PENTAGON`'s still-open
"which of the 10 edges are real today" question (`D.4`) — this node answers it for exactly the
Hera↔Console edge, not the other nine.