The plug-and-play stick, done: MINT-ZUSE and the fixed screen (#92 Tasks 4-5); licence headers #160
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
mainmenu "StarForth Configuration"
|
||||
|
||||
source "Kconfig.arch"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
menu "Target architecture"
|
||||
|
||||
choice
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
menu "Heartbeat / adaptive tick coordinator"
|
||||
|
||||
config HEARTBEAT_THREAD_ENABLED
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
menu "Kernel-only options"
|
||||
|
||||
if STARFORTH_VARIANT_KERNEL
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
menu "Physics engine tuning"
|
||||
|
||||
config STRICT_PTR
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
menu "Build variant"
|
||||
|
||||
choice
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# ==============================================================================
|
||||
# LithosAnanke / StarForth -- top-level Makefile
|
||||
#
|
||||
|
||||
+25
-2
@@ -156,8 +156,9 @@ One QEMU at a time. Use a copy of the image: the kernel writes to its disk.
|
||||
2026-10-27 the PC image is the StarshipOS stick (`docs/v4.0.0/STICK.md` §4: ESP,
|
||||
identity, Artemis) and `make -f kernel/Makefile ARCH=amd64 qemu-stick` does exactly
|
||||
this: a copy of the stick as a USB stick on the xHCI controller (`bootindex=0`), OVMF
|
||||
booting its ESP, logs under `logs/<TS>/amd64/`. The stick's identity partition is
|
||||
blank until first-boot genesis (stick increment 5), so today it boots headless.
|
||||
booting its ESP, logs under `logs/<TS>/amd64/`. Since 2026-11-08 (stick increment 5,
|
||||
`plans/2026-10-29-stick-5`) its first boot mints the stick's own Zuse and reaches
|
||||
`[zuse@Hera] ok>` with nothing set up; `qemu_session.py stick_genesis` checks it.
|
||||
- [ ] **MILKV:** the command in `boards/milkv/README.md` (OpenSBI, U-Boot, `bootefi`).
|
||||
- [ ] **RASPI:** there is no QEMU model of the Pi 5, but its native path -- raw image, entry
|
||||
at EL2 with the MMU off, devicetree in x0 -- is rehearsed on QEMU virt:
|
||||
@@ -207,6 +208,28 @@ the one QEMU exercises most closely, and the Pi 5's can be rehearsed only in par
|
||||
on until login (screen=boot)"). Secure Boot off. Watch for `Boot disk: a StarshipOS stick`, `Artemis: the stick's partition
|
||||
attached`, then `[zuse@Hera] ok>`. The same image boots in QEMU first:
|
||||
`make -f kernel/Makefile ARCH=amd64 qemu-stick STICK_PAIR=disk/zuse-scratch`.
|
||||
- [ ] **Plug and play, and the real Zuse** (2026-11-10, after the stick's increments 5 and 5a,
|
||||
`docs/v4.0.0/plans/2026-10-29-stick-5-proxy-zuse-and-real-zuse.md`, Task 5 step 6). Two USB
|
||||
sticks: the system stick, written from `make boot_image TARGET=PC` (no `STICK_PAIR`) with
|
||||
`make write_stick DEVICE=/dev/sdX`, and a second stick of 64 MiB or more that may be erased.
|
||||
Each step rehearsed first in QEMU by the session named:
|
||||
- [ ] **First boot** (`stick_genesis`, `stick_grow`): the system stick alone. Watch for
|
||||
`Artemis: grown to fill the stick` (a stick of 8 GB or more) or `Artemis: the stick is
|
||||
under 8 GB -- not grown`, then `Zuse: genesis minted onto attached thumbdrive`, then
|
||||
`[zuse@Hera] ok>`. Nothing typed before it. Write down the time from power-on to the
|
||||
prompt.
|
||||
- [ ] **The second boot of the same stick:** `Zuse: identity confirmed from attached
|
||||
thumbdrive`, no genesis line, no growth line.
|
||||
- [ ] **`MINT-ZUSE`** (`mint_zuse`): type it, plug in the second stick when asked; check the
|
||||
size it names is that stick's; type `YES`. Watch for `Zuse: real Zuse minted onto the
|
||||
second stick`, then `identity confirmed`, then the prompt.
|
||||
- [ ] **The system stick alone** (`fallback`): power off, take the second stick out, boot. The
|
||||
fixed screen's four lines (`Zuse's stick is not here.` ...), no prompt; keys typed there
|
||||
do nothing. Plug the second stick in: the prompt. Pull it: the screen comes back.
|
||||
- [ ] **Both sticks at power-on** (`zuse_stick_first`): her stick in the lower port if the
|
||||
PC's ports are numbered; she is logged in once.
|
||||
- [ ] Not done on the bench unless a spare stick is to hand: `R` and a replacement
|
||||
(`replace`) -- the second stick stops working for good.
|
||||
- [ ] The timer lines differ from QEMU's by design: no hypervisor, so the HPET path runs for
|
||||
the first time. S1 is the finding to remember if it stops there.
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# boards/milkv/board.mk -- Milk-V Mars (StarFive JH7110, SiFive U74, RV64GC).
|
||||
#
|
||||
# The board's own SPI-flash U-Boot (OpenSBI underneath) runs the EFI
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# boards/pc/board.mk -- a generic PC: x86-64, UEFI firmware, ACPI.
|
||||
#
|
||||
# Not one machine: the standards-compliant UEFI path (FABRIC-3.md §III), so
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# boards/raspi/board.mk -- Raspberry Pi 5 (BCM2712, Cortex-A76, aarch64).
|
||||
#
|
||||
# Native firmware boot, no UEFI (FABRIC-3.md §IV): the Pi 5 bootloader
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# boards/zynq7020/board.mk -- Xilinx Zynq-7020 (dual Cortex-A9, ARMv7-A, 32-bit).
|
||||
#
|
||||
# Boot chain: BootROM -> BOOT.BIN (U-Boot SPL with the board's ps7_init DDR/
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# make-ca.sh -- the StarshipOS capsule-signing PKI, made once, on the CI box (Captain Bob,
|
||||
# 2026-11-07: "New root CA on the CI box. Valid StarshipOS rather than snake oil intermediate").
|
||||
#
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# build-iso.sh -- the demo's ISO: the amd64 kernel's loader on an El Torito ISO, packed as
|
||||
# `make -f kernel/Makefile ARCH=amd64 qemu` packs it (kernel/Makefile, target qemu).
|
||||
#
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
"""console.py -- the visitor's terminal joined to the demo machine's serial console, once the
|
||||
machine is running (issue #112).
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# make-snapshot.sh -- boot the demo machine once, to its prompt, and save it: every session
|
||||
# resumes from here, at the prompt in seconds instead of after boot and POST (issue #113).
|
||||
#
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# mint-zuse.sh -- a Zuse of the demo's own, as a stick (issue #111, ruled by Captain Bob,
|
||||
# 2026-11-06: "Mint Zuse for demo console").
|
||||
#
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# qemu-args.sh -- the demo machine, sourced by make-snapshot.sh and start-session.sh.
|
||||
#
|
||||
# A session resumes a machine saved by make-snapshot.sh, and QEMU can resume a saved machine only
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# start-session.sh -- one visitor's session: the saved demo machine, resumed at its prompt, its
|
||||
# serial console on this terminal; gone when the visitor leaves or the time is up (issue #112).
|
||||
# ttyd runs this once per browser connection (issue #114).
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# docs/book/Makefile -- the single LithosAnanke book, built from LaTeX.
|
||||
#
|
||||
# Run from the repo root (the root Makefile does this):
|
||||
|
||||
@@ -6445,3 +6445,71 @@ Plan `2026-10-29-stick-5`, Task 2; `STICK.md` 5a (its 2 TiB cap amended to 256 G
|
||||
0xfec8c47cfc6f437f`, test-32 39 programs, 0 failures; regressions pass, `v3_keys` among them (v3
|
||||
runs on the same code).
|
||||
|
||||
|
||||
### 15. The license's name in the headers (2026-11-08)
|
||||
|
||||
- **Found:** `LICENSE` is the Starship License 1.0 (SL-1.0) and always has been; 347 source headers
|
||||
said "StarForth License, Version 1.0" (Captain Bob: "I think I shortened accidently").
|
||||
- **Done:** 349 files, 566 occurrences, now "Starship License, Version 1.0 (SL-1.0)" (16b9747d).
|
||||
- **Ruled:** the 32 others **keep "StarForth License" as they are** -- `docs/patent/` (the patent
|
||||
figures), `docs/formal/` (the citable volumes) and the generated reports under
|
||||
`docs/working/experiments/`. Not to be swept.
|
||||
- **The header scan** (2026-11-10): of 788 source files, 394 had no licence header at all -- most of
|
||||
v4 among them. **Ruled:** the SPDX form (`SPDX-License-Identifier: LicenseRef-Starship-1.0` and the
|
||||
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).
|
||||
|
||||
### 17. #92, Task 5: the fixed screen -- and #92 done (2026-11-10)
|
||||
|
||||
- **Built** (`sk_v4_identity.c`): with a real Zuse in the marker and her stick not here, the system
|
||||
stick's proxy gets no prompt but the fixed screen -- "Zuse's stick is not here." / "Plug it in to
|
||||
log in." / "Or plug in another stick and press R to mint a replacement" / "-- the old Zuse stick
|
||||
will stop working." -- on the screen and serial; R runs the mint, every other key is read and
|
||||
dropped; a stopped or failed mint brings the screen back. Her stick pulled: the screen again.
|
||||
The system stick pulled while hers is in: hers, the block chain's tail, is let go first and
|
||||
remembered, and checked again when the system stick is back.
|
||||
- **Tested first, seen to fail:** `fallback` -- no screen, R did nothing. After: `fallback`,
|
||||
`replace` (the old stick then "not this system's Zuse stick -- not used"), `mint_fail` (a stick
|
||||
whose writes all fail: "failed -- nothing changed", the old stick still logs in -- Review Focus 4),
|
||||
`system_pull_real` (no detach refusal; she is back on replug). `mint_fail` failed once on its own
|
||||
check, which counted the first boot's mint in the second boot's log; fixed, it passed.
|
||||
- **Accepted:** the regressions (every Task 4 session, `genesis`, `stick_genesis`, the screen and
|
||||
keyboard sessions, `emergency`); 538/538 on the three and the stick loaded high, `word_count=318`,
|
||||
`dict_hash 0x8c92508f748f99cf`; test-32 0 failures.
|
||||
- **The SER5 bench steps** are in `boards/BRINGUP.md` 4.2: first boot, second boot, `MINT-ZUSE`, the
|
||||
system stick alone, both sticks at power-on -- each rehearsed in QEMU first.
|
||||
- **#92 is done:** the plug-and-play stick (STICK.md 5, 5a, 6, 6a) -- written, plugged in, booted,
|
||||
`[zuse@Hera] ok>`; growth; the real Zuse on a second stick; the fixed screen. The alpha.4
|
||||
Downloads page (#126) can offer the PC stick.
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
# docs/formal/Makefile — build all formal LaTeX publications
|
||||
|
||||
PDFLATEX := pdflatex -interaction=nonstopmode -halt-on-error
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
"""
|
||||
fix-doxygen-unicode.py — replace problematic Unicode characters in
|
||||
Doxygen-generated LaTeX files with pdflatex-safe equivalents.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# SPDX-License-Identifier: LicenseRef-Starship-1.0
|
||||
# Copyright (c) 2023-2026 Robert A. James
|
||||
LATEX=pdflatex
|
||||
MAIN=main.tex
|
||||
|
||||
|
||||
@@ -369,6 +369,7 @@ first and seen to fail:
|
||||
5a. **The real Zuse stick (2026-10-29)** (§6a): `MINT-ZUSE` and its confirmation, the GPT and
|
||||
identity written to the second stick, the marker's real key; recognition of the real Zuse
|
||||
stick; the fixed screen and its R; the old stick refused after a replacement.
|
||||
**Done 2026-11-10** (plan `2026-10-29-stick-5`, Tasks 4-5; `FABRIC-3.md` XLVIII.16-17; #92).
|
||||
6. **Pull and replug** (§7), and the flush.
|
||||
7. **The splash and progress bar** (§8), with the mkcapsule PNG converter.
|
||||
8. **Acceptance moves** to the stick boot for x86_64 (§9).
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -317,7 +317,7 @@ on port 2 and no other drive: a first boot every time, the proxy minted, the pro
|
||||
- **After a replacement** the marker's `real` is the new key; the old stick then reads `not this
|
||||
system's Zuse stick -- not used`.
|
||||
|
||||
- [ ] **Step 1: Failing tests** (amd64; the data stick copy from a `mint_zuse` boot, booted again):
|
||||
- [x] **Step 1: Failing tests** (amd64; the data stick copy from a `mint_zuse` boot, booted again):
|
||||
- **`fallback`:** no Zuse stick: the four lines; no `ok> ` for 30 s; `3 4 + .` and Enter typed,
|
||||
then the Zuse stick added: the prompt, and no `7` in the output before `3 4 + .` is typed
|
||||
again after it. Then `R` typed with no stick offered asks for one (the plug-in line); any key
|
||||
@@ -334,12 +334,42 @@ on port 2 and no other drive: a first boot every time, the proxy minted, the pro
|
||||
first (no `detach` refusal in the log), `session ended`, headless; replug the data stick (hers
|
||||
still in): she is logged in again, by the remembered-drive check of Task 4.
|
||||
- Today: FAIL (the proxy with a real key stays headless; no fixed screen).
|
||||
- [ ] **Step 2:** Run each: FAIL as listed.
|
||||
- [ ] **Step 3:** Implement.
|
||||
- [ ] **Step 4:** They pass; regression: all of Task 4's sessions, `genesis`, `stick_genesis`,
|
||||
- [x] **Step 2:** Run each: FAIL as listed.
|
||||
- [x] **Step 3:** Implement.
|
||||
- [x] **Step 4:** They pass; regression: all of Task 4's sessions, `genesis`, `stick_genesis`,
|
||||
`screen_dark_until_login`, `screen_dark_after_logout`, `kbd_typeahead`, `emergency`.
|
||||
- [ ] **Step 5:** Suite; full acceptance; commit `feat(kernel): the fixed screen -- with a real Zuse,
|
||||
- [x] **Step 5:** Suite; full acceptance; commit `feat(kernel): the fixed screen -- with a real Zuse,
|
||||
the system stick alone can only mint a replacement; the old stick dies` with the logs.
|
||||
- [ ] **Step 6:** A new PC stick (`make boot_image TARGET=PC`, no `STICK_PAIR`) for the SER5, and
|
||||
- [x] **Step 6:** A new PC stick (`make boot_image TARGET=PC`, no `STICK_PAIR`) for the SER5, and
|
||||
the bench steps written in `boards/BRINGUP.md`: plug in, boot, the prompt; `MINT-ZUSE` onto the
|
||||
second stick; boot with the system stick alone (the fixed screen); with both (the prompt).
|
||||
|
||||
---
|
||||
|
||||
## Progress (kept current, one line per increment -- where to pick up)
|
||||
|
||||
Tasks 1-3 accepted and merged (#159, master 594d2f93); #155 merged with them.
|
||||
|
||||
**Task 4, `MINT-ZUSE`** (Captain Bob, 2026-11-08: "work in small increments and memorize frequently"):
|
||||
- [x] 4.1 the first failing test: `qemu_session.py` mode `mint_zuse` and `add_stick(n, img, port)`
|
||||
- [x] 4.2 run `mint_zuse` on amd64 before any kernel change: FAIL, "UNKNOWN WORD: 'MINT-ZUSE'" (logs/20261108-175928); the prompt check tightened to need the minted line first
|
||||
- [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`.
|
||||
- [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`).
|
||||
- [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.**
|
||||
|
||||
**Task 5, the fixed screen** (increments, as Task 4's):
|
||||
- [x] 5.1 the first failing test: mode `fallback` (a mint, then the data stick booted alone: the four lines, no prompt, keys dropped; her stick added: the prompt; pulled: the screen again; R with no stick: the plug-in line, any key stops it)
|
||||
- [x] 5.2 run `fallback` before any kernel change: FAIL -- no fixed screen, R does nothing (logs/20261110-062351, -062543); her stick added, the prompt, typed keys dropped, the session ended on its pull all PASS already
|
||||
- [x] 5.3 the fixed screen in `sk_v4_identity_wait()`: shown while `g_proxy_fallback`; R runs `sk_v4_mint_zuse()`; every other key dropped
|
||||
- [x] 5.4 her stick pulled: the fixed screen again (not headless)
|
||||
- [x] 5.5 the system stick pulled while hers is in: hers let go first (the chain's tail). 5.3-5.5 written in `sk_v4_identity.c` (`sk_v4_fixed_screen`, `sk_v4_session_end`, `g_real_drive`); build on three ISAs; `fallback` PASSES (logs/20261110-063540, -063758). 5.5 itself is tested by `system_pull_real` in 5.6
|
||||
- [x] 5.6 the other sessions: `replace` (R, a new stick, the old one refused), `mint_fail` (blkdebug write errors), `system_pull_real` -- all PASS on amd64 (`real_pull` is `fallback`'s pull); `mint_fail` passed on its rerun after its own check was fixed (it counted the first boot's mint in the second boot's log)
|
||||
- [x] 5.7 regressions (all Task 4's sessions, genesis, stick_genesis, the screen and keyboard sessions, emergency: PASS), full acceptance (538/538 on the three and the stick high, word_count=318, dict_hash 0x8c92508f748f99cf, test-32 0 failures); FABRIC-3 XLVIII.17; the SER5 bench steps in `boards/BRINGUP.md` 4.2. **Task 5 accepted -- #92 done.** Original line:, FABRIC entry, commit; then the SER5 bench steps in `boards/BRINGUP.md` (Task 5 step 6)
|
||||
|
||||
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
|
||||
on port 3 (port 1: the minted pair's stick when a test names it; port 2: the data stick).
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
@@ -26,7 +26,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
@@ -27,7 +27,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
@@ -26,7 +26,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
@@ -27,7 +27,7 @@
|
||||
#
|
||||
# This file is part of the StarForth project.
|
||||
#
|
||||
# Licensed under the StarForth License, Version 1.0 (the "License");
|
||||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
#
|
||||
# You may obtain a copy of the License at:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user