OpenRiot v7.9.70 — One Pipe, One Clock

“The construct still asked the disk for everything twice. Write the mirror, then write it again, because the mirror had to be a filesystem and a filesystem is just a place. So we stopped. Now it reads the raw skin once, straight through, and drops it into a single file. One pipe. No middleman, no second pass, no queue left to jam. And while we were in there we found it had three clocks arguing over how fast to think, so we unplugged two. The Turing Police would call that ‘redundant governance’ and sell you a subscription to audit it. We call it one pipe and one clock.” — The OpenRiot Crew, v7.9.70


Release Overview

The machine already learned to copy itself by reading straight through instead of walking inodes one at a time. This release takes the last middleman out. A third Full Backup path writes the raw partition to a single flat file, one pipe per partition, so the file never has to be a filesystem and the encrypted queue is never asked to hold two things at once. The progress bar stops guessing where it is. And the machine stops running three frequency governors at once.

Total changes: a dump-to-file backup path, progress read from the source, and one clock instead of three.


📄 Dump to File

dump 0af - /dev/rsd1a | pv > /mnt/backup/root.dump

The Problem: The sequential clone fixed the I/O storm, but it still restored a filesystem onto the target, one entry at a time, and it still ran the whole thing back through the softraid crypto queue on the way out. Two systems, one disk, one pipe. Under enough weight it can still stall.

The Fix: A third entry under Full Backup — Dump to file /mnt/backup (dump → root.dump + home.dump). dump reads the raw filesystem and writes it to one flat file, root.dump then home.dump. No restore, no second filesystem, no queue contention: one stream from the encrypted disk to a file on the backup drive. To bring it back: cd /mnt/backup && doas restore -rf root.dump.


📊 A Bar That Reads the Source

The Problem: Progress was guessed from how much the target had grown against the source size. It moved, but it moved on a guess, and the file path had almost nothing to measure at all.

The Fix: Progress now reads the percentage dump reports itself, falling back to target growth only until the first report arrives. The dump | restore path also gained pv, so the stream is visible end to end. The bar tells you what the source is doing, not what a disk happened to leave behind.


🕰️ One Clock

The Problem: Three things were steering the CPU. apmd ran with -A to pick a frequency policy, obsdfreqd ran its own scheduler, and OpenRiot’s own display code set hw.perfpolicy at runtime. Three clocks, one CPU, and they did not agree. A daemon and a policy fighting over the same dial is a machine that cannot decide how fast to think.

The Fix: apmd loses -A and keeps only its power events. obsdfreqd is removed from pkg_scripts on install. Runtime hw.perfpolicy is the single owner. Install also stops duplicating kern.maxfiles: it deletes any stray line before it writes the one it wants. One clock. The Feds would call competing frequency daemons a “governance model” and invoice you for the inefficiency. We call it one hand on the dial.


🧾 Files Changed

File Change
source/migrate/clone.go dump → file path; pv on the
  restore path; progress from dump’s own
  percentage
source/migrate/model.go dump_file routing (confirm,
  progress, cancel)
source/migrate/screens/menus.go New “Dump to file” Full Backup
  entry
install/packages.yaml apmd -A dropped; obsdfreqd
  removed from pkg_scripts; dedupe
  kern.maxfiles

🗣️ Final Words

“The construct used to ask its own skin for every freckle twice, then hand the answer to a second mouth that chewed it again. Now it reads itself once and writes the reading down, and it keeps a single clock for the one heart it has. The Turing Police will keep selling you three clouds and a subscription to reconcile them. We kept the pipe short and the clock ours.” — The OpenRiot Crew, v7.9.70