Nishi Family › Compare › Small and From-Scratch Operating Systems
Nishi Compare · full-field SOTA · measured, not asserted
Small and From-Scratch Operating Systems
Nishi vs the full field — every axis measured or researcher-sourced, grouped by category; each strip shows the whole field at a glance.
Nishi OS (NXE lane) vs SliTaz - KolibriOS - MenuetOS - SerenityOS - Haiku - Alpine - ReactOS. The parity target is SliTaz: a sub-50MB OS that is immediately usable (desktop, browser, file manager, config tools). We are a BOOT+GUI-SHELL today with a sovereignty and safety core no one else in this field has; the app layer is the climb. Competitor cells quoted from each project's own site (2026-08-05); Nishi cells measured by our own gates the same day.
Footprint (quantitative)
SliTaz: "SliTaz GNU/Linux Cooking (55 MB)" (slitaz.org/en/get); Kolibri: "requires only a few megabytes of disk space"; Menuet: "Fits on a single floppy"; Alpine: "a minimal installation to disk requires around 130 MB"; Nishi volume is fixed-size FAT32 -- see the next row for what is actually OS
SliTaz 55 (cooking ISO)KolibriOS a few MBMenuetOS 1.44 (single floppy)SerenityOS n/a not publishedHaiku n/a not publishedAlpine ~130 disk installReactOS n/a not published
Nishi MEASURED: BOOTX64.EFI 1536 B + KERNEL.NXE 5064 B, both read back off the written USB and hash-matched to the build; SliTaz "root filesystem under 100 MB uncompressed"; Alpine "A container requires no more than 8 MB" [alpine-about]. This is the one axis where our number is extraordinary -- and it is small because the app layer is ABSENT, not because we compressed it
SliTaz <100000000 rootfs uncompressedKolibriOS n/a not publishedMenuetOS n/a not publishedSerenityOS n/a not publishedHaiku n/a not publishedAlpine 8000000 min containerReactOS n/a not published
Kolibri publishes "12 MB of RAM" (kolibrios.org/en) [kolibrios]; Nishi MEASURED from the image layout: 26 KB loaded image + 16 KiB memory-map buffer + 10 KiB kernel reserve, framebuffer supplied by firmware GOP; SliTaz does not publish a RAM figure on its site -- the 192-256 MB figure is the operator brief, marked community-cited not vendor-stated
SliTaz ~192-256 community-citedKolibriOS 12MenuetOS n/a not publishedSerenityOS n/a not publishedHaiku n/a not publishedAlpine n/a not publishedReactOS n/a not published
Nishi: zero -- own compiler (nx_cc), own executable format (NXE), own emulator, own FAT32 reader; the ONLY foreign format is the PE32+ header UEFI demands, which is the firmware toll every x86 OS pays; Haiku states "numerous open source projects are utilized ... integrated seamlessly" [haiku-about] [serenityos]
SliTaz Linux kernel + Busybox + Openbox + Midori/FirefoxKolibriOS FASM-built own kernel + driversMenuetOS own asm kernelSerenityOS custom core + some portsHaiku kernel own + "numerous open source projects"Alpine Linux kernel + musl + BusyboxReactOS own reimplementation of Windows
SliTaz: "5000+ packages available via Tazpkg from the mirror" [slitaz-about]; Nishi has NO package manager and no package format -- filed rung
SliTaz 5000+ via TazpkgKolibriOS n/a app bundlesMenuetOS n/a app bundlesSerenityOS own ports treeHaiku own + HaikuDepotAlpine large apk repositoryReactOS n/a
SliTaz: "32-bit and 64-bit (native 64-bit in active development)" + "ARM support - Raspberry Pi edition"; Kolibri "an i586 processor"; Menuet "written completely in 64bit assembly language" with 32-bit variants; Nishi x86-64 UEFI here -- a separate sovereign rv64 lane exists but the two have NOT met (that is the open NishiOS rung) [reactos]
SliTaz 3 (i486, x86_64, ARM)KolibriOS 1 (i586 x86)MenuetOS 2 (32-bit and 64-bit asm)SerenityOS 2 (x86_64, aarch64)Haiku n/a not publishedAlpine multipleReactOS 1 (x86 family)
Desktop and GUI (SliTaz parity target)
Nishi: UEFI GOP queried by the loader, 1280x800x4 measured 100 percent of 1,024,000 pixels painted, colour-exact on real OVMF (top bar RGB 46,59,78); Menuet "resolutions up to 1920x1080, 16 million colours" [menuetos]; Alpine is server/container-first, desktop is opt-in
Nishi paints a desktop v0 -- background, top bar, accent, taskbar with start block, one window frame with title and close box, NISHI wordmark -- 57 rect fills, verified identically on our emulator and real TianoCore
SliTaz ships Openbox; ours paints ONE static window frame and has no window manager at all -- the single biggest visual-parity gap. Filed rung
Nishi has NO pointer of any kind: no PS/2 mouse driver, no USB HID. Keyboard only. Filed rung
Nishi drives the 8042 directly post-ExitBootServices (ports 0x60/0x64, reads only); PROVEN on real QEMU 8042: tally rose 0 to 640 to 1280 to 2080 pixels with the firmware gone
Nishi DONE 2026-08-05: the kernel renders arbitrary NUL-terminated ASCII from the sovereign 8x8 font carried as payload DATA, at runtime, with the LINE CHOSEN BY THE MACHINE'S OWN STATE -- the assistant verdict is now written in WORDS, not only colour, because a colour block is legible only to someone holding the source. WITNESSED ON REAL TianoCore: 1281 ink pixels, and the banner reads back off the screendump as NISHI OS 0.1 GPT ESP NXE KERNEL AI: OFF. Non-vacuity: one binary, three states, three DIFFERENT transition counts (4227 OFF / 4255 ON / 4303 REFUSED). The whole font ships, not just the characters these lines use. Honest depth gap: 8x8 bitmap, fixed advance, no anti-aliasing, no wrap or shaping -- the estate's nx_ttf_fontlib has those on other surfaces, not yet on the metal
Nishi PAINTS a taskbar and start block but nothing is clickable or focusable -- pixels, not widgets
SliTaz: "Openbox desktop with homemade SliTaz graphical tools" and a web-based admin panel. Ours: none on metal
Built-in applications (what makes SliTaz immediately usable)
SliTaz "Midori and Firefox web browsers, Lynx in text mode"; Kolibri ships a web browser; Menuet an http client. Nishi has a REAL sovereign browser engine (nx_browser_render: CSS cascade, box layout, AA vector text, forms) proven on Linux and native Windows -- but it does NOT run on the NXE kernel. Honest n on this axis, and the single most valuable rung on the board
Nishi: none. Note the substrate is now there -- the loader reads a named file off the ESP through real firmware protocols, so listing and reading files is a shell rung, not a research rung
Kolibri ships a text editor; Menuet an "IDE Editor/Assembler". Ours: none on metal
SliTaz has "300+ standard GNU/Linux commands" via Busybox. Nishi has no shell, no command line, no process model on metal
Kolibri: "over 30 exciting games". Ours: none on metal (the estate has game engines, none on the NXE kernel)
SliTaz Tazpkg, Alpine apk. Nishi: none -- but note our update story is different by construction (see the kernel-as-a-file axis below)
Storage and filesystems
Nishi AS OF 2026-08-05 (FS-1): the image is GPT -- protective MBR (type 0xEE), primary header at LBA 1, 128-entry array, and a BACKUP header + array at the end of the disk, every structure carrying a CRC32 this emitter computes and its own gate recomputes. MBR was the genuinely dated part of our layout and it was OURS to fix (2 TiB cap, no integrity field). VERIFIED THREE WAYS: our emitter gate (sig + header CRC + array CRC + backup + type GUID + a guard that the partition cannot overlap its own backup), real TianoCore booting from it, and Linux sfdisk --verify reporting No errors detected. Disk and partition GUIDs are FIXED, not random, because a random GUID would destroy byte-identical rebuild -- a measured property we defend
Nishi NEW TODAY (N1-full): loader walks LoadedImage to DeviceHandle to SimpleFileSystem to OpenVolume to Open to Read and loads /KERNEL.NXE off the ESP; witnessed on real TianoCore, and our OWN FAT32 reader independently parses the same image (5 of 5 tamper teeth)
Nishi REFUSES writes BY CONSTRUCTION: the loader passes EFI_FILE_MODE_READ only, the emulator refuses a write-mode Open with a named sentinel, and the census gate pins the exact call set. This is a deliberate never-brick posture, but it IS a capability gap versus every rival
Kolibri: "full support for FAT12/16/32 file systems, read-only access to NTFS, exFAT, ISO9660, and Ext2/3/4". Nishi reads FAT32 only, read-only. FAT on the ESP is MANDATED -- UEFI firmware carries a FAT driver and the spec requires the EFI System Partition to be FAT [uefi-spec], so every UEFI OS ships one; that is a boundary toll, not a choice. The real gap is that we have NO filesystem of our own, so FAT32's limits become the OS's limits -- notably a 4 GiB maximum file size, which is a hard ceiling on model weights, plus no journaling and no checksums (our loader's own sum64 exists to compensate). FS-2 = a second partition with a sovereign checksummed filesystem
SliTaz: "Persistent storage via USB or mounted partition". Ours: nothing persists -- no writes at all
SliTaz: "Runs entirely in RAM: eject the CD, the system keeps running". Nishi PARTIAL and untested: after ExitBootServices the kernel touches no storage, so it plausibly survives removal -- but we have NOT run that experiment, so this is a ~ with a filed test, not a Y
Hardware and drivers
Nishi walks PCI config space itself post-ExitBootServices (CONFIG_ADDRESS 0xCF8 write-selector only, CONFIG_DATA 0xCFC read-only) with no firmware and no host OS -- witnessed on real hardware: host bridge VERIFIED, e1000 VERIFIED, unknown devices honestly UNBOUND
Nishi UNIQUE IN THIS FIELD: each registry row carries an op-list PROGRAM (READ/AND/EXPECT/SHR/END) that one unchanging interpreter executes; a new device class is a new ROW. Proven on a real e1000 with a 10-step program including a real BAR check, and the negative control (flip the expectation) MISMATCHes on real silicon. Every rival adds a driver by adding code
Nishi enumerates and VERIFIES an e1000 but cannot talk to it -- no rings, no DMA, no packets. This is the gate on the entire browser arc, and its own never-brick audit
SliTaz "ALSA sound support"; Kolibri drivers for "popular sound ... cards". Ours: none
Nishi is PS/2 only post-firmware; a real USB stack is a filed rung. On machines with no PS/2 emulation our post-EBS keyboard will not work -- stated plainly rather than discovered by a user
Sovereignty, safety and update (where Nishi leads)
Nishi: the compiler (nx_cc), the executable format, the image writer, the FAT reader, the emulator and the kernel are all ours, bits-up. EVIDENCE (MEASURED 2026-08-13): a return-42 static ELF from this toolchain is 188 bytes, which cannot contain a libc; and the compiler self-hosts under nx_cc_equiv_gate at 10/10 plus a self-host stage before any promotion, so bits-up is verified by rebuilding the compiler with itself. Kolibri/Menuet write their own kernels in FASM (a third-party assembler); Haiku states it uses numerous open source projects; the Linux-based rows inherit an enormous foreign base
Nishi kernel is NXE (own format, magic + version + payload sum64). EVIDENCE (WITNESSED on real firmware, and this cell cited none until 2026-08-14): the format is not merely declared -- real TianoCore/OVMF was made to print our literal NXE! refusal when handed an ESP with no kernel file, which only happens if the loader is genuinely parsing and validating our own format rather than deferring to a stock one. PE32+ exists in exactly ONE place -- the 1536-byte firmware shim -- and nothing downstream of it is a foreign format
Nishi: the loader re-derives the payload sum64 and compares the magic-version qword, and a mismatch prints NXE! on the firmware console and HOLDS -- never a blind jump. WITNESSED on real OVMF: an ESP with no kernel file made real firmware print our literal NXE!. Secure Boot is a different thing (chain of trust to firmware keys) and we do not have it -- filed
Nishi: the emitter's own gate pins the EXACT firmware call set -- 8 read-only calls (LocateProtocol, HandleProtocol x2, OpenVolume, Open+Read for the kernel, Open+Read for the optional assistant file), 1 refusal print, 1 jump -- and REFUSES to emit if one more appears. The census walks the sites the emitter RECORDED, not bytes that look like a call: a byte scan false-flagged a lea whose displacement happened to be 255; port I/O is decode-restricted to an audited allow-set; a write-mode file open is impossible by construction. No rival makes a machine-checked claim of this shape
Nishi: rebuilding after a no-op source change produced a byte-identical image sha; the toolchain swap earlier this week left the image sha UNCHANGED. EVIDENCE (MEASURED again 2026-08-14 on a different subject, which is what makes it a property rather than an anecdote): renaming two constants in nx_eqsat.nx changed the source text and the rebuilt binary came back byte-identical at sha 49a74350, 153,520 B. Reproducibility that holds across unrelated organs on unrelated days is the integer-determinism doctrine showing up as an observable, not a build flag. Most distros pursue reproducible builds; ours falls out of integer-only determinism
Nishi runs every rung under real TianoCore/OVMF as an ORACLE ONLY -- never in the product path -- and the pixel census is byte-exact against the sovereign emulator [tianocore-edk2]. Rivals are witnessed by their own user bases, which is a stronger form of the same thing
Nishi PARTIAL, corrected 2026-08-05 after MEASURING it: the loader READS /KERNEL.NXE off the ESP rather than embedding it, so updating the OS is genuinely a file copy and needs no image rebuild and no writer -- but moving to GPT made Windows treat the partition as a protected EFI System Partition, and a normal user now gets Access Denied on the mounted volume (under the old MBR type-0x0C layout it mounted as an ordinary FAT32 drive). FIXED THE SAME SESSION (FS-2b): the image now carries a SECOND partition with the Microsoft basic-data type GUID, which Windows, Linux and macOS all mount as an ordinary drive -- that is where NISHI.AI goes, so the file a user actually swaps needs no elevation anywhere. PROVEN END-TO-END ON REAL TianoCore FROM THE IMAGE: the loader booted from the ESP, enumerated every filesystem via LocateHandleBuffer, found NISHI.AI on partition 2 and ran the assistant on its weights (status ON, swatch 0xFFFFFFEC). Still Part, honestly, for TWO measured reasons: the KERNEL remains on the protected ESP so updating IT needs elevation on Windows, and on a PHYSICAL stick the data partition does not yet mount at all -- writing a fixed-size image to a larger device leaves the backup GPT mid-device instead of at the device's last LBA (measured: 7987200 device sectors vs 135269 image sectors). The image is correct; the WRITE PATH must relocate the backup GPT and rewrite the primary header, the way sgdisk -e does. Filed, not hidden
Optional on-device AI (the Nishi-only axis)
Nishi: the whole nofloat stack is integer -- deterministic and bit-exact BY CONSTRUCTION. EVIDENCE (MEASURED): the determinism is what makes exact-equality gates expressible at all -- the sibling emulator measures 0 divergences in 500 fuzz vectors against QEMU, and the estate's integer organs assert exact integer equalities rather than tolerance bands. A float stack cannot be tested that way, so the FORM of the tests is itself the evidence. No small-OS rival offers on-device inference at all, so this axis is ours by default and worth exactly what it is: a mechanism, not a product
Nishi PARTIAL: the kernel performs 32 signed multiply-accumulates -- the inner loop of every GEMM in our stack -- with no libc, no allocator, no float, and paints the accumulator as a pixel; expected -26 (0xFFFFFFE6) derived by a separate path and confirmed on BOTH the sovereign emulator and real OVMF. That is a proven MECHANISM and nothing about a real model. As of 2026-08-05 the same primitive also runs on weights READ FROM A FILE ON THE BOOT MEDIUM, verified on the sovereign emulator with an independently derived expected value
Nishi DONE 2026-08-05 and unique in this field. NISHI.AI is the SLOT, not the model: the blob carries the ORIGINAL model name, its ORIGIN URL and licence INSIDE the checksummed region, so provenance cannot be edited without detection and the user can always choose a different model. The loader searches EVERY volume for it (so it lives on the user-writable data partition, not the protected ESP), the kernel validates magic + lane count + sum64 before anything executes, and THE SCREEN NAMES THE MODEL IT LOADED. PROVEN ON REAL TianoCore with two different files and ONE unchanged binary: gemma-3-1b-it-abliterated-v2 renders 897 ink px and computes 0xFFFFFFE6; TinyLlama-1.1B-Chat renders 753 px and computes 0xFFFFFFEC. Swap the file, the words and the answer both change. Honest scope: the payload is still a 32-lane integer dot product, not a language model
Nishi PARTIAL and the MECHANISM is done: THE TOGGLE IS THE FILE -- copy /NISHI.AI onto the stick to enable, delete it to disable, and the kernel paints three DISTINCT states (OFF slate, REFUSED red, ON green) so the machine never claims a capability it does not have. All three refusal reasons (bad magic, wrong lane count, bad checksum) fall back to the built-in vectors, so an unvalidatable blob NEVER reaches the compute. What is still missing is a real MODEL: today the payload is a 32-lane integer dot product, not an assistant, and calling it one would be the lie this matrix exists to prevent. Honest ~ rather than Y. Target tier per the operator brief: 350M-1B class (Granite 350M, TinyLlama, MiniCPM, Gemma-3-1b) quantized to integer weights. Original note follows: honest n for everyone. The Nishi design is a toggle in the desktop shell with an explicit OFF default and a visible state, so the machine never runs a model the user did not ask for -- but neither the toggle nor the model exists yet. Target tier per the operator brief: a 350M-1B class model (Granite 350M, TinyLlama, MiniCPM, Gemma-3-1b class) quantized to integer weights
Nishi: an unknown PCI device paints UNBOUND rather than a false bind, a bad kernel file prints NXE! rather than booting something, and the emulator REFUSES an unmodeled port instead of inventing a value. EVIDENCE (WITNESSED on real firmware, cited here from 2026-08-14): the middle case is not hypothetical -- real TianoCore printed our literal NXE! and HELD rather than jumping. Refusal-over-fabrication is only a virtue if the refusal path has been seen to execute, and this one has, on somebody else's silicon. Refusal-over-fabrication is a design rule here, and it is why this matrix has so many n cells
Person · product · place — not yet measured for this domain
knowledge/compare/smallos.ppp (rows surface|nishi or c1..c4|label|url|connect naming OUR live surface and each rival's front door), run nx_ppp_probe domain smallos, and this section fills itself on the next beat: the same ruler on both sides — privacy and CX (third-party hosts, tracker classes, cookies, security headers), design and longevity (design hygiene, computed WCAG contrast, render-blocking resources, unsized media, script weight, theme and motion queries), findability (landmarks, skip link, on-site search, breadcrumb, headings, internal links).References
- [slitaz-about] SliTaz GNU/Linux project. About SliTaz (slitaz.org/en/about): live CD/USB distribution, runs entirely in RAM, root filesystem under 100 MB uncompressed, Openbox desktop with homemade graphical tools, Midori and Firefox, 5000+ packages via Tazpkg, ARM Raspberry Pi edition. publisher · read in our library
knowledge/fetched/cmp_smallos_slitaz.html· pinh26c0da817434df8d01698365970045952f8beff5aa5549695acea4562d1d50f7· accessed 2026-08-18 · vendor-docGrounds: THE PARITY TARGET column: OS bytes actually executed (under 100 MB rootfs), Packages installable (5000+ via Tazpkg), Web browser on the metal (Midori and Firefox), Runs entirely in RAM, Graphical configuration tools, Persistent user data -- every SliTaz cell in the register quotes this page. - [kolibrios] KolibriOS Project Team. KolibriOS official site (kolibrios.org/en): a few megabytes of disk, an i586 processor and 12 MB of RAM; text editor, image viewer, graphic editor, web browser and over 30 games; FAT12/16/32 with read-only NTFS, exFAT, ISO9660 and Ext2/3/4; kernel and drivers written in FASM. publisher · read in our library
knowledge/fetched/cmp_smallos_kolibrios.html· pinh10f4a518f20b34c95569443426cec8caf95e056884c36af0c8a41d4e1332f642· accessed 2026-08-18 · vendor-docGrounds: The KolibriOS column: RAM to reach the painted desktop (12 MB), Games (over 30), Multiple filesystem support, Text editor and Web browser on the metal, CPU architectures supported (i586) and the FASM note on Third-party code in the product path. - [serenityos] SerenityOS project. SerenityOS official site (serenityos.org): a graphical Unix-like operating system for desktop computers with a custom Unix-like core, links to source, man pages and FAQ. publisher · read in our library
knowledge/fetched/cmp_smallos_serenityos.html· pinhb761a0ced4aea53bda5faada986edeee972d29e7677024a04ddc7b0c9dea886d· accessed 2026-08-18 · vendor-docGrounds: The SerenityOS column: the custom core + some ports note on Third-party code in the product path and own ports tree on Packages installable; the desktop, window-manager, browser and file-manager Y cells (a full graphical Unix-like desktop is the project's stated scope). The mirror is the whole homepage (1758 bytes -- the page really is that small). - [haiku-about] Haiku Inc. About Haiku (haiku-os.org/about): open-source operating system specifically targeting personal computing, inspired by BeOS, custom kernel with numerous open source projects utilized and integrated seamlessly. publisher · read in our library
knowledge/fetched/cmp_smallos_haiku.html· pinh56d8c96df6f01c266e5be4d4b7097c8d75832055089bba59a10f8d7f84490bea· accessed 2026-08-18 · vendor-docGrounds: The Haiku column: the kernel own + numerous open source projects cell on Third-party code in the product path, own + HaikuDepot on Packages installable, and the desktop and application Y cells. - [alpine-about] Alpine Linux Development Team. About Alpine Linux (alpinelinux.org/about): built around musl libc and busybox; a container requires no more than 8 MB and a minimal installation to disk requires around 130 MB; own package manager apk; OpenRC init. publisher · read in our library
knowledge/fetched/cmp_smallos_alpine.html· pinhb2605b348a9ed28614114ce7005112f07345e2622553325ff9c11333b1c09876· accessed 2026-08-18 · vendor-docGrounds: The Alpine column: Boot medium image size (~130 MB disk install), OS bytes actually executed (8 MB minimum container), Package manager (apk) and the Linux kernel + musl + Busybox cell on Third-party code in the product path -- Alpine is the server/container-first row, desktop opt-in. - [reactos] ReactOS Foundation. ReactOS official site (reactos.org): a free and open-source operating system for x86 that is binary-compatible with Windows programs and drivers, an own reimplementation rather than a Linux distribution. publisher · read in our library
knowledge/fetched/cmp_smallos_reactos.html· pinh414e1fc7f568b7f55e5fcac71ee92d451274af7f1fe939143add7daa17f25cd9· accessed 2026-08-18 · vendor-docGrounds: The ReactOS column: the own reimplementation of Windows cell on Third-party code in the product path, CPU architectures supported (x86 family) and the desktop and application Y cells. - [uefi-spec] UEFI Forum. Unified Extensible Firmware Interface (UEFI) Specification, current release as listed on uefi.org/specifications: boot services and ExitBootServices, Graphics Output Protocol, Simple File System protocol, GUID Partition Table and the FAT-formatted EFI System Partition. publisher · read in our library
knowledge/fetched/cmp_smallos_uefispec.html· pinhcad4cb51d8a95c0320426cfb90f3b14b3add8fed7ddb871efbf20543b819aa30· accessed 2026-08-18 · published-standardGrounds: The Storage and Hardware rows that name the firmware toll: Modern partition table (GPT), Read files from the boot medium (LoadedImage to SimpleFileSystem to Open to Read), Multiple filesystem support (FAT on the ESP is MANDATED by this spec), Native-resolution framebuffer graphics (GOP), Keyboard input after firmware exit (post-ExitBootServices) and the PE32+ header note -- the ONLY foreign format in the product path is the one this specification demands. - [tianocore-edk2] TianoCore. EDK II -- the open-source reference implementation of the UEFI and PI specifications (github.com/tianocore/edk2), whose OVMF package is the firmware image used as the foreign oracle here. publisher · read in our library
knowledge/fetched/cmp_smallos_edk2.html· pinh59d7a0377f329210cb7c5fb757211d9d7b938fef8aa5e08d0f3e4c16b2e42de2· accessed 2026-08-18 · source-readGrounds: The Boot chain independently witnessed by a foreign oracle row and every WITNESSED ON REAL TianoCore/OVMF evidence sentence in the register (NXE! refusal printed by real firmware, 1281 ink pixels, GPT boot, NISHI.AI found on partition 2): OVMF/EDK II is the third-party firmware those claims ran under, used as an ORACLE ONLY and never in the product path.
Generated by nx_swcompare_sota from knowledge/compare/smallos.sota — quantitative axes measured/sourced; researcher-fed (nx_swcompare_research). Zero JS, zero trackers.
Where we are. Measured, and the shape is unchanged since the 2026-08-05 register. WHAT WORKS, each witnessed rather than asserted: a GPT image authored byte-by-byte with CRC32 on every structure, verified by our emitter gate, by real TianoCore booting from it and by Linux sfdisk --verify; a 1536-byte PE32+ shim that is the only foreign format in the product path, which reads /KERNEL.NXE off the ESP through real firmware protocols, re-derives its payload sum and HOLDS with its own printed refusal rather than jumping blind (real TianoCore was made to print that refusal); a 5064-byte kernel that paints a desktop, renders arbitrary strings from a sovereign 8x8 font carried as payload data with the line chosen by the machine's own state, drives the 8042 directly after ExitBootServices (tally rose 0 to 640 to 1280 to 2080 pixels with the firmware gone) and walks PCI config space itself, binding devices from a DATA ROW carrying an op-list program that one unchanging interpreter executes -- proven on a real e1000 with the negative control mismatching on real silicon; and an optional assistant slot where the toggle IS the file, proven on real TianoCore with two different weight blobs and one unchanged binary. WHAT DOES NOT: no pointer, no window manager, no file manager, no shell, no network packets, no persistence, no browser on the metal, and no real model behind the assistant slot. AND ONE THING IS WORSE THAN MISSING -- it is broken where a user meets it: written to a physical stick larger than the image, the backup GPT lands mid-device rather than at the last LBA (7,987,200 device sectors versus 135,269 image sectors) and the user-writable data partition does not mount at all. The image is correct; the write path is not.
Where we need to go. Reach parity of KIND with SliTaz -- the operator's declared target, a sub-50MB OS that is immediately usable -- without surrendering a single sovereign EXCEED. Those exceeds are shipping criteria, not decoration: the whole stack built by our own compiler with zero third-party code in the product path, a native executable format that is not ELF or PE, a loader that validates before it executes, never-brick properties machine-checked by the emitter rather than promised in a comment, a bit-exact reproducible image, and an OS update that is a single file copy. The app layer is the climb and none of it is research -- every rung below has a proven substrate underneath it. The 6600-byte figure is honest in both directions: it is small because the app layer is absent, and it must be allowed to grow.
Research bar. SliTaz (the declared parity target) is measured on a sub-50MB live OS that is immediately usable: Openbox desktop, homemade graphical tools, Midori and Firefox, 300-plus commands via Busybox, 5000-plus packages via Tazpkg, runs entirely in RAM. Theirs: the operator brief of 2026-08-05 names this as the bar, and it is quoted from SliTaz's own site. Ours: SO1 through SO4 close the desktop half; SO7 closes the browser row. Package management is deliberately NOT a rung -- our update story is a file copy by construction.
Research bar. Haiku and SerenityOS (the full-desktop bar) is measured on complete compositing desktops with their own window managers, file managers and shipped browsers, written from scratch. Theirs: the two rivals whose ambition matches ours and whose app layer does not. Ours: SO2 and SO7 are graded against these, not against SliTaz, because they built theirs rather than assembling it.
Research bar. KolibriOS (the tiny bar) is measured on a few megabytes of disk, an i586 processor and 12 MB of RAM, with a text editor, image viewer, graphic editor, web browser and over 30 games. Theirs: proof that a from-scratch OS can be tiny AND have an app layer -- the answer to any claim that our 6600 bytes and our missing apps are the same fact. Ours: every rung below grows the byte count on purpose; smallness is not the exceed, sovereignty and never-brick are.
| Rung | Closes with | Definition of done (pre-declared) | Executor | Est. |
|---|---|---|---|---|
| Boot medium usable on a real USB stick (SO0) | nk0_gpt_relocate | The write path must relocate the backup GPT to the device's last LBA and rewrite the primary header's alternate-LBA and last-usable-LBA fields with recomputed CRC32s, the way sgdisk -e does, for any device larger than the image. ACCEPT: after writing to a device whose sector count differs from the image's, Linux sfdisk --verify reports no errors AND the second partition mounts as an ordinary drive on a machine that is not this one, AND a NEG-CONTROL with one byte of the relocated backup header mutated is REJECTED rather than silently accepted. Byte-identical rebuild of the base image must survive the change. | Organ | 0.5 u |
| Pointer input (PS/2 mouse and USB HID) (SO1) | nk0_mouse_poll | A PS/2 mouse driver on the 8042 alongside the existing keyboard path, then a USB HID boot-protocol path for machines with no PS/2 emulation. ACCEPT: a pointer moves and its buttons register on the sovereign emulator AND on real TianoCore, with the cursor position derived from the device packets rather than a demo animation -- proven by a NEG-CONTROL run with no device attached, in which the cursor must NOT move. Port I/O stays inside the audited decode allow-set. | Organ | 1 u |
| Window manager (move, resize, focus, z-order) (SO2) after SO1 | nk0_wm_focus | Real windows over the existing framebuffer: a z-ordered list, hit-testing against the pointer, drag to move, drag an edge to resize, click to focus, and a close box that closes. ACCEPT: three windows are created, the second is raised by a click, moved, resized and closed, and the resulting framebuffer is pixel-compared against an independently derived expected image on both the sovereign emulator and real TianoCore -- with an ANTI-VACUITY tooth that a click landing on the BACKGROUND raises nothing, which a paint-everything implementation cannot pass. | Organ | 2 u |
| File listing and a file manager on the metal (SO3) | nk0_fs_list | Directory enumeration over the already-proven ESP read chain and our own FAT32 reader, surfaced as a navigable list. ACCEPT: the manager lists the real root of the booted volume and its second partition, the entries match what the sovereign FAT32 reader independently extracts from the same image, and opening a file displays its bytes. Read-only by construction -- writes belong to SO6 and must REFUSE here. | Organ | 1 u |
| Terminal and shell on the metal (SO4) after SO3 | nk0_shell_line | A line editor and a command dispatcher on the kernel's own text rendering, with a small built-in command set over the file, device and PCI facilities that already exist. ACCEPT: a scripted key sequence typed through the proven 8042 path produces a transcript byte-identical to an independently derived expected transcript, including the error text for an unknown command -- so a shell that accepts everything cannot pass. | Organ | 1.5 u |
| Network driver on the metal (e1000 rings, DMA, packets) (SO5) | nk0_e1000_tx | Transmit and receive descriptor rings, DMA buffers and interrupt or poll handling for the e1000 we already enumerate and VERIFY through our own PCI walk. This is the gate on the entire browser arc and it carries its own never-brick audit, because it is the first thing we let write to device memory. ACCEPT: a frame we constructed is transmitted and observed by a third-party capture on another host, and a frame sent from that host is received and its bytes match -- external oracle in both directions, never a loopback that proves only that our own code agrees with itself. | Organ | 3 u |
| Persistent user data on a sovereign checksummed filesystem (SO6) after SO0 | nk0_sfs_write | A second partition carrying our own filesystem with per-block checksums and no 4 GiB file ceiling, and the first sanctioned WRITE path in the whole lane. ACCEPT: a file written on one boot is read back byte-identical on the next with its checksum verified, a deliberately corrupted block is DETECTED and REFUSED rather than returned, and the never-brick audit shows the write path cannot reach the ESP or any firmware region. The read-only posture on the ESP is preserved, not relaxed. | Organ | 2 u |
| Browser engine on the NXE kernel (SO7) after SO2,SO5 | nk0_browser_page | Port the browser engine that is already PROMOTED and running on Linux and native Windows onto the NXE kernel over SO5's network path and SO2's windows. ACCEPT: a page fetched over our own network driver renders on the metal and its framebuffer struct-compares against the same page rendered by the same engine on Linux from the same saved bytes -- the engine is the control, so any difference is the port, not the renderer. | Organ | 3 u |
| A real quantized model behind the NISHI.AI slot (SO8) after SO6 | nk0_ai_generate | The slot, the provenance record, the validation, the three visible states and the fallback are all DONE and witnessed; what is missing is a real model. Load a 350M-1B class model quantized to integer weights from the user-writable partition and generate text. ACCEPT: the same unchanged binary produces DIFFERENT and individually correct output for two different weight files, the screen NAMES the model it loaded, and every one of the three refusal reasons still falls back to the built-in vectors so an unvalidatable blob NEVER reaches the compute. Integer-only, so the output is bit-exact reproducible. | Organ | 3 u |
Milestones
| Milestone | Rungs | Cumulative |
|---|---|---|
| S0 · The stick works on real hardware | SO0 | 0.5 u |
| S1 · Interactive desktop (pointer, windows, files, shell) | SO1,SO2,SO3,SO4 | 6 u |
| S2 · On the network and persistent | SO5,SO6 | 11 u |
| S3 · SliTaz parity of kind (browser and assistant on the metal) | SO7,SO8 | 17 u |
Risk register
| Risk | Likelihood x impact | Mitigation |
|---|---|---|
| A write path reaches firmware or the ESP and bricks a machine | possible x catastrophic | SO6 is the only rung that introduces writes, it is confined to the second partition, the loader's read-only file modes are unchanged, and the emitter's own gate pins the EXACT firmware call set and REFUSES to emit if one more appears. Never-brick is proven by the emitter, not promised in a comment. |
| A rung is graded on our own emulator only | likely x high | Every accept rule above names an EXTERNAL witness -- real TianoCore/OVMF as an oracle, a third-party packet capture, sfdisk --verify, or the Linux build of our own browser engine as the control. Our emulator is the fast loop, never the verdict. |
| The app layer grows the byte count and the smallness claim is read as lost | likely x low | Smallness was never the exceed; sovereignty, never-brick and reproducibility are. The register already says the 6600-byte figure is small BECAUSE the app layer is absent -- publish the growth beside the capability rather than defending the number. |
| A watch contract flips on a stub carrying the right name | possible x high | Each rung's accept rule names an anti-vacuity tooth a trivial implementation cannot pass: a background click that raises nothing, an unknown command that must error, a corrupted block that must be refused, two weight files that must give different answers. |
Watch contracts (measured)
| Axis | Organ | Symbol | Status | Note |
|---|---|---|---|---|
| LIVE: GPT partition table authored byte-by-byte with CRC32 and a backup header | runtime/_hdl_build/nx_efi_fat32_image.nx | wr_gpt_hdr | PRESENT decl | Protective MBR, primary header at LBA 1, 128-entry array, backup header and array at the end of the disk, every structure carrying a CRC32 this emitter computes and its own gate recomputes. Verified three ways: our emitter gate, real TianoCore booting from it, and Linux sfdisk --verify reporting no errors. Disk and partition GUIDs are FIXED so byte-identical rebuild survives |
| LIVE: Sovereign FAT32 reader (no host OS, no firmware, no third-party driver) | runtime/_hdl_build/nx_esp_boot.nx | esp_extract | PRESENT decl | Walks the BPB, the FAT chain and the root directory to extract a named file from our own ESP image, with tamper teeth. FAT on the ESP is MANDATED by the UEFI specification, so every rival ships a reader too -- ours is the only one that is also ours |
| LIVE: Loader validates the kernel before jumping (never-brick by construction) | runtime/nx_nxe_lib.nx | nxe_neverbrick_ok | PRESENT decl | EXCEED and alone in this field: the loader re-derives the payload sum and checks the capability and never-brick bits BEFORE mapping anything executable, and a mismatch prints its refusal on the firmware console and HOLDS. Real TianoCore was made to print our literal refusal when handed an ESP with no kernel file, so the refusal path has been seen to execute on somebody else's silicon |
| GAP: Boot medium usable on a real USB stick (backup GPT relocation) | runtime/_hdl_build/nx_efi_fat32_image.nx | nk0_gpt_relocate | WATCHING decl | MEASURED AND FILED ON THE SOTA PAGE, NEVER DRAINED: writing a fixed-size image to a larger device leaves the backup GPT mid-device instead of at the last LBA (7,987,200 device sectors versus 135,269 image sectors), so on a physical stick the user-writable data partition does not mount AT ALL. The image is correct; the WRITE PATH must relocate the backup GPT and rewrite the primary header, the way sgdisk -e does. Smallest rung on the board and it gates whether anyone can use the medium |
| GAP: Pointer input (PS/2 mouse and USB HID) | runtime/_hdl_build/nx_nxe_kernel0.nx | nk0_mouse_poll | WATCHING decl | No pointer of any kind: no PS/2 mouse driver, no USB HID. Keyboard only, and PS/2 only, so on machines with no PS/2 emulation even that stops working after ExitBootServices. Nothing painted on the desktop can be clicked, which is why the taskbar and start block are pixels rather than widgets |
| GAP: Window manager (move, resize, focus, z-order) | runtime/_hdl_build/nx_nxe_kernel0.nx | nk0_wm_focus | WATCHING decl | The single biggest visual-parity gap: we paint ONE static window frame and have no window manager at all. SliTaz ships Openbox; SerenityOS and Haiku ship full compositing desktops of their own design and are the bar |
| GAP: File listing and a file manager on the metal | runtime/_hdl_build/nx_nxe_kernel0.nx | nk0_fs_list | WATCHING decl | The substrate is already proven -- the loader reads a named file off the ESP through real firmware protocols and our own FAT32 reader parses the same image independently -- so listing a directory is a shell rung, not a research rung |
| GAP: Terminal or shell on the metal | runtime/_hdl_build/nx_nxe_kernel0.nx | nk0_shell_line | WATCHING decl | No shell, no command line, no process model on the metal. SliTaz is Best here on its own quoted figure: 300-plus standard commands via Busybox out of the box |
| GAP: Network driver on the metal (e1000 rings, DMA, packets) | runtime/_hdl_build/nx_nxe_kernel0.nx | nk0_e1000_tx | WATCHING decl | We ENUMERATE and VERIFY a real e1000 post-ExitBootServices through our own PCI config walk, and honestly report unknown devices as UNBOUND -- but we cannot talk to it: no rings, no DMA, no packets. This is the gate on the entire browser arc and it carries its own never-brick audit |
| GAP: Persistent user data (a sovereign checksummed filesystem with writes) | runtime/_hdl_build/nx_efi_fat32_image.nx | nk0_sfs_write | WATCHING decl | Nothing persists: the loader passes read-only file modes by construction and the emulator refuses a write-mode open with a named sentinel. That is a deliberate never-brick posture AND a real capability gap. We also have no filesystem of our own, so FAT32's limits become the OS's limits -- a 4 GiB maximum file size is a hard ceiling on model weights, with no journaling and no checksums |
| GAP: Web browser on the metal | runtime/_hdl_build/nx_nxe_kernel0.nx | nk0_browser_page | WATCHING decl | We have a REAL sovereign browser engine with CSS cascade, box layout, anti-aliased vector text and forms, promoted and running on Linux and native Windows -- it simply does not run on the NXE kernel. Honest absent on this axis, and the most valuable single rung on the board. Haiku is Best: a full desktop browser shipped in the box |
| GAP: Optional on-device assistant behind the NISHI.AI slot (a real model) | runtime/_hdl_build/nx_nxe_kernel0.nx | nk0_ai_generate | WATCHING decl | A lead nobody in this field holds, and the MECHANISM is already done and proven on real firmware with two different weight files and one unchanged binary: the toggle IS the file, the blob carries model name, origin URL and licence inside the checksummed region, all three refusal reasons fall back to built-in vectors, and the screen NAMES the model it loaded. What is missing is a real MODEL -- today the payload is a 32-lane integer dot product, and calling that an assistant would be the lie this register exists to prevent |
watch rows=12 landed=0 watching=9 present=3 missing=0 absent=0 (partition sums)