Stage E: Category B strip -- remove Hermes, messaging.4th, old routing (FABRIC-3.6.md task 4.1-4.4)
All FORTH-owned message types were cut over to kernel-Hermes in Phase 3 (tasks 3.8-3.10). This removes the now-dead FORTH messaging layer and the Hermes VM itself: capsules/common/messaging.4th, capsules/hermes/init.4th, the slot-3 VM-NAME-REG pairing convention, and every load-site/birth-site reference across capsules/init.4th, artemis/init.4th, hestia/init.4th, doe-campaign.4th (Artemis-only now), capsule_console.c, capsule_mint.c, capsule_wirebind.c, capsule_birth.c, and kernel_main.c. Verified on all three architectures: clean boot, mkcapsule --lint clean (36 files, 0 violations), zero UNKNOWN WORD, identical dict_hash across amd64/aarch64/riscv64 for every VM, and a full mint -> WIREBIND-attach -> USE -> relay round-trip exercising the two highest-risk edits (capsule_console.c/capsule_mint.c). Found, not fixed: deleting messaging.4th removes SEND-ELEVATE-REQUEST, which was the only caller of KH-ELEVATE-SEND and the only path to ELEVATE-GRANT (zuse-eligibility.4th, still loaded at boot) -- Phase 8 PKI's own elevation entrypoint. Needs a decision before Phase 5 close-out. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
cab9b5a31f
commit
3e201c82a5
+74
-118
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-22T15:02:28Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-22T22:29:26Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
@@ -10,22 +10,20 @@
|
||||
|---------|----------------|----------|--------|
|
||||
| `ACL.4th` | 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4015 | `0xf8890c05c0d8f921` | yes |
|
||||
| `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, 4048 | `0x773bf9209df191d1` | 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, 4860 | `0x419d50262e5ecfbe` | 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, 4860 | `0xe6fba9ae56e1c916` | 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, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042 | `0x863f77893ef8f353` | yes |
|
||||
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` | yes |
|
||||
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x26fb485e5c9dc6ff` | yes |
|
||||
| `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xf154616d248e861f` | yes |
|
||||
| `fabric.4th` | 4900, 4901, 4902, 4903, 4904, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, 4914, 4915, 4916, 4917, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 5000, 5001, 5002 | `0x9d9489cbeca4099b` | yes |
|
||||
| `font.4th` | 4925, 4926, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4936, 4937, 4938, 4939, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4947, 4948, 4949, 4950, 4951, 4952, 4953, 4954, 4955, 4956, 4957, 4958, 4959, 4960, 4961, 4962, 4963, 4964, 4965, 4966, 4967, 4968, 4969, 4970, 4971, 4972, 4973, 4974, 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985 | `0x3f305911500c78f6` | yes |
|
||||
| `hermes:init.4th` | 4153, 4855, 5116 | `0x2df61924448a6812` | yes |
|
||||
| `hestia:init.4th` | 4986, 4987, 4988 | `0x6aa0a1b5daf9d2ec` | yes |
|
||||
| `hestia:init.4th` | 4986, 4987, 4988 | `0x64e111990fbc45ff` | yes |
|
||||
| `init-l8-diverse.4th` | 4820, 4821, 4822 | `0xaa293201a6c91838` | yes |
|
||||
| `init-l8-omni.4th` | 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079 | `0x5979e314d6452045` | yes |
|
||||
| `init-l8-stable.4th` | 4806 | `0xdc3830f189063a9a` | yes |
|
||||
| `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 | `0x97e74b7abd3d3366` | yes |
|
||||
| `init.4th` | 2049, 2050, 2057 | `0xea038ba684c53443` | yes |
|
||||
| `lib.4th` | 4050 | `0x4b216635c359ef73` | yes |
|
||||
| `multiuser-doe.4th` | 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055 | `0x22140588ee7c39e6` | yes |
|
||||
| `sdk.4th` | 5109, 5110, 5111, 5112, 5113, 5114, 5115 | `0x008fdbbb62c94a3a` | yes |
|
||||
@@ -44,16 +42,16 @@
|
||||
| `workload-8.4th` | 2160 | `0x56b7f2f0efa000df` | yes |
|
||||
| `workload-9.4th` | 4706, 4715, 4725, 4735, 4745 | `0x3f2bec73142aa424` | yes |
|
||||
| `workload-calib1.4th` | 5043 | `0x3b9f2d17b554fabc` | yes |
|
||||
| `zuse-eligibility.4th` | 4021, 4022 | `0x8b49c1bc1e01dc58` | yes |
|
||||
| `zuse-eligibility.4th` | 4021, 4022 | `0x7b28f4776a32e0b7` | yes |
|
||||
| `zuse.4th` | 4016, 4017, 4018 | `0x490ded9be257a90b` | yes |
|
||||
|
||||
## Block Map (sorted by LBN)
|
||||
|
||||
| LBN | Capsule | xxHash64 | Status |
|
||||
|-----|---------|----------|--------|
|
||||
| 2049 | `init.4th` | `0x97e74b7abd3d3366` | ok |
|
||||
| 2050 | `init.4th` | `0x97e74b7abd3d3366` | ok |
|
||||
| 2057 | `init.4th` | `0x97e74b7abd3d3366` | ok |
|
||||
| 2049 | `init.4th` | `0xea038ba684c53443` | ok |
|
||||
| 2050 | `init.4th` | `0xea038ba684c53443` | ok |
|
||||
| 2057 | `init.4th` | `0xea038ba684c53443` | ok |
|
||||
| 2064 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
| 2065 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
| 2066 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
@@ -116,8 +114,8 @@
|
||||
| 4018 | `zuse.4th` | `0x490ded9be257a90b` | ok |
|
||||
| 4019 | `block-acl.4th` | `0xf6cc2a59e3a6734e` | ok |
|
||||
| 4020 | `block-acl.4th` | `0xf6cc2a59e3a6734e` | ok |
|
||||
| 4021 | `zuse-eligibility.4th` | `0x8b49c1bc1e01dc58` | ok |
|
||||
| 4022 | `zuse-eligibility.4th` | `0x8b49c1bc1e01dc58` | ok |
|
||||
| 4021 | `zuse-eligibility.4th` | `0x7b28f4776a32e0b7` | ok |
|
||||
| 4022 | `zuse-eligibility.4th` | `0x7b28f4776a32e0b7` | ok |
|
||||
| 4023 | `acl-std79.4th` | `0x773bf9209df191d1` | ok |
|
||||
| 4024 | `acl-std79.4th` | `0x773bf9209df191d1` | ok |
|
||||
| 4025 | `acl-std79.4th` | `0x773bf9209df191d1` | ok |
|
||||
@@ -145,58 +143,57 @@
|
||||
| 4047 | `acl-std79.4th` | `0x773bf9209df191d1` | ok |
|
||||
| 4048 | `acl-std79.4th` | `0x773bf9209df191d1` | ok |
|
||||
| 4050 | `lib.4th` | `0x4b216635c359ef73` | ok |
|
||||
| 4060 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4061 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4062 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4063 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4064 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4065 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4110 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4111 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4112 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4113 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4122 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4123 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4124 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4125 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4126 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4127 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4128 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4129 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4130 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4131 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4132 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4133 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4134 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4135 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4136 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4137 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4138 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4139 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4140 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4141 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4153 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
| 4160 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4161 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4162 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4163 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4164 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4165 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4166 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4167 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4168 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4169 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4170 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4171 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4172 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4173 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4174 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4177 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4178 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4179 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4180 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4181 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4182 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4060 | `doe-campaign.4th` | `0x26fb485e5c9dc6ff` | ok |
|
||||
| 4061 | `doe-campaign.4th` | `0x26fb485e5c9dc6ff` | ok |
|
||||
| 4062 | `doe-campaign.4th` | `0x26fb485e5c9dc6ff` | ok |
|
||||
| 4063 | `doe-campaign.4th` | `0x26fb485e5c9dc6ff` | ok |
|
||||
| 4064 | `doe-campaign.4th` | `0x26fb485e5c9dc6ff` | ok |
|
||||
| 4065 | `doe-campaign.4th` | `0x26fb485e5c9dc6ff` | ok |
|
||||
| 4110 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4111 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4112 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4113 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4122 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4123 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4124 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4125 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4126 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4127 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4128 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4129 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4130 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4131 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4132 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4133 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4134 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4135 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4136 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4137 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4138 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4139 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4140 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4141 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4160 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4161 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4162 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4163 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4164 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4165 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4166 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4167 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4168 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4169 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4170 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4171 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4172 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4173 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4174 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4177 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4178 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4179 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4180 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4181 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4182 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4200 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
|
||||
| 4201 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
|
||||
| 4202 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
|
||||
@@ -234,15 +231,14 @@
|
||||
| 4840 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
|
||||
| 4841 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
|
||||
| 4842 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
|
||||
| 4851 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4852 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4853 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4854 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4855 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
| 4856 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4857 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4858 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4860 | `artemis:init.4th` | `0x419d50262e5ecfbe` | ok |
|
||||
| 4851 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4852 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4853 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4854 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4856 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4857 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4858 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4860 | `artemis:init.4th` | `0xe6fba9ae56e1c916` | ok |
|
||||
| 4900 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4901 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4902 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
@@ -329,51 +325,12 @@
|
||||
| 4983 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4984 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4985 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4986 | `hestia:init.4th` | `0x6aa0a1b5daf9d2ec` | ok |
|
||||
| 4987 | `hestia:init.4th` | `0x6aa0a1b5daf9d2ec` | ok |
|
||||
| 4988 | `hestia:init.4th` | `0x6aa0a1b5daf9d2ec` | ok |
|
||||
| 4986 | `hestia:init.4th` | `0x64e111990fbc45ff` | ok |
|
||||
| 4987 | `hestia:init.4th` | `0x64e111990fbc45ff` | ok |
|
||||
| 4988 | `hestia:init.4th` | `0x64e111990fbc45ff` | ok |
|
||||
| 5000 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5001 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5002 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5003 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5039 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5040 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5041 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5042 | `common:messaging.4th` | `0x863f77893ef8f353` | ok |
|
||||
| 5043 | `workload-calib1.4th` | `0x3b9f2d17b554fabc` | ok |
|
||||
| 5044 | `multiuser-doe.4th` | `0x22140588ee7c39e6` | ok |
|
||||
| 5045 | `multiuser-doe.4th` | `0x22140588ee7c39e6` | ok |
|
||||
@@ -407,11 +364,10 @@
|
||||
| 5113 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
|
||||
| 5114 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
|
||||
| 5115 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
|
||||
| 5116 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
|
||||
## Conflicts
|
||||
|
||||
None.
|
||||
|
||||
---
|
||||
*38 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
*36 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
|
||||
@@ -492,13 +492,9 @@ Block 4853
|
||||
CD-INIT
|
||||
S" lib.4th" EXEC
|
||||
Block 4854
|
||||
( Phase C 2026-08-28: own messaging vocab + subscribe into )
|
||||
( Hermes's canonical COMMON-CH (idx 2 = Artemis, VM-NAMES- )
|
||||
( INIT). Hermes always exists by Artemis's birth. )
|
||||
S" common:messaging.4th" EXEC
|
||||
MSG-CD-INIT
|
||||
2 MY-CH-ID !
|
||||
S" 2 COMMON-CH @ CH-ADD-MBR" S" Hermes" VM-EXEC
|
||||
( FABRIC-3.6.md Phase 4, Stage E: common:messaging.4th/ )
|
||||
( MSG-CD-INIT/MY-CH-ID/COMMON-CH subscription all removed )
|
||||
( -- Hermes, the channel, and the words are all gone. )
|
||||
STARTUP-BANNER
|
||||
|
||||
Block 4856
|
||||
|
||||
@@ -1,490 +0,0 @@
|
||||
Block 5003
|
||||
( common:messaging.4th -- generic per-VM messaging vocab. )
|
||||
2 CONSTANT PAUSE-EVENT
|
||||
3 CONSTANT RESUME-EVENT
|
||||
4 CONSTANT KILL-EVENT
|
||||
0 CONSTANT CH-NEGOTIATING
|
||||
1 CONSTANT CH-OPEN
|
||||
2 CONSTANT CH-CLOSING
|
||||
9 CONSTANT MSG-CELLS
|
||||
6 CONSTANT CH-CELLS
|
||||
2 CONSTANT MBR-CELLS
|
||||
32 CONSTANT MSG-MAX
|
||||
16 CONSTANT CH-MAX
|
||||
64 CONSTANT MBR-MAX
|
||||
65208 CONSTANT Q-DECAY
|
||||
255 CONSTANT MSG-DELIVERED
|
||||
Block 5038
|
||||
( CONSOLE-CMD-EVENT: console-VM -> paired user-VM command )
|
||||
( relay message type, async MSG-SEND/MSG-DELIVER. )
|
||||
7 CONSTANT CONSOLE-CMD-EVENT
|
||||
( ELEVATE-REQUEST: H.5/H.8 -- word-ACL elevation ask. )
|
||||
( FABRIC-3.6.md task 3.10: kernel-Hermes cutover, no )
|
||||
( longer CH-REQUEST -- see KH-ELEVATE-SEND (repl.c). )
|
||||
8 CONSTANT ELEVATE-REQUEST
|
||||
Block 5041
|
||||
( BLK-ATTACH-EVENT: Hera -> Artemis storage-attach request, )
|
||||
( and Artemis -> Hera ack. Payload is FORTH text, executed )
|
||||
( by the receiver, same as every other message here -- see )
|
||||
( HERA-BLK-ATTACH-REQ (artemis:init.4th) and BLK-ATTACH-ACK )
|
||||
( (repl.c). Messaging-migration decision, Bob, 2026-09-07: )
|
||||
( Hera keeps polling/sig-checking; the storage-registration )
|
||||
( step (blk_subsys_attach_device) moves to a real message )
|
||||
( instead of a direct C call, so identity birth only )
|
||||
( proceeds once Artemis confirms storage succeeded. )
|
||||
9 CONSTANT BLK-ATTACH-EVENT
|
||||
Block 5004
|
||||
( StadiumBehaviour tags, match stadium.h's enum )
|
||||
0 CONSTANT SB-MIGRATE
|
||||
1 CONSTANT SB-DELIVER
|
||||
2 CONSTANT SB-EXPIRE
|
||||
3 CONSTANT SB-COOL
|
||||
-1 CONSTANT STADIUM-NONE
|
||||
( per-item admission heat for MSG-SEND/CH-ACCEPT. )
|
||||
( Remaining reservoir after COMMON-CH's Q.1/3 floor, split )
|
||||
( evenly across MSG-MAX messages + non-COMMON CH-MAX-1 slots. )
|
||||
Q.1 Q.1 3 / - MSG-MAX CH-MAX 1- + / CONSTANT Q.SLOT
|
||||
Block 5005
|
||||
( arenas. heat/capacity via Stadium; MBR keeps its own )
|
||||
( free list (not part of heat economy). )
|
||||
CREATE MSG-ARENA MSG-MAX MSG-CELLS * CELLS ALLOT
|
||||
CREATE CH-ARENA CH-MAX CH-CELLS * CELLS ALLOT
|
||||
CREATE MBR-ARENA MBR-MAX MBR-CELLS * CELLS ALLOT
|
||||
VARIABLE MSG-ALLOC-SLOT
|
||||
VARIABLE CH-ALLOC-SLOT
|
||||
VARIABLE MBR-FREE-HEAD
|
||||
VARIABLE MSG-SEQ
|
||||
VARIABLE CH-ACTIVE
|
||||
VARIABLE COMMON-CH
|
||||
VARIABLE MY-CH-ID
|
||||
Block 5006
|
||||
( 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" 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 )
|
||||
( aren't defined yet in file order. )
|
||||
: MSG-INIT-FREE ( -- )
|
||||
MSG-MAX 0 DO
|
||||
STADIUM-NONE I MSG-CELLS * CELLS MSG-ARENA + 5 CELLS + !
|
||||
LOOP ;
|
||||
: CH-INIT-FREE ( -- )
|
||||
CH-MAX 0 DO
|
||||
STADIUM-NONE I CH-CELLS * CELLS CH-ARENA + 3 CELLS + !
|
||||
LOOP ;
|
||||
Block 5008
|
||||
( MBR-INIT-FREE (member free list, untouched) )
|
||||
: MBR-INIT-FREE ( -- )
|
||||
MBR-MAX 1- 0 DO
|
||||
I MBR-CELLS * CELLS MBR-ARENA +
|
||||
I 1+ MBR-CELLS * CELLS MBR-ARENA + SWAP !
|
||||
LOOP
|
||||
0 MBR-MAX 1- MBR-CELLS * CELLS MBR-ARENA + !
|
||||
MBR-ARENA MBR-FREE-HEAD ! ;
|
||||
Block 5009
|
||||
( MSG-ALLOC: finds a free slot (TYPE=0) first, admits into )
|
||||
( Stadium only once confirmed free (no leak). )
|
||||
: MSG-FIND-FREE-SLOT ( -- addr|0 )
|
||||
MSG-ARENA MSG-MAX 0 DO
|
||||
DUP @ 0= IF UNLOOP EXIT THEN
|
||||
MSG-CELLS CELLS +
|
||||
LOOP DROP 0 ;
|
||||
Block 5010
|
||||
( MSG-ALLOC: pulls heat from reservoir first, admits )
|
||||
( (identity=idx, heat=pulled), rolls back on refusal. )
|
||||
: MSG-ALLOC ( heat -- addr|0 )
|
||||
MSG-FIND-FREE-SLOT DUP 0= IF SWAP DROP EXIT THEN
|
||||
MSG-ALLOC-SLOT !
|
||||
STADIUM-RES-PULL
|
||||
MSG-ALLOC-SLOT @ MSG-ARENA - MSG-CELLS CELLS /
|
||||
SWAP DUP >R
|
||||
SB-DELIVER STADIUM-ADMIT
|
||||
DUP STADIUM-NONE = IF
|
||||
DROP R> STADIUM-RES-PUSH 0 EXIT
|
||||
THEN
|
||||
R> DROP
|
||||
MSG-ALLOC-SLOT @ MSG-CELLS CELLS 0 FILL
|
||||
MSG-ALLOC-SLOT @ 5 CELLS + !
|
||||
MSG-ALLOC-SLOT @ ;
|
||||
Block 5011
|
||||
( MSG-FREE-NODE: evict from Stadium, clear field )
|
||||
: MSG-FREE-NODE ( addr -- )
|
||||
DUP 5 CELLS + @ STADIUM-EVICT DROP
|
||||
DUP 5 CELLS + STADIUM-NONE SWAP !
|
||||
DROP ;
|
||||
Block 5012
|
||||
( MBR alloc/free (unchanged; not heat economy) )
|
||||
: MBR-ALLOC ( -- addr|0 )
|
||||
MBR-FREE-HEAD @ DUP 0= IF EXIT THEN
|
||||
DUP @ MBR-FREE-HEAD !
|
||||
DUP MBR-CELLS CELLS 0 FILL ;
|
||||
: MBR-FREE-NODE ( addr -- )
|
||||
MBR-FREE-HEAD @ OVER ! MBR-FREE-HEAD ! ;
|
||||
Block 5013
|
||||
( CH-FIND-FREE-SLOT. No TYPE field, so freeness is )
|
||||
( stadium-cell = STADIUM-NONE. CH-ALLOC -> block 4176. )
|
||||
: CH-FIND-FREE-SLOT ( -- addr|0 )
|
||||
CH-ARENA CH-MAX 0 DO
|
||||
DUP 3 CELLS + @ STADIUM-NONE = IF UNLOOP EXIT THEN
|
||||
CH-CELLS CELLS +
|
||||
LOOP DROP 0 ;
|
||||
Block 5014
|
||||
( CH-ALLOC: pulls heat from reservoir first, admits )
|
||||
( (identity=idx, heat=pulled), rolls back on refusal. )
|
||||
: CH-ALLOC ( heat -- addr|0 )
|
||||
CH-FIND-FREE-SLOT DUP 0= IF SWAP DROP EXIT THEN
|
||||
CH-ALLOC-SLOT !
|
||||
STADIUM-RES-PULL
|
||||
CH-ALLOC-SLOT @ CH-ARENA - CH-CELLS CELLS /
|
||||
SWAP DUP >R
|
||||
SB-COOL STADIUM-ADMIT
|
||||
DUP STADIUM-NONE = IF
|
||||
DROP R> STADIUM-RES-PUSH 0 EXIT
|
||||
THEN
|
||||
R> DROP
|
||||
CH-ALLOC-SLOT @ CH-CELLS CELLS 0 FILL
|
||||
CH-ALLOC-SLOT @ 3 CELLS + !
|
||||
CH-ALLOC-SLOT @ ;
|
||||
Block 5015
|
||||
( CH-FREE-NODE: evict from Stadium, clear field )
|
||||
: CH-FREE-NODE ( addr -- )
|
||||
DUP 3 CELLS + @ STADIUM-EVICT DROP
|
||||
DUP 3 CELLS + STADIUM-NONE SWAP !
|
||||
DROP ;
|
||||
Block 5016
|
||||
( message field accessors )
|
||||
: MSG-TYPE@ ( m -- n ) @ ;
|
||||
: MSG-TYPE! ( n m -- ) ! ;
|
||||
: MSG-FROM@ ( m -- n ) 1 CELLS + @ ;
|
||||
: MSG-FROM! ( n m -- ) 1 CELLS + ! ;
|
||||
: MSG-TO@ ( m -- n ) 2 CELLS + @ ;
|
||||
: MSG-TO! ( n m -- ) 2 CELLS + ! ;
|
||||
: MSG-PADDR@ ( m -- a ) 3 CELLS + @ ;
|
||||
: MSG-PADDR! ( a m -- ) 3 CELLS + ! ;
|
||||
: MSG-PLEN@ ( m -- u ) 4 CELLS + @ ;
|
||||
: MSG-PLEN! ( u m -- ) 4 CELLS + ! ;
|
||||
( offset 5 = Stadium cell idx. MSG-HEAT@/! -> 4154. )
|
||||
: MSG-STADIUM-CELL@ ( m -- cell ) 5 CELLS + @ ;
|
||||
: MSG-STADIUM-CELL! ( cell m -- ) 5 CELLS + ! ;
|
||||
: MSG-SEQ@ ( m -- n ) 6 CELLS + @ ;
|
||||
: MSG-SEQ! ( n m -- ) 6 CELLS + ! ;
|
||||
Block 5017
|
||||
( message accessors: CH@/CH! )
|
||||
: MSG-CH@ ( m -- c ) 7 CELLS + @ ;
|
||||
: MSG-CH! ( c m -- ) 7 CELLS + ! ;
|
||||
: MSG-ORIG-TYPE@ ( m -- n ) 8 CELLS + @ ;
|
||||
: MSG-ORIG-TYPE! ( n m -- ) 8 CELLS + ! ;
|
||||
253 CONSTANT MSG-NACKED
|
||||
Block 5018
|
||||
( channel + member accessors )
|
||||
: CH-ID@ ( c -- n ) @ ;
|
||||
: CH-ID! ( n c -- ) ! ;
|
||||
: CH-OWNER@ ( c -- n ) 1 CELLS + @ ;
|
||||
: CH-OWNER! ( n c -- ) 1 CELLS + ! ;
|
||||
: CH-STATE@ ( c -- n ) 2 CELLS + @ ;
|
||||
: CH-STATE! ( n c -- ) 2 CELLS + ! ;
|
||||
( offset 3 = Stadium cell index. CH-HEAT@/! -> 4154. )
|
||||
: CH-STADIUM-CELL@ ( c -- cell ) 3 CELLS + @ ;
|
||||
: CH-STADIUM-CELL! ( cell c -- ) 3 CELLS + ! ;
|
||||
: CH-MBRS@ ( c -- a ) 4 CELLS + @ ;
|
||||
: CH-MBRS! ( a c -- ) 4 CELLS + ! ;
|
||||
: CH-NEXT@ ( c -- a ) 5 CELLS + @ ;
|
||||
: CH-NEXT! ( a c -- ) 5 CELLS + ! ;
|
||||
: MBR-NEXT@ ( m -- a ) @ ;
|
||||
: MBR-VM@ ( m -- n ) 1 CELLS + @ ;
|
||||
Block 5019
|
||||
( composed MSG/CH-HEAT@/!, same names/stacks, bodies )
|
||||
( routed via Stadium. Callers need no changes. )
|
||||
: MSG-HEAT@ ( m -- q ) MSG-STADIUM-CELL@ STADIUM-HEAT@ ;
|
||||
: MSG-HEAT! ( q m -- ) MSG-STADIUM-CELL@ STADIUM-HEAT! ;
|
||||
: CH-HEAT@ ( c -- q ) CH-STADIUM-CELL@ STADIUM-HEAT@ ;
|
||||
: CH-HEAT! ( q c -- ) CH-STADIUM-CELL@ STADIUM-HEAT! ;
|
||||
Block 5020
|
||||
( deliver )
|
||||
VARIABLE MSG-LAST-MSG
|
||||
VARIABLE MSG-SEND-TO-IDX
|
||||
: IDX>NAME ( idx -- addr u )
|
||||
DUP VM-MAX >= IF DROP 0 0 EXIT THEN
|
||||
DUP CELLS VM-NAME-ADDRS + @
|
||||
SWAP CELLS VM-NAME-LENS + @ ;
|
||||
: MSG-DELIVER ( m -- )
|
||||
DUP MSG-LAST-MSG !
|
||||
DUP MSG-PADDR@ OVER MSG-PLEN@
|
||||
ROT MSG-TO@ IDX>NAME VM-EXEC ;
|
||||
Block 5021
|
||||
( MSG-SEND. heat -> MSG-ALLOC's admission directly )
|
||||
( (zero-heat would lose eviction-fallback density )
|
||||
( comparisons), not set afterward as before. )
|
||||
: MSG-SEND ( type from to paddr plen ch -- )
|
||||
3 PICK MSG-SEND-TO-IDX !
|
||||
Q.SLOT MSG-ALLOC DUP 0= IF 2DROP 2DROP 2DROP DROP EXIT THEN
|
||||
>R
|
||||
MSG-SEQ @ 1+ DUP MSG-SEQ ! R@ MSG-SEQ!
|
||||
R@ MSG-CH!
|
||||
R@ MSG-PLEN! R@ MSG-PADDR!
|
||||
R@ MSG-TO! R@ MSG-FROM! DUP R@ MSG-TYPE! R@ MSG-ORIG-TYPE!
|
||||
R> DROP
|
||||
MSG-SEND-TO-IDX @ IDX>NAME SWITCH-MARK-WORK ;
|
||||
Block 5022
|
||||
( MSG-COOL-ONE/ALL: linear decay per tick )
|
||||
VARIABLE MSG-SCAN
|
||||
: MSG-COOL-ONE ( m -- )
|
||||
DUP MSG-HEAT@ Q-DECAY Q.* SWAP MSG-HEAT! ;
|
||||
: MSG-COOL-ALL ( -- )
|
||||
MSG-ARENA MSG-SCAN !
|
||||
MSG-MAX 0 DO
|
||||
MSG-SCAN @ MSG-HEAT@ 0 > IF
|
||||
MSG-SCAN @ MSG-COOL-ONE
|
||||
THEN
|
||||
MSG-SCAN @ MSG-CELLS CELLS + MSG-SCAN !
|
||||
LOOP ;
|
||||
Block 5023
|
||||
( MSG-TOTAL-HEAT )
|
||||
: MSG-TOTAL-HEAT ( -- q48 )
|
||||
0 MSG-ARENA MSG-SCAN !
|
||||
MSG-MAX 0 DO
|
||||
MSG-SCAN @ MSG-TYPE@ 0 <> IF
|
||||
MSG-SCAN @ MSG-HEAT@ +
|
||||
THEN
|
||||
MSG-SCAN @ MSG-CELLS CELLS + MSG-SCAN !
|
||||
LOOP ;
|
||||
: MSG-REDELIVER-NACKED ( -- )
|
||||
MSG-ARENA MSG-SCAN !
|
||||
MSG-MAX 0 DO
|
||||
MSG-SCAN @ MSG-TYPE@ MSG-NACKED = IF
|
||||
MSG-SCAN @ MSG-ORIG-TYPE@ MSG-SCAN @ MSG-TYPE! THEN
|
||||
MSG-SCAN @ MSG-CELLS CELLS + MSG-SCAN !
|
||||
LOOP ;
|
||||
Block 5024
|
||||
( MSG-DELIVER-ALL )
|
||||
: MSG-DELIVER-ALL ( -- )
|
||||
MSG-ARENA MSG-SCAN !
|
||||
MSG-MAX 0 DO
|
||||
MSG-SCAN @ MSG-TYPE@ 0 <>
|
||||
MSG-SCAN @ MSG-TYPE@ MSG-DELIVERED <> AND
|
||||
MSG-SCAN @ MSG-TYPE@ MSG-NACKED <> AND IF
|
||||
MSG-SCAN @ MSG-DELIVER
|
||||
MSG-SCAN @ MSG-TYPE@ 0 <> IF
|
||||
MSG-DELIVERED MSG-SCAN @ MSG-TYPE!
|
||||
THEN
|
||||
THEN
|
||||
MSG-SCAN @ MSG-CELLS CELLS + MSG-SCAN !
|
||||
LOOP ;
|
||||
Block 5025
|
||||
( message reaping )
|
||||
( K reap only fires at heat=0: freed K contribution is 0. )
|
||||
( Force-reap not yet implemented. If added: explicit )
|
||||
( K redistribution will be required here. )
|
||||
: MSG-REAP ( -- )
|
||||
MSG-ARENA MSG-SCAN !
|
||||
MSG-MAX 0 DO
|
||||
MSG-SCAN @ MSG-HEAT@ 0 = IF
|
||||
MSG-SCAN @ MSG-TYPE@ 0 <> IF
|
||||
0 MSG-SCAN @ MSG-TYPE!
|
||||
MSG-SCAN @ MSG-FREE-NODE
|
||||
THEN
|
||||
THEN
|
||||
MSG-SCAN @ MSG-CELLS CELLS + MSG-SCAN !
|
||||
LOOP ;
|
||||
Block 5026
|
||||
( channel cooling + heat aggregate )
|
||||
VARIABLE CH-SCAN
|
||||
: CH-COOL-ALL ( -- )
|
||||
CH-ACTIVE @ CH-SCAN !
|
||||
BEGIN CH-SCAN @ 0 <> WHILE
|
||||
CH-SCAN @ CH-HEAT@ Q-DECAY Q.* CH-SCAN @ CH-HEAT!
|
||||
CH-SCAN @ CH-NEXT@ CH-SCAN !
|
||||
REPEAT ;
|
||||
: CH-TOTAL-HEAT ( -- q48 )
|
||||
0 CH-ACTIVE @ CH-SCAN !
|
||||
BEGIN CH-SCAN @ 0 <> WHILE
|
||||
CH-SCAN @ CH-HEAT@ +
|
||||
CH-SCAN @ CH-NEXT@ CH-SCAN !
|
||||
REPEAT ;
|
||||
Block 5027
|
||||
( channel reaping )
|
||||
: CH-REAP-SAFE ( -- )
|
||||
CH-ACTIVE @ CH-SCAN !
|
||||
0 CH-ACTIVE !
|
||||
BEGIN CH-SCAN @ 0 <> WHILE
|
||||
CH-SCAN @ CH-NEXT@
|
||||
CH-SCAN @ CH-HEAT@ 0 =
|
||||
CH-SCAN @ COMMON-CH @ <> AND IF
|
||||
CH-SCAN @ CH-FREE-NODE
|
||||
ELSE
|
||||
CH-ACTIVE @ CH-SCAN @ CH-NEXT!
|
||||
CH-SCAN @ CH-ACTIVE !
|
||||
THEN
|
||||
CH-SCAN !
|
||||
REPEAT ;
|
||||
Block 5028
|
||||
( COMMON + MSG-TICK (was HERMES-TICK -- generic now). )
|
||||
( floor=Q.1/3. COMMON-CH VARIABLE is in block 4101. )
|
||||
: COMMON-INIT ( -- )
|
||||
Q.1 3 / CH-ALLOC DUP COMMON-CH !
|
||||
0 OVER CH-ID! 0 OVER CH-OWNER!
|
||||
CH-OPEN OVER CH-STATE!
|
||||
0 OVER CH-MBRS!
|
||||
CH-ACTIVE @ OVER CH-NEXT!
|
||||
CH-ACTIVE ! ;
|
||||
( floor-refresh is reservoir-constrained, may no-op under )
|
||||
( pressure. )
|
||||
: MSG-TICK ( -- )
|
||||
MSG-DELIVER-ALL MSG-REDELIVER-NACKED
|
||||
MSG-COOL-ALL MSG-REAP
|
||||
CH-COOL-ALL CH-REAP-SAFE
|
||||
Q.1 3 / COMMON-CH @ CH-HEAT! ;
|
||||
Block 5029
|
||||
( MSG-K (was HERMES-K -- generic now). WELCOME stays )
|
||||
( behind in each VM's own init.4th. )
|
||||
: MSG-K ( -- q48 )
|
||||
MSG-TOTAL-HEAT CH-TOTAL-HEAT + STADIUM-RES@ +
|
||||
STADIUM-WORD-HEAT + ;
|
||||
Block 5031
|
||||
( channel negotiation: mint/request )
|
||||
: CH-MINT-ID ( owner -- id )
|
||||
MSG-SEQ @ 1+ DUP MSG-SEQ !
|
||||
SWAP 32 LSHIFT OR ;
|
||||
( H.8: initiator-only gate. Refuses if `from` doesn't )
|
||||
( match MY-CH-ID -- no posting while claiming another VM. )
|
||||
: CH-REQUEST ( type from to paddr plen -- )
|
||||
3 PICK MY-CH-ID @ <> IF 2DROP 2DROP DROP EXIT THEN
|
||||
COMMON-CH @ CH-STATE@ CH-OPEN = IF
|
||||
COMMON-CH @ MSG-SEND
|
||||
ELSE 2DROP 2DROP DROP THEN ;
|
||||
Block 5032
|
||||
( channel ops: accept confirm close )
|
||||
: CH-ACCEPT ( -- ch|0 )
|
||||
Q.SLOT CH-ALLOC DUP 0= IF EXIT THEN
|
||||
1 CH-MINT-ID OVER CH-ID!
|
||||
1 OVER CH-OWNER!
|
||||
CH-NEGOTIATING OVER CH-STATE!
|
||||
0 OVER CH-MBRS!
|
||||
CH-ACTIVE @ OVER CH-NEXT!
|
||||
DUP CH-ACTIVE ! ;
|
||||
: CH-CONFIRM ( ch -- )
|
||||
DUP CH-STATE@ CH-NEGOTIATING = IF CH-OPEN SWAP CH-STATE!
|
||||
ELSE DROP THEN ;
|
||||
: CH-CLOSE ( ch -- )
|
||||
DUP COMMON-CH @ = IF DROP EXIT THEN
|
||||
CH-CLOSING SWAP CH-STATE! ;
|
||||
Block 5033
|
||||
( MSG-CD-INIT (was CD-INIT -- renamed to avoid colliding )
|
||||
( with Artemis's own unrelated block-subsystem CD-INIT). )
|
||||
( common:msg.4th's HERMES-ACK/NACK indirection is retired: )
|
||||
( every VM now has its own local MSG-ACK-LAST/NACK-LAST. )
|
||||
: MSG-CD-INIT ( -- )
|
||||
MSG-ARENA MSG-MAX MSG-CELLS * CELLS 0 FILL
|
||||
CH-ARENA CH-MAX CH-CELLS * CELLS 0 FILL
|
||||
MBR-ARENA MBR-MAX MBR-CELLS * CELLS 0 FILL
|
||||
MSG-INIT-FREE
|
||||
CH-INIT-FREE
|
||||
MBR-INIT-FREE
|
||||
0 MSG-SEQ !
|
||||
0 MSG-LAST-MSG !
|
||||
0 CH-ACTIVE ! -1 MY-CH-ID !
|
||||
COMMON-INIT
|
||||
VM-NAMES-INIT ;
|
||||
Block 5034
|
||||
( ACK/NACK -- now purely local, no VM-EXEC indirection. )
|
||||
: MSG-ACK-LAST ( -- )
|
||||
MSG-LAST-MSG @ DUP 0= IF DROP EXIT THEN
|
||||
0 OVER MSG-TYPE! MSG-FREE-NODE ;
|
||||
: MSG-NACK-LAST ( -- )
|
||||
MSG-LAST-MSG @ DUP 0= IF DROP EXIT THEN
|
||||
DUP MSG-HEAT@ 2 / OVER MSG-HEAT!
|
||||
MSG-NACKED SWAP MSG-TYPE! ;
|
||||
Block 5035
|
||||
( MSG-STATUS (was HERMES-STATUS -- generic now) )
|
||||
: MSG-USED ( -- n )
|
||||
0 MSG-ARENA MSG-SCAN !
|
||||
MSG-MAX 0 DO
|
||||
MSG-SCAN @ MSG-TYPE@ 0 <> IF 1+ THEN
|
||||
MSG-SCAN @ MSG-CELLS CELLS + MSG-SCAN !
|
||||
LOOP ;
|
||||
: CH-USED ( -- n )
|
||||
0 CH-ACTIVE @ CH-SCAN !
|
||||
BEGIN CH-SCAN @ 0 <> WHILE
|
||||
1+
|
||||
CH-SCAN @ CH-NEXT@ CH-SCAN !
|
||||
REPEAT ;
|
||||
: MSG-STATUS ( -- )
|
||||
MSG-USED . ." msgs " CH-USED . ." channels" CR ;
|
||||
Block 5036
|
||||
( member management )
|
||||
: MBR-NEXT! ( a m -- ) ! ;
|
||||
: MBR-VM! ( n m -- ) 1 CELLS + ! ;
|
||||
: CH-ADD-MBR ( vm ch -- )
|
||||
MBR-ALLOC DUP 0= IF DROP 2DROP EXIT THEN
|
||||
ROT OVER MBR-VM!
|
||||
OVER CH-MBRS@ OVER MBR-NEXT!
|
||||
SWAP CH-MBRS! ;
|
||||
Block 5037
|
||||
( Phase 2: real multi-member broadcast )
|
||||
VARIABLE BC-TYPE VARIABLE BC-FROM
|
||||
VARIABLE BC-PADDR VARIABLE BC-PLEN
|
||||
VARIABLE BC-CH VARIABLE BC-SCAN
|
||||
: MSG-BROADCAST ( type from paddr plen ch -- )
|
||||
BC-CH ! BC-PLEN ! BC-PADDR ! BC-FROM ! BC-TYPE !
|
||||
BC-CH @ CH-MBRS@ BC-SCAN !
|
||||
BEGIN BC-SCAN @ 0<> WHILE
|
||||
BC-TYPE @ BC-FROM @ BC-SCAN @ MBR-VM@
|
||||
BC-PADDR @ BC-PLEN @ BC-CH @ MSG-SEND
|
||||
BC-SCAN @ MBR-NEXT@ BC-SCAN !
|
||||
REPEAT ;
|
||||
Block 5039
|
||||
( H.8: SEND-ELEVATE-REQUEST payload builder -- )
|
||||
( scratch text buffer + append primitives. )
|
||||
CREATE ELEVATE-REQ-BUF 256 ALLOT
|
||||
VARIABLE ELEVATE-REQ-LEN
|
||||
: ELEVATE-REQ-RESET ( -- ) 0 ELEVATE-REQ-LEN ! ;
|
||||
: ELEVATE-REQ-PUTC ( c -- )
|
||||
ELEVATE-REQ-BUF ELEVATE-REQ-LEN @ + C!
|
||||
1 ELEVATE-REQ-LEN +! ;
|
||||
: ELEVATE-REQ-APPEND ( addr u -- )
|
||||
>R
|
||||
ELEVATE-REQ-BUF ELEVATE-REQ-LEN @ +
|
||||
R@ CMOVE
|
||||
ELEVATE-REQ-LEN @ R> + ELEVATE-REQ-LEN ! ;
|
||||
: ELEVATE-REQ-NUM ( n -- )
|
||||
<# 0 SWAP #S #> ELEVATE-REQ-APPEND ;
|
||||
Block 5040
|
||||
( SEND-ELEVATE-REQUEST: ask Zuse for word-ACL )
|
||||
( elevation. pk3..pk0 order so top-down emits )
|
||||
( pk0 first; waddr/wu = target word name text. )
|
||||
: SEND-ELEVATE-REQUEST ( pk3 pk2 pk1 pk0 waddr wu -- )
|
||||
ELEVATE-REQ-RESET
|
||||
83 ELEVATE-REQ-PUTC 34 ELEVATE-REQ-PUTC
|
||||
32 ELEVATE-REQ-PUTC
|
||||
ELEVATE-REQ-APPEND
|
||||
34 ELEVATE-REQ-PUTC 32 ELEVATE-REQ-PUTC
|
||||
ELEVATE-REQ-NUM 32 ELEVATE-REQ-PUTC
|
||||
ELEVATE-REQ-NUM 32 ELEVATE-REQ-PUTC
|
||||
ELEVATE-REQ-NUM 32 ELEVATE-REQ-PUTC
|
||||
ELEVATE-REQ-NUM 32 ELEVATE-REQ-PUTC
|
||||
S" ELEVATE-GRANT" ELEVATE-REQ-APPEND
|
||||
ELEVATE-REQ-BUF ELEVATE-REQ-LEN @
|
||||
KH-ELEVATE-SEND DROP ;
|
||||
@@ -1,20 +1,17 @@
|
||||
Block 4060
|
||||
( doe-campaign.4th: Compudynamics DoE campaign orchestrator )
|
||||
( Requires: doe.4th (word-level) + real VM fleet touches. )
|
||||
( Child VMs must define LOAD-DOE. )
|
||||
: SETUP-HERMES ( -- )
|
||||
S" Hermes" BIRTH
|
||||
S" LOAD-DOE" S" Hermes" VM-EXEC ;
|
||||
( Child VMs must define LOAD-DOE. FABRIC-3.6.md Phase 4, )
|
||||
( Stage E: SETUP-HERMES removed -- Hermes no longer exists. )
|
||||
: SETUP-ARTEMIS ( -- )
|
||||
S" Artemis" BIRTH
|
||||
S" LOAD-DOE" S" Artemis" VM-EXEC ;
|
||||
: SETUP-VMS ( -- )
|
||||
SETUP-HERMES SETUP-ARTEMIS ;
|
||||
SETUP-ARTEMIS ;
|
||||
Block 4061
|
||||
( Phase 1: each VM runs DOE-WORK once for baseline. )
|
||||
( FABRIC-3.6.md Phase 4, Stage E: Hermes's own line removed. )
|
||||
: PHASE1-DOE ( -- )
|
||||
." Phase 1: Hermes" CR
|
||||
S" DOE-WORK" S" Hermes" VM-EXEC
|
||||
." Phase 1: Artemis" CR
|
||||
S" DOE-WORK" S" Artemis" VM-EXEC ;
|
||||
( HISTORICAL: CD-WORK removed 2026-07-08 -- dead code, )
|
||||
@@ -24,8 +21,9 @@ Block 4062
|
||||
( CD-TICK: one real fleet touch pass -- not a fake pump. )
|
||||
( Heat only moves via real VM-EXEC/VM-CALL/VM-STEP now; )
|
||||
( there is nothing left to artificially bump per VM. )
|
||||
( FABRIC-3.6.md Phase 4, Stage E: Hermes's own line )
|
||||
( removed -- one touch per tick now, not two. )
|
||||
: CD-TICK ( -- )
|
||||
S" DOE-WORK" S" Hermes" VM-EXEC
|
||||
S" DOE-WORK" S" Artemis" VM-EXEC ;
|
||||
: CD-DOE ( n -- ) 0 DO CD-TICK LOOP ;
|
||||
: CAMPAIGN-STATUS ( -- )
|
||||
@@ -47,11 +45,10 @@ Block 4064
|
||||
( Smoke test: 1 rep seed 1959 + 16 real fleet touches )
|
||||
( HISTORICAL: VM-HEAT! artificial seeding removed -- new )
|
||||
( VMs start at zero heat by construction, no seed needed. )
|
||||
( FABRIC-3.6.md Phase 4, Stage E: Hermes's own rep removed. )
|
||||
: SMOKE-CAMPAIGN ( -- )
|
||||
." === Smoke: 1 rep seed 1959 ===" CR
|
||||
SETUP-VMS
|
||||
." Hermes 1 rep..." CR
|
||||
S" 1959 1 EXEC-DOE" S" Hermes" VM-EXEC
|
||||
." Artemis 1 rep..." CR
|
||||
S" 1959 1 EXEC-DOE" S" Artemis" VM-EXEC
|
||||
." 16 real fleet touches..." CR
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
Block 4855
|
||||
( Hermes v1 -- WELCOME. Generic messaging vocab moved to )
|
||||
( common:messaging.4th, FABRIC-2.md Phase C 2026-08-28. )
|
||||
: WELCOME ( -- ) LOG-INFO" Hermes: loaded" ;
|
||||
WELCOME
|
||||
Block 4153
|
||||
( LOAD-DOE: pulls in doe.4th's word-level DOE-WORK )
|
||||
( workload, for doe-campaign.4th's remote VM-EXEC. )
|
||||
: LOAD-DOE ( -- ) S" doe.4th" EXEC ;
|
||||
Block 5116
|
||||
( Hermes owns the one real, canonical COMMON-CH. Every )
|
||||
( other VM subscribes into it via VM-EXEC (see Artemis's )
|
||||
( and Hera's own init.4th); Hera always exists first, so )
|
||||
( Hermes adds her here rather than Hera subscribing to a )
|
||||
( VM that doesn't exist yet at Hera's own birth. )
|
||||
S" common:messaging.4th" EXEC
|
||||
MSG-CD-INIT
|
||||
1 MY-CH-ID !
|
||||
S" lib.4th" EXEC
|
||||
1 COMMON-CH @ CH-ADD-MBR
|
||||
0 COMMON-CH @ CH-ADD-MBR
|
||||
LOG-INFO" Hermes: ready"
|
||||
STARTUP-BANNER
|
||||
@@ -14,19 +14,9 @@ Block 4988
|
||||
S" fabric.4th" EXEC
|
||||
S" font.4th" EXEC
|
||||
Block 4987
|
||||
( Hestia joins COMMON-CH as a full messaging participant, )
|
||||
( same pattern Hermes/Artemis already use. Fresh slot 11: )
|
||||
( Hera/Hermes/Artemis hold 0/1/2, identities hold 3-10 )
|
||||
( (messaging.4th:78-85), and Phase 1's gate is "messaging )
|
||||
( untouched" -- so VM-NAME-REG for "Hestia" is NOT added )
|
||||
( here; that needs editing messaging.4th's VM-NAMES-INIT, )
|
||||
( out of this task's scope. Hestia is CH-reachable by slot )
|
||||
( today, not yet VM-EXEC-addressable by name. )
|
||||
S" common:messaging.4th" EXEC
|
||||
MSG-CD-INIT
|
||||
11 MY-CH-ID !
|
||||
( FABRIC-3.6.md Phase 4, Stage E: common:messaging.4th/ )
|
||||
( MSG-CD-INIT/MY-CH-ID/COMMON-CH subscription all removed )
|
||||
( -- the whole COMMON-CH concept is gone with the file. )
|
||||
S" lib.4th" EXEC
|
||||
11 COMMON-CH @ CH-ADD-MBR
|
||||
0 COMMON-CH @ CH-ADD-MBR
|
||||
LOG-INFO" Hestia: ready"
|
||||
STARTUP-BANNER
|
||||
|
||||
+2
-3
@@ -17,9 +17,8 @@ S" ACL.4th" EXEC
|
||||
S" block-acl.4th" EXEC
|
||||
S" zuse-eligibility.4th" EXEC
|
||||
S" lib.4th" EXEC
|
||||
( SXX: same pattern Hermes/Artemis/console/mint already use. )
|
||||
S" common:messaging.4th" EXEC
|
||||
MSG-CD-INIT
|
||||
( FABRIC-3.6.md Phase 4, Stage E: common:messaging.4th/ )
|
||||
( MSG-CD-INIT removed -- no longer exists, no longer needed. )
|
||||
Block 2050
|
||||
( Hera boot — banner )
|
||||
BOOT-BANNER
|
||||
|
||||
@@ -3,9 +3,9 @@ Block 4021
|
||||
( C prims: ZUSE-ELIGIBILITY-ADD ZUSE-ELIGIBLE? )
|
||||
( NAME>XT ELEVATE-PUBKEY-UNPACK )
|
||||
( Policy word this file: ELEVATE-GRANT. Runs in )
|
||||
( Hera's own dict -- delivered here by messaging.4th's )
|
||||
( MSG-DELIVER via VM-EXEC when a session calls the )
|
||||
( common:messaging.4th SEND-ELEVATE-REQUEST entrypoint. )
|
||||
( Hera's own dict -- delivered here by kernel-Hermes's own )
|
||||
( drain checkpoint (FABRIC-3.6.md task 3.10), not FORTH )
|
||||
( MSG-DELIVER (messaging.4th, removed Phase 4 Stage E). )
|
||||
( FABRIC-2.md H.12 step 21, 2026-09-03. )
|
||||
CREATE ELEVATE-PK-BUF 32 ALLOT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user