Per FABRIC-3.md D.7 (birth-by-message-only): the Tripod legs must be alive session-less before any thumbdrive-attach flow has a running Hermes/Artemis to message. kernel_main.c's item 4.2/4.6 self-tests previously birthed both, exercised diagnostics, then explicitly KILLed them before ok> every boot -- production boot never actually kept either alive. Stripped both blocks down to birth-only, diagnostics and KILL removed. Found and fixed a real regression this surfaced, not left broken: Hermes's CD-INIT (message/channel arena init, and the thing that loads lib.4th into her own dictionary) was only ever invoked by the self-test just removed -- nothing in hermes/init.4th itself called it. Added an unconditional CD-INIT call at the end of her own init.4th so a real birth actually initializes her arena, matching how Artemis's own ART-BOOT-ENTRY already runs unconditionally at her own capsule load. Added STARTUP-BANNER (lib.4th): a shared word reading a common IDENTITY-BANNER buffer, printing "(no identity)" until CERTVERIFY/MINT exist to populate it from a thumbdrive's PKI fields -- scaffolding only, per direct instruction. Wired into each Tripod leg's own init.4th (Hera/Hermes/Artemis); Artemis didn't load lib.4th before, added that too. Verified live on all three architectures: BIRTH for both, no KILL anywhere in any log, and an interactive USE round-trip confirmed Hermes is genuinely reachable post-boot, not just logged as born. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019ZGkimpfyh63EZyRkNbkPD
18 lines
619 B
Forth
18 lines
619 B
Forth
Block 4050
|
|
( lib.4th — shared serial output primitives )
|
|
( Common words reused by doe-campaign.4th and future capsules. )
|
|
( Load before any capsule that needs N. COMMA CRLF CSV-COL. )
|
|
: N. ( n -- )
|
|
DUP 0 < IF 45 EMIT ABS THEN
|
|
0 SWAP <# #S #> TYPE ;
|
|
: COMMA 44 EMIT ;
|
|
: CRLF 13 EMIT 10 EMIT ;
|
|
: CSV-COL ( n -- ) N. COMMA ;
|
|
: CSV-LAST ( n -- ) N. CRLF ;
|
|
: Q.SHOW ( q -- ) Q.PRINT CR ;
|
|
CREATE IDENTITY-BANNER 128 ALLOT
|
|
VARIABLE IDENTITY-BANNER-LEN 0 IDENTITY-BANNER-LEN !
|
|
: STARTUP-BANNER ( -- ) IDENTITY-BANNER-LEN @ 0= IF
|
|
." (no identity)" CR EXIT THEN
|
|
IDENTITY-BANNER IDENTITY-BANNER-LEN @ TYPE CR ;
|