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