feat(v4.0.0): refusals and waits on bare metal, and step 6c written up
The bare-metal host hands a waiting node the next line typed, as the hosted one does: 5 AWAIT, then 7 8 * . -- Interrupted, then 56. amd64, aarch64 and riscv64 boot, POST 538 of 538, word_count=317, dict_hash 0x54520ade672566ad, the same as the three hosted programs: logs/20261007-202737, -203230, -203616. MESH.md step 6c: what was built, how it was verified, and two things found on the way that are not mended and are for ruling: Hera blocked writing to a stuck node, and a message that can go round for ever between two nodes whose ways disagree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ee2bbf4ecf
commit
d343001dea
+36
-5
@@ -136,9 +136,8 @@ word address `base`:
|
||||
three boots type `5 7 PORT!` and go on: `logs/20261007-121743` (amd64),
|
||||
`-122008` (aarch64), `-122337` (riscv64); POST 538 of 538,
|
||||
`dict_hash=0x5f0a949a6fc8ef2b` on all six.
|
||||
**Not mended, and reported:** a node that waits at "any port" for an
|
||||
answer that never comes (`AWAIT`, on a node that never answers) waits
|
||||
for ever, and on the lone node that ends the line as "stopped".
|
||||
A node that waited at "any port" for an answer that never came
|
||||
(`AWAIT`) was not mended by this, and was by step 6c: section 7b.
|
||||
|
||||
### 4.2 A node at reset
|
||||
|
||||
@@ -921,8 +920,40 @@ Each is tested, committed and pushed before the next.
|
||||
6. *The suite.* `make -C v4 test` and `sanitize` pass at both widths;
|
||||
`mkcapsule --lint capsules/` is clean.
|
||||
|
||||
**6c. Refusals and waits (section 7b).** Acceptance, approved
|
||||
2026-10-07:
|
||||
**6c. Refusals and waits (section 7b).** **Done 2026-10-07.**
|
||||
- *In the nucleus* (`v4/capsule/core.v4`, `quit.v4`): `(OWE)` and
|
||||
`(PAY)`; the room kept for NACK and GONE; `NO-ROUTE`; `GONE`; `AWAIT`
|
||||
ending in errors 19, 20 and 21; `(REFUSED)`.
|
||||
- *Hera* (`capsules/v4/hera.4th`): her table of the nodes she has had
|
||||
born, and `KILL`.
|
||||
- *The lone node* (`v4/system/boot.c`, `v4/tools/hosted.c`,
|
||||
`kernel/src/v4/sk_v4.c`): a line that waits is reported as waiting,
|
||||
and the next line typed breaks the wait and is then done.
|
||||
- *Tests.* `v4/tests/test_host_mesh.c`, 76 checks, three nodes in a row:
|
||||
acceptance 1, 2 and 7, a GONE from a node's centre and one that is
|
||||
not, and a console line breaking a wait while text for another node
|
||||
passes through. `v4/tests/test_host_unit.c`, 74 checks: acceptance 3,
|
||||
4 and 5, and `KILL` of what is not a node of hers. `hosted-check` and
|
||||
the three boots type `5 AWAIT` and then another line: acceptance 6.
|
||||
- *Verified.* `make -C v4 test`, `sanitize` and `hosted-check`; three
|
||||
bare-metal boots, `logs/20261007-202737` (amd64), `-203230`
|
||||
(aarch64), `-203616` (riscv64). On all six: POST 538 of 538,
|
||||
`word_count=317`, `dict_hash=0x54520ade672566ad`.
|
||||
- **Found on the way, and not mended: for ruling.**
|
||||
- *Hera blocked writing to a stuck node.* Hera has the lowest number,
|
||||
so by section 7a she writes to a neighbour without looking and is
|
||||
blocked until it reads. If that neighbour is stuck she is blocked
|
||||
writing, not waiting, and a line from the console does not release
|
||||
her. `KILL` sends GONE to every other node, so with two nodes stuck
|
||||
at once, killing one would leave her blocked on the other.
|
||||
- *A message that goes round for ever.* When a node forgets the way to
|
||||
another, what it sends there goes by its way for everything else.
|
||||
If the node at that end still believes the way is back through the
|
||||
first, the message passes between them without end: nothing counts
|
||||
hops (the TTL is carried and not acted on). `KILL` has Hera forget
|
||||
her own way first, which prevents it there.
|
||||
|
||||
Acceptance, approved 2026-10-07:
|
||||
1. *No room.* A node's queue is filled; the next message for it is
|
||||
refused, and the sender's `(REFUSED)` count rises by one. A sender
|
||||
that was waiting has its line end "Message refused".
|
||||
|
||||
Reference in New Issue
Block a user