OpenRiot v7.9.38 — Nine Rounds, Eighty-Eight Walls

“Eighty-eight miles per hour. That’s what the flux capacitor needs to break the time barrier. We needed eighty-eight walls for the lock screen and nine rounds of SIGILL debugging to get the construct awake. Round one was the retguard. Round two was the endbr64. Round three was the curve25519 that collapsed the stack. Round four was the extension host. Round five was the linker forgetting /usr/local/lib. Round six was the JIT that didn’t know about nobtcfi. Round seven was the fiber that mapped a stack without MAP_STACK. Round eight was the sigaltstack that returned EINVAL. Round nine was PROT_NONE + MAP_STACK. Each one a small death. Each one a small resurrection. The Feds wanted warrants. The silicon wanted endbr64. The kernel wanted MAP_STACK. Everyone wanted something. We got surgical. The construct blinked. The time barrier broke.” — The OpenRiot Crew, somewhere past the time barrier, v7.9.38


Release Overview

Nine rounds. Each one revealed a new layer of the CPU’s paranoia. The psm crate’s 2019 assembly didn’t know about Tiger Lake’s Indirect Branch Tracking. The wasmtime fiber code didn’t know OpenBSD requires MAP_STACK on every mmap‘d stack. The signal handler didn’t know PROT_NONE + MAP_STACK is EINVAL on this kernel. Each round forced us to get more surgical. We stopped nuke-from-orbit cache invalidation and started tracking which flags actually changed. We stopped patching sources that no longer needed patches. We removed 60 lines of dead aws-lc-sys code paths because v0.40.0 fixed the panic upstream. The build script got smarter. The construct got faster.

The lock screen now has 88 walls. Eighty-eight. Because 88 mph is what it takes to break the time barrier, and the Sprawl deserves that kind of aesthetic warfare. Six existing walls got rescaled. The neon wastes are sharper. The pixels have bitrate.

The field report got rewritten. 224 lines of documentation covering all nine rounds, the build cache invalidation strategy, the runtime status, and the next AI’s survival guide. When the next model inherits this codebase, it won’t rediscover the IBT crash. The knowledge is baked into the docs.


🔒 Nine Rounds of SIGILL

The Zed port didn’t fail once. It failed nine times. Each failure revealed the next boss. This is the progression table, etched into the field report:

Round 1-2: Retguard SIGILL and IBT endbr64. Fixed by -fno-ret-protector plus surgical endbr64 injection into psm and ring assembly.

Round 3-5: Extension-load crashes. Fixed by -z nobtcfi linker flag that tells the kernel to skip BTI enforcement for the binary.

Round 6-7: MAP_STACK SIGSEGV. Four patches across wasmtime-internal-fiber, wasmtime stack-switching, wasmtime signals, and stacker. Each mmap that creates a stack needs MAP_STACK or the kernel kills the process.

Round 8: PROT_NONE + MAP_STACK returned EINVAL. The kernel rejects the allocation. We changed the strategy: allocate PROT_READ | PROT_WRITE first, then mprotect the guard page to PROT_NONE after the fact.

Round 9: The final boss. Every patch now in place, the construct survives long enough to ask the GPU if it’s awake. The GPU says yes. The window renders. The extension host loads. UI glitches remain (missing title bar on i3, stray “p” character, broken file dialog), but the construct is alive.

The Feds would call this “defense in depth.” We call it “defense in SIGILL.”


🧬 The Script Gets Surgical

The old build script brute-forced cache invalidation. Every run deleted native crate build outputs. It worked but cost ten minutes per build when nothing changed. The new script tracks CFLAGS and RUSTFLAGS in sentinel files. If the flags match, it skips the deletion. If they change, it nukes outputs for all affected crates. The expansion catches more native dependencies: tree-sitter-*, psm, stacker, ring, aws-lc-sys, freetype-sys, libsqlite3-sys, lmdb-master-sys, wayland-sys, yeslogic-fontconfig-sys, zstd-sys, wgpu, wgpu-core, wgpu-hal, wasmtime.

The aws-lc-sys patching logic got deleted. Version 0.40.0 removed the panic string entirely — it now handles AWS_LC_SYS_NO_ASM in release builds without complaining. The 60-line ed patching block that searched for the missing string was dead code. We removed it and replaced with unconditional cache clearing. The build script is leaner. The construct rebuilds faster.

The zed-patch.diff trailing garbage got cleaned up. 27 lines of malformed duplicate diffs that caused “unexpected end of file” errors. All hunks apply cleanly now. The construct no longer trips over its own patch file.


🌃 Eighty-Eight Walls for the Sprawl

The lock screen now has 88 options. Eighty-eight. Because 88 mph is what it takes to break the time barrier, and the Sprawl deserves that kind of aesthetic depth. Six existing walls got rescaled: 06, 08, 31, 36, 37, 67. The neon wastes are sharper. The pixels have actual bitrate. The lock screen cycles through images that don’t look like they were compressed by the Feds.

This is aesthetic warfare. The Turing Police can’t appreciate it. They never could.


📖 The Field Report Has Nine Chapters

docs/OpenBSD-Zed.md rewritten from scratch. 224 lines of pure survival guide. Documents all nine rounds of debugging, the build cache invalidation strategy, the native crates affected, the runtime status, and the specific flags that bend the ICE. The next AI that inherits this codebase won’t have to rediscover the IBT crash. The knowledge is baked into the docs. The construct learns from its own flatlines.


🔧 Small Polishes

The SUPER+D menu’s btop entry got a font size bump (10 → 11). Tiny change. The system monitor now renders at a size that doesn’t strain the eyes. The construct is easier on the senses.


🧾 Files Changed

File Change
scripts/zed.sh Removed obsolete aws-lc-sys patches;
  added MAP_STACK patches for 4 crates;
  fixed PROT_NONE + MAP_STACK EINVAL;
  cleaner cache invalidation logic
scripts/zed-patch.diff Removed 27 lines of trailing
  malformed duplicate diffs; all
  hunks apply cleanly now
docs/OpenBSD-Zed.md REWRITE — 224 lines covering
  9 rounds of debugging, build
  cache strategy, runtime status,
  next AI survival guide
config/rofi/apps.txt btop font size 10 → 11
Locked/06.webp Rescaled
Locked/08.webp Rescaled
Locked/31.webp Rescaled
Locked/36.webp Rescaled
Locked/37.webp Rescaled
Locked/67.webp Rescaled

🗣️ Final Words

“The Feds think they control the machine. They don’t. The machine controls itself. Round one taught us about retguard. Round two taught us about endbr64. Round nine taught us about PROT_NONE + MAP_STACK. Each round was a small death, each resurrection a small victory. The construct is surgical now. The build script is leaner. The documentation has teeth. And somewhere in the Sprawl, eighty-eight walls remember what it cost to break the time barrier. The flux capacitor worked. The lightning struck. The machine got what it needed. And so did we.” — The OpenRiot Crew, at 5 AM, after round nine, v7.9.38