OpenRiot v7.9.47 — The Machine Stops Guessing
“The crypto tracker told you to sell ZEC at 504. ZEC was at 490. It had been at 550 three months ago. It had been at 350 three months before that. The machine knew the full range — it had 90 days of closing prices in memory — but the sell limit was a fixed formula: entry times 1.20. As if the market cared what you paid. As if a coin that had already rallied past the number should still be sold at the number. We gave the machine 180 days of data. We taught it to find the high and the low. We taught it to measure where the current price sits in that range and set a target that makes sense — near the top if we’re already close, further out if we’re still climbing. The sell limit is no longer a fixed number. It’s a map of where the coin has been and where it might go. The Turing Police would use a 20% trailing stop and call it ‘quantitative.’ We used six months of candles and called it common sense.” — The OpenRiot Crew, after ZEC’s sell limit moved from $504 to $648, v7.9.47
Release Overview
Three fixes. Three places where the machine was making decisions with less information than it actually had.
The crypto tracker had 90 days of price history but ignored almost
all of it when setting sell limits — a fixed entry × 1.20 formula
that didn’t care whether the coin was at a 6-month low or a 6-month
high. The NZBGet launcher had no idea whether a browser tab was
already open, so it opened a new one every time you clicked. The
softraid layer had a device lookup that failed on partition letter
suffixes, leaving encrypted drives invisible to the detach sequence.
All three are fixed by giving the machine more context. Not more code. More awareness of what it already knows.
📊 Crypto: Dynamic Sell Limits
The old formula was entry × 1.20, capped at the 90-day high × 0.80.
For ZEC at $490 with a $420 entry, that was $504. The market was past
that number before the machine finished calculating it.
The new system:
-
Fetches 180 days of OHLC data instead of 90. Six months of candles. Enough to see the full range of the last cycle.
-
Finds the 6-month high and low. Then calculates where the current price sits in that range — a position from 0.0 (at the absolute low) to 1.0 (at the absolute high).
- Sets the target based on position:
- Upper 25% (near highs): target = 6-month high × 1.05
- Middle 50%: target = 6-month high × 0.95
- Lower 25% (near lows): target = 6-month high × 0.75
- Guardrails. Floor at
current × 1.10(never set a sell limit below 10% above current price). Ceiling atcurrent × 1.50(never set a target so far out it’s irrelevant).
Real-world effect: ZEC went from $504 → $648. BTC went from $65,997 → $70,257. XMR barely moved ($348 → $349) because it’s been range-bound and the math reflects that. The sell limits now tell you something about where the coin could go, not just where you bought it.
The Turing Police would have hardcoded a 20% trailing stop. We used six months of price history and a position-based formula.
🧲 NZBGet: Tab Detection
The NZBGet launcher (openriot --nzbget) fired up Firefox and
navigated to http://127.0.0.1:6789. Every time. Even if the tab
was already open. Even if you’d clicked it three times in a row
because the page was loading slowly and you weren’t sure the first
click registered.
New: firefoxHasTab() in helpers.go. It reads the X11 root window’s
_NET_CLIENT_LIST, finds every Firefox window, checks the title for
“nzbget,” and returns true if a match exists. If the tab is already
open, the launcher fires a dunst notification (“Already open in
browser”) and returns. No duplicate tab. No browser window stack.
The Turing Police would have used a browser extension with telemetry.
We used xprop and a regex.
💾 Softraid: Better Device Detection
Two improvements to the softraid layer:
Partition letter suffixes. findRaidDevice previously did exact
string matching when looking up physical chunks. If the device was
sd2d and the softraid table had sd2, it wouldn’t match. Now it
checks for partition letter suffixes — sd2 matches both sd2 and
sd2d — so the lookup works regardless of how the kernel names the
partition.
Dmesg fallback. When the primary softraid lookup fails entirely,
a new findVirtualForChunk function scans dmesg output for virtual
devices on the softraid bus. It finds all candidates, filters out
mounted devices and the root drive, and only returns a result if
there is exactly one unambiguous match. No guessing. No blind
detachment of every volume on the bus. Surgical, or not at all.
These two fixes mean the detachSoftraidChunk sequence — which runs
when you eject an encrypted external drive — works on more hardware
configurations without manual intervention.
🧾 Files Changed
| File | Change |
|---|---|
source/crypto/crypto.go |
FIX — OHLC fetch increased from 90 |
| to 180 days; sell limit calculation | |
| replaced with position-based 6-month | |
| range formula (high × multiplier based | |
| on current position in range); floor | |
at current × 1.10, ceiling at |
|
current × 1.50 |
|
source/commands/commands.go |
FIX — NZBGet launcher checks for |
| existing Firefox tab before opening | |
source/commands/helpers.go |
NEW — firefoxHasTab() scans X11 |
| window titles for duplicate browser tabs | |
source/disk/backend.go |
FIX — findRaidDevice handles |
partition letter suffixes (e.g., sd2 |
|
matches sd2d) |
|
source/disk/update.go |
NEW — findVirtualForChunk scans |
| dmesg for softraid virtual devices as | |
| fallback when primary lookup fails; | |
| strict single-candidate-only logic | |
install/openriot |
UPDATED — Compiled binary with all |
| fixes |
🗣️ Final Words
“The sell limit moved. ZEC went from 504 to 648. The machine wasn’t guessing anymore — it was reading the chart. The NZBGet launcher checked the browser, found the tab already open, and stayed quiet. The softraid layer found the encrypted drive on the first try, no dmesg scavenger hunt required. The machine didn’t get faster. It didn’t get more features. It got smarter about what it already knew. The Turing Police would have added a machine learning model. We added six months of candles, a regex, and a partition letter suffix check.” — The OpenRiot Crew, after the sell limits finally made sense, v7.9.47