From 5df4d73480279aeac4fc5e0637a21984c4cab9b9 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 8 Nov 2026 18:15:26 +0000 Subject: [PATCH] feat(kernel): MINT-ZUSE, a word of the lone node (request 2) (#92, 4.6) [skip ci] word_count 317 -> 318; no POST case (it waits for a stick and YES, as BYE has none). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2 --- .../2026-10-29-stick-5-proxy-zuse-and-real-zuse.md | 2 +- kernel/src/v4/sk_v4.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/v4.0.0/plans/2026-10-29-stick-5-proxy-zuse-and-real-zuse.md b/docs/v4.0.0/plans/2026-10-29-stick-5-proxy-zuse-and-real-zuse.md index 3c5965e9..3b9004aa 100644 --- a/docs/v4.0.0/plans/2026-10-29-stick-5-proxy-zuse-and-real-zuse.md +++ b/docs/v4.0.0/plans/2026-10-29-stick-5-proxy-zuse-and-real-zuse.md @@ -356,7 +356,7 @@ Tasks 1-3 accepted and merged (#159, master 594d2f93); #155 merged with them. - [x] 4.3 `gpt_write_one()` in `kernel/src/gpt.c` (one partition, protective MBR, both headers): builds clean on three ISAs; checked on the host (a throwaway harness, not in the tree) -- 600 MiB and 32 MiB blank images and the pair's used Zuse stick each give one identity partition, `gpt_read` reads it back, `sfdisk --verify` clean. Not yet called. - [x] 4.4 `sk_v4_identity_offer_wait()` / `sk_v4_identity_recheck_offered()`: a stick offered, not attached, while a mint waits (`g_mint_waiting`, `g_offered` in `sk_v4_identity.c`; any stick not this system's and readable -- blank, foreign or a bad table; ends on a stick, a key, or the system stick leaving). Builds on three ISAs; not yet called. - [x] 4.5 `sk_v4_mint.c`: the flow -- plug-in line, size line, `YES`, GPT, zeroed, minted, read back, marker. Builds on three ISAs; not yet called. The gate gained a **spare**: the last stick turned away as not this system's (or handed back by a refused mint) is offered first by the next mint (for `mint_zuse_refuse`: "a second `MINT-ZUSE` is offered again"); and accessors `sk_v4_identity_stick_in/offered_present/release_offered/marker/set_marker`. -- [ ] 4.6 `MINT-ZUSE` in `sk_v4_words[]` (request 2): word_count 317 -> 318 +- [x] 4.6 `MINT-ZUSE` in `sk_v4_words[]` (request 2): word_count 317 -> 318. Builds; `mint_zuse` running on amd64 (build/t4/mint-46.txt). - [ ] 4.7 the real Zuse stick recognised and attached after the system stick; her session - [ ] 4.8 `mint_zuse` passes on amd64; then the other tests: `mint_zuse_refuse`, `mint_pull_system`, `zuse_stick_first`, `mint_small`, the pair's stick offered - [ ] 4.9 regressions, full acceptance on three ISAs (new dict_hash, equal), FABRIC entry, commit diff --git a/kernel/src/v4/sk_v4.c b/kernel/src/v4/sk_v4.c index 0f6f7fbd..83a95187 100644 --- a/kernel/src/v4/sk_v4.c +++ b/kernel/src/v4/sk_v4.c @@ -20,6 +20,7 @@ * * Nothing of the v3 VM is started. docs/v4.0.0/DECOMPOSITION.md. */ +#include "starkernel/v4/sk_v4_mint.h" #include "starkernel/v4/sk_v4.h" #include "starkernel/v4/sk_v4_identity.h" #include "starkernel/kbd_input.h" @@ -62,11 +63,12 @@ static int sk_v4_key(void) } /* THE KERNEL'S WORDS for the lone node. BYE is v3's (mama_word_bye): a cold - * restart. v3's reaps Hera's children first; the lone node is started + * restart, and MINT-ZUSE mints the real Zuse onto a second stick + * (sk_v4_mint.c). v3's BYE reaps Hera's children first; the lone node is started * before there is a fleet, so there are none. The rest of the kernel's * words come when the node is brought up in the VM's place (ENGINE.md * step 4), where v3's own functions serve them. */ -static const char *const sk_v4_words[] = { "BYE" }; +static const char *const sk_v4_words[] = { "BYE", "MINT-ZUSE" }; static void sk_v4_serve(v4_node *node, unsigned request) { @@ -75,6 +77,10 @@ static void sk_v4_serve(v4_node *node, unsigned request) console_println("BYE: cold restart"); arch_cold_reset(); } + /* MINT-ZUSE: the real Zuse onto a second stick (docs/v4.0.0/STICK.md 6a; + * plan 2026-10-29-stick-5, Task 4). No POST case: it waits for a stick + * and a typed YES, as BYE has none. */ + if (request == 2) (void)sk_v4_mint_zuse(); } /* Read a line from the keyboard: characters are echoed, backspace rubs one