Skip to content
kazah-png edited this page Aug 6, 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.

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