Files
LithosAnanake/kernel/include/starkernel/v4/sk_v4_identity.h
T
rajamesandClaude Opus 5.5 6452c540a2 fix(v4): the identity gate's final review, items 1-4
From the fresh whole-branch review of the identity gate (With fixes; no
Critical, four Important):
1. A drive pulled while a line ran: the drives are looked at before every
   prompt (sk_v4_identity_check_now), so no prompt is shown once she is
   gone and what was typed after the pull does not run as Zuse.
2. Pulled while a line WAITS: the wait is ended at logout, by an empty
   line, and not carried into her next session (Captain Bob, 2026-10-26:
   "end the waiting line at logout"); re-attaching brings the prompt back.
3. EMERGENCY_CONSOLE_ENABLED: v4 honours it as v3 does -- a bring-up build
   has a prompt with no drive (boards/BRINGUP.md A2).
4. Keys typed at a headless machine are read and dropped, not run as
   whoever logs in next. (v3 has the same gap, sk_repl_headless_wait;
   reported, not changed.)

Each a QEMU session red then green (amd64): midpull 111650 -> 112953,
waitpull 111907 -> 113154, emergency 112524 -> 113609, typeahead
112248 -> 113359; headless 113800 and hotplug 114043 still pass.
Accepted: three clean qemu boots to [zuse@Hera] ok>, POST 538/538,
dict_hash 0xfec8c47cfc6f437f on all three; hotplug on aarch64 and
riscv64; make -C v4 test test-32 sanitize hosted-check EXIT 0;
make -C v4 test-32 0 failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 13:04:06 -04:00

33 lines
1.3 KiB
C

/* sk_v4_identity.h -- the identity gate for the v4 boot: no identity drive,
* headless; Zuse's minted thumbdrive, a console.
* docs/v4.0.0/plans/2026-10-26-engine-step4-identity-gate.md.
*
* Built only with STARFORTH_V4=1 (Kconfig.kernel).
*/
#ifndef STARKERNEL_V4_SK_V4_IDENTITY_H
#define STARKERNEL_V4_SK_V4_IDENTITY_H
/* After POST and the block chain: Zuse's public key from the genesis marker,
* every xHCI controller brought up, and the heartbeat started, as the v3
* path does before its headless wait. */
void sk_v4_identity_boot(void);
/* 1 while Zuse's session holds: her drive is attached and checked. */
int sk_v4_identity_present(void);
/* Service the heartbeat and, once a second, the USB drives that have arrived
* or left (v3's idle beat, its USB part). Called while waiting for a key
* with nothing typed. */
void sk_v4_identity_beat(void);
/* The USB drives that have arrived or left, now, not waiting for the next
* beat: before each prompt, so that a drive pulled while the last line ran
* is seen before a prompt is shown. */
void sk_v4_identity_check_now(void);
/* Headless: no prompt, and what is typed is read and dropped, until Zuse's
* session begins (v3's sk_repl_headless_wait()). */
void sk_v4_identity_wait(void);
#endif /* STARKERNEL_V4_SK_V4_IDENTITY_H */