feat(kernel): MINT-ZUSE -- the real Zuse minted onto a second stick, read back before the marker names her (#92, Task 4)
Task 4 of plan 2026-10-29-stick-5, accepted in full: - amd64, aarch64, riscv64: PARITY:V4_POST tests=538 pass=538 fail=0, POST: PASSED; PARITY:V4_SYSTEM word_count=318 dict_hash=0x8c92508f748f99cf on the three (MINT-ZUSE, the lone node's second word) - the PC stick as built, loaded high: 538/538, the prompt - make -C v4 test-32: 39 programs, 0 failures Sessions: mint_zuse on the three; mint_zuse_refuse, mint_small, mint_zuse_used, mint_pull_system, zuse_stick_first; regressions genesis, two_sticks, hotplug, midpull, typeahead. Verdicts in logs/20261110-051726/verdicts/. The plan's Task 4 ticked; FABRIC-3 XLVIII.16. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
This commit is contained in:
@@ -6459,3 +6459,33 @@ Plan `2026-10-29-stick-5`, Task 2; `STICK.md` 5a (its 2 TiB cap amended to 256 G
|
||||
copyright line), and the capsules (`.4th`, `.f18`) and proofs (`.thy`) left for a ruling of their
|
||||
own. 253 files given it (3bd81097); `tools/kconfig/` keeps its own GPL-2.0, `docs/working/` and the
|
||||
generated `v4/system/post_cases.c` are not touched. Comments only: three ISAs build, test-32 clean.
|
||||
|
||||
### 16. #92, Task 4: `MINT-ZUSE` -- the real Zuse on a second stick (2026-11-10)
|
||||
|
||||
Plan `2026-10-29-stick-5`, Task 4; `STICK.md` 6a. Worked in small increments, each committed and
|
||||
pushed with the plan's Progress section brought up to date (Captain Bob: "work in small increments
|
||||
and memorize frequently so we can pick up where we left off").
|
||||
|
||||
- **Built:** a GPT writer of a new disk, `gpt_write_one()` (the old MBR zeroed first, the protective
|
||||
MBR written last, so a torn write leaves no table); a stick offered to a waiting mint, not attached
|
||||
or refused (`sk_v4_identity_offer_wait()`), and the last stick turned away kept as a spare that the
|
||||
next mint offers first; `sk_v4_mint.c` -- the plug-in line, the stick's size, nothing written
|
||||
until `YES`, then the GPT, the partition's first devblocks zeroed, a fresh Zuse minted and read
|
||||
back, and only then the marker's real key; `MINT-ZUSE`, request 2 of the lone node's words
|
||||
(`word_count` 317 -> 318, `dict_hash 0x8c92508f748f99cf` on the three); the real Zuse's stick
|
||||
recognised against the marker's real key, attached at the chain's tail, her session -- one
|
||||
already running moves to her; her stick arriving before the system stick is remembered and
|
||||
checked once the marker is read. The installed key is the logged-in Zuse's, set at each login.
|
||||
- **Tested first, seen to fail:** `mint_zuse` -- "UNKNOWN WORD: 'MINT-ZUSE'". After: `mint_zuse` on
|
||||
the three ISAs (the size line, `YES`, minted, her stick recognised, the prompt, `sfdisk --verify`
|
||||
clean on the new stick); `mint_zuse_refuse` (the stick's bytes unchanged, offered again);
|
||||
`mint_small`; `mint_zuse_used` (the pair's Zuse stick rewritten, the new Zuse recognised -- Review
|
||||
Focus 2); `mint_pull_system` (stopped, nothing written, the proxy back on replug -- Review Focus
|
||||
3); `zuse_stick_first` (her stick on the lower port at boot -- Review Focus 1). `gpt_write_one`
|
||||
checked on the host first, against blank and used images. Regressions pass: `genesis`,
|
||||
`two_sticks`, `hotplug`, `midpull`, `typeahead`.
|
||||
- **Accepted:** 538/538 and `POST: PASSED` on the three and the stick loaded high; `dict_hash
|
||||
0x8c92508f748f99cf` on the three; test-32 0 failures.
|
||||
- **Left for Task 5:** the fixed screen (with a real Zuse, the system stick alone gives no prompt),
|
||||
its R, the old stick refused after a replacement, `mint_fail` (Review Focus 4), and pulling the
|
||||
system stick while hers is in (her stick, the chain's tail, must go first).
|
||||
|
||||
@@ -274,7 +274,7 @@ on port 2 and no other drive: a first boot every time, the proxy minted, the pro
|
||||
- **Pulling the real Zuse stick:** her session ends as today's line says; with Task 5, the fixed
|
||||
screen.
|
||||
|
||||
- [ ] **Step 1: Failing tests** (amd64 unless said; a blank 600 MiB sparse stick image in the session
|
||||
- [x] **Step 1: Failing tests** (amd64 unless said; a blank 600 MiB sparse stick image in the session
|
||||
directory; `--make "DATASTICK_IMG=<work>/data.img DATASTICK_DEP="` where two boots share one
|
||||
copy):
|
||||
- **`mint_zuse`** (three ISAs): fresh data stick, prompt; type `MINT-ZUSE`; the plug-in line;
|
||||
@@ -291,11 +291,11 @@ on port 2 and no other drive: a first boot every time, the proxy minted, the pro
|
||||
Zuse stick on port 1 and the data stick on port 2: she is logged in (`identity confirmed` once,
|
||||
the prompt).
|
||||
- **`mint_small`:** a 32 MiB stick offered: `under 64 MiB`, nothing written, the prompt.
|
||||
- [ ] **Step 2:** Run each: FAIL as listed.
|
||||
- [ ] **Step 3:** Implement.
|
||||
- [ ] **Step 4:** They pass; regression: `genesis`, `two_sticks` (a blank data stick on port 2 is
|
||||
- [x] **Step 2:** Run each: FAIL as listed.
|
||||
- [x] **Step 3:** Implement.
|
||||
- [x] **Step 4:** They pass; regression: `genesis`, `two_sticks` (a blank data stick on port 2 is
|
||||
still not used when no mint waits), `hotplug`, `midpull`, `typeahead`.
|
||||
- [ ] **Step 5:** Suite; full acceptance (`word_count=318`, the new `dict_hash`, equal on three);
|
||||
- [x] **Step 5:** Suite; full acceptance (`word_count=318`, the new `dict_hash`, equal on three);
|
||||
commit `feat(kernel): MINT-ZUSE -- the real Zuse minted onto a second stick, read back before the
|
||||
marker names her` with the logs.
|
||||
|
||||
@@ -358,8 +358,10 @@ Tasks 1-3 accepted and merged (#159, master 594d2f93); #155 merged with them.
|
||||
- [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`.
|
||||
- [x] 4.6 `MINT-ZUSE` in `sk_v4_words[]` (request 2): word_count 317 -> 318. `mint_zuse` PASSES on amd64 (logs/20261108-181556): the size line, YES, "real Zuse minted", the prompt, 7 ok, the new stick one clean identity partition. (Her session is still the proxy's: recognising the real Zuse stick is 4.7.)
|
||||
- [x] 4.7 the real Zuse stick recognised and attached after the system stick; her session (`sk_v4_real_zuse_arrived()`: identity partition, no Artemis, checked against the marker's real key; attached at the chain's tail; a session already running moves to her; arriving before the system stick, remembered in `g_pending_real` and checked once the marker is read; the installed key now set at every login). Builds on three ISAs; `mint_zuse` checks "identity confirmed" after the minted line: PASS on amd64 (logs/20261110-043807). Not yet handled: pulling the system stick while hers is in (her stick is the chain's tail, so it must go first -- Task 5's `system_pull_real`).
|
||||
- [~] 4.8 `mint_zuse` passes on amd64 (4.7); the other sessions written (`mint_zuse_refuse`, `mint_small`, `mint_zuse_used`, `mint_pull_system`, `zuse_stick_first`; the data stick's QEMU device now `id=datadev`, so it can be pulled) -- all five PASS on amd64 (logs/20261110-0441* .. 0449*). Left for 4.8: `mint_zuse` on aarch64 and riscv64; the regressions (`genesis`, `two_sticks`, `hotplug`, `midpull`, `typeahead`). 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
|
||||
- [x] 4.8 `mint_zuse` passes on amd64 (4.7); the other sessions written (`mint_zuse_refuse`, `mint_small`, `mint_zuse_used`, `mint_pull_system`, `zuse_stick_first`; the data stick's QEMU device now `id=datadev`, so it can be pulled) -- all five PASS on amd64 (logs/20261110-0441* .. 0449*). Left for 4.8: `mint_zuse` on aarch64 and riscv64; the regressions (`genesis`, `two_sticks`, `hotplug`, `midpull`, `typeahead`). Then the other tests: `mint_zuse_refuse`, `mint_pull_system`, `zuse_stick_first`, `mint_small`, the pair's stick offered
|
||||
- [x] 4.9 regressions, full acceptance on three ISAs: 538/538, word_count=318, dict_hash 0x8c92508f748f99cf on the three, the stick high, test-32 0 failures; FABRIC-3 XLVIII.16. **Task 4 accepted.**
|
||||
|
||||
**Next: Task 5** -- the fixed screen, R, the old stick refused, `mint_fail`, the system stick pulled while hers is in.
|
||||
|
||||
Working notes: the boot's own words are `sk_v4_words[]` in `kernel/src/v4/sk_v4.c`, served by
|
||||
`sk_v4_serve(node, request)` with request = index + 1 (`BYE` is 1). Sticks are added in the harness
|
||||
|
||||
Reference in New Issue
Block a user