Compare commits
48
Commits
58c59e87e5
...
v2.0.1
+4
-4
@@ -5,11 +5,11 @@
|
||||
---
|
||||
|
||||
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative.
|
||||
> `FABRIC.md`/`FABRIC-2.md` (repo root — read `FABRIC-2.md` first, it is the current/living
|
||||
> `FABRIC-0.md`/`FABRIC-1.md` (repo root — read `FABRIC-1.md` first, it is the current/living
|
||||
> one) are the sole design-of-record for Artemis work now. Kept here as historical record
|
||||
> only; do not read this for current design authority, and do not cite it in place of
|
||||
> `FABRIC.md`/`FABRIC-2.md`. Artemis becoming the pre-Artemis-closeout blocker (item 4.6) is
|
||||
> tracked in `FABRIC-2.md`, not here. See `.claude/CLAUDE.md`'s own pointer.
|
||||
> `FABRIC-0.md`/`FABRIC-1.md`. Artemis becoming the pre-Artemis-closeout blocker (item 4.6) is
|
||||
> tracked in `FABRIC-1.md`, not here. See `.claude/CLAUDE.md`'s own pointer.
|
||||
|
||||
---
|
||||
|
||||
@@ -148,7 +148,7 @@ for this scope. `capsules/artemis/init.4th` implements the full flat-pool
|
||||
target above.
|
||||
|
||||
**Corrected 2026-08-13 — the "boots live in the Tripod fleet... on every
|
||||
kernel boot" claim below is stale since item 0.1 (`FABRIC.md` Phase 0),
|
||||
kernel boot" claim below is stale since item 0.1 (`FABRIC-0.md` Phase 0),
|
||||
same pattern already found and fixed in `TRIPOD.md`.** Two distinct things
|
||||
were being conflated: Artemis's block-storage *device* (the virtio-blk
|
||||
disk, `disk/artemis.img`) genuinely does auto-attach at the C level at
|
||||
|
||||
+9
-8
@@ -10,12 +10,13 @@ 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.md` and `FABRIC-2.md` (both design history/archival as of 2026-08-25) and
|
||||
> `FABRIC-3.md` (current/living, 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.md`/`FABRIC-2.md`/`FABRIC-3.md`.
|
||||
> `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`.
|
||||
|
||||
> **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
|
||||
@@ -133,14 +134,14 @@ The word-level ACL system is fully implemented, including kernel parity. Key con
|
||||
- Measured overhead: +0.0054%–+0.0088% across all 9 cells; CV = 0.000%
|
||||
- Report confirmed to exist: `experiments/bare_metal/analysis/report/bare_metal_doe_report.pdf`
|
||||
(~2MB, with LaTeX source and figures) — patent support material
|
||||
- **Correction (found 2026-08-20/21, `FABRIC-2.md` §§M–T):** the "ACL-RWT" name itself was
|
||||
- **Correction (found 2026-08-20/21, `FABRIC-1.md` §§M–T):** the "ACL-RWT" name itself was
|
||||
wrong — the Rolling-Window-of-Truth mechanism it was named after was dead code, removed
|
||||
2026-07-08 (`ACL-RECHECK-RW` was never reachable — `acl_recheck()` only ever looks up the
|
||||
11-char `ACL-RECHECK`, never the 14-char `-RW` variant). What this campaign actually
|
||||
measured was the live `ACL-TTL` mechanism under a misleading name, and at `-O0`, before
|
||||
real compiler optimization landed. The corrected, current figure — same live mechanism,
|
||||
correct name, re-run on the current substrate — is **+0.0603% ACL-TTL enforcement overhead,
|
||||
architecture-independent, CV=0.000%** (`FABRIC-2.md` §T, memory
|
||||
architecture-independent, CV=0.000%** (`FABRIC-1.md` §T, memory
|
||||
`project_acl_ttl_overhead_final.md`). Use that number, not the one above.
|
||||
|
||||
**Before writing or modifying any `.4th` capsule file**, read `experiments/bare_metal/README.md`
|
||||
|
||||
+3
-3
@@ -20,11 +20,11 @@
|
||||
|
||||
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative, and its
|
||||
> core premise below ("Console is a 4th Tripod VM, Quadrupod, StarForth-dialect-only") was
|
||||
> architecturally reversed by a later, decided ruling: `FABRIC.md` §17.5 — the framebuffer is
|
||||
> architecturally reversed by a later, decided ruling: `FABRIC-0.md` §17.5 — the framebuffer is
|
||||
> a **utility**, not a patron, not a VM. What actually shipped is direct C
|
||||
> (`src/starkernel/hal/console.c`/`vt100.c`/`framebuffer.c` plus keyboard drivers), called
|
||||
> straight from the kernel, no Hera-spawned Console VM anywhere. `FABRIC.md`/`FABRIC-2.md`
|
||||
> (repo root — read `FABRIC-2.md` first) are the sole design-of-record for Console/framebuffer
|
||||
> straight from the kernel, no Hera-spawned Console VM anywhere. `FABRIC-0.md`/`FABRIC-1.md`
|
||||
> (repo root — read `FABRIC-1.md` first) are the sole design-of-record for Console/framebuffer
|
||||
> work now. Kept here as historical record only. See `.claude/CLAUDE.md`'s own pointer.
|
||||
|
||||
---
|
||||
|
||||
+2
-2
@@ -5,10 +5,10 @@
|
||||
---
|
||||
|
||||
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative.
|
||||
> `FABRIC.md`/`FABRIC-2.md` (repo root — read `FABRIC-2.md` first, it is the current/living
|
||||
> `FABRIC-0.md`/`FABRIC-1.md` (repo root — read `FABRIC-1.md` first, it is the current/living
|
||||
> one) are the sole design-of-record for Hermes work now. Kept here as historical record
|
||||
> only — note its message-layout table (8 cells) is confirmed stale against the real shipped
|
||||
> capsule (9 cells, `capsules/hermes/init.4th`), see `FABRIC-2.md`. Do not read this for
|
||||
> capsule (9 cells, `capsules/hermes/init.4th`), see `FABRIC-1.md`. Do not read this for
|
||||
> current design authority. See `.claude/CLAUDE.md`'s own pointer.
|
||||
|
||||
---
|
||||
|
||||
+4
-4
@@ -5,10 +5,10 @@
|
||||
---
|
||||
|
||||
> **SUPERSEDED (Captain Bob, 2026-08-15).** This document is no longer authoritative.
|
||||
> `FABRIC.md`/`FABRIC-2.md` (repo root — read `FABRIC-2.md` first, it is the current/living
|
||||
> `FABRIC-0.md`/`FABRIC-1.md` (repo root — read `FABRIC-1.md` first, it is the current/living
|
||||
> one) are the sole design-of-record for Tripod work now. Kept here as historical record
|
||||
> only; do not read this for current design authority, and do not cite it in place of
|
||||
> `FABRIC.md`/`FABRIC-2.md`. See `.claude/CLAUDE.md`'s own pointer.
|
||||
> `FABRIC-0.md`/`FABRIC-1.md`. See `.claude/CLAUDE.md`'s own pointer.
|
||||
|
||||
---
|
||||
|
||||
@@ -35,8 +35,8 @@ or work execution logic in Hera — stop. You have the wrong VM.
|
||||
|
||||
## The Immediate Goal
|
||||
|
||||
**Corrected 2026-08-13 — stale since item 0.1 (`FABRIC.md` Phase 0), flagged in
|
||||
`FABRIC-2.md` §A item 5.3, never fixed until now.** This section used to say Hera spawns
|
||||
**Corrected 2026-08-13 — stale since item 0.1 (`FABRIC-0.md` Phase 0), flagged in
|
||||
`FABRIC-1.md` §A item 5.3, never fixed until now.** This section used to say Hera spawns
|
||||
Hermes and Artemis automatically at boot. She does not, by deliberate design: item 0.1
|
||||
pruned `capsules/init.4th` to boot Hera alone (confirmed current —
|
||||
`capsules/init.4th` births no other VM). Hermes and Artemis-as-VM-patron births happen
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ corrected to the valid SMC32 encoding (`0x84000009`).
|
||||
Full three-arch DoE campaign (`L8-DOE`, 48 trials each) re-run clean on all
|
||||
three architectures post-fix: stress campaigns 30/30 PASS, clean `BYE` exit,
|
||||
no exceptions. Full investigation trail, evidence, and dead ends in
|
||||
`FABRIC-2.md` Sections H and I.
|
||||
`FABRIC-1.md` Sections H and I.
|
||||
|
||||
## 2026-07-24 — Kernel 3-arch acceptance test re-run; amd64 dict_hash non-determinism root-caused (`lithosananke`)
|
||||
|
||||
|
||||
+17
-17
@@ -1,8 +1,8 @@
|
||||
# FABRIC.md — the Stadium
|
||||
# FABRIC-0.md — the Stadium
|
||||
|
||||
**Status: CLOSED, 2026-08-12.** This document is archival. It is not edited further and no
|
||||
new work is added to it — everything still open as of the closure date was carried forward
|
||||
into **`FABRIC-2.md`**, which is now the living document. Read `FABRIC-2.md` first for
|
||||
into **`FABRIC-1.md`**, which is now the living document. Read `FABRIC-1.md` first for
|
||||
current status; come back here only for the historical design argument and decision record
|
||||
behind it.
|
||||
|
||||
@@ -20,7 +20,7 @@ places were found where something had actually been resolved by later work but t
|
||||
document's own note was never updated (§19.6 #3, §21.5 #4, the §25.7 `stadium_owner[idx]`
|
||||
bullet, and item 4.5's own parent checkbox) — those four are fixed in place below, since
|
||||
they were bookkeeping errors, not open work. Everything else genuinely still open is in
|
||||
`FABRIC-2.md`.
|
||||
`FABRIC-1.md`.
|
||||
|
||||
**How to read what remains.** §1–15 are the original design argument, written before any
|
||||
code was examined. §16 onward are findings and decisions made against the actual tree, in
|
||||
@@ -35,7 +35,7 @@ quotes that reproduce an earlier section verbatim, and in §12's preserved quest
|
||||
which several sections quote.
|
||||
|
||||
**On `docs/lithosananke/ROADMAP.md`.** As of 2026-08-11, Captain Bob stated this document
|
||||
superseded ROADMAP.md entirely. That still holds, transitively, through `FABRIC-2.md` now.
|
||||
superseded ROADMAP.md entirely. That still holds, transitively, through `FABRIC-1.md` now.
|
||||
|
||||
---
|
||||
|
||||
@@ -375,7 +375,7 @@ Ten minutes on paper. It confirmed the design and caught one case, which is what
|
||||
|
||||
## 10. Sequencing
|
||||
|
||||
**FABRIC.md first, then Hermes native on the fabric, then measure, then Console, then
|
||||
**FABRIC-0.md first, then Hermes native on the fabric, then measure, then Console, then
|
||||
Artemis last.**
|
||||
|
||||
> **Amended by §16.5 and §21.2.** This ordering is still right for the *subsystems*, but it
|
||||
@@ -419,7 +419,7 @@ re-running it. Automated, but budget for it.
|
||||
This is why the admission test comes before code.
|
||||
|
||||
**Early signal:** ARTEMIS.md, HERMES.md, CONSOLE.md and TRIPOD.md each currently describe
|
||||
their own heat mechanics. After FABRIC.md, each should shrink to roughly three lines —
|
||||
their own heat mechanics. After FABRIC-0.md, each should shrink to roughly three lines —
|
||||
what an entry is here, what heat means, what the reap event is. If any one of them gets
|
||||
*longer*, that subsystem is fighting the fabric, and you will know which one before
|
||||
writing code.
|
||||
@@ -1562,7 +1562,7 @@ noun was overloaded.
|
||||
2.1** — `vm_physics_touch()` was restated on the virtual tick (no `now_ns` parameter at
|
||||
all), closing exactly the gap this point raised. This item's own cross-reference (*Refs:*
|
||||
§19.6 #3) points back here; this note closes the loop the other direction. Never annotated
|
||||
here at the time (found during the 2026-08-12 FABRIC-2.md audit).
|
||||
here at the time (found during the 2026-08-12 FABRIC-1.md audit).
|
||||
|
||||
---
|
||||
|
||||
@@ -1623,13 +1623,13 @@ There is no renormalisation anywhere. `vm_physics_conserved()` tests a genuine i
|
||||
dropped. **The "guarded, shouldn't happen" description was only half right** — the
|
||||
Hera-is-root case was reachable via `S" Hera" KILL` (`mama_word_kill()` called
|
||||
`vm_physics_retire()` before `capsule_vm_kill()`'s own Hera guard ran), fixed 2026-08-13
|
||||
(`FABRIC-2.md` §C). The broken-parent-chain case remains genuinely unreachable
|
||||
(`FABRIC-1.md` §C). The broken-parent-chain case remains genuinely unreachable
|
||||
(`parent_vm_id` is set once at birth, never rewritten) and is not tracked further.
|
||||
2. ~~**Truncation** (`:304-305`). The proportional fan-out computes
|
||||
`(moved_total * heat) / others_total` per VM in integer arithmetic. The shares sum to
|
||||
*less than* `moved_total`. **Every multi-VM touch loses a little heat**, so the sum drifts
|
||||
downward monotonically. `VM_PHYSICS_EPSILON_Q48` is 3277 — 5% of `Q48_ONE` — so given
|
||||
enough touches this would eventually trip.~~ **WRONG, corrected 2026-08-13** (`FABRIC-2.md`
|
||||
enough touches this would eventually trip.~~ **WRONG, corrected 2026-08-13** (`FABRIC-1.md`
|
||||
§B "Fleet heat leak," investigated when item 4.2 made this measurable) — the truncated
|
||||
`share` is what actually moves on *both* sides of `vm_physics_transfer()`, so the fleet
|
||||
sum cannot drift from this path; only path 1 above can. Left standing here per this
|
||||
@@ -1655,7 +1655,7 @@ conservation law the project makes claims about. It is small per touch and may b
|
||||
tolerable, but it is monotonic, and nobody has measured how far it drifts over a long run.~~
|
||||
**WRONG, corrected 2026-08-13** — see the strikethrough correction on path 2 above. Path 1
|
||||
(the dying-VM-is-root/broken-chain drop) is the only live defect; it is tracked in
|
||||
`FABRIC-2.md` §C, not here, per this document's closure.
|
||||
`FABRIC-1.md` §C, not here, per this document's closure.
|
||||
|
||||
### 20.3 Nesting — §12 Q6 is less open than it looks
|
||||
|
||||
@@ -1898,7 +1898,7 @@ level it was born on.
|
||||
4. ~~**§20.5 #4 remains open.**~~ **RESOLVED by item 1.7 (§25.2), 2026-08-04** — this
|
||||
section (§21.5) was written before that ruling and never updated to point to it. Bounded
|
||||
by a Kconfig-tunable cap, default 2, enforced at VM-birth time. See §20.5 #4 for the full
|
||||
resolution. Stale cross-reference, not new work (found during the 2026-08-12 FABRIC-2.md
|
||||
resolution. Stale cross-reference, not new work (found during the 2026-08-12 FABRIC-1.md
|
||||
audit).
|
||||
|
||||
---
|
||||
@@ -3672,7 +3672,7 @@ document and committing that amendment as its own item.*
|
||||
> - Self-test scaffolding (`kernel_main.c`, diagnostic-only, not production code):
|
||||
> +119 / −0, 1 file.
|
||||
> - **Total: 12 implementation files, +759 / −120 (879 lines changed).**
|
||||
> - **File count:** 12 implementation files (13 including this write-up in `FABRIC.md`
|
||||
> - **File count:** 12 implementation files (13 including this write-up in `FABRIC-0.md`
|
||||
> itself).
|
||||
- [ ] **4.3 — Console.** Settles 1.11 as part of the work. *Refs:* §17.5.
|
||||
|
||||
@@ -5109,7 +5109,7 @@ document and committing that amendment as its own item.*
|
||||
- [x] **4.4c — Wire `console_fb_init()` into the boot path.** Found while verifying 4.4d
|
||||
(below) by screendump — not a bug in 4.4a/4.4b, a pre-existing, deliberate gap.
|
||||
`kernel_main.c:830-834` has an explicit comment: *"console.c / vt100.c are superseded by
|
||||
the Console drawing-fabric redesign (FABRIC.md §27) and are deliberately not invoked
|
||||
the Console drawing-fabric redesign (FABRIC-0.md §27) and are deliberately not invoked
|
||||
here... `fb_init()` wires the raw GOP framebuffer directly... nothing else touches it."*
|
||||
Only raw `fb_init()` runs; `console_fb_init()` (which calls `vt100_init()`) is never
|
||||
called anywhere in the boot sequence. Consequence, confirmed by screendump: `vt100_putc()`
|
||||
@@ -6261,11 +6261,11 @@ document and committing that amendment as its own item.*
|
||||
|
||||
> **Parent closed 2026-08-12.** All six sub-items (4.5a–4.5f) below are `[x]` done; 4.5f's
|
||||
> own done-when is satisfied by 4.4g's real landing, not a separate pass. This checkbox was
|
||||
> never flipped at the time — pure bookkeeping, not new work (found during the FABRIC-2.md
|
||||
> never flipped at the time — pure bookkeeping, not new work (found during the FABRIC-1.md
|
||||
> audit). One real loose end surfaced by 4.5f's own text, not closed by any of this: the
|
||||
> ACL-RWT DoE campaign's overhead numbers (CLAUDE.md, "+0.0054%–+0.0088%") were all measured
|
||||
> at `-O0`, before this item enabled real optimization — nobody has re-measured or even
|
||||
> asked whether they're still comparable. Carried forward to FABRIC-2.md.
|
||||
> asked whether they're still comparable. Carried forward to FABRIC-1.md.
|
||||
|
||||
- [x] **4.5a — Full ISR/interrupt-context global-state audit, all three architectures.**
|
||||
Investigation only, no code change. For each architecture, enumerate every vector actually
|
||||
@@ -6797,7 +6797,7 @@ so.*
|
||||
folded into item 4.2's scope by explicit Captain Bob ruling**, fixed and verified: a
|
||||
resident cell's evict-credit lands in the correct VM's reservoir with two VMs holding
|
||||
quotas (Hera + Hermes), not just asserted from reading the code. This bullet was never
|
||||
struck through at the time; stale, not new work (found during the 2026-08-12 FABRIC-2.md
|
||||
struck through at the time; stale, not new work (found during the 2026-08-12 FABRIC-1.md
|
||||
audit). See item 4.2's *Done when* list and its 2026-08-05 addendum.
|
||||
- **Taxonomy and lexicon.** Raised by Captain Bob 2026-08-04, mid-item-3.1. This document's
|
||||
physics-flavored vocabulary (heat, mass, density, patron, Stadium, and the rest) needs a
|
||||
@@ -6805,7 +6805,7 @@ so.*
|
||||
covers the growing set of Kconfig build knobs (`STADIUM_MAX_VM_COUNT` and its siblings) so
|
||||
the terminology in code, Kconfig help text, and this document stays one language instead
|
||||
of drifting apart. Not scoped, not placed in a phase. Captain Bob: "I guess that we didn't
|
||||
finish out FABRIC.md quite as much as we thought."
|
||||
finish out FABRIC-0.md quite as much as we thought."
|
||||
|
||||
### 25.7.1 Second review pass — 2026-08-03, pre-coding. Awaiting rulings.
|
||||
|
||||
+4420
File diff suppressed because it is too large
Load Diff
+4580
-4360
File diff suppressed because it is too large
Load Diff
+72
-3523
File diff suppressed because it is too large
Load Diff
+75
@@ -0,0 +1,75 @@
|
||||
# FABRIC-4.md — forward-looking design notes
|
||||
|
||||
**Status:** Not a successor to `FABRIC-3.md` and not a punch-list document. `FABRIC-3.md` is
|
||||
the current living document (bare metal boot, opened 2026-09-04, successor to the now-closed
|
||||
`FABRIC-2.md`) — nothing here supersedes it, and this file doesn't follow the
|
||||
close-and-carry-forward discipline `FABRIC-0.md` → `FABRIC-1.md` → `FABRIC-2.md` → `FABRIC-3.md`
|
||||
used (that chain triggers on *closing* a document; `FABRIC-3.md` isn't closed). This is a
|
||||
separate, lower-discipline scratchpad for design ideas caught early — theory-stage,
|
||||
pre-punch-list, often missing a stated "why" on purpose (captured as raised, not fully
|
||||
justified yet). An idea graduates out of here into `FABRIC-3.md` (or wherever the living
|
||||
document is by then) once it has a real scope, not before.
|
||||
|
||||
---
|
||||
|
||||
## 1. Stadium-level "wheel" — a second clock alongside the heartbeat (2026-09-03)
|
||||
|
||||
Raised in conversation with Captain Bob, theory stage — no code, no scope, deliberately not
|
||||
punch-listed yet.
|
||||
|
||||
**The mechanism.** A second clock, independent of but derived from the true heartbeat
|
||||
(`HeartbeatState`, Loop #7), advanced by a fixed-point (Q48.16, this project's standard)
|
||||
phase accumulator: each master heartbeat tick adds a `rate` scalar to the wheel's own
|
||||
`phase`; whenever `phase` crosses `1.0` the wheel fires (advances its own state) and the
|
||||
crossing remainder carries forward. This is a continuous scalar, not an integer tick-divisor
|
||||
— `rate` can sit anywhere, including above `1.0`. A wheel with `rate > 1` fires more than
|
||||
once per master tick (multiple threshold-crossings per tick, remainder still carried); one
|
||||
with `rate < 1` accumulates across several master ticks before firing once. Nothing about the
|
||||
mechanism privileges either side of `1.0` — "runs ahead of baseline" and "runs stretched
|
||||
behind baseline" are the same math with a different scalar.
|
||||
|
||||
**What feeds it.** Not a new signal source — this wheel listens to two already-real, already-
|
||||
built mechanisms: `rolling_window_of_truth.c` (Loop #2's circular-buffer execution history —
|
||||
`rolling_window_measure_diversity()`, `rolling_window_find_hottest_word()`,
|
||||
`rolling_window_count_transition()`, `rolling_window_pattern_capture_rate()`,
|
||||
`rolling_window_is_warm()`) and `inference_engine.c` (Loops #5/#6 — `InferenceOutputs`:
|
||||
decay-slope, variance-inflection point, fit quality). Both exist today at the **per-VM**
|
||||
level (each patron/word-owning VM has its own rolling window and runs its own inference
|
||||
pass) — the wheel itself is meant to live at the **Stadium** level, one layer up. This is a
|
||||
genuinely new axis: nothing today aggregates RWOT/inference-engine output across the whole
|
||||
Stadium floor into one fleet-wide signal. **Open, not decided:** what the aggregation actually
|
||||
is (sum across patrons? mean? the hottest patron's own values only? something else) — flagged
|
||||
in conversation, not resolved.
|
||||
|
||||
**What it's for.** Not a sieve itself. The wheel is a *scheduler/gate*: it decides *when* to
|
||||
slip an appropriate sieve into a stack of sieves that doesn't exist yet (see §2 below) —
|
||||
running its own clock, potentially ahead of the true heartbeat, is what buys it lead time to
|
||||
notice a transition worth reacting to before the baseline heartbeat would get there on its
|
||||
own. It is not itself the thing doing the sieving.
|
||||
|
||||
**Build sequencing, decided in conversation.** `rate` starts as a fixed build parameter (same
|
||||
shape as `ACL-BASE-TTL`/`Q.SLOT` — a plain constant or Kconfig symbol, not adaptive from day
|
||||
one). Reasoning, Captain Bob's own: a fixed rate is the only version that can go through this
|
||||
project's existing DoE apparatus and produce a clean, attributable measurement (rate held
|
||||
constant, everything else varies) — if the rate self-tunes from day one there's no fixed
|
||||
baseline to compare "does the wheel actually help" against. Only *after* a real, measured
|
||||
baseline exists does `rate` itself graduate to adaptive/self-tuning — reusing the same
|
||||
inference-engine machinery the wheel already listens to, not new plumbing. This mirrors the
|
||||
L8 Jacquard selector's own real history: hardcoded compudynamics constant first, later
|
||||
replaced by the VM Fleet Attractor's dynamically-inferred rate
|
||||
(`docs/working/architecture/VM-FLEET-ATTRACTOR-DESIGN-20260705.md`). Same graduation, one
|
||||
level up the stack.
|
||||
|
||||
**Explicitly not decided yet, per Captain Bob ("we'll talk about why later"):**
|
||||
- The actual *purpose* — why this wheel, what real problem it solves. Deferred on purpose.
|
||||
- The sieve stack itself — what a "sieve" is concretely, what gets sieved, how many. A larger,
|
||||
separate vision (128–256 wheels, each fed by an "appropriate" — possibly learned/neural,
|
||||
vocabulary not yet resolved against anything this codebase currently has — source, forming
|
||||
a coincidence-pattern sieve) was raised earlier in the same conversation as a *distinct*,
|
||||
further-out idea; this single-wheel scheduler is deliberately scoped smaller and doesn't
|
||||
presuppose that larger picture is right.
|
||||
- Whether "trivial to add a wheel" (an earlier framing) still matters once there's only one —
|
||||
a generic `{rate, phase, state}` table is a premature abstraction for a single instance;
|
||||
build the one wheel concretely first, generalize only if/when a second one is actually
|
||||
needed (this project's own standing convention — three similar lines beat a premature
|
||||
abstraction).
|
||||
+2
-1
@@ -528,7 +528,8 @@ LOADER_EXTRA_SRCS := \
|
||||
$(KERNEL_SRC)/vm/q48_stubs.c \
|
||||
$(KERNEL_SRC)/vm/stadium.c \
|
||||
$(KERNEL_SRC)/vm/stadium_words.c \
|
||||
$(KERNEL_SRC)/vm/stadium_blocks.c
|
||||
$(KERNEL_SRC)/vm/stadium_blocks.c \
|
||||
$(KERNEL_SRC)/vm/session.c
|
||||
|
||||
KERNEL_EXTRA_SRCS := $(LOADER_EXTRA_SRCS)
|
||||
|
||||
|
||||
+31
-31
@@ -513,9 +513,9 @@ Slide 2: "Formally: f(t) = f₀ * e^(-λt)"
|
||||
**Added 2026-08-13**, closing a real, acknowledged documentation-debt item: the physics
|
||||
vocabulary built on top of the original heat/decay/inference model above (patron, mass,
|
||||
density, Stadium, and the Kconfig knob names built on them) accumulated across
|
||||
`FABRIC.md`/`FABRIC-2.md` without an explicit statement, in one place, that these are named
|
||||
`FABRIC-0.md`/`FABRIC-1.md` without an explicit statement, in one place, that these are named
|
||||
analogies — the same discipline Section III already applies to "heat," extended to the
|
||||
newer terms. Definitions below are drawn directly from `FABRIC.md`'s own DECIDED sections
|
||||
newer terms. Definitions below are drawn directly from `FABRIC-0.md`'s own DECIDED sections
|
||||
(cited inline), not invented here.
|
||||
|
||||
### 9.1 The metaphor, restated for this layer
|
||||
@@ -537,7 +537,7 @@ LITERAL IMPLEMENTATIONS (No Metaphor):
|
||||
K → Σ execution_heat_q48 across live entries, conserved at 1.0
|
||||
```
|
||||
|
||||
The Stadium metaphor is a **venue**, not a building: §2 (`FABRIC.md`) is explicit that a
|
||||
The Stadium metaphor is a **venue**, not a building: §2 (`FABRIC-0.md`) is explicit that a
|
||||
patron *arrives and departs* — the Stadium holds what is live, not everything that exists.
|
||||
That is the load-bearing distinction between "Stadium" and "warehouse" below, and it is why
|
||||
the dictionary-at-rest is warehouse, not Stadium, even though every dictionary entry is
|
||||
@@ -549,29 +549,29 @@ the dictionary-at-rest is warehouse, not Stadium, even though every dictionary e
|
||||
*Definition*: The Stadium's fixed-size unit of storage — a patron header, or a continuation
|
||||
cell owned by exactly one patron.
|
||||
*Formal*: A closed, two-constructor sum type: `Cell = Header | Continuation(owner)`, fixed
|
||||
at build time (`FABRIC.md` §3).
|
||||
*Measurement*: Proposed size 64 bytes (`FABRIC.md` §23.3, **not yet built** — see
|
||||
`FABRIC-2.md`'s §23.4 #2 closure: the one real patron kind actually shipped, Hermes
|
||||
at build time (`FABRIC-0.md` §3).
|
||||
*Measurement*: Proposed size 64 bytes (`FABRIC-0.md` §23.3, **not yet built** — see
|
||||
`FABRIC-1.md`'s §23.4 #2 closure: the one real patron kind actually shipped, Hermes
|
||||
messages, did not adopt this cell shape).
|
||||
*Category*: Storage unit.
|
||||
*Warning*: Not a pointer target — links between cells are Stadium-array indices, never
|
||||
addresses (`FABRIC.md` §3, §13).
|
||||
addresses (`FABRIC-0.md` §3, §13).
|
||||
|
||||
**Code field**
|
||||
*Definition*: A closed-enumeration behaviour tag stored in a patron header, dispatched by
|
||||
the engine rather than branched on by kind.
|
||||
*Formal*: `behaviour ∈ {MIGRATE, DELIVER, EXPIRE, COOL, ...}` — a fixed datatype, not an
|
||||
open extension point (`FABRIC.md` §3, §13, §18.3).
|
||||
open extension point (`FABRIC-0.md` §3, §13, §18.3).
|
||||
*Category*: Dispatch mechanism.
|
||||
*Note*: This is deliberately **the entire type system** — the engine never asks what kind
|
||||
of patron it holds, only what its code field says to do (`FABRIC.md` §3).
|
||||
of patron it holds, only what its code field says to do (`FABRIC-0.md` §3).
|
||||
|
||||
**Density**
|
||||
*Definition*: A patron's heat share divided by its mass — heat per unit of occupied
|
||||
Stadium floor space.
|
||||
*Formal*: `density(p) = heat(p) / mass(p)`, derived, never stored (`FABRIC.md` §19.2).
|
||||
*Formal*: `density(p) = heat(p) / mass(p)`, derived, never stored (`FABRIC-0.md` §19.2).
|
||||
*Measurement*: Used for ranking and admission (denser evicts sparser), not computed by a
|
||||
separate scheduler — it is read, not decided (`FABRIC.md` §19.3).
|
||||
separate scheduler — it is read, not decided (`FABRIC-0.md` §19.3).
|
||||
*Category*: Derived quantity.
|
||||
*Warning*: This is the one place the thermodynamic metaphor is literal in form (quantity
|
||||
per unit volume) even though heat itself remains metaphorical.
|
||||
@@ -581,65 +581,65 @@ per unit volume) even though heat itself remains metaphorical.
|
||||
*Formal*: `K = Σ execution_heat_q48`, held at `Q48_ONE` (1.0) by construction — verified by
|
||||
`vm_physics_conserved()` (`capsule_vm_physics.c`).
|
||||
*Measurement*: A correctness check, not a diagnostic — it is 1.0 by construction and can
|
||||
never itself signal system state (`FABRIC.md` §14, §19.1). Entropy over the heat
|
||||
never itself signal system state (`FABRIC-0.md` §14, §19.1). Entropy over the heat
|
||||
*distribution* is the actual instrument; K is not.
|
||||
*Category*: Invariant.
|
||||
*Warning*: Not an occupancy ratio (`Σmass / capacity`) — that definition was considered and
|
||||
explicitly rejected because it contradicts the already-implemented, tested mechanism
|
||||
(`FABRIC.md` §19.1).
|
||||
(`FABRIC-0.md` §19.1).
|
||||
|
||||
**Mass**
|
||||
*Definition*: The number of Stadium cells a patron occupies — its footprint.
|
||||
*Formal*: Integer ≥ 1, an entry field independent of heat; never enters K
|
||||
(`FABRIC.md` §3, §19.2).
|
||||
(`FABRIC-0.md` §3, §19.2).
|
||||
*Category*: Structural quantity, not conserved.
|
||||
*Note*: A large patron is not "referenced" from the Stadium — it simply occupies more
|
||||
cells. By-reference storage is reserved for things outside the Stadium entirely
|
||||
(`FABRIC.md` §19.3, §23.1).
|
||||
(`FABRIC-0.md` §19.3, §23.1).
|
||||
|
||||
**Mass conservation vs. heat conservation**
|
||||
*Definition*: Two independent invariants that must not be confused. Heat (K) is conserved
|
||||
globally and moved by traffic. Mass is conserved *per patron* during a residency —
|
||||
identity and mass never change as a side effect of use — but is not a fleet-wide summed
|
||||
invariant the way heat is (`FABRIC.md` §24.2).
|
||||
invariant the way heat is (`FABRIC-0.md` §24.2).
|
||||
|
||||
**Patron**
|
||||
*Definition*: A live thing occupying a Stadium cell or linked run of cells — the unit the
|
||||
Stadium actually holds.
|
||||
*Formal*: One structure, no variants, no type field — identified by its code field's
|
||||
behaviour, not by a kind tag (`FABRIC.md` §3, §13).
|
||||
behaviour, not by a kind tag (`FABRIC-0.md` §3, §13).
|
||||
*Measurement*: Nine header wires: identity, heat, TTL, pin, link, code field, mass,
|
||||
payload, contains (`FABRIC.md` §3, with amendments cited in place).
|
||||
payload, contains (`FABRIC-0.md` §3, with amendments cited in place).
|
||||
*Category*: The Stadium's sole occupant type.
|
||||
*Known kinds (as of this writing)*: words (dictionary — fully migrated and live via
|
||||
`stadium_word_dispatch()`, `FABRIC.md` §16.3/§17.7), blocks (Artemis), messages (Hermes — shipped with a
|
||||
**different** shape than this header, see `FABRIC-2.md`'s §23.4 #2 closure), VMs (Tripod,
|
||||
`FABRIC.md` §20), dirty events (console, `FABRIC.md` §17.5). Five kinds, not four — an
|
||||
earlier draft undercounted (`FABRIC.md` §1).
|
||||
`stadium_word_dispatch()`, `FABRIC-0.md` §16.3/§17.7), blocks (Artemis), messages (Hermes — shipped with a
|
||||
**different** shape than this header, see `FABRIC-1.md`'s §23.4 #2 closure), VMs (Tripod,
|
||||
`FABRIC-0.md` §20), dirty events (console, `FABRIC-0.md` §17.5). Five kinds, not four — an
|
||||
earlier draft undercounted (`FABRIC-0.md` §1).
|
||||
|
||||
**Reap**
|
||||
*Definition*: The event that ends a patron's residency — not destruction, a return of its
|
||||
cells and remaining heat to the pool.
|
||||
*Formal*: Consumed on delivery (messages), on redraw (dirty events), on cooling below floor
|
||||
(VMs), or on eviction by a denser newcomer (`FABRIC.md` §17.2, §17.5, §19.3).
|
||||
(VMs), or on eviction by a denser newcomer (`FABRIC-0.md` §17.2, §17.5, §19.3).
|
||||
*Category*: Lifecycle event.
|
||||
|
||||
**Stadium**
|
||||
*Definition*: A single, bounded region of memory outside any VM, holding everything
|
||||
currently live.
|
||||
*Formal*: A fixed-size array of cells, index-linked (not pointer-linked), allocated at
|
||||
boot before any VM exists, not part of the heap (`FABRIC.md` §2, §17.6).
|
||||
boot before any VM exists, not part of the heap (`FABRIC-0.md` §2, §17.6).
|
||||
*Measurement*: Per-VM quota over a single global cell pool, elastic under pressure,
|
||||
arbitrated by Hera (`FABRIC.md` §22) — not per-VM physical regions.
|
||||
arbitrated by Hera (`FABRIC-0.md` §22) — not per-VM physical regions.
|
||||
*Category*: The bounded live-state substrate this whole vocabulary describes.
|
||||
*Warning*: "Live" is the operative word — the Stadium holds what is live, not everything
|
||||
that exists. A dictionary word sitting cold and unexecuted is warehouse, not Stadium, even
|
||||
once the dictionary itself migrates into this representation (`FABRIC.md` §2, §16.3).
|
||||
once the dictionary itself migrates into this representation (`FABRIC-0.md` §2, §16.3).
|
||||
|
||||
**Warehouse**
|
||||
*Definition*: What lies beneath the Stadium — storage for things not currently live.
|
||||
*Formal*: Artemis (block storage) and the resting dictionary are warehouse; the Stadium is
|
||||
the floor above it (`FABRIC.md` §17.5's three-category taxonomy: warehouse / Stadium /
|
||||
the floor above it (`FABRIC-0.md` §17.5's three-category taxonomy: warehouse / Stadium /
|
||||
utility).
|
||||
*Category*: Storage layer, outside the engine's live-state model.
|
||||
|
||||
@@ -647,7 +647,7 @@ utility).
|
||||
*Definition*: External infrastructure the Stadium consumes but never contains — beside the
|
||||
building, not inside or beneath it.
|
||||
*Formal*: The framebuffer and devices generally; the engine never learns about a utility's
|
||||
existence, which is what makes it a boundary rather than an exception (`FABRIC.md` §17.5).
|
||||
existence, which is what makes it a boundary rather than an exception (`FABRIC-0.md` §17.5).
|
||||
*Category*: Third taxonomy category, coordinate with warehouse and Stadium, not a
|
||||
sub-case of either.
|
||||
|
||||
@@ -655,7 +655,7 @@ sub-case of either.
|
||||
|
||||
Per Bob's own flag: code, Kconfig, and documentation terminology must not drift apart.
|
||||
The table below is the current, verified wiring status of every `STADIUM_*` Kconfig
|
||||
symbol — confirmed by direct source grep during the `FABRIC-2.md` closure work this
|
||||
symbol — confirmed by direct source grep during the `FABRIC-1.md` closure work this
|
||||
vocabulary accompanies, not assumed from the symbol's name or Kconfig help text alone.
|
||||
|
||||
| Kconfig symbol | Vocabulary term | Wiring status (2026-08-13) |
|
||||
@@ -664,8 +664,8 @@ vocabulary accompanies, not assumed from the symbol's name or Kconfig help text
|
||||
| `STADIUM_MEMORY_PERCENT` | Stadium capacity sizing | **Live** — read in `stadium.c` |
|
||||
| `STADIUM_WORD_HEAT_QUANTUM` | Heat (word-patron admission) | **Live** — read in `stadium_words.c` |
|
||||
| `STADIUM_WORD_COOL_RATE_Q48` | Heat decay rate (word patrons) | **Live** — read in `stadium_words.c` |
|
||||
| `STADIUM_CONTAINS_DEPTH_MAX` | `contains` wire depth cap (§3, §8) | **Declared, not yet enforced** — reap-gating enforcement is item 3.5's scope, not implemented (`FABRIC-2.md` §A item 5.3 area; not a bug, a known sequencing gap) |
|
||||
| `STADIUM_CAPACITY_TICK` | Capacity-loop cadence, distinct from heat's (§22.4) | **Dead** — declared with the correct intended default (1000, matching §22.4's precedent) but never read by any code path; only appearance beyond its own default is a compile-time `> 0` static assertion in `stadium.h`. Found and reported during this session's §12 Q5 closure (`FABRIC-2.md`) — `vm_physics_heartbeat_tick()` still literally shares `HEARTBEAT_INFERENCE_FREQUENCY` instead |
|
||||
| `STADIUM_CONTAINS_DEPTH_MAX` | `contains` wire depth cap (§3, §8) | **Declared, not yet enforced** — reap-gating enforcement is item 3.5's scope, not implemented (`FABRIC-1.md` §A item 5.3 area; not a bug, a known sequencing gap) |
|
||||
| `STADIUM_CAPACITY_TICK` | Capacity-loop cadence, distinct from heat's (§22.4) | **Dead** — declared with the correct intended default (1000, matching §22.4's precedent) but never read by any code path; only appearance beyond its own default is a compile-time `> 0` static assertion in `stadium.h`. Found and reported during this session's §12 Q5 closure (`FABRIC-1.md`) — `vm_physics_heartbeat_tick()` still literally shares `HEARTBEAT_INFERENCE_FREQUENCY` instead |
|
||||
|
||||
This table is a snapshot, not a promise — it will drift the moment any of these symbols is
|
||||
wired or unwired. Re-verify against source before relying on it for anything past a casual
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
> Tripod/Stadium/word-level ACL existed, and before "Phase 1 Starting (HAL)" had any of the
|
||||
> meaning it has now. Kept for historical record only. For current status, see
|
||||
> `docs/lithosananke/ROADMAP.md` (repo-specific, LithosAnanke roadmap) and
|
||||
> `FABRIC.md`/`FABRIC-2.md`/`FABRIC-3.md` (design history and current work) — not this
|
||||
> `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md` (design history and current work) — not this
|
||||
> document.
|
||||
|
||||
**Version**: 1.0
|
||||
|
||||
+196
-189
@@ -1,6 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
|
||||
<!-- Generated by mkcapsule --manifest 2026-08-30T08:47:40Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-04T15:35:20Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
@@ -10,14 +9,15 @@
|
||||
| Capsule | Blocks claimed | xxHash64 | Signed |
|
||||
|---------|----------------|----------|--------|
|
||||
| `ACL.4th` | 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4015 | `0xd781d22148ff171d` | yes |
|
||||
| `artemis:init.4th` | 4110, 4111, 4112, 4113, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4170, 4171, 4172, 4173, 4174, 4177, 4178, 4179, 4180, 4181, 4182, 4851, 4852, 4853, 4854 | `0xfe6e570467368153` | yes |
|
||||
| `common:messaging.4th` | 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038 | `0x892fd1c86d8c175e` | yes |
|
||||
| `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 | `0x1bb1886fc961c152` | 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 | `0x9cb26fa2d67465db` | yes |
|
||||
| `common:msg.4th` | 4055 | `0x850a0382344ea6c4` | yes |
|
||||
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` | yes |
|
||||
| `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xf154616d248e861f` | yes |
|
||||
| `fabric.4th` | 4900, 4901, 4902, 4903, 4904, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, 4914, 4915, 4916, 4917, 4918, 4919, 4920, 4921, 4922, 4923, 4924, 5000, 5001, 5002 | `0x9b1d061339cea98d` | yes |
|
||||
| `font.4th` | 4925, 4926, 4927, 4928, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4936, 4937, 4938, 4939, 4940, 4941, 4942, 4943, 4944, 4945, 4946, 4947, 4948, 4949, 4950, 4951, 4952, 4953, 4954, 4955, 4956, 4957, 4958, 4959, 4960, 4961, 4962, 4963, 4964, 4965, 4966, 4967, 4968, 4969, 4970, 4971, 4972, 4973, 4974, 4975, 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985 | `0x720792b4fc758156` | yes |
|
||||
| `hermes:init.4th` | 4153, 4855, 5116 | `0x9d6119b69d4113af` | 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 |
|
||||
| `init-0.4th` | 2200, 2201 | `0xd0a9550baf786bb3` | yes |
|
||||
| `init-1.4th` | 4406, 4415, 4425, 4435 | `0x63e251adb0a03613` | yes |
|
||||
| `init-2.4th` | 4506, 4515, 4525, 4535, 4545 | `0xf113b3d0bcccae47` | yes |
|
||||
@@ -34,21 +34,22 @@
|
||||
| `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 | `0x9ac6523d24b80cd0` | yes |
|
||||
| `init.4th` | 2049, 2050, 2057 | `0x5d35c5c6a6eafe04` | yes |
|
||||
| `lib.4th` | 4050 | `0x4b216635c359ef73` | 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 |
|
||||
| `zuse-eligibility.4th` | 4021, 4022 | `0x8b49c1bc1e01dc58` | yes |
|
||||
| `zuse.4th` | 4016, 4017, 4018 | `0x490ded9be257a90b` | yes |
|
||||
|
||||
## Block Map (sorted by LBN)
|
||||
|
||||
| LBN | Capsule | xxHash64 | Status |
|
||||
|-----|---------|----------|--------|
|
||||
| 2049 | `init.4th` | `0x9ac6523d24b80cd0` | ok |
|
||||
| 2050 | `init.4th` | `0x9ac6523d24b80cd0` | ok |
|
||||
| 2057 | `init.4th` | `0x9ac6523d24b80cd0` | ok |
|
||||
| 2049 | `init.4th` | `0x5d35c5c6a6eafe04` | ok |
|
||||
| 2050 | `init.4th` | `0x5d35c5c6a6eafe04` | ok |
|
||||
| 2057 | `init.4th` | `0x5d35c5c6a6eafe04` | ok |
|
||||
| 2064 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
| 2065 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
| 2066 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
|
||||
@@ -108,6 +109,10 @@
|
||||
| 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 |
|
||||
| 4050 | `lib.4th` | `0x4b216635c359ef73` | ok |
|
||||
| 4055 | `common:msg.4th` | `0x850a0382344ea6c4` | ok |
|
||||
| 4060 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
@@ -116,52 +121,52 @@
|
||||
| 4063 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4064 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4065 | `doe-campaign.4th` | `0x3d4549142d91ec20` | ok |
|
||||
| 4110 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4111 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4112 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4113 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4122 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4123 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4124 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4125 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4126 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4127 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4128 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4129 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4130 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4131 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4132 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4133 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4134 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4135 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4136 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4137 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4138 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4139 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4140 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4141 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4153 | `hermes:init.4th` | `0x9d6119b69d4113af` | ok |
|
||||
| 4160 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4161 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4162 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4163 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4164 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4165 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4166 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4167 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4168 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4169 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4170 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4171 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4172 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4173 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4174 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4177 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4178 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4179 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4180 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4181 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4182 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4110 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4111 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4112 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4113 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4122 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4123 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4124 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4125 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4126 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4127 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4128 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4129 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4130 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4131 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4132 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4133 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4134 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4135 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4136 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4137 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4138 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4139 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4140 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4141 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4153 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
| 4160 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4161 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4162 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4163 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4164 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4165 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4166 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4167 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4168 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4169 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4170 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4171 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4172 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4173 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4174 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4177 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4178 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4179 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4180 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4181 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4182 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4200 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
|
||||
| 4201 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
|
||||
| 4202 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
|
||||
@@ -201,136 +206,138 @@
|
||||
| 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` | `0xfe6e570467368153` | ok |
|
||||
| 4852 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4853 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4854 | `artemis:init.4th` | `0xfe6e570467368153` | ok |
|
||||
| 4855 | `hermes:init.4th` | `0x9d6119b69d4113af` | ok |
|
||||
| 4900 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4901 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4902 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4903 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4904 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4905 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4906 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4907 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4908 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4909 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4910 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4911 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4912 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4913 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4914 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4915 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4916 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4917 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4918 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4919 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4920 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4921 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4922 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4923 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4924 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 4925 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4926 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4927 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4928 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4929 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4930 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4931 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4932 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4933 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4934 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4935 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4936 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4937 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4938 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4939 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4940 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4941 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4942 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4943 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4944 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4945 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4946 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4947 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4948 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4949 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4950 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4951 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4952 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4953 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4954 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4955 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4956 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4957 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4958 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4959 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4960 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4961 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4962 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4963 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4964 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4965 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4966 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4967 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4968 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4969 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4970 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4971 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4972 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4973 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4974 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4975 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4976 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4977 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4978 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4979 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4980 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4981 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4982 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4983 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4984 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 4985 | `font.4th` | `0x720792b4fc758156` | ok |
|
||||
| 5000 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 5001 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 5002 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
|
||||
| 5003 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5030 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0x892fd1c86d8c175e` | ok |
|
||||
| 4851 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4852 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4853 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4854 | `artemis:init.4th` | `0x1bb1886fc961c152` | ok |
|
||||
| 4855 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
| 4900 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4901 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4902 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4903 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4904 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4905 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4906 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4907 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4908 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4909 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4910 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4911 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4912 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4913 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4914 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4915 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4916 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4917 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4918 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4919 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4920 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4921 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4922 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4923 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4924 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 4925 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4926 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4927 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4928 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4929 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4930 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4931 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4932 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4933 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4934 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4935 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4936 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4937 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4938 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4939 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4940 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4941 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4942 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4943 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4944 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4945 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4946 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4947 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4948 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4949 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4950 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4951 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4952 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4953 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4954 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4955 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4956 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4957 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4958 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4959 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4960 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4961 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4962 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4963 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4964 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4965 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4966 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4967 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4968 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4969 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4970 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4971 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4972 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4973 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4974 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4975 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4976 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4977 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4978 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4979 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4980 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4981 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4982 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4983 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4984 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 4985 | `font.4th` | `0x3f305911500c78f6` | ok |
|
||||
| 5000 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5001 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5002 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5003 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5030 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5039 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5040 | `common:messaging.4th` | `0x9cb26fa2d67465db` | ok |
|
||||
| 5100 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5101 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5102 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
@@ -347,11 +354,11 @@
|
||||
| 5113 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
|
||||
| 5114 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
|
||||
| 5115 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
|
||||
| 5116 | `hermes:init.4th` | `0x9d6119b69d4113af` | ok |
|
||||
| 5116 | `hermes:init.4th` | `0x2df61924448a6812` | ok |
|
||||
|
||||
## Conflicts
|
||||
|
||||
None.
|
||||
|
||||
---
|
||||
*32 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
*34 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
|
||||
@@ -65,7 +65,7 @@ Block 4137
|
||||
( item 4.6 -- Stadium cell-index arena, not a heat arena. One )
|
||||
( slot per possible LBN, holding STADIUM-NONE or a live cell )
|
||||
( index -- residency exists only while a block is allocated )
|
||||
( (admission-on-allocate, FABRIC-2.md item 4.6's ruling). )
|
||||
( (admission-on-allocate, FABRIC-1.md item 4.6's ruling). )
|
||||
CREATE BLK-CELL ART-DATA-BLKS CELLS ALLOT
|
||||
Block 4138
|
||||
( Cell-index accessors and LBN conversion. Heat itself now )
|
||||
@@ -497,5 +497,6 @@ Block 4854
|
||||
( 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
|
||||
STARTUP-BANNER
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
Block 4019
|
||||
( block-acl.4th - Block-Level Access Control BMAPFMT )
|
||||
( C prims: BLK-ACL-ALLOW@ BLK-ACL-ALLOW! BLK-ACL-TTL@ )
|
||||
( BLK-ACL-TTL! BLK-OWNER@ )
|
||||
( Policy words this file: BLK-ACL-CHECK )
|
||||
( Mirrors ACL.4th's C-primitive/FORTH-policy split, )
|
||||
( applied to blocks instead of words. )
|
||||
( FABRIC-2.md H.12 step 16, 2026-09-03. )
|
||||
256 CONSTANT BLK-ACL-BASE-TTL
|
||||
|
||||
Block 4020
|
||||
( BLK-ACL-CHECK block# -- allow? )
|
||||
( Fast-deny check, vm.c 611-624's pattern applied to )
|
||||
( a block. First touch: default-permissive claim -- )
|
||||
( allow=1, TTL=BLK-ACL-BASE-TTL -- matching the word )
|
||||
( card's own default. No automatic TTL decrement loop )
|
||||
( exists for blocks yet -- words decrement per word )
|
||||
( dispatch, blocks have no equivalent hot path -- but )
|
||||
( this is a real, working fast-deny gate either way. )
|
||||
: BLK-ACL-CHECK ( block# -- allow? )
|
||||
DUP BLK-ACL-TTL@ 0= IF
|
||||
DUP BLK-ACL-BASE-TTL SWAP BLK-ACL-TTL!
|
||||
DUP 1 SWAP BLK-ACL-ALLOW!
|
||||
THEN
|
||||
BLK-ACL-ALLOW@ ;
|
||||
@@ -19,6 +19,10 @@ 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 5004
|
||||
( StadiumBehaviour tags, match stadium.h's enum )
|
||||
0 CONSTANT SB-MIGRATE
|
||||
@@ -42,6 +46,7 @@ VARIABLE MBR-FREE-HEAD
|
||||
VARIABLE MSG-SEQ
|
||||
VARIABLE CH-ACTIVE
|
||||
VARIABLE COMMON-CH
|
||||
VARIABLE MY-CH-ID
|
||||
Block 5006
|
||||
( VM name routing table -- same fixed table every VM loads, )
|
||||
( so IDX>NAME resolves identically everywhere. )
|
||||
@@ -351,7 +356,10 @@ Block 5031
|
||||
: 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 ;
|
||||
@@ -385,7 +393,7 @@ Block 5033
|
||||
MBR-INIT-FREE
|
||||
0 MSG-SEQ !
|
||||
0 MSG-LAST-MSG !
|
||||
0 CH-ACTIVE !
|
||||
0 CH-ACTIVE ! -1 MY-CH-ID !
|
||||
COMMON-INIT
|
||||
VM-NAMES-INIT ;
|
||||
Block 5034
|
||||
@@ -435,3 +443,36 @@ VARIABLE BC-CH VARIABLE BC-SCAN
|
||||
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 ;
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# capsules/contrib/
|
||||
|
||||
Milestone 7 (contributor capsules / trust tiers), FABRIC-2.md §I.5.
|
||||
|
||||
Any `.4th` file placed here gets `FLAG_CONTRIB` in addition to the usual
|
||||
`FLAG_PRODUCTION | FLAG_EXPERIMENT` pair — `tools/mkcapsule.c`'s
|
||||
`flags_from_name()` path-matches on the colon-separated capsule name
|
||||
starting with `contrib:`, mirroring `FLAG_MAMA_INIT`'s own exact-match
|
||||
pattern one line up in that same function.
|
||||
|
||||
**Trust-tier direction, decided in conversation 2026-09-04:** QEMU-vs-real-
|
||||
hardware conditional enforcement — a contributor capsule is validated more
|
||||
strictly on real hardware than under QEMU, using
|
||||
`timer_calibration_record()->vm_mode` (`include/starkernel/timer.h`) as the
|
||||
signal. `vm_mode` is a real per-architecture hypervisor-vs-hardware
|
||||
detection as of this same pass (amd64: `CPUID.1:ECX[31]`; aarch64: ACPI
|
||||
RSDP OEM ID; riscv64: devicetree `compatible` string) — not a build-time
|
||||
flag, so the same binary enforces differently depending on where it
|
||||
actually boots.
|
||||
|
||||
**Enforcement rule, built 2026-09-04:** `contrib_capsule_refused()`
|
||||
(`capsule_birth.c`), called from both `capsule_birth_baby()` and
|
||||
`capsule_run_experiment()` (never `capsule_birth_mama()` — Mama's own init
|
||||
can never carry `FLAG_CONTRIB`, mutually exclusive with `FLAG_MAMA_INIT` by
|
||||
construction). Under QEMU (`vm_mode == 1`): no additional check, same
|
||||
WARN-only treatment every other capsule gets. On real hardware
|
||||
(`vm_mode == 0`): a contrib capsule additionally requires `CAPSULE_SIG_OK`
|
||||
— `MISSING`/`NO_ROOT_KEY`, which stay WARN-only for every other capsule
|
||||
(most machines lack the offline signing key), are refused here specifically
|
||||
because a contributor's capsule has no other provenance to fall back on.
|
||||
Additive to, never a replacement for, the existing `CAPSULE_SIG_INVALID`
|
||||
refusal already enforced on every capsule regardless of `FLAG_CONTRIB`.
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
Block 4900
|
||||
( fabric.4th -- Console drawing-fabric coordinate machinery )
|
||||
( FABRIC.md item 4.3.3. 45-degree cavalier orthographic )
|
||||
( FABRIC-0.md item 4.3.3. 45-degree cavalier orthographic )
|
||||
( projection. Z is depth-into-screen, not height. Q48.16 )
|
||||
( throughout. Raw pixel write (PLOT/FB-WIDTH/FB-HEIGHT) is )
|
||||
( C; this capsule is the FORTH-side policy on top of it. )
|
||||
|
||||
+4
-4
@@ -6,7 +6,7 @@ Block 4925
|
||||
( (fabric.4th 5000-5002); straight strokes stay G-LINE. Not )
|
||||
( every round-ish letter was converted -- only ones a single )
|
||||
( circle/arc/ellipse renders cleanly without per-glyph angle )
|
||||
( tuning (S/s/&/2/3/5/6/8/9 etc. stay blocky; see FABRIC.md). )
|
||||
( tuning (S/s/&/2/3/5/6/8/9 stay blocky; FABRIC-0.md). )
|
||||
Block 4926
|
||||
( Digit 0: ELLIPSE -- true oval, not a 6-line rectangle. )
|
||||
: G-0 ( -- adv )
|
||||
@@ -534,7 +534,7 @@ Block 4969
|
||||
500 ;
|
||||
|
||||
Block 4970
|
||||
( Latin-1 Supplement, 11 glyphs. codepoints per FABRIC.md )
|
||||
( Latin-1 Supplement, 11 glyphs. codepoints per FABRIC-0.md )
|
||||
( 27.6.4. DEGREE/CENT use curves; rest are line-only. )
|
||||
: G-DEGREE ( -- adv ) 250 600 60 G-CIRCLE 350 ;
|
||||
: G-CENT ( -- adv )
|
||||
@@ -600,7 +600,7 @@ Block 4975
|
||||
: G-NBSP ( -- adv ) 300 ;
|
||||
|
||||
Block 4976
|
||||
( General Punctuation, 7 glyphs. codepoints per FABRIC.md )
|
||||
( General Punctuation, 7 glyphs. codepoints per FABRIC-0.md )
|
||||
( 27.6.4. ELLIPSIS uses three CIRCLEs, matching PERIOD. )
|
||||
: G-LSQUOTE ( -- adv )
|
||||
230 650 220 600 G-LINE
|
||||
@@ -636,7 +636,7 @@ Block 4978
|
||||
|
||||
Block 4979
|
||||
( Real DISPATCH-DIGIT, replaces fabric.4th's placeholder. )
|
||||
( Redefinition needed -- CASE binds early (FABRIC.md 27.6.5).)
|
||||
( Redefinition needed -- CASE binds early (FABRIC-0.md 27.6.5).)
|
||||
: DISPATCH-DIGIT ( codepoint -- adv ) CASE
|
||||
48 OF G-0 ENDOF 49 OF G-1 ENDOF 50 OF G-2 ENDOF
|
||||
51 OF G-3 ENDOF 52 OF G-4 ENDOF 53 OF G-5 ENDOF
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# capsules/fonts/
|
||||
|
||||
Font capsule for FABRIC.md items 4.3.7/4.3.7b (TrueType rendering, adjunct
|
||||
Font capsule for FABRIC-0.md items 4.3.7/4.3.7b (TrueType rendering, adjunct
|
||||
to the stroke font — §27.7).
|
||||
|
||||
| File | License | Provenance |
|
||||
|------|---------|------------|
|
||||
| `JetBrainsMono-Regular.ttf` | SIL Open Font License, Version 1.1 | The JetBrains Mono Project Authors, copyright 2020 (https://github.com/JetBrains/JetBrainsMono). License string confirmed by reading the font's own embedded `name` table directly (`strings -e b JetBrainsMono-Regular.ttf`) — not taken on trust from the filename. |
|
||||
|
||||
Chosen as the v1 test/default TTF font 2026-08-10 (FABRIC.md §27.7 "Update
|
||||
Chosen as the v1 test/default TTF font 2026-08-10 (FABRIC-0.md §27.7 "Update
|
||||
2026-08-10"), resolving that item's licensing-check blocker.
|
||||
|
||||
**Embedded as a raw-binary capsule, not text-encoded.** `tools/mkcapsule.c`'s
|
||||
@@ -21,7 +21,7 @@ relative path, per `build_capsule_name()`). Fetch it with
|
||||
`capsule_find_by_name()` (`include/starkernel/capsule.h`) — that returns
|
||||
`offset`/`length` into the arena without ever routing through
|
||||
`capsule_exec_payload()`, so nothing tries to interpret the font bytes as
|
||||
FORTH source. This superseded FABRIC.md §27.7 decision #3 (hex/base64
|
||||
FORTH source. This superseded FABRIC-0.md §27.7 decision #3 (hex/base64
|
||||
text-encoding) — see that section's 2026-08-10 correction note.
|
||||
|
||||
No SIL OFL 1.1 full license text is bundled here yet — only the font's own
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Block 4855
|
||||
( Hermes v1 -- WELCOME. Generic messaging vocab moved to )
|
||||
( common:messaging.4th, FABRIC-3.md Phase C 2026-08-28. )
|
||||
( common:messaging.4th, FABRIC-2.md Phase C 2026-08-28. )
|
||||
: WELCOME ( -- ) LOG-INFO" Hermes: loaded" ;
|
||||
WELCOME
|
||||
Block 4153
|
||||
@@ -15,6 +15,7 @@ Block 5116
|
||||
( 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
|
||||
|
||||
@@ -14,6 +14,8 @@ Block 2049
|
||||
: VM-PARENT ( -- id ) 0 ;
|
||||
: VM-CHILDREN ( -- ) ." (none)" CR ;
|
||||
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
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
Block 4021
|
||||
( zuse-eligibility.4th - H.5/H.8 elevation grant )
|
||||
( 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. )
|
||||
( FABRIC-2.md H.12 step 21, 2026-09-03. )
|
||||
CREATE ELEVATE-PK-BUF 32 ALLOT
|
||||
|
||||
Block 4022
|
||||
( ELEVATE-GRANT ( waddr wu pk0 pk1 pk2 pk3 -- ) )
|
||||
( Reconstructs the caller's pubkey, checks Zuse's )
|
||||
( eligibility list, and on match grants the named )
|
||||
( word ACL-ALLOW!/ACL-TTL! via the same reused )
|
||||
( ACL-TTL mechanism H.5 decided on. No grant, no )
|
||||
( error, on any mismatch -- silent refusal. )
|
||||
: ELEVATE-GRANT ( waddr wu pk0 pk1 pk2 pk3 -- )
|
||||
ELEVATE-PK-BUF ELEVATE-PUBKEY-UNPACK
|
||||
ELEVATE-PK-BUF ZUSE-ELIGIBLE? IF
|
||||
NAME>XT DUP IF
|
||||
1 OVER ACL-ALLOW!
|
||||
ACL-BASE-TTL SWAP ACL-TTL!
|
||||
ELSE DROP THEN
|
||||
ELSE 2DROP THEN ;
|
||||
+2
-2
@@ -85,7 +85,7 @@ carrying timestamp noise in git history.
|
||||
|
||||
- `artemis-metafence-fresh.img` — 30MB raw image, blank at creation,
|
||||
added 2026-08-26 for the top-of-device system-metadata fence
|
||||
(`meta_fence_blocks` in `blk_volume_meta_t`, FABRIC-3.md Phase 8 §C).
|
||||
(`meta_fence_blocks` in `blk_volume_meta_t`, FABRIC-2.md Phase 8 §C).
|
||||
Same reasoning as `artemis-reloc-test.img` above: the fence is only
|
||||
initialized to `BLK_META_FENCE_INIT` (128) by
|
||||
`blk_compute_fresh_geometry()` on a fresh format, so a genuinely blank
|
||||
@@ -103,7 +103,7 @@ carrying timestamp noise in git history.
|
||||
or misreading adjacent fields.
|
||||
|
||||
- `zuse.img` — 64MB raw image simulating the physical Zuse superuser
|
||||
thumbdrive for QEMU testing (FABRIC-3.md, Phase 8: `zuse.img` "bleach"
|
||||
thumbdrive for QEMU testing (FABRIC-2.md, Phase 8: `zuse.img` "bleach"
|
||||
mechanism, added 2026-08-26). **64MB is only this fixture's size, not a
|
||||
constraint on real home-blocks thumbdrives** (Captain Bob, 2026-08-26) —
|
||||
the design is not bound to any particular drive size; `homeblocks_sig_t`'s
|
||||
|
||||
Binary file not shown.
@@ -597,7 +597,7 @@ like `ttf_words.c`, not a word-registration file.
|
||||
## Console Fabric — Framebuffer (`framebuffer_words.c`)
|
||||
|
||||
Kernel-only (`__STARKERNEL__`); no-ops on hosted builds. Raw hardware-boundary access —
|
||||
FABRIC.md item 4.3.3.
|
||||
FABRIC-0.md item 4.3.3.
|
||||
|
||||
| Word | Stack Effect | Description |
|
||||
|---|---|---|
|
||||
@@ -618,7 +618,7 @@ FABRIC.md item 4.3.3.
|
||||
|
||||
## Console Fabric — TrueType Text (`ttf_words.c`)
|
||||
|
||||
Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC.md item 4.3.7e.
|
||||
Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC-0.md item 4.3.7e.
|
||||
|
||||
| Word | Stack Effect | Description |
|
||||
|---|---|---|
|
||||
@@ -626,7 +626,7 @@ Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC.md item 4.3.7e.
|
||||
|
||||
## Console Fabric — Scrollback (`scroll_words.c`)
|
||||
|
||||
Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC.md item 4.4q (boot-mode
|
||||
Kernel-only (`__STARKERNEL__`); no-op on hosted builds. FABRIC-0.md item 4.4q (boot-mode
|
||||
scrollback added by 4.4ac).
|
||||
|
||||
| Word | Stack Effect | Description |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# M7.1: Init Capsule Architecture
|
||||
|
||||
**Status:** Shipped and live, not just designed — this document predates the actual
|
||||
capsule/Tripod/Stadium work; see `FABRIC.md`/`FABRIC-2.md`/`FABRIC-3.md` for real status
|
||||
capsule/Tripod/Stadium work; see `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md` for real status
|
||||
(per `.claude/CLAUDE.md`'s standing redirect)
|
||||
**Branch:** `master` (post-split; the old `lithosananke` branch no longer exists in this repo)
|
||||
**Prerequisite:** M7 (VM Parity Validation)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
**Branch:** `master` (post-split: this repo's `master` is the sole LithosAnanke production
|
||||
line; the old `lithosananke` branch belonged to the pre-split combined monorepo and no
|
||||
longer exists here — see `.claude/CLAUDE.md`'s "On the branch topology" note)
|
||||
**Current:** M7.1 in progress — see `FABRIC.md`/`FABRIC-2.md`/`FABRIC-3.md` for real status
|
||||
**Current:** M7.1 in progress — see `FABRIC-0.md`/`FABRIC-1.md`/`FABRIC-2.md` for real status
|
||||
|
||||
---
|
||||
|
||||
@@ -28,7 +28,7 @@ belongs here.
|
||||
|
||||
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-3.md` §G for the release-gate punch lists.
|
||||
real boards. See `FABRIC-2.md` §G for the release-gate punch lists.
|
||||
|
||||
**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
|
||||
@@ -151,8 +151,8 @@ M4 APIC ██████████████████
|
||||
M5 Timer ████████████████████ COMPLETE
|
||||
M6 Heap ████████████████████ COMPLETE
|
||||
M7 VM Parity ████████████████████ COMPLETE
|
||||
M7.1 Capsules ████████████████░░░░ LIVE — see FABRIC.md/FABRIC-2.md/FABRIC-3.md
|
||||
M8 REPL ░░░░░░░░░░░░░░░░░░░░ OBSOLETE — see FABRIC.md §25.5 item 4.4
|
||||
M7.1 Capsules ████████████████░░░░ LIVE — see FABRIC-0.md/FABRIC-1.md/FABRIC-2.md
|
||||
M8 REPL ░░░░░░░░░░░░░░░░░░░░ OBSOLETE — see FABRIC-0.md §25.5 item 4.4
|
||||
M9 Block I/O ░░░░░░░░░░░░░░░░░░░░ PLANNED
|
||||
M10 Networking ░░░░░░░░░░░░░░░░░░░░ FUTURE
|
||||
```
|
||||
@@ -328,15 +328,15 @@ APIC Timer: started
|
||||
**Goal:** Content-addressed, immutable init capsules for VM birth
|
||||
|
||||
**Status:** Design Complete (see [M7.1.md](M7.1.md)) — this section predates the actual
|
||||
capsule/Tripod/Stadium work and is not current. **See `FABRIC.md`/`FABRIC-2.md` for real
|
||||
capsule/Tripod/Stadium work and is not current. **See `FABRIC-0.md`/`FABRIC-1.md` for real
|
||||
status** (per `.claude/CLAUDE.md`'s standing redirect) — Tripod (Hera/Hermes/Artemis),
|
||||
word-level ACL Phases 1–7, and the Stadium physics-economy migration are all live, not just
|
||||
designed. Most recently: item 4.6 (Artemis's block-heat arena migrated to Stadium
|
||||
admission-on-allocate) verified passing its 30-rep stress campaign on all three
|
||||
architectures 2026-08-18, after fixing a quota-grant ordering bug (`capsule_birth.c`) that
|
||||
had made every admission fail; see `FABRIC-2.md` Section H. The same pass also fixed a
|
||||
had made every admission fail; see `FABRIC-1.md` Section H. The same pass also fixed a
|
||||
long-standing aarch64-only crash on `BYE` (wrong PSCI conduit — SMC has nothing to answer it
|
||||
under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-2.md` Section I.
|
||||
under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-1.md` Section I.
|
||||
|
||||
**Core Concepts:**
|
||||
|
||||
@@ -379,7 +379,7 @@ under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-2.md` Section I.
|
||||
## Phase 4: Interactive Forth (M8)
|
||||
|
||||
> **⚠ OBSOLETE (2026-08-11).** This entire M8 section is superseded by
|
||||
> `FABRIC.md` §25.5 item 4.4 (REPL). The console/REPL design has moved past
|
||||
> `FABRIC-0.md` §25.5 item 4.4 (REPL). The console/REPL design has moved past
|
||||
> what's scoped here — do not use this section as a source for REPL or
|
||||
> CANVAS design decisions. Kept in place for history only.
|
||||
|
||||
@@ -387,7 +387,7 @@ under AAVMF/no-EL3 boot; switched to HVC), see `FABRIC-2.md` Section I.
|
||||
|
||||
**Status:** Scoped 2026-08-11 (this section). Substrate (interrupt-driven keyboard
|
||||
input, glyph rendering) already complete via Stadium's Console fabric work
|
||||
(FABRIC.md §25.5 items 4.3.5–4.3.7f) — see "What's already done" below. This
|
||||
(FABRIC-0.md §25.5 items 4.3.5–4.3.7f) — see "What's already done" below. This
|
||||
scoping pass covers what's left: wiring the existing keyboard-event stream into
|
||||
the REPL's character input path.
|
||||
|
||||
@@ -401,11 +401,11 @@ is a second input source feeding the same loop.
|
||||
aarch64/riscv64 virtio-keyboard-pci + GIC/PLIC), converged behind one shared
|
||||
interface: `KEY-EVENT ( -- keycode pressed -1 | 0 )` in
|
||||
`src/word_source/keyboard_words.c`, `keycode` in the Linux input keycode
|
||||
namespace. FABRIC.md items 4.3.5–4.3.5f, verified live on all three
|
||||
namespace. FABRIC-0.md items 4.3.5–4.3.5f, verified live on all three
|
||||
architectures with real keypresses.
|
||||
- Glyph rendering, both paths: the stroke-drawn font (`TEXT`, capsule-based,
|
||||
113-glyph v1 repertoire, FABRIC.md 4.3.6–4.3.6g) and TrueType (`TTF-TEXT`,
|
||||
proportional spacing via real `hmtx` advance widths, FABRIC.md 4.3.7–4.3.7f).
|
||||
113-glyph v1 repertoire, FABRIC-0.md 4.3.6–4.3.6g) and TrueType (`TTF-TEXT`,
|
||||
proportional spacing via real `hmtx` advance widths, FABRIC-0.md 4.3.7–4.3.7f).
|
||||
Neither is required for the REPL text itself, though — see the VT100 finding
|
||||
below.
|
||||
- **The REPL's on-screen text already renders independently of both of the
|
||||
@@ -468,7 +468,7 @@ ok 1 2 + .
|
||||
3 ok
|
||||
```
|
||||
(via a real keypress on all three architectures, same live-keypress
|
||||
verification standard FABRIC.md 4.3.5f already established — not a
|
||||
verification standard FABRIC-0.md 4.3.5f already established — not a
|
||||
serial-injected synthetic test, though serial injection must still work
|
||||
identically afterward.)
|
||||
|
||||
@@ -546,7 +546,7 @@ LithosAnanke is successful when:
|
||||
1. **M7 Parity** — VM dictionary hash reproducible across boots
|
||||
2. **M7.1 Capsules** — Birth protocol enforced, provenance logged
|
||||
3. ~~**M8 REPL** — Interactive Forth at bare metal~~ — superseded, this criterion is now met
|
||||
via Stadium's Console fabric work (`FABRIC.md` §25.5 item 4.4), not a standalone M8; see
|
||||
via Stadium's Console fabric work (`FABRIC-0.md` §25.5 item 4.4), not a standalone M8; see
|
||||
the OBSOLETE banner above Phase 4
|
||||
4. **M9 Persistence** — State survives reboot
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ What actually exists, as of 2026-08-19:
|
||||
|-----------|------|--------------|---------------|
|
||||
| Word-level DoE (**this HOWTO**) | `doe.4th` | `DOE` / `EXEC-DOE ( seed n-reps -- )` | A single embedded arithmetic workload (`DOE-WORK`), run across the 16 L8 factor configurations, streaming a CSV row per run to serial. Not auto-run anywhere. |
|
||||
| Compudynamics fleet campaign | `doe-campaign.4th` | `CAMPAIGN` / `SMOKE-CAMPAIGN` / `THREE-VM-CAMPAIGN` | Spawns Hermes/Artemis and drives real `VM-EXEC` touches between them to measure fleet heat conservation (`VM-CONSERVED?`). Not auto-run anywhere. |
|
||||
| Artemis stress campaign | `capsules/artemis/init.4th` | `ART-STRESS-CAMPAIGN` | Runs unconditionally at the bottom of the file, so it fires automatically every time Artemis is born. This is the actual source of the live `[Artemis][HADES][DOE ]` CSV rows visible during every kernel boot — unrelated to either mechanism above, and the subject of FABRIC-2.md's item 4.6 fix. |
|
||||
| Artemis stress campaign | `capsules/artemis/init.4th` | `ART-STRESS-CAMPAIGN` | Runs unconditionally at the bottom of the file, so it fires automatically every time Artemis is born. This is the actual source of the live `[Artemis][HADES][DOE ]` CSV rows visible during every kernel boot — unrelated to either mechanism above, and the subject of FABRIC-1.md's item 4.6 fix. |
|
||||
|
||||
Only the first is a self-contained "package/library" in the sense the
|
||||
cookbook wants — a capsule you load and call with your own parameters, not
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
# SDK HOWTO — `capsules/sdk.4th`
|
||||
|
||||
**Status:** WORKING. Part of the v1.9.0 scoping work (FABRIC-2.md section K).
|
||||
**Status:** WORKING. Part of the v1.9.0 scoping work (FABRIC-1.md section K).
|
||||
Loads the two cookbook capsules (turtle graphics, DoE library) and adds an
|
||||
`SDK` vocabulary entry point plus `FENCE` protection on top of them.
|
||||
|
||||
@@ -54,7 +54,7 @@ word wrongly destroyed every other word back to the fence too; forgetting
|
||||
an older word (which correctly cascades to remove newer words, per
|
||||
FORTH-79 semantics) crashed with a SIGSEGV — a use-after-free in the
|
||||
dictionary relink logic. Found and fixed as part of this work; full
|
||||
root-cause writeup in FABRIC-2.md section K. Three POST cases were added to
|
||||
root-cause writeup in FABRIC-1.md section K. Three POST cases were added to
|
||||
`dictionary_manipulation_words_test.c` (Module 14) alongside `FORGET`'s
|
||||
own, including the exact regression scenario, so it can't silently return.
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ rather than a `POLYGON` call with `n=5`.
|
||||
documented in `DOE-LIBRARY-HOWTO-20260819.md`) — it carried a stale
|
||||
`TEMP: ... revert once that run is done` comment for a verification
|
||||
run that had already closed. Reverted to disabled, matching the
|
||||
file's own note (FABRIC-2.md section K/L).
|
||||
file's own note (FABRIC-1.md section K/L).
|
||||
- The kernel's heartbeat CSV logging (`[HADES][DOE ]` rows) draws to
|
||||
the *same* console surface `PLOT` draws pixels to, and scrolls
|
||||
continuously — anything drawn gets visually overwritten within a
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user