Compare commits
47
Commits
+34
-18
@@ -11,20 +11,31 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
> **Superseded subsystem docs (Captain Bob, 2026-08-15):** `.claude/TRIPOD.md`,
|
||||
> `.claude/HERMES.md`, `.claude/ARTEMIS.md`, and `.claude/CONSOLE.md` are all superseded —
|
||||
> `FABRIC-0.md`, `FABRIC-1.md`, and `FABRIC-2.md` (all design history/archival as of
|
||||
> 2026-09-04) and `FABRIC-3.md` (current/living, topic: bare metal boot, read this one first)
|
||||
> are the sole authoritative source for Tripod/Hermes/Artemis/Console work now. The four
|
||||
> subsystem docs remain in the repo as historical record only; each carries its own
|
||||
> superseded-header pointing here. Do not treat them as current, do not read them for design
|
||||
> authority, and do not cite them in place of `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md`/
|
||||
> `FABRIC-3.md`.
|
||||
> 2026-09-04), `FABRIC-3.md` (current/living, topic: bare metal boot), and `FABRIC-3.5.md`/
|
||||
> `FABRIC-3.6.md` (Tripod/kernel reshuffle, design + execution) are the sole authoritative
|
||||
> source for Tripod/Hermes/Artemis/Console work now. The four subsystem docs remain in the
|
||||
> repo as pure historical record — they describe the pre-reshuffle Hera/Hermes/Artemis fleet,
|
||||
> and `.claude/HERMES.md` in particular now describes a VM that no longer exists in this
|
||||
> codebase at all, not merely a superseded design. Each carries its own superseded-header
|
||||
> pointing here. Do not treat them as current, do not read them for design authority, and do
|
||||
> not cite them in place of `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md`/`FABRIC-3.md`/
|
||||
> `FABRIC-3.5.md`/`FABRIC-3.6.md`. **Decision (Captain Bob, 2026-09-22, FABRIC-3.6.md task
|
||||
> 5.2): archive as-is, do not rewrite.** These four docs stay frozen at their 2026-08-15
|
||||
> superseded state; they are not updated to reflect Hermes's removal, since they are already
|
||||
> explicitly out of scope for current design authority and rewriting historical record to
|
||||
> track a codebase it no longer describes would defeat its purpose as a record.
|
||||
|
||||
> **WORK IN PROGRESS — Tripod/kernel reshuffle (2026-09-19).** Hermes moves into the kernel;
|
||||
> the Tripod becomes **Hera / Artemis / Hestia**. Design is complete and ruled in
|
||||
> **`FABRIC-3.5.md`** (authoritative); execution is tracked in **`FABRIC-3.6.md`** — **start
|
||||
> there, at its `START HERE` section.** `FABRIC-3.md` remains open and authoritative for its
|
||||
> own topic (bare metal boot); nothing in the reshuffle supersedes it. **No reshuffle code has
|
||||
> been written yet.** The descriptions of the Tripod elsewhere in this file describe the
|
||||
> *current* fleet (Hera/Hermes/Artemis) and stay correct until the reshuffle lands.
|
||||
> **Tripod/kernel reshuffle — Phases 0–4 COMPLETE (2026-09-22); Phase 5 close-out in
|
||||
> progress.** Hermes moved into the kernel as kernel-Hermes (`src/starkernel/vm/kernel_
|
||||
> hermes.c`); the Tripod is now **Hera / Artemis / Hestia** — **the Hermes VM, `capsules/
|
||||
> hermes/init.4th`, and `capsules/common/messaging.4th` no longer exist in this codebase.**
|
||||
> Design is complete and ruled in **`FABRIC-3.5.md`** (authoritative); execution is tracked in
|
||||
> **`FABRIC-3.6.md`**. `FABRIC-3.md` remains open and authoritative for its own topic (bare
|
||||
> metal boot); nothing in the reshuffle supersedes it. **The Tripod/fleet descriptions
|
||||
> elsewhere in this file have been updated to match** (Hera/Artemis/Hestia, no Hermes) — this
|
||||
> is no longer a "stays correct until it lands" caveat, it already landed. Remaining:
|
||||
> Isabelle pass ✅, doc sweep (this note) ✅, SBOM/version bump/master-merge still open — see
|
||||
> `FABRIC-3.6.md` Phase 5 for status.
|
||||
|
||||
> **Scope:** This repo is LithosAnanke — the bare-metal UEFI kernel that boots StarForth
|
||||
> directly on hardware. StarForth (the hosted FORTH-79 VM) has its own separate repository
|
||||
@@ -181,8 +192,11 @@ userspace runtime. No libc, no traditional OS underneath. It is the bare-metal t
|
||||
removed as an active target.)
|
||||
|
||||
**Current status: M7.1** — capsule birth protocol, Mama FORTH vocabulary, Tripod multi-VM
|
||||
fleet (Hera/Hermes/Artemis), and word-level ACL (Phases 1–7) are live; POST at boot verifies
|
||||
parity hash across amd64/aarch64/riscv64 with a 453-word Mama capsule dictionary.
|
||||
fleet (Hera/Artemis/Hestia — Hermes moved into the kernel as kernel-Hermes, FABRIC-3.6.md
|
||||
Phase 4, 2026-09-22), and word-level ACL (Phases 1–7) are live; POST at boot verifies parity
|
||||
hash across amd64/aarch64/riscv64 with a 530-word Mama capsule dictionary (word count as of
|
||||
the Phase 4 strip; verify against a live `PARITY:M7.1a word_count=` line before citing, it
|
||||
changes with any new C word registration).
|
||||
|
||||
**Key distinguishing features:**
|
||||
|
||||
@@ -191,9 +205,11 @@ parity hash across amd64/aarch64/riscv64 with a 453-word Mama capsule dictionary
|
||||
- Content-addressed, immutable **capsules** as the primary organizational unit — no dynamic
|
||||
allocator in the traditional sense; identity is a content hash (XXHash64), mutation
|
||||
produces a new capsule
|
||||
- **Tripod** — a named multi-VM fleet (Hera the Mama VM, two Hermes instances, Artemis)
|
||||
that births, runs, and re-births independently; verified booting live pre-REPL on all
|
||||
three architectures. See `.claude/TRIPOD.md`, `.claude/HERMES.md`, `.claude/ARTEMIS.md`.
|
||||
- **Tripod** — a named multi-VM fleet (Hera the Mama VM, Artemis, Hestia) that births, runs,
|
||||
and re-births independently; verified booting live pre-REPL on all three architectures.
|
||||
Hermes moved into the kernel as kernel-Hermes (`src/starkernel/vm/kernel_hermes.c`) and is
|
||||
no longer a Tripod VM — see `FABRIC-3.5.md`/`FABRIC-3.6.md`, not the archived
|
||||
`.claude/TRIPOD.md`/`.claude/HERMES.md`/`.claude/ARTEMIS.md`.
|
||||
- Word-level ACL security system with kernel parity (see above) — measured overhead three
|
||||
orders of magnitude below the measurement floor
|
||||
- Kconfig-based build configuration (~40 discoverable symbols spanning physics/heartbeat/
|
||||
|
||||
+105
@@ -4593,6 +4593,34 @@ any checkpoint reached *during* the drain sees `depth > 1` and will not drain ag
|
||||
counter that defines the safe boundary also makes the drain non-reentrant**, with no flag, no
|
||||
lock and no new state.
|
||||
|
||||
**Amendment, found while building task 3.4 (2026-09-22): this claim is true and covers a
|
||||
different hazard than the one that actually mattered.** Non-reentrant drain (the same message
|
||||
cannot drain twice) is real, but `g_vm_interpret_depth` was built for *cross-VM* nesting — the
|
||||
checkpoint's own comment frames it as "nested inside a `VM-EXEC`/`VM-CALL` dispatch **from
|
||||
another VM's own `vm_interpret()` call**." A different VM means a different `VM` struct, so
|
||||
`input_buffer`/`input_length`/`input_pos` never collide in that case. **Same-VM reentrancy —
|
||||
draining calls `vm_interpret()` on the very `vm` whose own `vm_interpret()` call is still
|
||||
paused on the C stack, mid-word, at the checkpoint that triggered the drain — is a genuinely
|
||||
separate hazard §XLIII.5 never named.** `FABRIC-3.md` §XX had already flagged this exact class
|
||||
for Hera specifically: the old messaging pump skipped her because "self-targeting `VM-EXEC`
|
||||
would hit the same reentrancy class… (`input_buffer`/`input_pos` not being saved by
|
||||
`vm_state_push`/`pop`)." Read directly: `VMCallState` (`vm_state_push()`/`vm_state_pop()`,
|
||||
`mama_forth_words.c`) saves only `rsp`/`exit_colon`/`ecw_nesting` — never `input_buffer`,
|
||||
`input_length`, or `input_pos`. Left unaddressed, the enclosing `vm_interpret()` call's own
|
||||
while loop would silently lose the rest of its input line or block the moment a drain fires
|
||||
mid-line — the same failure shape as the `INPUT_BUFFER_SIZE` 256 defect `.claude/CLAUDE.md`
|
||||
calls non-negotiable, and trap #1 in `FABRIC-3.6.md`'s own START HERE ("a green boot is weak
|
||||
evidence").
|
||||
|
||||
**Not a divergence from this section's ruling — the mechanism is exactly as ruled.** Cursor
|
||||
preservation is the implementer's own obligation *inside* the ruled mechanism, the same way
|
||||
§XLIV.1 found `mkcapsule`'s "1024-byte limit" was arithmetically right and operationally
|
||||
incomplete: fixing one thing while leaving a real gap unnamed. `FABRIC-3.6.md` task 3.4's own
|
||||
implementation snapshots `vm->input_buffer`/`input_length`/`input_pos`, plus `vm->mode` (a
|
||||
checkpoint reached mid-colon-definition must not let a drained payload's words compile into
|
||||
the enclosing definition) and `vm->error`/`abort_requested` (a bad message must not abort the
|
||||
enclosing execution), around the `vm_interpret()` call, restoring all six afterward.
|
||||
|
||||
### XLIII.6 — Three constraints, named rather than discovered later
|
||||
|
||||
1. **`INPUT_BUFFER_SIZE` is 1025** — 1024 content bytes plus NUL, and `.claude/CLAUDE.md` calls
|
||||
@@ -4665,3 +4693,80 @@ not edited from here. `.claude/CLAUDE.md` now carries the full 64×16 rule.
|
||||
`MANIFEST.md`'s ride the strip per §XXII.5.
|
||||
- ⬜ **Item 45, NEW** — carry §XLIV.1's 64-char line limit into the `experiments/bare_metal/README.md`
|
||||
capsule guidance if it repeats the byte framing. **Not checked; flagged.**
|
||||
|
||||
---
|
||||
|
||||
## XLV. B1, B2, B4 SETTLED by Captain Bob (2026-09-21) — channels negotiate, the switch table is dynamic, payloads are one block
|
||||
|
||||
Three of Phase 3's blockers (`FABRIC-3.6.md` B1/B2/B4) ruled in one session. **These are rulings,
|
||||
recorded as given; the reasoning below is the design consequence, not new design.**
|
||||
|
||||
### XLV.1 — B1 (item 27): negotiated channels, pub/sub, ACK/NACK
|
||||
|
||||
> **Messaging is publish/subscribe. There is one common channel every VM listens to. A private
|
||||
> channel is created by request → grant/deny over the common channel, and the granted channel
|
||||
> is a new topic with its own membership. ACK/NACK negotiation runs throughout.**
|
||||
|
||||
This **overrules §XXXIII.5's recommendation** (one flat broadcast membership) in favour of the
|
||||
negotiation that `messaging.4th`'s CH-REQUEST/ACCEPT/CONFIRM/CLOSE already sketched. Consequences:
|
||||
|
||||
- **`SkHermesMembership` (task 2.1) is per-channel.** The flat list is right *per topic*; there
|
||||
is now one per channel, held in a **dynamic** table with no fixed channel maximum (same
|
||||
reasoning as XLV.2).
|
||||
- **The common channel is a permanent topic**; every VM is subscribed from birth.
|
||||
- **A deny is a NACK.** ACK/NACK are ordinary message types on the existing heat-coupled
|
||||
allocator (tasks 2.2–2.7), so they draw and decay heat like any message.
|
||||
- **Advised, not ruled — open for Captain Bob:** ACK the private-channel open and delivery, not
|
||||
every common-channel message, since ACK-everything roughly doubles message heat draw against
|
||||
the consumption economy (§XL.4).
|
||||
- **Advised, not ruled — open:** who may open a channel with whom is policy and belongs in
|
||||
`ACL.4th` (CLAUDE.md: policy in FORTH, never gated on `zuse_session`); kernel-Hermes should
|
||||
ask, not decide. Where that hook lives must be settled before the grant task is written.
|
||||
|
||||
### XLV.2 — B2 (item 32): the switch table is dynamic, not a constant
|
||||
|
||||
> **`SK_SWITCH_MAX_SLOTS` (16) is not to be fixed and static; it becomes a dynamic component.**
|
||||
|
||||
Precedent already in the tree: Stadium sizes its VM quota table from RAM at boot
|
||||
(`stadium_max_vm_count_val`, kmalloc'd, 2026-08-15). The switch table follows the same pattern.
|
||||
**The concrete sizing rule is not yet specified** and is a task-writing prerequisite.
|
||||
|
||||
### XLV.3 — B4 (item 44): payload bound is one block; larger payloads chunk
|
||||
|
||||
> **Follow the block convention the `*.4th` files use.**
|
||||
|
||||
Read as (confirmed by Captain Bob 2026-09-21): a message payload is bounded to **one block =
|
||||
1024 bytes** (64×16, §XLIV.1), which matches §XLIII.6.1's `INPUT_BUFFER_SIZE − 1` drain limit;
|
||||
anything larger is **chunked across messages**. Chunk framing (sequence/last-chunk marking) is
|
||||
a Phase 3 task-writing prerequisite. Note the 64-char line rule (§XLIV.1) governs *capsule
|
||||
source blocks*; whether it also constrains message payload content is **not** ruled here.
|
||||
|
||||
### XLV.4 — Punch list
|
||||
|
||||
- ✅ **Items 27, 32, 44 — SETTLED** (§XLV.1–.3).
|
||||
- ✅ **NEW** — ACK cadence (XLV.1); ACL hook for channel-open policy (XLV.1); dynamic switch-table
|
||||
sizing rule (XLV.2); chunk framing (XLV.3). **SETTLED §XLVI.**
|
||||
- ✅ **Phase 3 task breakdown** — drafted `FABRIC-3.6.md` tasks 3.0–3.11, 2026-09-21.
|
||||
|
||||
## XLVI. §XLV.4 sub-items SETTLED by Captain Bob (2026-09-21) — task 3.0 closed
|
||||
|
||||
All five `FABRIC-3.6.md` task 3.0 sub-items, plus task 3.3's heat-cost design point, ruled in one
|
||||
session (all recommended defaults accepted):
|
||||
|
||||
- **3.0(a) ACK cadence:** channel-open + delivery only, not every common-channel message —
|
||||
confirms §XLV.1's own advised default.
|
||||
- **3.0(b) Channel-open ACL hook location:** a new word in `ACL.4th` itself (e.g.
|
||||
`HERMES-CHANNEL-OPEN?`), extending its scope from per-word ACL to also cover channel-open
|
||||
policy, rather than a separate policy file. Keeps "all policy in `ACL.4th`" as one rule with
|
||||
no exceptions.
|
||||
- **3.0(c) Dynamic switch-table sizing:** mirrors Stadium's `stadium_max_vm_count_val` pattern —
|
||||
RAM-derived at boot, no separate sizing formula.
|
||||
- **3.0(d) Chunk framing:** each chunk carries `(msg_id, seq, is_last)` ahead of up to 1024
|
||||
bytes of payload; receiver reassembles by `msg_id`+`seq` order.
|
||||
- **3.0(e) Drain cadence:** one message per outermost-interpret checkpoint (§XLIII.6.3's own
|
||||
recommendation) — a backlog drains across several checkpoint hits, not in one burst.
|
||||
- **Task 3.3 heat cost per publish:** one message per subscriber (separate heat draw each),
|
||||
matching the existing heat-coupled allocator 1:1 — no refcount machinery to add to the
|
||||
allocator/ledger.
|
||||
|
||||
`FABRIC-3.6.md` task 3.0 is closed by this ruling; tasks 3.1–3.7 may now be written precisely.
|
||||
|
||||
+1544
-51
File diff suppressed because it is too large
Load Diff
@@ -14,7 +14,7 @@
|
||||
# CONFIGURATION
|
||||
# ==============================================================================
|
||||
|
||||
VERSION ?= 3.1.0
|
||||
VERSION ?= 3.2.0
|
||||
CC = gcc
|
||||
|
||||
# Isabelle configuration
|
||||
@@ -744,7 +744,7 @@ sbom:
|
||||
exit 1; \
|
||||
fi
|
||||
@syft dir:. -o spdx-json=sbom.spdx.json -o spdx=sbom.spdx \
|
||||
--source-name StarForth \
|
||||
--source-name LithosAnanke \
|
||||
--source-version $(VERSION) \
|
||||
--exclude './build/**' --exclude './tools/**' --exclude './.git/**'
|
||||
@echo "✅ SBOM generated:"
|
||||
|
||||
+24
-11
@@ -71,16 +71,28 @@ MAKEFLAGS += -j$(NPROC)
|
||||
endif
|
||||
|
||||
# Version
|
||||
# Roadmap (per docs/lithosananke/ROADMAP.md "Release Versioning Policy" and
|
||||
# FABRIC-2.md §G — X.0.0 = QEMU release, X.5.0 = hardware bare-metal release):
|
||||
# v1.0.x — serial-only production (released)
|
||||
# v1.5.x — framebuffer VT100 terminal/console milestone (released)
|
||||
# v2.0.0 — QEMU release (even major = LTS): three-arch QEMU story complete
|
||||
# v2.0.1 — SER5 hardware-track line: RDRAND backend + generic thumbdrive image goal
|
||||
# v2.2.0 — amd64 bare-metal (Beelink SER5) — see ROADMAP "Board-by-board rollout"
|
||||
# v2.5.0 — hardware bare-metal release: real per-arch RNG + real-board boot
|
||||
VERSION ?= 3.1.0
|
||||
LITHOS_VERSION ?= 2.0.0
|
||||
# Versioning policy (FABRIC-3.5.md §XXX, ratified 2026-09-19, replaces the old
|
||||
# X.0.0/X.5.0 QEMU/hardware encoding this comment used to carry):
|
||||
# Major: ODD = LTS line (non-breaking fixes only). EVEN = working line
|
||||
# (breaking changes land here). Minor: release within the line.
|
||||
# Patch: working builds within a release.
|
||||
# v1.0.x — serial-only production (released, historical encoding)
|
||||
# v1.5.x — framebuffer VT100 console milestone (released, historical encoding)
|
||||
# v2.0.0 — QEMU release: three-arch QEMU story complete (released)
|
||||
# v2.0.1 — SER5 hardware-track line (historical; superseded by this policy)
|
||||
# v2.1.0 — Tripod/kernel reshuffle: Hermes into the kernel, Tripod = Hera/Artemis/Hestia
|
||||
# v2.2.0 — amd64 bare-metal bring-up (Beelink SER5)
|
||||
# v2.x — further working releases; riscv64 / aarch64 board bring-up
|
||||
# v3.0.0 — FIRST LTS, when and only when FABRIC-3.5.md §XXX.5's 5 criteria are met
|
||||
# LITHOS_VERSION (kernel) and VERSION (embedded StarForth engine) are independent
|
||||
# and do not auto-sync (§XXX.4) — do not infer a relationship if they ever coincide.
|
||||
# Engine VERSION bumps at tag time by what actually changed (§XXX.6): major = any
|
||||
# FORTH-79-visible word semantics change; minor = words added/removed/relocated;
|
||||
# patch = build-only. This reshuffle is a minor bump: BIRTH's registration widened,
|
||||
# the messaging layer was replaced by kernel-Hermes, PLOT/FB-* relocated to Hestia —
|
||||
# all dictionary-visible, no FORTH-79 word semantics changed.
|
||||
VERSION ?= 3.2.0
|
||||
LITHOS_VERSION ?= 2.1.0
|
||||
|
||||
# ==============================================================================
|
||||
# BUILD PATHS
|
||||
@@ -552,7 +564,8 @@ LOADER_EXTRA_SRCS := \
|
||||
$(KERNEL_SRC)/vm/stadium.c \
|
||||
$(KERNEL_SRC)/vm/stadium_words.c \
|
||||
$(KERNEL_SRC)/vm/stadium_blocks.c \
|
||||
$(KERNEL_SRC)/vm/session.c
|
||||
$(KERNEL_SRC)/vm/session.c \
|
||||
$(KERNEL_SRC)/vm/kernel_hermes.c
|
||||
|
||||
KERNEL_EXTRA_SRCS := $(LOADER_EXTRA_SRCS)
|
||||
|
||||
|
||||
@@ -98,6 +98,16 @@ Block 4007
|
||||
( rewired: physics-style regression belongs to the kernel )
|
||||
( exclusively, and this file is deliberately host-portable. )
|
||||
|
||||
Block 4008
|
||||
( HERMES-CHANNEL-OPEN? -- FABRIC-3.6.md task 3.7 hook. )
|
||||
( Stack: req-hi req-lo -- allow? Kernel-Hermes asks )
|
||||
( this word, never decides in C, never gates on )
|
||||
( zuse_session (CLAUDE.md). Default: approve every )
|
||||
( request. Policy authors edit THIS word's body only -- )
|
||||
( kernel_hermes.c's own query function never changes. )
|
||||
: HERMES-CHANNEL-OPEN? ( req-hi req-lo -- allow? )
|
||||
2DROP 1 ;
|
||||
|
||||
Block 4015
|
||||
( Self-activation - runs after all ACL words are defined )
|
||||
ACL-BOOT
|
||||
|
||||
+85
-130
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-16T19:45:24Z -->
|
||||
<!-- 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. -->
|
||||
@@ -8,27 +8,24 @@
|
||||
|
||||
| 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, 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 | `0xf55edc4e76a8c294` | 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, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042 | `0x201cfd6d39fcb22d` | 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 | `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 | `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 | `0x1ef4939ed32ec1e6` | 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 |
|
||||
| `process.4th` | 4300, 4301 | `0x781afc1dbd0294f7` | yes |
|
||||
| `sdk.4th` | 5109, 5110, 5111, 5112, 5113, 5114, 5115 | `0x008fdbbb62c94a3a` | yes |
|
||||
| `turtle.4th` | 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108 | `0x4d470418ca543365` | yes |
|
||||
| `user-font-demo.4th` | 4200, 4201, 4202 | `0xce1fd7d1b581a56d` | yes |
|
||||
@@ -45,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` | `0x1ef4939ed32ec1e6` | ok |
|
||||
| 2050 | `init.4th` | `0x1ef4939ed32ec1e6` | ok |
|
||||
| 2057 | `init.4th` | `0x1ef4939ed32ec1e6` | 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 |
|
||||
@@ -102,22 +99,23 @@
|
||||
| 2160 | `workload-8.4th` | `0x56b7f2f0efa000df` | ok |
|
||||
| 2200 | `workload-0.4th` | `0x93f86f60aeba8feb` | ok |
|
||||
| 2201 | `workload-0.4th` | `0x93f86f60aeba8feb` | ok |
|
||||
| 4000 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4001 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4002 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4003 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4004 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4005 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4006 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4007 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4015 | `ACL.4th` | `0xd781d22148ff171d` | ok |
|
||||
| 4000 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4001 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4002 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4003 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4004 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4005 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4006 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4007 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4008 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4015 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
|
||||
| 4016 | `zuse.4th` | `0x490ded9be257a90b` | ok |
|
||||
| 4017 | `zuse.4th` | `0x490ded9be257a90b` | ok |
|
||||
| 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,64 +143,60 @@
|
||||
| 4047 | `acl-std79.4th` | `0x773bf9209df191d1` | ok |
|
||||
| 4048 | `acl-std79.4th` | `0x773bf9209df191d1` | ok |
|
||||
| 4050 | `lib.4th` | `0x4b216635c359ef73` | ok |
|
||||
| 4055 | `common:msg.4th` | `0x850a0382344ea6c4` | 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` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4111 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4112 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4113 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4122 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4123 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4124 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4125 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4126 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4127 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4128 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4129 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4130 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4131 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4132 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4133 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4134 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4135 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4136 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4137 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4138 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4139 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4140 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4141 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4153 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
| 4160 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4161 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4162 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4163 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4164 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4165 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4166 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4167 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4168 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4169 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4170 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4171 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4172 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4173 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4174 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4177 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4178 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4179 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4180 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4181 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4182 | `artemis:init.4th` | `0xf55edc4e76a8c294` | 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 |
|
||||
| 4300 | `process.4th` | `0x781afc1dbd0294f7` | ok |
|
||||
| 4301 | `process.4th` | `0x781afc1dbd0294f7` | ok |
|
||||
| 4406 | `workload-1.4th` | `0x63e251adb0a03613` | ok |
|
||||
| 4415 | `workload-1.4th` | `0x63e251adb0a03613` | ok |
|
||||
| 4425 | `workload-1.4th` | `0x63e251adb0a03613` | ok |
|
||||
@@ -237,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` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4852 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4853 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4854 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4855 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
| 4856 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4857 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4858 | `artemis:init.4th` | `0xf55edc4e76a8c294` | ok |
|
||||
| 4860 | `artemis:init.4th` | `0xf55edc4e76a8c294` | 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 |
|
||||
@@ -332,49 +325,12 @@
|
||||
| 4983 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4984 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4985 | `font.4th` | `0x3f305911500c78f6` | 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` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5030 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5039 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5040 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5041 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5042 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5043 | `workload-calib1.4th` | `0x3b9f2d17b554fabc` | ok |
|
||||
| 5044 | `multiuser-doe.4th` | `0x22140588ee7c39e6` | ok |
|
||||
| 5045 | `multiuser-doe.4th` | `0x22140588ee7c39e6` | ok |
|
||||
@@ -408,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.
|
||||
|
||||
---
|
||||
*39 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
*36 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
|
||||
+87
-74
@@ -49,7 +49,7 @@ Blocks: **2049–2052, 2057**
|
||||
|
||||
| Block | Immutable | Justification |
|
||||
|-------|-----------|---------------|
|
||||
| 2049 | No | Hera VM init: loads compudynamics, VM-INIT, lib, common:msg, fleet-k, process; BIRTHs Artemis + Hermes. VM-TREE + VM-CHILDREN implemented (`b52281b9`), unrolled for v1 Tripod |
|
||||
| 2049 | No | Hera VM init: `VM-TREE`/`VM-PARENT`/`VM-CHILDREN`; loads `ACL.4th`, `block-acl.4th`, `zuse-eligibility.4th`, `lib.4th`. **Corrected 2026-09-19 (three times)** — first pass removed a stale listing of `compudynamics`/`common:msg`/`fleet-k`/`process` (none loaded here; two already-deleted, two stripped in the same pass, FABRIC-3.6.md tasks 0.2/0.3). Second pass (same day): `fabric.4th`/`font.4th` **removed** from this list — relocated to `hestia/init.4th` (FABRIC-3.6.md tasks 1.6/1.7), Hera no longer loads either. Third pass (2026-09-22, FABRIC-3.6.md Phase 4 Stage E): `common:messaging.4th` + `MSG-CD-INIT` **removed** — the file itself is deleted (see "Deleted capsules" below); every FORTH-owned message type was cut over to kernel-Hermes first (Phase 3) |
|
||||
| 2050 | No | BOOT-BANNER call — separated so the banner block can be swapped without touching init logic |
|
||||
| 2051 | No | TRIPOD-TEST — 6 acceptance gates per TRIPOD.md. Dead EVENT-WAIT step replaced with HERMES-TICK liveness check (`3436d564`) |
|
||||
| 2052 | No | TRIPOD-TEST invocation block |
|
||||
@@ -308,14 +308,6 @@ Blocks: **4050**
|
||||
|-------|-----------|---------------|
|
||||
| 4050 | No | N. COMMA CRLF CSV-COL CSV-LAST Q.SHOW USE RUN. Not immutable: these are utilities; adding words is safe. Removing or renaming existing words requires audit of all callers |
|
||||
|
||||
### `common/msg.4th` — Hermes participant interface
|
||||
|
||||
Blocks: **4055**
|
||||
|
||||
| Block | Immutable | Justification |
|
||||
|-------|-----------|---------------|
|
||||
| 4055 | Yes | HERMES-ACK / HERMES-NACK. Immutable: this is the cross-VM ACK/NACK ABI. Every messaging VM (Hera, Hermes, Artemis) loads this at birth. Changing the block or the word names breaks the Hermes delivery protocol |
|
||||
|
||||
### `doe-campaign.4th` — DoE campaign harness
|
||||
|
||||
Blocks: **4060–4065**
|
||||
@@ -325,74 +317,51 @@ Blocks: **4060–4065**
|
||||
matched the file at any point on record. Rewritten to match the actual
|
||||
content, migrated this pass off the deleted `compudynamics.4th`/
|
||||
`fleet-k.4th` primitives onto the `VM-PHYSICS-STATUS`/`VM-CONSERVED?`
|
||||
mechanism — see `capsules/hermes/init.4th` block 4153 and
|
||||
mechanism — see (historical) `hermes/init.4th` block 4153 and
|
||||
`capsules/artemis/init.4th` block 4852 for the companion `LOAD-DOE` fix
|
||||
this migration also required.
|
||||
|
||||
**Note (2026-09-22, FABRIC-3.6.md Phase 4 Stage E):** `SETUP-HERMES` and every
|
||||
Hermes touch in `PHASE1-DOE`/`CD-TICK`/`SMOKE-CAMPAIGN` removed — Hermes no
|
||||
longer exists. Every block below is now Artemis-only.
|
||||
|
||||
| Block | Immutable | Justification |
|
||||
|-------|-----------|---------------|
|
||||
| 4060 | No | `SETUP-HERMES`/`SETUP-ARTEMIS`/`SETUP-VMS`: `BIRTH` + remote `LOAD-DOE` VM-EXEC per child VM. Not immutable: setup sequence may grow |
|
||||
| 4061 | No | `PHASE1-DOE`: real per-VM `DOE-WORK` baseline touches. Historical note: dead `CD-WORK` (index-dispatch, deleted VM-HERA/HERMES/ARTEMIS constants) removed here 2026-07-08 |
|
||||
| 4062 | No | `CD-TICK`/`CD-DOE`: one real fleet-touch pass (`VM-EXEC "DOE-WORK"` on Hermes+Artemis), looped N times. `CAMPAIGN-STATUS`: `VM-PHYSICS-STATUS` + `VM-CONSERVED?` check. Not immutable: workload/status content may evolve |
|
||||
| 4060 | No | `SETUP-ARTEMIS`/`SETUP-VMS`: `BIRTH` + remote `LOAD-DOE` VM-EXEC on Artemis. Not immutable: setup sequence may grow |
|
||||
| 4061 | No | `PHASE1-DOE`: real per-VM `DOE-WORK` baseline touch, Artemis only. Historical note: dead `CD-WORK` (index-dispatch, deleted VM-HERA/HERMES/ARTEMIS constants) removed here 2026-07-08 |
|
||||
| 4062 | No | `CD-TICK`/`CD-DOE`: one real fleet-touch pass (`VM-EXEC "DOE-WORK"` on Artemis), looped N times. `CAMPAIGN-STATUS`: `VM-PHYSICS-STATUS` + `VM-CONSERVED?` check. Not immutable: workload/status content may evolve |
|
||||
| 4063 | No | `CAMPAIGN`: full campaign — baselines then 30 real fleet touches |
|
||||
| 4064 | No | `SMOKE-CAMPAIGN`: 1-rep seed-1959 smoke test + 16 real fleet touches |
|
||||
| 4065 | No | `THREE-VM-CAMPAIGN`: loads `doe.4th` locally on Hera, then 48 real fleet touches, all three VMs as Compudynamics peers |
|
||||
|
||||
### `hermes/init.4th` — Hermes VM (messenger)
|
||||
### `hermes/init.4th` — DELETED 2026-09-22 (formerly Hermes VM, the messenger)
|
||||
|
||||
Blocks: **4100–4109, 4114–4121, 4142–4153**
|
||||
**Deleted, FABRIC-3.6.md Phase 4 Stage E (task 4.1).** Formerly blocks
|
||||
**4100–4109, 4114–4121, 4142–4153** (gaps 4110–4113 and 4122–4141 were always
|
||||
Artemis's, hard-locked, never Hermes's — see the `artemis/init.4th` entry below,
|
||||
unaffected by this deletion). Every FORTH-owned message type this file's
|
||||
`messaging.4th` companion implemented (`BLK-ATTACH-EVENT`, `CONSOLE-CMD-EVENT`,
|
||||
`ELEVATE-REQUEST`) was cut over to kernel-Hermes first (Phase 3, tasks 3.8–3.10),
|
||||
verified live on all three architectures at each step; only then was the Hermes
|
||||
VM itself, this capsule, and `capsules/common/messaging.4th` removed. Full
|
||||
three-architecture acceptance for the deletion: `logs/20260922-181141/amd64/`,
|
||||
`logs/20260922-181753/aarch64/`, `logs/20260922-182136/riscv64/` — zero
|
||||
`UNKNOWN WORD`, identical `dict_hash` across all three. See FABRIC-3.6.md's own
|
||||
Phase 4 entry for the full account, including one found-not-fixed collateral
|
||||
defect (`SEND-ELEVATE-REQUEST`, this file's own former caller into
|
||||
`zuse-eligibility.4th`'s `ELEVATE-GRANT`, is now unreachable — Captain Bob's
|
||||
2026-09-22 decision: leave it, Phase 8 PKI will build its own entrypoint).
|
||||
Former blocks 4100–4153 (ex-Artemis-gaps) are now UNASSIGNED — see Unassigned
|
||||
Ranges below. The per-block justification table this section used to carry
|
||||
(arena allocator ABI, message/channel field accessors, the VM-name routing
|
||||
table, channel negotiation, broadcast) is not reproduced here; it is historical
|
||||
detail about deleted code, recoverable from git history (`git show
|
||||
<pre-strip-commit>:capsules/hermes/init.4th`) if ever needed again.
|
||||
|
||||
Gap 4110–4113 = Artemis. **HARD LOCKED. Never touch from Hermes side.**
|
||||
Gap 4122–4141 = Artemis (extended — see below). Never touch from Hermes side.
|
||||
|
||||
| Block | Immutable | Justification |
|
||||
|-------|-----------|---------------|
|
||||
| 4100 | Yes | Hermes constants: event codes, channel states, node sizes, arena sizes, MSG-DELIVERED. Immutable: changing node size constants corrupts all arena math |
|
||||
| 4101 | Yes | Arena CREATE: MSG-ARENA CH-ARENA MBR-ARENA; free-list roots; MSG-SEQ CH-ACTIVE. Immutable: CREATE allocates memory at compile time; re-running changes VM memory layout |
|
||||
| 4102 | Yes | MSG-INIT-FREE + CH-INIT-FREE. Immutable: free-list init is called once from CD-INIT; structure change breaks allocator |
|
||||
| 4103 | Yes | MBR-INIT-FREE + MSG-ALLOC + MSG-FREE-NODE. Immutable: allocator ABI; MSG-ALLOC is called by every MSG-SEND |
|
||||
| 4104 | Yes | CH-ALLOC + CH-FREE-NODE + MBR-ALLOC + MBR-FREE-NODE. Immutable: same allocator ABI constraint |
|
||||
| 4105 | Yes | Message field accessors (MSG-TYPE@/! through MSG-SEQ@/!). Immutable: field offsets are load-bearing; changing breaks every accessor caller |
|
||||
| 4106 | Yes | Channel + member accessors (CH-ID@/! through MBR-VM@). Immutable: same field offset constraint |
|
||||
| 4107 | No | VARIABLE MSG-LAST-MSG + IDX>NAME + MSG-DELIVER. Not fully immutable: MSG-DELIVER may evolve for async model. IDX>NAME now a table lookup over VM-NAME-ADDRS/LENS (see 4142) |
|
||||
| 4108 | No | MSG-SEND. Not immutable: send protocol may evolve |
|
||||
| 4109 | No | MSG-REAP. Ordering bug fixed (`8ca0cda2`) — type cleared before free-node prepend |
|
||||
| — | — | 4110–4113: ARTEMIS. NEVER TOUCH. |
|
||||
| 4114 | No | VARIABLE CH-SCAN + CH-COOL-ALL + CH-TOTAL-HEAT. Not immutable: channel cooling may evolve |
|
||||
| 4115 | No | CH-REAP-SAFE. Not immutable: channel reaping logic may evolve |
|
||||
| 4116 | No | VARIABLE COMMON-CH + COMMON-INIT + HERMES-TICK. Not immutable: HERMES-TICK drives the event loop; may grow |
|
||||
| 4117 | No | EVENT-EMIT + EVENT-WAIT + EVENT-DRAIN (backward compat). Not immutable: EVENT-WAIT is a diagnostic peek only per HERMES.md |
|
||||
| — | — | 4118: reserved, currently empty (former HERA-NOTIFY-SPAWN/KILL, removed `9323f776` — notification is automatic via `vm_physics_init`/`retire`) |
|
||||
| 4119 | No | CH-MINT-ID + CH-REQUEST. Not immutable: channel negotiation protocol may expand (multi-party invite deferred) |
|
||||
| 4120 | No | CD-INIT. Not immutable: init sequence may grow |
|
||||
| 4121 | No | MSG-ACK-LAST + MSG-NACK-LAST. Not immutable: NACK-requeue (reduced heat, retry) deferred; block may need extension |
|
||||
| — | — | 4122–4141: ARTEMIS (extended). NEVER TOUCH. |
|
||||
| 4142 | No | VM name routing table: VM-NAME-ADDRS/LENS + VM-NAME-REG + VM-NAMES-INIT. Not immutable: table-driven, grows via VM-MAX |
|
||||
| 4143 | Yes | MSG-CH@/! + MSG-ORIG-TYPE@/! + MSG-NACKED. Immutable: field offset constraint, same as 4105 |
|
||||
| 4144 | No | MSG-SEND. Not immutable: send protocol may evolve |
|
||||
| 4145 | No | MSG-TOTAL-HEAT + MSG-REDELIVER-NACKED. Not immutable: cooling/redelivery logic may evolve |
|
||||
| 4146 | No | MSG-DELIVER-ALL. Not immutable: delivery logic may evolve |
|
||||
| 4147 | No | HERMES-K + WELCOME. Not immutable: may grow |
|
||||
| 4148 | No | CH-ACCEPT + CH-CONFIRM + CH-CLOSE. Not immutable: channel negotiation protocol may expand |
|
||||
| 4149 | No | HERMES-STATUS (MSG-USED + CH-USED). Not immutable: status may expand |
|
||||
| 4150 | No | Member management: MBR-NEXT!/VM! + CH-ADD-MBR + HERMES-MSG-TEST. Not immutable: may grow |
|
||||
| 4151 | No | Phase 2 real multi-member broadcast: MSG-BROADCAST + BC-* variables. Not immutable: broadcast protocol may expand |
|
||||
| 4152 | No | Phase 2 COMMON-CH membership + test: BCAST-GOT/BCAST-RECV/REGISTER-COMMON-MEMBERS/SEND-BROADCAST-TEST. Not immutable: test harness may grow |
|
||||
| 4153 | No | `LOAD-DOE` ( -- ): `S" doe.4th" EXEC`. Added 2026-07-08 — `doe-campaign.4th`'s `SETUP-HERMES` calls this remotely so Hermes gets `DOE-WORK`; was missing entirely before this pass, so `doe-campaign.4th` could never have worked even pre-dating the VM-fleet-physics redesign. Not immutable: trivial wrapper |
|
||||
|
||||
**2026-07-05 collision fix:** blocks 4142–4150 were previously numbered
|
||||
4122–4131 (interleaved with the blocks below them in this list), directly
|
||||
colliding with Artemis's real block range. The collision was introduced
|
||||
`fca7b09a` (Jul 1) when the VM-name routing table was added without
|
||||
checking MANIFEST.md, and went undetected for 4 days because `mkcapsule`'s
|
||||
build path doesn't run conflict detection (only `--manifest` does). Found
|
||||
via `mkcapsule --manifest` while syncing this document; renumbered into
|
||||
genuinely free space and reverified with a clean amd64 TRIPOD-TEST boot
|
||||
(`PASS: fleet K`, `PASS: Hermes liveness`, `PASS: Artemis ready`, `K soak`,
|
||||
`PASS: E2E msg flow` — Hermes's kill/rebirth soak test reproduced an
|
||||
identical `dict_hash` before and after, confirming the reload path is now
|
||||
clean). amd64-only per the rev-f iteration rule; three-arch not yet run for
|
||||
this fix. See Conflict Register entry C5.
|
||||
**2026-07-05 collision fix (historical, still relevant to Conflict Register
|
||||
C5 below):** blocks 4142–4150 were previously numbered 4122–4131, directly
|
||||
colliding with Artemis's real block range, introduced `fca7b09a` (Jul 1),
|
||||
found and resolved via `mkcapsule --manifest`. See Conflict Register entry C5.
|
||||
|
||||
### `artemis/init.4th` — Artemis VM (flat pool disk manager v2)
|
||||
|
||||
@@ -439,14 +408,19 @@ Hermes (see above). The table below reflects the actual current footprint.
|
||||
| 4851 | No | ART-PING ( -- ): cheap O(1) touch target for Phase 3 fleet DoE workload, unlike ART-TICK/ART-STATUS which scan all ART-DATA-BLKS. Not immutable: may extend |
|
||||
| 4852 | No | `LOAD-DOE` ( -- ): `S" doe.4th" EXEC`. Added 2026-07-08 — same missing-word fix as `hermes/init.4th` 4153; `doe-campaign.4th`'s `SETUP-ARTEMIS` calls this remotely. Not immutable: trivial wrapper |
|
||||
|
||||
### `process.4th` — VM process management
|
||||
### `hestia/init.4th` — Hestia VM (third Tripod leg, bind point)
|
||||
|
||||
Blocks: **4300–4301**
|
||||
Blocks: **4986–4988** (allocated 4986–4996, FABRIC-3.6.md task 1.1; 3 of the 11 used so far)
|
||||
|
||||
Added 2026-09-19 (FABRIC-3.6.md tasks 1.2/1.4/1.6/1.7, Tripod/kernel reshuffle — see
|
||||
FABRIC-3.5.md §II/§IV). Reconstitutes the Tripod as Hera/Artemis/Hestia. Birthed (task 1.4)
|
||||
and owns the drawing fabric (`fabric.4th`/`font.4th`, tasks 1.6/1.7 — see block 4988).
|
||||
|
||||
| Block | Immutable | Justification |
|
||||
|-------|-----------|---------------|
|
||||
| 4300 | No | Event code constants + SPAWN + PAUSE lifecycle operators. Not immutable: process model may evolve |
|
||||
| 4301 | No | RESUME + KILL-VM. Not immutable: process model may evolve |
|
||||
| 4986 | No | `WELCOME` banner word + call. Not immutable: message text may change |
|
||||
| 4988 | No | `S" fabric.4th" EXEC` + `S" font.4th" EXEC` — moved here from `init.4th` (Hera), tasks 1.6/1.7, **merged into one commit rather than done separately as the punchlist originally split them**: `font.4th` calls `G-LINE`/`G-ELLIPSE`, which are `fabric.4th`'s own words, so moving one without the other strands the dependency in whichever VM keeps only half — confirmed live, moving `fabric.4th` alone floods Hera's boot with `UNKNOWN WORD: 'G-LINE'`. Order preserved (`fabric.4th` before `font.4th`), matching `init.4th`'s own prior load order. Not immutable: may grow if more of the drawing/font surface relocates here |
|
||||
| 4987 | No | **Rewritten 2026-09-22, FABRIC-3.6.md Phase 4 Stage E.** Originally joined `COMMON-CH` on slot 11 (Hera/Hermes/Artemis held 0/1/2, identities held 3–10, `messaging.4th:78-85`) — that whole `COMMON-CH` concept no longer exists, `messaging.4th` is deleted. Now just `S" lib.4th" EXEC` + `LOG-INFO" Hestia: ready"` + `STARTUP-BANNER`. Not immutable: startup sequence may grow |
|
||||
|
||||
### Deleted capsules (historical)
|
||||
|
||||
@@ -458,6 +432,31 @@ generalized VM fleet physics mechanism (`capsule_vm_physics.c`/`.h`,
|
||||
and `docs/working/archive/session-logs/2026-07-05-worklog.md`. Their
|
||||
former ranges are now UNASSIGNED (see Namespace Map).
|
||||
|
||||
`common/msg.4th` (formerly 4055) and `process.4th` (formerly 4300–4301)
|
||||
were deleted 2026-09-19 (FABRIC-3.6.md tasks 0.2/0.3, part of the
|
||||
Tripod/kernel reshuffle's Category A surgical strip — see FABRIC-3.5.md
|
||||
§XXII). Both were confirmed dead by all three of §XXII.2's reachability
|
||||
routes: zero `EXEC` sites in any boot-loaded capsule, and zero callers
|
||||
anywhere of their exported words (`HERMES-ACK`/`HERMES-NACK` for the
|
||||
former; `SPAWN`/`PAUSE`/`RESUME`/`KILL-VM` for the latter).
|
||||
`common/msg.4th`'s block-4055 entry had claimed it was an immutable ABI
|
||||
"every messaging VM loads at birth" — `FABRIC-2.md:2773` had already
|
||||
flagged that claim as stale before this correction. `process.4th`'s
|
||||
removal also took `messaging.4th`'s `EVENT-EMIT`/`EVENT-WAIT`/
|
||||
`EVENT-DRAIN` (former block 5030) with it, its only live caller. Their
|
||||
former ranges are now UNASSIGNED (see Namespace Map).
|
||||
|
||||
`hermes/init.4th` (formerly 4100–4109, 4114–4121, 4142–4153) and
|
||||
`common/messaging.4th` were deleted 2026-09-22 (FABRIC-3.6.md Phase 4 Stage E,
|
||||
tasks 4.1/4.3), the final step of the Tripod/kernel reshuffle — the Hermes VM
|
||||
itself and its FORTH messaging layer, superseded by kernel-Hermes
|
||||
(`src/starkernel/vm/kernel_hermes.c`) after every live message type was cut
|
||||
over in Phase 3 (see the `hermes/init.4th` entry above for the full account).
|
||||
Their former ranges are now UNASSIGNED (see Namespace Map). This is the same
|
||||
"cut over first, delete after, one commit per Category B item, verified on all
|
||||
three architectures" discipline `compudynamics.4th`/`fleet-k.4th` and
|
||||
`common/msg.4th`/`process.4th` were deleted under above.
|
||||
|
||||
---
|
||||
|
||||
## Unassigned Ranges
|
||||
@@ -476,14 +475,16 @@ former ranges are now UNASSIGNED (see Namespace Map).
|
||||
| 4008–4009 | UNASSIGNED | ACL extension space |
|
||||
| 4019–4049 | UNASSIGNED | ACL / zuse extension space |
|
||||
| 4051–4054 | UNASSIGNED | lib.4th extension space |
|
||||
| 4056–4059 | UNASSIGNED | common:msg extension space |
|
||||
| 4055–4059 | UNASSIGNED | Former `common/msg.4th` range (deleted 2026-09-19, FABRIC-3.6.md task 0.2) |
|
||||
| 4066–4099 | UNASSIGNED | doe-campaign extension space |
|
||||
| 4154–4199 | UNASSIGNED | Hermes extension space (post-4153) |
|
||||
| 4100–4153 | UNASSIGNED | Former `hermes/init.4th` range (deleted 2026-09-22, FABRIC-3.6.md Phase 4 Stage E task 4.1). Excludes 4110–4113/4122–4141, which were always Artemis's, hard-locked, unaffected |
|
||||
| 4154–4199 | UNASSIGNED | Hermes extension space (post-4153), now moot along with 4100–4153 above |
|
||||
| 4200–4299 | UNASSIGNED | Former compudynamics.4th range (deleted `9323f776`) |
|
||||
| 4302–4399 | UNASSIGNED | process extension space |
|
||||
| 4300–4399 | UNASSIGNED | Former `process.4th` range (deleted 2026-09-19, FABRIC-3.6.md task 0.3) |
|
||||
| 4400–4405 | UNASSIGNED | Former fleet-k.4th range (deleted `9323f776`) |
|
||||
| 4410–4414, 4420–4424, 4430–4434 | UNASSIGNED | workload-1.4th's private zone, room for growth |
|
||||
| 4853+ | OPEN | Future capsules — claim here first |
|
||||
| 4986–4996 | CLAIMED | `hestia/init.4th`, allocated 2026-09-19 (FABRIC-3.6.md task 1.1, Tripod/kernel reshuffle) — file not yet created (task 1.2). Sits between `font.4th`'s last block (4985) and the console proxy's hardcoded `Block 4997` (`capsule_console.c:27-29`) — chosen specifically to avoid 4997, per §XVIII.4 |
|
||||
| 4853–4985, 4998+ | OPEN | Future capsules — claim here first (excludes 4900–4985, already `fabric.4th`/`font.4th`, and 4986–4996, now claimed above) |
|
||||
|
||||
---
|
||||
|
||||
@@ -536,3 +537,15 @@ before this doc pass. Not re-verified this pass: whether every other
|
||||
still-unflagged row elsewhere in this document matches source exactly —
|
||||
this was a targeted correction of the rows touched by recent work plus
|
||||
`doe.4th`/`ACL.4th`, not a full line-by-line re-audit of all ~250 blocks.*
|
||||
|
||||
*Doc-debt pass, 2026-09-22 — MANIFEST.md updated to ride the Tripod/kernel
|
||||
reshuffle's Category B strip (FABRIC-3.6.md Phase 4 Stage E, task 5.2 close-out
|
||||
sweep, §XXII.5). `hermes/init.4th`'s block-by-block table replaced with a
|
||||
deletion note (git history retains the detail); `common/messaging.4th`'s
|
||||
deletion recorded in "Deleted capsules"; `init.4th` block 2049,
|
||||
`doe-campaign.4th` blocks 4060–4062, and `hestia/init.4th` block 4987 updated
|
||||
to match the post-strip live files (verified by direct read, not by this
|
||||
document's own prior claims, same discipline as every other pass here).
|
||||
Former Hermes range (4100–4153, excluding Artemis's hard-locked 4110–4113/
|
||||
4122–4141) marked UNASSIGNED. Not re-verified this pass: the ~230 other rows
|
||||
this strip didn't touch.*
|
||||
|
||||
@@ -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
|
||||
@@ -525,8 +521,9 @@ Block 4857
|
||||
Block 4858
|
||||
( HERA-BLK-ATTACH-REQ ( dev-addr -- ): VM-EXEC'd by MSG- )
|
||||
( DELIVER when Hera's request arrives. Runs BLK-ATTACH on )
|
||||
( Artemis's own dictionary (real ACL gating, same as any )
|
||||
( other message payload), then replies to Hera (idx 0). )
|
||||
( Artemis's own dictionary, then replies to Hera via kernel- )
|
||||
( Hermes's KH-BLK-ATTACH-SEND (repl.c) -- FABRIC-3.6.md task )
|
||||
( 3.8 Stage C, FORTH Hermes no longer sees this message type. )
|
||||
: HERA-BLK-ATTACH-REQ ( dev-addr -- )
|
||||
0 ATTACH-ACK-LEN !
|
||||
DUP ACK-APPEND-NUM
|
||||
@@ -535,8 +532,7 @@ Block 4858
|
||||
DROP
|
||||
BL ACK-APPEND-CHAR
|
||||
S" BLK-ATTACH-ACK" ACK-APPEND
|
||||
BLK-ATTACH-EVENT 2 0 ATTACH-ACK-BUF
|
||||
ATTACH-ACK-LEN @ 0 MSG-SEND ;
|
||||
ATTACH-ACK-BUF ATTACH-ACK-LEN @ KH-BLK-ATTACH-SEND DROP ;
|
||||
|
||||
Block 4860
|
||||
( LOG-APPEND ( level ts msg-addr msg-u -- ) )
|
||||
|
||||
@@ -1,504 +0,0 @@
|
||||
Block 5003
|
||||
( common:messaging.4th -- generic per-VM messaging vocab. )
|
||||
1 CONSTANT SPAWN-EVENT
|
||||
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, )
|
||||
( carried to Zuse via CH-REQUEST. See SEND-ELEVATE- )
|
||||
( REQUEST/ELEVATE-GRANT below and in zuse-eligibility.4th. )
|
||||
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 5030
|
||||
( event compat interface. SPAWN/KILL notify-Hera is )
|
||||
( automatic: see vm_physics_init/retire in mama_word_birth. )
|
||||
: EVENT-EMIT ( type -- ) DROP ;
|
||||
: EVENT-WAIT ( -- type )
|
||||
MSG-ARENA MSG-SCAN !
|
||||
MSG-MAX 0 DO
|
||||
MSG-SCAN @ MSG-TYPE@ 0 <> IF
|
||||
MSG-SCAN @ MSG-TYPE@ UNLOOP EXIT THEN
|
||||
MSG-SCAN @ MSG-CELLS CELLS + MSG-SCAN !
|
||||
LOOP 0 ;
|
||||
: EVENT-DRAIN ( -- )
|
||||
( no-op: MSG-REAP owns cleanup; drain breaks async ) ;
|
||||
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-REQUEST MY-CH-ID @ 0 ELEVATE-REQ-BUF
|
||||
ELEVATE-REQ-LEN @ CH-REQUEST ;
|
||||
@@ -1,10 +0,0 @@
|
||||
Block 4055
|
||||
( common:msg.4th — Hermes participant interface )
|
||||
( Load into every messaging VM at birth: )
|
||||
( S" common:msg.4th" EXEC )
|
||||
: HERMES-ACK ( -- )
|
||||
LOG-DEBUG" msg: ACK sent"
|
||||
S" MSG-ACK-LAST" S" Hermes" VM-EXEC ;
|
||||
: HERMES-NACK ( -- )
|
||||
LOG-DEBUG" msg: NACK sent"
|
||||
S" MSG-NACK-LAST" S" Hermes" VM-EXEC ;
|
||||
@@ -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
|
||||
@@ -0,0 +1,22 @@
|
||||
Block 4986
|
||||
( Hestia -- WELCOME. Third Tripod leg (Hera/Artemis/Hestia, )
|
||||
( FABRIC-3.5.md SII/SIV), bind point + drawing fabric owner. )
|
||||
: WELCOME ( -- ) LOG-INFO" Hestia: loaded" ;
|
||||
WELCOME
|
||||
Block 4988
|
||||
( fabric.4th/font.4th moved here from init.4th (Hera) -- )
|
||||
( FABRIC-3.6.md tasks 1.6/1.7, merged into one commit: they )
|
||||
( are not independent -- font.4th's G-LINE/G-ELLIPSE calls )
|
||||
( are fabric.4th's own words, so moving one without the )
|
||||
( other breaks whichever VM keeps only half the pair. Order )
|
||||
( preserved: fabric.4th before font.4th, same as init.4th's )
|
||||
( own load order before this move. )
|
||||
S" fabric.4th" EXEC
|
||||
S" font.4th" EXEC
|
||||
Block 4987
|
||||
( 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
|
||||
LOG-INFO" Hestia: ready"
|
||||
STARTUP-BANNER
|
||||
+2
-5
@@ -17,11 +17,8 @@ S" ACL.4th" EXEC
|
||||
S" block-acl.4th" EXEC
|
||||
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
|
||||
( 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
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
Block 4300
|
||||
( process.4th — lifecycle phase operators )
|
||||
( Event codes must match hermes/init.4th )
|
||||
1 CONSTANT SPAWN-EVENT
|
||||
2 CONSTANT PAUSE-EVENT
|
||||
3 CONSTANT RESUME-EVENT
|
||||
4 CONSTANT KILL-EVENT
|
||||
( SPAWN: birth VM, notify Hermes )
|
||||
: SPAWN ( c-addr u -- )
|
||||
BIRTH
|
||||
LOG-INFO" process: spawned"
|
||||
S" 1 EVENT-EMIT" S" Hermes" VM-EXEC ;
|
||||
( PAUSE: notify Hermes, send STOP to the named VM )
|
||||
: PAUSE ( c-addr u -- )
|
||||
S" 2 EVENT-EMIT" S" Hermes" VM-EXEC
|
||||
S" STOP" 2SWAP VM-EXEC ;
|
||||
Block 4301
|
||||
( Lifecycle operators: resume, kill, phase )
|
||||
( RESUME: notify Hermes, START the named VM )
|
||||
: RESUME ( c-addr u -- )
|
||||
S" 3 EVENT-EMIT" S" Hermes" VM-EXEC
|
||||
LOG-INFO" process: resumed"
|
||||
START ;
|
||||
( KILL-VM: notify Hermes, then kill VM )
|
||||
: KILL-VM ( c-addr u -- )
|
||||
S" 4 EVENT-EMIT" S" Hermes" VM-EXEC
|
||||
LOG-INFO" process: killed"
|
||||
KILL ;
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -7,34 +7,70 @@ longer exists here — see `.claude/CLAUDE.md`'s "On the branch topology" note)
|
||||
|
||||
---
|
||||
|
||||
## Release Versioning Policy (decided 2026-08-28)
|
||||
## Release Versioning Policy (ratified 2026-09-19, FABRIC-3.5.md §XXX — supersedes the
|
||||
2026-08-28 policy below)
|
||||
|
||||
This is the standing release-versioning policy for LithosAnanke. It is authoritative; the
|
||||
FABRIC documents track implementation against it, and any permanent change to the policy
|
||||
belongs here.
|
||||
|
||||
- **`X.0.0` — QEMU release.** A whole-number minor in the `X.0` position is the QEMU-only
|
||||
release: the point where the three-architecture (amd64/aarch64/riscv64) story under QEMU
|
||||
is complete and defensible on its own terms. Nothing real-hardware-only is required to cut
|
||||
an `X.0.0`.
|
||||
- **`X.5.0` — Hardware bare-metal release.** A `X.5` release is the real-hardware release:
|
||||
the point where the same story transfers to bare metal on real boards (SER5, RasPi 6,
|
||||
Milk-V, Zynq FPGA). Real-hardware-only work — the per-arch RNG drivers behind the unified
|
||||
entropy entry point, and real-board boot validation — gates `X.5.0`, not `X.0.0`.
|
||||
- **Even major numbers are LTS.** A release whose major number (`X`) is even is a
|
||||
Long-Term-Support release — maintained and supported long-term (bug fixes, security,
|
||||
backports) rather than a point-in-time cut. Odd major numbers are non-LTS development
|
||||
lines.
|
||||
**Superseded 2026-09-19.** The original 2026-08-28 policy (`X.0.0` = QEMU release, `X.5.0` =
|
||||
hardware bare-metal release, **even** major = LTS) used the minor field to carry a milestone
|
||||
meaning and had the LTS parity backwards relative to the ratified policy below. It is kept
|
||||
struck through immediately after this note for historical traceability, not as current rule.
|
||||
|
||||
Applied to the two planned releases: the **v2.0.0** cut (even major, so LTS) is the QEMU
|
||||
release; **v2.5.0** is the hardware bare-metal release that transfers v2.0.0's QEMU story to
|
||||
real boards. See `FABRIC-2.md` §G for the release-gate punch lists.
|
||||
- **Major: ODD = LTS line** (non-breaking fixes only — backports, never redesigns). **EVEN =
|
||||
working line** (breaking changes land here). The line you are on tells you whether breakage
|
||||
is possible at all — not the major number's parity signaling "supported vs. not" the way the
|
||||
retired policy read it.
|
||||
- **Minor** — release within that line. No longer carries a milestone meaning (`X.5.0` no
|
||||
longer means anything special) — milestones are roadmap entries now, not arithmetic.
|
||||
- **Patch** — working builds within a release.
|
||||
- **`LITHOS_VERSION` (kernel) and `VERSION` (embedded StarForth engine) are independent and do
|
||||
not auto-sync** — do not infer a relationship if they ever coincide.
|
||||
- **Engine `VERSION` bumps at tag time by what actually changed:** major = any
|
||||
FORTH-79-visible word semantics change; minor = words added/removed/relocated; patch =
|
||||
build-only, no dictionary-visible change.
|
||||
|
||||
```
|
||||
v1.0.x — serial-only production (released, historical encoding)
|
||||
v1.5.x — framebuffer VT100 console milestone (released, historical encoding)
|
||||
v2.0.0 — QEMU release: three-arch QEMU story complete (released)
|
||||
v2.0.1 — SER5 hardware-track line (historical; superseded by this policy)
|
||||
v2.1.0 — Tripod/kernel reshuffle: Hermes into the kernel, Tripod = Hera/Artemis/Hestia
|
||||
v2.2.0 — amd64 bare-metal bring-up (Beelink SER5)
|
||||
v2.x — further working releases; riscv64 / aarch64 board bring-up
|
||||
v3.0.0 — FIRST LTS, when and only when all 5 criteria below are met
|
||||
```
|
||||
|
||||
**LTS criteria (a tag may take an odd major only when all five hold):** real-hardware boot
|
||||
demonstrated on at least the amd64 reference board, logs committed as audit artifacts; no
|
||||
known-reproducible silent-failure defect open; ACL Phase 8 closed (or explicitly scoped out in
|
||||
writing); the `proof/` boundary restated and not contracted relative to the prior LTS; a soak —
|
||||
architecture unchanged for at least one full release cycle. The first tag meeting all five
|
||||
takes the odd major — no judgement call.
|
||||
|
||||
See `FABRIC-3.5.md` §XXX for the full ratified policy text and reasoning, and `FABRIC-2.md` §G
|
||||
for the release-gate punch lists this ladder replaced the arithmetic reading of.
|
||||
|
||||
<details>
|
||||
<summary>Historical: the retired 2026-08-28 policy (kept for traceability only)</summary>
|
||||
|
||||
- ~~`X.0.0` — QEMU release. A whole-number minor in the `X.0` position is the QEMU-only
|
||||
release: the point where the three-architecture (amd64/aarch64/riscv64) story under QEMU
|
||||
is complete and defensible on its own terms.~~
|
||||
- ~~`X.5.0` — Hardware bare-metal release. Real-hardware-only work gates `X.5.0`, not
|
||||
`X.0.0`.~~
|
||||
- ~~Even major numbers are LTS.~~ **Wrong — the ratified policy is odd = LTS.**
|
||||
|
||||
</details>
|
||||
|
||||
**Board-by-board hardware rollout, decided 2026-08-29 (extends the above as boards come
|
||||
online).** Real silicon is arriving incrementally (Beelink SER5 in hand now; RasPi 5 + Milk-V
|
||||
orderable around Mon 2026-08-31), so the hardware release is split per real board in hand,
|
||||
each its own even-minor cut on the same line (each `X.Y.0` here is an LTS point-in-time cut,
|
||||
not a separate dev line):
|
||||
online; corrected 2026-09-22 for the ratified §XXX policy — these are working-line minor
|
||||
releases, not LTS cuts, since v2.x is the even/working line).** Real silicon is arriving
|
||||
incrementally (Beelink SER5 in hand now; RasPi 5 + Milk-V orderable around Mon 2026-08-31), so
|
||||
the hardware release is split per real board in hand, each its own minor cut on the v2.x
|
||||
working line (v2.1.0, the Tripod/kernel reshuffle, landed first — see the ladder above):
|
||||
|
||||
- **v2.2.0 — amd64 bare metal.** Beelink SER5 (in hand). Gate: the generic GPT/FAT32
|
||||
thumbdrive image (`make -f Makefile.starkernel ARCH=amd64 thumbdrive`) flashes to and boots
|
||||
|
||||
@@ -137,16 +137,22 @@ before building) rather than wiring it into `doe.4th`.
|
||||
## `.4th` File Structure
|
||||
|
||||
Every `.4th` file must follow StarForth's block format. The block system
|
||||
maps source text to 1024-byte logical blocks; the `Block NNNN` header tells
|
||||
the loader which block slot to fill.
|
||||
maps source text to logical blocks; the `Block NNNN` header tells the loader
|
||||
which block slot to fill.
|
||||
|
||||
**Mandatory rules:**
|
||||
|
||||
1. The first line of each logical block must be `Block NNNN` (capital B,
|
||||
single space, decimal integer).
|
||||
2. Block numbers must be unique within a single capsule file.
|
||||
2. Block numbers must be unique within a single capsule file, and must fall
|
||||
in `[2048, 5120)`.
|
||||
3. Blocks are loaded in file order and executed top-to-bottom.
|
||||
4. Each block can hold up to 1024 bytes of source text.
|
||||
4. Each block can hold at most 16 content lines, each at most 64 characters
|
||||
long (`validate_forth_blocks` in `tools/mkcapsule.c`, corrected 2026-09-19
|
||||
against the tool itself — **not** a 1024-byte budget: 8 lines of 128
|
||||
characters is 1024 bytes and still fails, since the limit is enforced
|
||||
per-line and per-line-count, not as a total byte count). Verify with
|
||||
`mkcapsule --lint capsules/`, not `wc -c`.
|
||||
5. Comments use `( ... )` — parentheses with spaces inside.
|
||||
6. Word definitions use `: NAME ... ;` — standard FORTH-79.
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user