§H.12 step 20: CH-REQUEST initiator-only gate (MY-CH-ID)

Added VARIABLE MY-CH-ID to messaging.4th (fail-closed -1 default) and
set it per-VM in hermes/init.4th and artemis/init.4th. CH-REQUEST now
refuses if the caller-supplied 'from' doesn't match the calling VM's
own id, closing a real spoofing gap found while implementing this.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QgooKd5hJNtTYqB6CyK5f9
This commit is contained in:
Robert Allan James
2026-09-03 12:09:29 -04:00
co-authored by Claude Sonnet 5
parent 7d53344875
commit cb6e079a73
12 changed files with 27708 additions and 95 deletions
+16 -2
View File
@@ -4140,8 +4140,22 @@ work, not new invention.
to `ok>` (amd64/aarch64/riscv64), each run in the foreground. to `ok>` (amd64/aarch64/riscv64), each run in the foreground.
**Phase 7 — Message card gate + `ELEVATE-REQUEST` (H.8)** **Phase 7 — Message card gate + `ELEVATE-REQUEST` (H.8)**
- [ ] **20.** Add the initiator-only ACL gate at `CH-REQUEST`'s entry point - [x] **20. DONE 2026-09-03.** Found a real gap before writing this: `CH-REQUEST`'s `from`
(default-permissive baseline, real hook point established). parameter is a small numeric messaging "member id" (0/1/2 = Hera/Hermes/Artemis, per
`VM-NAMES-INIT`), but no canonical "this is my own id" fact existed anywhere — each VM's
init capsule just hardcoded numbers ad hoc for `CH-ADD-MBR`. Added `VARIABLE MY-CH-ID`
(`capsules/common/messaging.4th`, defaults to `-1` sentinel in `MSG-CD-INIT`, meaning
fail-closed until a VM sets its own), each VM's own init capsule sets it right after
`MSG-CD-INIT` (`1 MY-CH-ID !` in `hermes/init.4th`, `2 MY-CH-ID !` in `artemis/init.4th`
— Hera doesn't currently load `messaging.4th` at all, so nothing to set there). `CH-REQUEST`
now refuses (drops the whole stack frame) unless the caller-supplied `from` matches
`MY-CH-ID @` — stops a session from posting a commune request while claiming to be a
different VM. Passed `mkcapsule --lint` cleanly (caught and fixed two real violations along
the way: comment lines over the 64-char limit, and `MSG-CD-INIT` exceeding the 16-content-
line cap after the addition — merged two init lines onto one). Verified 3-arch boot to `ok>`
(amd64/aarch64/riscv64, each in the foreground); confirmed via the amd64 log that both
Hermes's and Artemis's `PARITY:BIRTH` still succeed (their init capsules, including the new
lines, compile and run cleanly).
- [ ] **21.** Define `ELEVATE-REQUEST` and a minimal real handler checking the eligibility - [ ] **21.** Define `ELEVATE-REQUEST` and a minimal real handler checking the eligibility
list, granting via `ACL-ALLOW!`/`ACL-TTL!` on match. list, granting via `ACL-ALLOW!`/`ACL-TTL!` on match.
- [ ] **22.** Add the FORTH entrypoint a session actually calls to send one. - [ ] **22.** Add the FORTH entrypoint a session actually calls to send one.
+92 -92
View File
@@ -1,5 +1,5 @@
# Capsule Block Manifest — Auto-generated # Capsule Block Manifest — Auto-generated
<!-- Generated by mkcapsule --manifest 2026-09-03T15:36:04Z --> <!-- Generated by mkcapsule --manifest 2026-09-03T15:52:36Z -->
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. --> <!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
<!-- Hand-written justifications and immutability notes live --> <!-- Hand-written justifications and immutability notes live -->
<!-- in MANIFEST.md alongside this auto-generated index. --> <!-- in MANIFEST.md alongside this auto-generated index. -->
@@ -9,15 +9,15 @@
| Capsule | Blocks claimed | xxHash64 | Signed | | Capsule | Blocks claimed | xxHash64 | Signed |
|---------|----------------|----------|--------| |---------|----------------|----------|--------|
| `ACL.4th` | 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4015 | `0xd781d22148ff171d` | yes | | `ACL.4th` | 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4015 | `0xd781d22148ff171d` | 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 | `0xfe6e570467368153` | 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 | `0x90208e9ab5ae0070` | yes |
| `block-acl.4th` | 4019, 4020 | `0xf5eab0544b962dfa` | yes | | `block-acl.4th` | 4019, 4020 | `0xf5eab0544b962dfa` | 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 | `0x892fd1c86d8c175e` | 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 | `0x000bef369e84a1aa` | yes |
| `common:msg.4th` | 4055 | `0x850a0382344ea6c4` | yes | | `common:msg.4th` | 4055 | `0x850a0382344ea6c4` | yes |
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` | yes | | `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` | yes |
| `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xf154616d248e861f` | 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 | `0x9b1d061339cea98d` | 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 | `0x9b1d061339cea98d` | 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 | `0x720792b4fc758156` | 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 | `0x720792b4fc758156` | yes |
| `hermes:init.4th` | 4153, 4855, 5116 | `0x9d6119b69d4113af` | yes | | `hermes:init.4th` | 4153, 4855, 5116 | `0x7d4ab35a4d3ffc0c` | yes |
| `init-0.4th` | 2200, 2201 | `0xd0a9550baf786bb3` | yes | | `init-0.4th` | 2200, 2201 | `0xd0a9550baf786bb3` | yes |
| `init-1.4th` | 4406, 4415, 4425, 4435 | `0x63e251adb0a03613` | yes | | `init-1.4th` | 4406, 4415, 4425, 4435 | `0x63e251adb0a03613` | yes |
| `init-2.4th` | 4506, 4515, 4525, 4535, 4545 | `0xf113b3d0bcccae47` | yes | | `init-2.4th` | 4506, 4515, 4525, 4535, 4545 | `0xf113b3d0bcccae47` | yes |
@@ -118,52 +118,52 @@
| 4063 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok | | 4063 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
| 4064 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok | | 4064 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
| 4065 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok | | 4065 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
| 4110 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4110 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4111 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4111 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4112 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4112 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4113 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4113 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4122 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4122 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4123 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4123 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4124 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4124 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4125 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4125 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4126 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4126 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4127 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4127 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4128 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4128 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4129 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4129 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4130 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4130 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4131 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4131 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4132 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4132 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4133 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4133 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4134 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4134 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4135 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4135 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4136 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4136 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4137 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4137 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4138 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4138 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4139 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4139 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4140 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4140 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4141 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4141 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4153 | `hermes:init.4th` | `0x9d6119b69d4113af` | ok | | 4153 | `hermes:init.4th` | `0x7d4ab35a4d3ffc0c` | ok |
| 4160 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4160 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4161 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4161 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4162 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4162 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4163 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4163 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4164 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4164 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4165 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4165 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4166 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4166 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4167 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4167 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4168 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4168 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4169 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4169 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4170 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4170 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4171 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4171 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4172 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4172 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4173 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4173 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4174 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4174 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4177 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4177 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4178 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4178 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4179 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4179 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4180 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4180 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4181 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4181 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4182 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4182 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4200 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok | | 4200 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
| 4201 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok | | 4201 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
| 4202 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok | | 4202 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
@@ -203,11 +203,11 @@
| 4840 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok | | 4840 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
| 4841 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok | | 4841 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
| 4842 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok | | 4842 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
| 4851 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4851 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4852 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4852 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4853 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4853 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4854 | `artemis:init.4th` | `0xfe6e570467368153` | ok | | 4854 | `artemis:init.4th` | `0x90208e9ab5ae0070` | ok |
| 4855 | `hermes:init.4th` | `0x9d6119b69d4113af` | ok | | 4855 | `hermes:init.4th` | `0x7d4ab35a4d3ffc0c` | ok |
| 4900 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 4900 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
| 4901 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 4901 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
| 4902 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 4902 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
@@ -297,42 +297,42 @@
| 5000 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 5000 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
| 5001 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 5001 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
| 5002 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 5002 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
| 5003 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5003 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5004 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5004 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5005 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5005 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5006 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5006 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5007 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5007 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5008 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5008 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5009 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5009 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5010 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5010 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5011 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5011 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5012 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5012 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5013 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5013 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5014 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5014 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5015 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5015 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5016 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5016 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5017 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5017 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5018 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5018 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5019 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5019 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5020 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5020 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5021 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5021 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5022 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5022 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5023 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5023 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5024 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5024 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5025 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5025 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5026 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5026 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5027 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5027 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5028 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5028 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5029 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5029 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5030 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5030 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5031 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5031 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5032 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5032 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5033 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5033 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5034 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5034 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5035 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5035 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5036 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5036 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5037 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5037 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5038 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok | | 5038 | `common:messaging.4th` | `0x000bef369e84a1aa` | ok |
| 5100 | `turtle.4th` | `0x4d470418ca543365` | ok | | 5100 | `turtle.4th` | `0x4d470418ca543365` | ok |
| 5101 | `turtle.4th` | `0x4d470418ca543365` | ok | | 5101 | `turtle.4th` | `0x4d470418ca543365` | ok |
| 5102 | `turtle.4th` | `0x4d470418ca543365` | ok | | 5102 | `turtle.4th` | `0x4d470418ca543365` | ok |
@@ -349,7 +349,7 @@
| 5113 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok | | 5113 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
| 5114 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok | | 5114 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
| 5115 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok | | 5115 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
| 5116 | `hermes:init.4th` | `0x9d6119b69d4113af` | ok | | 5116 | `hermes:init.4th` | `0x7d4ab35a4d3ffc0c` | ok |
## Conflicts ## Conflicts
+1
View File
@@ -497,5 +497,6 @@ Block 4854
( INIT). Hermes always exists by Artemis's birth. ) ( INIT). Hermes always exists by Artemis's birth. )
S" common:messaging.4th" EXEC S" common:messaging.4th" EXEC
MSG-CD-INIT MSG-CD-INIT
2 MY-CH-ID !
S" 2 COMMON-CH @ CH-ADD-MBR" S" Hermes" VM-EXEC S" 2 COMMON-CH @ CH-ADD-MBR" S" Hermes" VM-EXEC
STARTUP-BANNER STARTUP-BANNER
+5 -1
View File
@@ -42,6 +42,7 @@ VARIABLE MBR-FREE-HEAD
VARIABLE MSG-SEQ VARIABLE MSG-SEQ
VARIABLE CH-ACTIVE VARIABLE CH-ACTIVE
VARIABLE COMMON-CH VARIABLE COMMON-CH
VARIABLE MY-CH-ID
Block 5006 Block 5006
( VM name routing table -- same fixed table every VM loads, ) ( VM name routing table -- same fixed table every VM loads, )
( so IDX>NAME resolves identically everywhere. ) ( so IDX>NAME resolves identically everywhere. )
@@ -351,7 +352,10 @@ Block 5031
: CH-MINT-ID ( owner -- id ) : CH-MINT-ID ( owner -- id )
MSG-SEQ @ 1+ DUP MSG-SEQ ! MSG-SEQ @ 1+ DUP MSG-SEQ !
SWAP 32 LSHIFT OR ; 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 -- ) : 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 @ CH-STATE@ CH-OPEN = IF
COMMON-CH @ MSG-SEND COMMON-CH @ MSG-SEND
ELSE 2DROP 2DROP DROP THEN ; ELSE 2DROP 2DROP DROP THEN ;
@@ -385,7 +389,7 @@ Block 5033
MBR-INIT-FREE MBR-INIT-FREE
0 MSG-SEQ ! 0 MSG-SEQ !
0 MSG-LAST-MSG ! 0 MSG-LAST-MSG !
0 CH-ACTIVE ! 0 CH-ACTIVE ! -1 MY-CH-ID !
COMMON-INIT COMMON-INIT
VM-NAMES-INIT ; VM-NAMES-INIT ;
Block 5034 Block 5034
+1
View File
@@ -15,6 +15,7 @@ Block 5116
( VM that doesn't exist yet at Hera's own birth. ) ( VM that doesn't exist yet at Hera's own birth. )
S" common:messaging.4th" EXEC S" common:messaging.4th" EXEC
MSG-CD-INIT MSG-CD-INIT
1 MY-CH-ID !
S" lib.4th" EXEC S" lib.4th" EXEC
1 COMMON-CH @ CH-ADD-MBR 1 COMMON-CH @ CH-ADD-MBR
0 COMMON-CH @ CH-ADD-MBR 0 COMMON-CH @ CH-ADD-MBR
BIN
View File
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff