Skip to content
kazah-png edited this page Aug 25, 2026 · 8 revisions

Log

Append-only, chronological record of wiki maintenance: ingests (new source material folded in), queries (answers worth keeping filed back as pages), and lint passes (health checks). See Wiki-Conventions for what each entry type means and when to write one.

Format: every entry starts with ## [YYYY-MM-DD] type | subject — a consistent prefix so the log stays parseable with plain Unix tools:

grep "^## \[" Log.md | tail -5          # last 5 entries
grep "^## \[.*\] ingest" Log.md         # every ingest
grep "^## \[2026-07" Log.md             # everything from July 2026

Newest entries at the bottom. Do not edit past entries except to fix a factual error in them — this is a history, not a draft.


[2026-07-11] ingest | Initial wiki, v5.8.25

16 pages covering the kernel as of v5.8.25 (the full-screen edit editor). Architecture, Boot Process, Building, Drivers, Filesystem, GUI Subsystem, Home, Memory Management, Networking Stack, Process Management, SMP, Security, Shell, Syscalls, Userspace, Version History.

[2026-07-27] lint | Stale-version audit

Compared the wiki against the live nyx-os source tree. Found the wiki frozen at v5.8.25 against a source tree at v5.9.86 — 61 releases undocumented, including the entire TLS/crypto arc, the Selene browser, image decoders, BSD sockets, real threads, and working multi-core user processes. Every constant on the existing pages checked and found wrong (KERNEL_BASE, MAX_PROCESSES, user stack address, syscall count, VFS node pool size, identity-map coverage, credential hashing).

[2026-07-27] ingest | Full rewrite to v5.9.86

Rewrote all 16 existing pages against the current source. Added four new pages: Cryptography-and-TLS, Selene-Browser, Image-Decoders, Desktop-Applications. Rebuilt _Sidebar/_Footer. Regenerated Version-History programmatically from the AGENTS.md release table (248 rows) rather than hand-transcribing it. Result: 16 → 20 pages, 805 → 2841 lines, 0 broken links.

[2026-07-27] ingest | Gentoo-level documentation pass

Raised house style to match a mature technical wiki: established Wiki-Conventions (prompts, CODE/FILE-captioned blocks, GitHub alert admonitions, mandatory article skeleton). Added four HOWTO procedures (system call, userspace program, shell command, GUI application), each with a worked example, checklist, and troubleshooting table. Added Kernel-Data-Structures, Debugging (with a real annotated qemu_serial.txt transcript), Troubleshooting, FAQ, Glossary, Contributing. Cross-linked and footered every page with See-also + External-resources sections. Result: 20 → 33 pages, 2841 → 5674 lines, 37 admonitions, 152 tables.

[2026-07-27] ingest | Exhaustive field-level reference pass

Built five reference pages by extracting data programmatically from the source rather than transcribing by hand: Syscall-Reference (all 57 calls from user/syscall.h + kernel/core/syscall.c), Command-Reference (all 104 builtins via regex over commands[] in kernel.c, verbatim help strings, + 62 ring-3 programs), Hardware-Reference (GDT/TSS/IDT/MSR/PTE/I-O-port layout from kernel.h/gdt.c/apic.h/spinlock.h), Format-Reference (every network header, ELF64, CPIO newc, EXT2, TLS, image-format byte layout), Source-Tree-Reference (every file in kernel/ and user/ with real wc -l counts). Mid-pass, the source advanced v5.9.86v5.9.91 (JPEG decoder, animated GIF, cooperative image loading); folded in as discovered rather than re-running from a stale snapshot. Result: 33 → 38 pages, 5674 → 8951 lines, 64 admonitions, 335 tables, 0 broken links / 0 orphans (validated programmatically, code blocks excluded from the link check).

[2026-07-27] query | Boot protocol contract (GRUB/Multiboot2, load address, EFI)

User (writing their own bootloader) asked: what sector is the kernel loaded from, what size, and is it EFI / does it use kernel_entry.ld. Answered from a fresh parse of the ELF program headers (0x100000 load address, 0x100040 entry, two PT_LOAD segments, 18.89 MB RAM footprint vs 1.61 MB on disk) and the ISO (El Torito present, no BOOTX64.EFI — BIOS-only, Multiboot 2 via 0xE85250D6). Filed back into Boot-Process as a "Boot protocol contract" section, since it's exactly the kind of synthesis this pattern says should compound rather than evaporate into chat history.

[2026-07-27] query | Ethernet vs Wi-Fi

User asked whether NyxOS supports Wi-Fi. Answered: no — rtl8139.c is the only NIC driver in OBJS_KERNEL; the sole "wifi" hits in the tree are 12 false positives (substring of newpath) and one genuinely dead, uncalled stub (load_wifi_firmware(void) {} in kernel.c, alongside other empty remote-syscall stubs that look like leftovers from the pre-v2.0.0 "hacking" code removal). Filed back into Networking-Stack (a "Supported hardware" note) and FAQ (a new entry), since this is a question anyone evaluating the OS will ask again.

[2026-07-27] ingest | LLM Wiki pattern adopted

User shared the "LLM Wiki" pattern (raw sources / wiki / schema layers; ingest / query / lint operations; index.md + log.md for navigation and history) and asked to apply it to this wiki. Mapped onto what already existed: raw sources = the nyx-os git repository (kernel/user trees, AGENTS.md, commit history — the wiki never edits these); the wiki = this repository; the schema = Wiki-Conventions, extended with explicit ingest/query/lint workflow sections. Added Index (content-oriented catalog, 38 pages) and this file. Filed the two pending query answers above back into the wiki as the first live demonstration of the query→file-back step: a "Boot protocol contract" section on Boot-Process, and a "Supported hardware: Ethernet only" note on Networking-Stack plus a matching FAQ entry.

[2026-07-27] ingest | Obsidian vault wired up as the actual brain

User asked to use Obsidian for real, not leave it as an empty placeholder vault. Found a fresh NyxOS Brain/ subfolder already created (default welcome note, graph/backlink/tag panes already pinned open) but nested one level inside the wiki and containing none of its content. Root-caused why simply pointing it at the wiki wouldn't have worked: every internal link used the spaced page title ([[Boot Process]]), but GitHub Wiki's own file-naming rule means the real files are hyphenated (Boot-Process.md); GitHub's renderer silently substitutes spaces for hyphens when resolving [[...]], but Obsidian resolves by exact filename with no such substitution — so every multi-word link would have shown as an unresolved phantom node, splitting the graph in two per page instead of merging it. Rejected the obvious fix (YAML aliases: frontmatter) because GitHub does not strip frontmatter on wiki pages the way Jekyll does on Pages, so it would have rendered as a visible junk block atop all 40 pages.

Fixed at the source instead: wrote a script that maps every filename to its space-form title and rewrote all 308 affected [[...]] occurrences across 38 files to [[Hyphenated-Name|Display Text]] — same rendered text on GitHub, now also resolvable in Obsidian. Verified 0 broken links under a strict exact-filename validator (Obsidian's actual resolution rule) before and after. Moved .obsidian/ up from the nested NyxOS Brain/ folder to the wiki root so the vault is the wiki (no converted copy); deleted the now-empty placeholder folder and its default welcome note. Retargeted workspace.json's initial tab from the placeholder to Home. Added colorGroups to graph.json matching Index's categories (Kernel core, Storage/network, Graphics/apps, Userspace, HOWTO, Reference, Project/meta) via filename-pattern queries — config only, no content touched. Added .gitignore for the session-specific workspace.json/workspace-mobile.json while keeping app.json/appearance.json/core-plugins.json/graph.json tracked, since those are the reproducible "IDE setup" the pattern calls for. Documented the mandatory hyphenated-target linking rule and the vault layout in Wiki-Conventions (new Obsidian vault section) so future edits stay Obsidian-compatible by construction.

[2026-07-27] ingest | Update to v5.9.112 (source reorg + 21 releases)

Lint check against the source found the wiki at v5.9.91 while the tree had reached v5.9.112 — 21 releases behind — and the whole kernel had been reorganised from flat kernel/*.c into subject subfolders (core/ mm/ proc/ fs/ net/ crypto/{,tls/} image/ drivers/{video,input,audio,misc,net}/ gui/{core,apps,games}/ auth/), invalidating every path citation in the wiki. Verified first that the invariant counts had not moved (57 syscalls, 104 builtins, 62 ELFs, and every capacity constant), so those pages needed no touch.

Path reorg. Built a filename→new-path map from a walk of the tree and rewrote all 69 kernel/<file> citations across 20 pages to their subfolder paths (kernel/fs/vfs.c, kernel/net/tcp.c, kernel/gui/apps/selene_win.c, …). Fully rewrote Source-Tree-Reference around the new layout with fresh wc -l counts, and added a folder-structure table + VPATH note to Architecture.

New content (v5.9.92–99). RSA-PKCS1-SHA512 SKE (0x0601) completing all five SKE signature schemes → Cryptography-and-TLS + Format-Reference; GIF NETSCAPE loop count → Image-Decoders; and Selene's render-polish arc (HTML entities, redirect following, colspan/rowspan, nested tables, ordered/nested lists, <pre>/<blockquote>) → Selene-Browser.

Maintenance pass (v5.9.100–112). Documented the substantive bug fixes on their subsystem pages: the NX-bit leak in get_phys_addr and the heap-fragmentation fix → Memory-Management; the half-applied renameFilesystem; the TCP receive-path fixes (data+FIN, in-order gate, remote NULL-deref DoS) and the HTTP snprintf over-read → Networking-Stack; the X.509 date-parser hardening → Cryptography-and-TLS; the 100 %-warning-clean build + -WshadowBuilding; and a "v5.9.100+ maintenance pass" summary table → Security. Appended all 21 rows to Version-History (new "General maintenance" era). Bumped the global version, release count (248→274), and Index/Version-History line counts. Historical version strings (e.g. "v5.9.86 → v5.9.91 mid-pass") left intact. Lint: 0 broken links, 0 orphans.

[2026-07-27] query | Context switching and saved registers

User asked how the kernel handles context switching and which CPU registers it saves. Answered from a fresh read of kernel/core/switch.asm (the switch_context routine — found to be unused dead code from the cooperative era), kernel/core/isr_stubs.asm (SAVE_REGS/RESTORE_REGS macros and the irq_common switch path), and kernel/proc/process.c (irq_scheduler_tick / sched_target). Key facts: NyxOS switches inside the timer ISR, not via a dedicated call; SAVE_REGS saves all 15 GPRs, iretq restores RIP/CS/RFLAGS/RSP/SS; no FPU/SSE state (kernel is -mno-sse) and no swapgs; CR3 and TSS.RSP0 are swapped as part of the switch, with the resume-CR3 decided by the interrupted ring.

Filed the full answer into Process-Management as a new Context switching section (register lists, the CR3/ring rule, the per-process kernel stack, the per-CPU handoff slots, and the SAVE_REGS-first origin bug), cross-linked from the TSS rsp0 row in Hardware-Reference and the process_t.stack/kernel_stack rows in Kernel-Data-Structures, and added a Context switch term to Glossary. This is a question anyone studying the kernel will ask again, so it compounds rather than evaporating into chat.

[2026-08-01] ingest | Update to v6.4.9 — the in-OS toolchain and persistent home

Lint against the source found the wiki tracking v5.9.180 while the tree had reached v6.4.9 (HEAD; KERNEL_VERSION already bumped to the in-dev "6.4.10") — ~60 releases undocumented across a major-version jump. Verified the invariant counts first: 57 syscalls unchanged, builtins 104 → 107 (the new cc, plus two others already in-table), ring-3 programs 62 → 63 (the new /tcc.elf).

New page — Toolchain (the flagship). Phase 2 (v6.1.0v6.4.9) put a C toolchain inside the OS. Documented field-by-field from the source: the compiler-complete libc (user/libc.crealloc/calloc/memmove, ctype, FILE* stdio, fprintf family, strtod); the cc builtin (cmd_cc in kernel/core/kernel.c — link / -c / --self-libc modes, the -nostdlib -static runtime, the 0x400000 base); the ported TinyCC 0.9.27 (user/tcc/, x86-64/ELF, no-JIT, host-header-free via nyxshim/); the initramfs provisioning (/usr/lib/tcc/include, /usr/src/nyx/…, 77 → 117 files); and the self-host arc milestone-by-milestone up to v6.4.9tcc compiling tcc's own ~40 000-line source in-OS. Captured the two real source fixes (the tccelf.c static-PLT/GOT fix that closed compile→link→run at v6.3.0; the three __TINYC__-guarded libc tweaks at v6.4.0) and the known vfs_pwrite O(n²) 274 KB write cap.

Selene render arc (v5.9.181v5.9.205). Folded into Selene-Browser: styled <button> pills, fully-styled + multi-line + linked table cells, nested-table rendering, <div>/<fieldset> border boxes with colour and fill, HTML5 <main>/<aside>/<dialog>, font-style/vertical-align, <textarea>, <title> entity decoding.

v6.0 desktop + persistent home. Filesystem gained a Persistent home directory section (/mnt/home/<user> on EXT2, v6.0.6+), the vfs_isdir-on-mount fix, and the vfs_pwrite O(n²) warning. Desktop-Applications updated for the File Manager Size column / sorting / Properties panel, the Text Editor's working Save, the Terminal's persistent-home cwd, and the wallpaper style axis.

Security. The two mid-arc fixes (chunked-transfer heap overflow v5.9.200, DNS-encoder stack overflow v5.9.201) added to the maintenance-pass table in Security.

Cross-cutting. Appended the v5.9.181v6.4.9 rows to Version-History (two new v6 eras). Added cc, tcc, self-hosting, nyxshim, persistent home and Toolchain terms to Glossary. Expanded the Userspace libc API table. Added Toolchain to _Sidebar, Index and Home (new at-a-glance Toolchain row). Bumped the version markers (Home/Index/Version-History/_Footer/Architecture/Command-Reference/HOWTO-Add-a-system-call). Result: 40 → 41 pages. Lint: 0 broken links, 0 broken anchors, 0 orphans.

[2026-08-06] ingest | Update to v6.4.120 — self-host complete, xbm, coreutil climb, hardening pass

Lint found the wiki at v6.4.9 while the tree had reached v6.4.120 (HEAD; KERNEL_VERSION "6.4.120") — 111 releases undocumented. Re-verified invariants: 57 syscalls unchanged; builtins 107 → ~121; ring-3 programs 63 → 77.

Toolchain — self-host completed. The v6.4.9 274 KB large-mount-write cap that blocked persisting the self-host object was fixed (v6.4.10v6.4.13, vfs_pwrite rework + EXT2 sparse-file read support), so the loop now runs end-to-end in one boot: the in-OS tcc compiles tcc.c, links it, and the self-built tcc_self.elf is itself a working compiler that rebuilds real coreutils byte-identically (cc --self, v6.4.17v6.4.18). Updated Toolchain accordingly (removed the stale limitation), added the cc --self mode, and documented the new xbm package manager (compile-from-recipe with cc, install/remove/search/list, url: HTTP fetch, the v6.4.44 path-traversal fix).

Userland climb. A long run of real coreutils (uniq cut nl tac seq rev tr fold expand unexpand printf basename dirname cal xxd base64 base32 cksum) and flags on grep/sort/ls/wc + an LCS diff, plus a man command (86 pages) and category-grouped help → folded into Command-Reference and Shell.

Visual/desktop. Documented Nyx Voxels and the render-perf demo family (fire matrix lava fractal julia rotor fill life) and the Start-menu / File-Manager / minimal-desktop / 1920×1080 changes in Desktop-Applications; the six animated wallpaper styles (Estrellas/Meteoros/Aurora/Nebula/Luces/Ondas) and higher resolutions in GUI-Subsystem.

Hardening pass (v6.4.44v6.4.109). A new table in Security (allocators, VFS, /proc, X.509 basicConstraints, image-decoder rejects). Subsystem detail filed where it lives: TCP checksum/close/SMP-lock/retransmit + DNS spoof-resistance + rtl8139 interrupt → Networking-Stack; allocator + page-granular copy_*_userMemory-Management; sparse files + path-resolution + fd=index → Filesystem. New crypto (TOTP/HOTP, base64/base32, UTF-8, CRC-32, primality, PBKDF2 KAT, x509 CA check) → Cryptography-and-TLS.

Cross-cutting. 108 rows appended to Version-History (two v6 eras: Phase 2 extended to v6.4.18, new "Daily-driver userland, xbm and hardening" era to v6.4.120), generated from git subjects for fidelity. Added man, xbm, TOTP/HOTP, Nyx Voxels to Glossary. FAQ/Index/Home/Footer/markers bumped to v6.4.120. Lint: 0 broken links, 0 broken anchors, 0 orphans.

[2026-08-12] ingest | Update to v6.4.182 — the crypto library, coreutils and desktop polish

Lint found the wiki at v6.4.120 while the tree had reached v6.4.182 (HEAD; KERNEL_VERSION "6.4.182") — 62 releases undocumented. Invariants re-checked: 57 syscalls unchanged; builtins ~121 → ~123; ring-3 programs 77 → 97.

The dominant theme is a general-purpose crypto library (v6.4.121v6.4.182), most of it off any TLS path, each with a KAT. Added a "The general-purpose crypto library" section to Cryptography-and-TLS cataloguing the new primitives from the source (kernel/crypto/): ChaCha20 + Poly1305 + ChaCha20-Poly1305 AEAD, BLAKE2s (+ keyed), SHA3-256, SHA-1/HMAC-SHA1, MD5, AES-CTR/CBC/CMAC/Key-Wrap, HKDF, SipHash, Ed25519, Base16, LEB128, CRC-16, and ct_memcmp — plus the sha256sum/sha512sum/md5sum coreutils. Reframed the page intro so it no longer reads as TLS-only.

Coreutil climb (comm tee paste join split od cmp sum column factor dd xxd -r) folded into Command-Reference with a checksums/digests subsection; counts bumped.

Parser hardening (v6.4.123v6.4.181): strict IPv4/IPv6/URL/DHCP/CSI/filename parsers + numparse + the no-backtracking glob matcher → a new block in the Security hardening table (range extended to v6.4.181), with subsystem detail in Networking-Stack (a parser-hardening note) and Filesystem (touch/mkdir name validation).

Desktop polishGUI-Subsystem: Aero-Snap drag-to-edge snapping + live preview, double-click-titlebar maximise, title ellipsis, taskbar weekday + calendar popup, running-app indicators, two new wallpapers (Astral, Lluvia). Nyx Blobs metaballs demo → Desktop-Applications. /proc/mountsFilesystem. The core/types.h header split → Architecture.

Cross-cutting. 62 rows appended to Version-History under a new era ("The crypto library, parser hardening and desktop polish — v6.4.121 to v6.4.182"), generated from git subjects. Added ChaCha20-Poly1305, BLAKE2s, SHA3, Ed25519, HKDF, Aero Snap, ct_memcmp to Glossary. Markers bumped to v6.4.182. Lint: 0 broken links, 0 broken anchors, 0 orphans.

[2026-08-16] ingest | Update to v6.4.222 — the N language, encodings and the bootloader framebuffer

Lint found the wiki at v6.4.182 while the tree had reached v6.4.222 — 40 releases, plus a whole new subsystem: N and N++, the native NyxOS language, developed on its own N vX.Y line interleaved with the numbered releases. Invariants: 57 syscalls unchanged; builtins ~123 → ~145; ring-3 programs steady at 97 (many additions are builtins).

New page — N-Language (the flagship). Written from lang/README.md, lang/docs/spec-n.md and lang/ncc/README.md: the two-language design (N = the metal, N++ = the ergonomics; the C/C++ relationship), syscalls-as-language (extern syscall … = N, raw inline syscall), the ncc bootstrap compiler (single-file C99, strict-C99 output for tcc), the v0.2→v0.15 feature line mapped onto the N++ P1–P4 phases (static checker, structs, defer, enum+match, impl, ?, for, #[user] pointers, pageflags W^X, #[caps], indexing), the M0–M5 self-hosting ladder (M2/M3 done — ncc builds and runs in-OS via tcc; M5 started — the tokenizer/parser/emitter triangle in N), the three-way verification, and xbm install ncc. Reframed the Userspace "Nyx C" section as N's ancestor and cross-linked from Home, Index, _Sidebar, Toolchain.

Encodings & checksums (Ed25519 signature verify, Ascii85, Base58, bech32, URL percent-encoding, CSV, SemVer, CRC-32C, Fletcher, MurmurHash3, FNV-1a) → the crypto-library table in Cryptography-and-TLS; the matching commands + more GNU coreutils (file tar tsort factor date +FORMAT) → Command-Reference (counts to ~145 builtins).

DesktopGUI-Subsystem: taskbar system tray (network/speaker status + clickable flyouts), Start-menu type-to-search + arrow nav, idle screensaver, Cordillera wallpaper; File Manager Type columnDesktop-Applications.

Boot on the bootloader framebuffer (v6.4.222, multiboot2/GOP instead of Bochs VBE) → Boot-Process and GUI-Subsystem. VFS 512-node pool + vfsstat (mitigating #66, which the N suite exposed) → Filesystem, with the MAX_INODES 256→512 bump propagated to Architecture, Kernel-Data-Structures and Troubleshooting. The continued kernel.h god-header decomposition → Architecture.

Cross-cutting. 40 rows appended to Version-History under a new era; N/N++/ncc added to Glossary; N-Language added to the Obsidian graph's userspace colour group; markers bumped to v6.4.222. Result: 41 → 42 pages. Lint: 0 broken links, 0 broken anchors, 0 orphans.

[2026-08-25] ingest | Update to v6.4.361 — self-install, ring-3 windows, real hardware

The largest ingest to date: the wiki was at v6.4.222, the tree at v6.4.361139 releases. Two invariants finally moved: syscalls 57 → 61 (the ring-3 windowing calls 57–60), builtins ~145 → ~209; ring-3 programs ~101.

New page — Installation. NyxOS now installs itself onto a real disk and boots standalone. Documented the nyxinstall pipeline (enumerate → partition → format → mount → copy → bootloader), the from-scratch NVMe driver (queues, PRP-list block I/O, write-through/FUA for real SSDs), MBR/GPT/ext2/FAT32-ESP writers (nyxpart/nyxgpt/mkfs/nyxfat), nyxgrub, and BIOS + UEFI targets. Added to _Sidebar, Index, Home and the Obsidian meta colour group.

Correctness fixes to existing pages (behaviour actually changed):

  • Syscalls / Syscall-Reference — count 57 → 61 across the wiki, and the four window syscalls (win_create/destroy/present/poll_event) documented; the HOWTO-Add-a-system-call worked example renumbered 57 → 61 (57 is now taken).
  • Process-ManagementFPU/SSE state is now saved across a context switch (lazy fxsave/fxrstor, per-core fpu_owner, g_fpu_initial template); the old "not saved" row was wrong as of v6.4.342 (#40).
  • Filesystem/dev/urandom now from the CSPRNG (was xorshift, #79); symlinks (ln -s/readlink) and chmod/read-only permissions added.
  • Security — corrected "no filesystem permissions" (read-only now enforced); added the v6.4 hardening rows (brute-force lockout, kernel-stack canary, kfree poison, secure_zero, xbm SHA-256 manifests).

Subsystem updates: Drivers (NVMe, AC'97 audio); GUI-Subsystem (ring-3 windows, the Hemera compositor / Erebus terminal naming, software 3D renderer, notifications + clipboard, display rotation); Boot-Process (UEFI/GOP, real-hardware fixes); Networking-Stack (TCP receive-window flow control #80, netstat/route/arp/httpd, sockets yield); Cryptography-and-TLS (hmac/totp/uuid/encrypt/decrypt); Command-Reference (~209 builtins, a grouped v6.4 command block, shell history/$VAR/$((expr))/aliases); N-Language (v0.22, N++ P5 with own types + #[drop], the nwin window from N, the growing M5 toy compiler, 22-program suite).

Cross-cutting. 139 rows appended to Version-History under a new era; Glossary gained Hemera/Erebus/NVMe/nwin/nyxinstall; version markers bumped to v6.4.361. Result: 42 → 43 pages. Lint: 0 broken links, 0 broken anchors, 0 orphans.

[2026-08-25] ingest | Sync to v6.4.363

Two releases since v6.4.361, both small: v6.4.362wav plays through the AC'97 DMA backend (prefers AC'97, falls back to SB16), folded into Drivers; v6.4.363 — the editor is named Mnemosyne (goddess of memory), shown in nyxfetch and the window title, added to Desktop-Applications. Appended both rows to Version-History and bumped every version marker to v6.4.363 (also fixed a stale KERNEL_VERSION in Architecture and two stale counts in Home). Builtins/syscalls unchanged (209 / 61). Lint clean.

See also

  • Index — the content catalog this log tracks changes against
  • Wiki-Conventions — the ingest/query/lint schema that generates these entries

Clone this wiki locally