docs(v4.0.0): storage -- step 6 done
MESH.md step 6 as built, what is not as intended yet, and step 6b for POST becoming the kernel's. README and V3-PARITY.md brought up to date. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
7c06bdfdb6
commit
6d90375da7
+59
-9
@@ -358,9 +358,13 @@ v4 system has none to give. **Ruled 2026-10-06:** the argument is removed.
|
||||
ramdrive and the virtio disk — in place of the RAM array
|
||||
`kernel/src/v4/sk_v4.c` gives it today. (Approved.) Found 2026-10-06:
|
||||
`kernel_main.c` starts the v4 node (line 523) before it sets that chain up
|
||||
(lines 620 to 668), and the v4 node never returns, so under `STARFORTH_V4`
|
||||
the chain does not exist today. Step 6 has the kernel set it up before the
|
||||
node starts.
|
||||
(lines 620 to 668), and the v4 node never returned, so under `STARFORTH_V4`
|
||||
the chain did not exist. As built: the node boots and is POSTed against
|
||||
POST's own block RAM, blocks 1 to 2047 and nothing above them, and the
|
||||
chain is set up after POST and before the prompt. That is v3's order
|
||||
(`sk_vm_bootstrap.c` gives POST `sk_post_blk_ram`; `kernel_main.c` sets the
|
||||
chain up later), and POST's cases depend on it: several expect a high
|
||||
block number not to exist, and on the real chain it does.
|
||||
|
||||
### 8.4 Not in step 6
|
||||
|
||||
@@ -586,19 +590,65 @@ Each is tested, committed and pushed before the next.
|
||||
`BYE`, and nothing it asks is honoured, as ruled.
|
||||
- The suite now takes about four minutes, eight under the sanitizers:
|
||||
five POSTs.
|
||||
- **Changed at step 6 (2026-10-07):** `BIRTH` no longer sends POST, and
|
||||
a born node is not POSTed. What is said of POST on the outer nodes
|
||||
above is step 5 as it was built.
|
||||
6. **Storage (section 8): every node asks the kernel for its blocks.**
|
||||
Sections 8.2 and 8.3. Tests: a node reads and writes blocks by kernel
|
||||
request, and what v3's own calls wrote reads back; in the unit of five,
|
||||
one node writes a block and another reads it (acceptance 3); Hera no
|
||||
longer sends POST to the nodes she births; POST 538 of 538 on Hera with
|
||||
`blocks.v4` changed, at both widths and under the sanitizers;
|
||||
`hosted-check`; the three bare-metal boots.
|
||||
**Done 2026-10-07.** It was first built another way and brought back;
|
||||
8.5 says what was withdrawn and why.
|
||||
- *The requests* (`v4/include/v4/blocks.h`, `v4/system/blocks.c`). -1
|
||||
reads a block and -2 writes one, `( n waddr -- status )`, for any
|
||||
node, from the kernel's block subsystem. `v4/tests/test_blocks.c`: 22
|
||||
checks at 64 bits, 21 at 32 — a block written and read, the fast RAM,
|
||||
numbers that are no block, cells that are not in the node's memory,
|
||||
and that what v3's own calls wrote is what the node reads.
|
||||
- *The node* (`v4/capsule/blocks.v4`). `(DEVICE)` makes the request on
|
||||
port 0. The four storage registers and `v4_node_storage_attach` are
|
||||
gone from the engine. Error 17 is "Storage refused".
|
||||
`v4/tests/test_host_quit.c`: its block cases unchanged, and a disk
|
||||
that will not be written says so and empties the buffer.
|
||||
- *v3* (`v3/src/block_subsystem.c`). `blk_subsys_init` takes no `VM`.
|
||||
Nothing else of it is changed. Accepted on the v3 configuration, three
|
||||
ISAs, `PARITY:M7.1a` hash `0x08873e0f44b7cb2a` as on 2026-10-03:
|
||||
`logs/20261007-082647`, `-082752`, `-082938`.
|
||||
- *The unit of five* (`v4/tests/test_host_unit.c`, 47 checks). Every
|
||||
node has its kernel on port 0: it serves a node's blocks, and Hera's
|
||||
requests for nodes from Hera alone. One node writes a block and the
|
||||
other four read it; two nodes write ten blocks each at once and all
|
||||
twenty reach the chain. Hera's `BIRTH` no longer sends POST
|
||||
(`capsules/v4/hera.4th`): one POST tally is seen, Hera's.
|
||||
- *The products.* Hosted: the chain's fast RAM, blocks 1 to 2047, as
|
||||
hosted v3 has with no disk; `hosted-check` passes on three ISAs.
|
||||
Bare metal: POST against its own block RAM, then the chain — fast
|
||||
RAM, the ramdrive at 2048 to 3071, the virtio disk from 3072. Three
|
||||
boots, POST 538 of 538, and typed at the prompt: block 2100 written
|
||||
and read back, block 3072 read from the disk, a write to it refused,
|
||||
a block that is not there. `logs/20261007-081603` (amd64), `-081839`
|
||||
(aarch64), `-082226` (riscv64). The parity hashes are the same on the
|
||||
three hosted and the three bare-metal systems.
|
||||
- **Not as intended yet.**
|
||||
- Who may have which block is not checked (8.4).
|
||||
- On bare metal the virtio disk is read and not written. v3's
|
||||
subsystem will not write a disk until its owner says it may be
|
||||
formatted, and that owner is Artemis; so are the genesis signature
|
||||
and Zuse's root key, which the v3 path does at the same place. v4
|
||||
has neither Artemis nor Zuse yet.
|
||||
- POST is still a capsule Hera loads; step 6b.
|
||||
- The suite's unit test is still not run at 32 bits.
|
||||
- **Seen and not changed.** On the v3 path the chain's fast RAM comes
|
||||
from `kmalloc` and is not cleared (`kernel_main.c`, where the chain is
|
||||
set up); only the ramdrive is. The v4 path does as v3 does.
|
||||
|
||||
**6a. Storage that changes while running.** Rulings 6 and 8 of
|
||||
section 8.1: chains of several devices, the device and chain
|
||||
identities, a device joining at the end and known when it returns,
|
||||
release by asking, holes. Its acceptance is to be approved before it is
|
||||
built.
|
||||
**6b. POST is the kernel's.** Ruled 2026-10-07 (section 9): the kernel
|
||||
holds POST's cases and feeds them to Hera itself, with no POST words
|
||||
loaded into her dictionary. Today they are a capsule she loads
|
||||
(`NUCLEUS.md` section 6). Its design and acceptance are to be approved
|
||||
before it is built.
|
||||
7. **A second unit; scaling while running; sleep, wake and kill by
|
||||
command.**
|
||||
8. **The hosted product is the five nodes**, on three ISAs: acceptance 1
|
||||
|
||||
@@ -26,7 +26,7 @@ the kernel's M0–M6 hardware milestones:
|
||||
| 3 | Physics live whenever a word executes: per-word heat, decay, rolling window, pipelining, L8 mode selector (61 mode changes during POST), heartbeat | Missing; see section 2 |
|
||||
| 4 | POST: 1050 tests, every module (FORTH-79, StarForth extensions, ACL, Mama, Q48, inference, physics freeze) | 550 cases, FORTH-79 Required Word Set only |
|
||||
| 5 | `PARITY:M7.1a` word count, here, latest, dictionary hash; `PARITY:OK`; `POST: PASSED` | Present, as `PARITY:V4_*` |
|
||||
| 6 | PCI; virtio-blk attached; Artemis genesis signature | Missing. Blocks are a RAM array |
|
||||
| 6 | PCI; virtio-blk attached; Artemis genesis signature | PCI and the disk attached, after POST (2026-10-07). No genesis signature; the disk is read and not written |
|
||||
| 7 | Mama init capsule `init.4th`: signature checked, executed, `PARITY:MAMA_INIT` | v4 loads its own two capsules the same way; not `init.4th` |
|
||||
| 8 | ACL: `BIRTH` and `CAPSULE-BIRTH` pinned strict | Missing. The ACL words are assembled but not loaded |
|
||||
| 9 | Heartbeat running; Stadium conservation checks; quota and kernel-Hermes self-tests | Missing |
|
||||
@@ -187,6 +187,15 @@ ACL, migration and the Stadium touch stay where they are.
|
||||
array behind its four block registers (D-19), which skips the address
|
||||
space, the metadata, the owner, the ACL and the Stadium.
|
||||
|
||||
**As of 2026-10-07** (`MESH.md` step 6): the registers and the RAM array
|
||||
are gone. A node's block words make a kernel request and
|
||||
`v4/system/blocks.c` serves it through v3's block subsystem, so the address
|
||||
space and the metadata are v3's. Still skipped: the owner and first-touch
|
||||
claim, the ACL, and the Stadium touch, which need the node's identity. A
|
||||
first build of that step had block requests passed from node to node and
|
||||
nodes with no storage; Captain Bob withdrew it as a divergence from this
|
||||
ruling (`MESH.md` 8.5).
|
||||
|
||||
## 1e. Messaging (discussed and ruled 2026-10-05)
|
||||
|
||||
**v3, as built** (`FABRIC-3.5.md` sections III, XLIII, XLV;
|
||||
|
||||
+14
-2
@@ -126,11 +126,23 @@ no room for one more message lets it go and counts it in `(LOST)`.
|
||||
**Five nodes from nothing** (`MESH.md` step 5) is built and proven in the
|
||||
fabric under test: Hera asks whoever holds the fabric for a node
|
||||
(`v4/src/manage.c`: `NODE-BORN`, `NODE-WIRE` and the rest), sends it the
|
||||
nucleus through the port that joins them, then FORTH-79 and POST a line at
|
||||
a time, and joins four such nodes in a square round her
|
||||
nucleus through the port that joins them, then FORTH-79 a line at a
|
||||
time, and joins four such nodes in a square round her
|
||||
(`capsules/v4/hera.4th`: `BIRTH`, `UNIT`). `v4/tests/test_host_unit.c`.
|
||||
The two products are not yet this: they become the five nodes at steps 8
|
||||
and 9.
|
||||
A node she births is not POSTed: POST is the kernel's, once, on Hera.
|
||||
|
||||
**Blocks** (`MESH.md` step 6). A node asks its kernel for a block, as a v3
|
||||
VM does: `BLOCK` and its family keep two buffers, and the word beneath them
|
||||
writes a request to port 0 with the block's number and the buffer's address
|
||||
on the stack (`v4/include/v4/blocks.h`). `v4/system/blocks.c` serves it from
|
||||
the kernel's block subsystem, which is v3's (`v3/src/block_subsystem.c`):
|
||||
one chain, the same blocks at the same numbers for every node. A hosted
|
||||
program has the chain's fast RAM, blocks 1 to 2047. On bare metal the chain
|
||||
is fast RAM, the ramdrive and the virtio disk; the disk is read and not yet
|
||||
written, because nothing in v4 gives its owner's word that it may be
|
||||
formatted. Who may have which block is not checked yet.
|
||||
|
||||
**This is still the lone node.** On bare metal `kernel_main.c` starts it
|
||||
before the fleet tables, beside the kernel's own system and not in the VM's
|
||||
|
||||
Reference in New Issue
Block a user