Hera can't message: root-caused and fixed by symmetry (FABRIC-3.md §XX)
Hera never loaded common:messaging.4th, unlike every other VM in the fleet. The standing belief was this was deliberate, to avoid moving her dict_hash off baseline. Checked live instead of assumed: loading messaging.4th into her dictionary silently dropped every colon- definition referencing one of 8 STADIUM-* primitives that register_child_vm_words() gives every other VM but register_mama_forth_words() never gave her -- a missing-primitive gap, not a designed privilege boundary. Confirmed mama_word_birth is genuinely VM-agnostic and SPAWN-EVENT is an unwired placeholder before proposing the fix. Fix: register the same 8 STADIUM-* primitives for Hera, load messaging.4th from init.4th the same way Hermes/Artemis/console/mint already do, and give her own idle-loop context a direct MSG-TICK call (not VM-EXEC, which would hit the same reentrancy class the existing per-other-VM pump loop already guards against) so her own queued messages actually drain. Her dictionary is now a proper superset of every child VM's, plus her remaining extra privileges -- not structurally different from any other VM, just additionally privileged. Verified: dict_hash identical across amd64/aarch64/riscv64 (0xc8f4b09e36f4fc4a), Hermes/Artemis dict_hashes unchanged and still cross-arch identical, all three boot clean to zuse)ok> with zero UNKNOWN WORD faults, mkcapsule --lint clean. Unblocks rewriting the turn-attractor (FABRIC-3.md §XIX) to coordinate via real MSG-SEND/MSG-TICK instead of blocking VM-EXEC. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXieurDfDSsDFdnSyusuWo
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
5a9425b91b
commit
7edccd2c35
+46
-45
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-12T18:51:37Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-12T20:00:38Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
@@ -12,7 +12,7 @@
|
||||
| `acl-std79.4th` | 4023, 4024, 4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044, 4045, 4046, 4047 | `0x5a622e41d1fd0bb9` | yes |
|
||||
| `artemis:init.4th` | 4110, 4111, 4112, 4113, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4170, 4171, 4172, 4173, 4174, 4177, 4178, 4179, 4180, 4181, 4182, 4851, 4852, 4853, 4854, 4856, 4857, 4858 | `0xac215ecb873c4db3` | yes |
|
||||
| `block-acl.4th` | 4019, 4020 | `0xf6cc2a59e3a6734e` | yes |
|
||||
| `common:messaging.4th` | 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041 | `0x5cfb02a42f4a8323` | yes |
|
||||
| `common:messaging.4th` | 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042 | `0xedde53f6faed7355` | yes |
|
||||
| `common:msg.4th` | 4055 | `0x850a0382344ea6c4` | yes |
|
||||
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` | yes |
|
||||
| `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xf154616d248e861f` | yes |
|
||||
@@ -35,7 +35,7 @@
|
||||
| `init-l8-temporal.4th` | 4830, 4831 | `0x51abd4c138246651` | yes |
|
||||
| `init-l8-transition.4th` | 4840, 4841, 4842 | `0xbcc1a81976f0a4c9` | yes |
|
||||
| `init-l8-volatile.4th` | 4810, 4811, 4812, 4813 | `0x98caabbbd92abac4` | yes |
|
||||
| `init.4th` | 2049, 2050, 2057 | `0x5d35c5c6a6eafe04` | yes |
|
||||
| `init.4th` | 2049, 2050, 2057 | `0x1ef4939ed32ec1e6` | yes |
|
||||
| `lib.4th` | 4050 | `0x4b216635c359ef73` | yes |
|
||||
| `process.4th` | 4300, 4301 | `0x781afc1dbd0294f7` | yes |
|
||||
| `sdk.4th` | 5109, 5110, 5111, 5112, 5113, 5114, 5115 | `0x008fdbbb62c94a3a` | yes |
|
||||
@@ -48,9 +48,9 @@
|
||||
|
||||
| LBN | Capsule | xxHash64 | Status |
|
||||
|-----|---------|----------|--------|
|
||||
| 2049 | `init.4th` | `0x5d35c5c6a6eafe04` | ok |
|
||||
| 2050 | `init.4th` | `0x5d35c5c6a6eafe04` | ok |
|
||||
| 2057 | `init.4th` | `0x5d35c5c6a6eafe04` | ok |
|
||||
| 2049 | `init.4th` | `0x1ef4939ed32ec1e6` | ok |
|
||||
| 2050 | `init.4th` | `0x1ef4939ed32ec1e6` | ok |
|
||||
| 2057 | `init.4th` | `0x1ef4939ed32ec1e6` | ok |
|
||||
| 2064 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
| 2065 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
| 2066 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
@@ -329,45 +329,46 @@
|
||||
| 5000 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5001 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5002 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5003 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5030 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5039 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5040 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5041 | `common:messaging.4th` | `0x5cfb02a42f4a8323` | ok |
|
||||
| 5003 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5030 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5039 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5040 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5041 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5042 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5100 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5101 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5102 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
|
||||
@@ -59,19 +59,31 @@ VARIABLE CH-ACTIVE
|
||||
VARIABLE COMMON-CH
|
||||
VARIABLE MY-CH-ID
|
||||
Block 5006
|
||||
( VM name routing table -- same fixed table every VM loads, )
|
||||
( so IDX>NAME resolves identically everywhere. )
|
||||
8 CONSTANT VM-MAX
|
||||
( VM routing table. SXIX: 16 slots, not 8 -- see FABRIC-3.md. )
|
||||
( Hera/Hermes/Artemis stay 0/1/2 (artemis:init.4th depends on )
|
||||
( it); identities get NEW slots 3-10, never renumbered. )
|
||||
16 CONSTANT VM-MAX
|
||||
CREATE VM-NAME-ADDRS VM-MAX CELLS ALLOT
|
||||
CREATE VM-NAME-LENS VM-MAX CELLS ALLOT
|
||||
: VM-NAME-REG ( addr u idx -- )
|
||||
DUP VM-MAX >= IF DROP 2DROP EXIT THEN
|
||||
>R R@ CELLS VM-NAME-LENS + !
|
||||
R> CELLS VM-NAME-ADDRS + ! ;
|
||||
Block 5042
|
||||
( doe-idx (std79-doe.fth ID-NAME) -> msg-idx: 1..8 -> 3..10. )
|
||||
: DOE-IDX>MSG-IDX ( doe-idx -- msg-idx ) 2 + ;
|
||||
: VM-NAMES-INIT ( -- )
|
||||
S" Hera" 0 VM-NAME-REG
|
||||
S" Hermes" 1 VM-NAME-REG
|
||||
S" Artemis" 2 VM-NAME-REG ;
|
||||
S" Artemis" 2 VM-NAME-REG
|
||||
S" rajames" 1 DOE-IDX>MSG-IDX VM-NAME-REG
|
||||
S" 00" 2 DOE-IDX>MSG-IDX VM-NAME-REG
|
||||
S" 01" 3 DOE-IDX>MSG-IDX VM-NAME-REG
|
||||
S" 02" 4 DOE-IDX>MSG-IDX VM-NAME-REG
|
||||
S" 03" 5 DOE-IDX>MSG-IDX VM-NAME-REG
|
||||
S" 04" 6 DOE-IDX>MSG-IDX VM-NAME-REG
|
||||
S" 05" 7 DOE-IDX>MSG-IDX VM-NAME-REG
|
||||
S" 06" 8 DOE-IDX>MSG-IDX VM-NAME-REG ;
|
||||
Block 5007
|
||||
( INIT-FREE. stamps STADIUM-NONE into each slot's stadium- )
|
||||
( cell field (msg off 5, ch off 3). Raw offsets: accessors )
|
||||
|
||||
@@ -19,6 +19,9 @@ S" zuse-eligibility.4th" EXEC
|
||||
S" lib.4th" EXEC
|
||||
S" fabric.4th" EXEC
|
||||
S" font.4th" EXEC
|
||||
( SXX: same pattern Hermes/Artemis/console/mint already use. )
|
||||
S" common:messaging.4th" EXEC
|
||||
MSG-CD-INIT
|
||||
Block 2050
|
||||
( Hera boot — banner )
|
||||
BOOT-BANNER
|
||||
|
||||
Reference in New Issue
Block a user