Release block 2026-10-27: hub 0.173.0, agent 0.167.0, controller 0.346.0 released; R-1250 fixed the same day and proven; ten rows closed, R-1312 opened
gates / gates (push) Successful in 2m29s
gates / gates (push) Successful in 2m29s
- audits/linetest-2026-10-27/: the hold failed four times as built (qBittorrent drains ~14 s), the fix 710ceac, the test through the hold on 0.346.0-rc.1 (94.5 Mbit/s, the limit back exactly), teardown. - audits/release-2026-10-27/: builds, agent release + signed updates, per-box and global floors, box walk. - 09 §3 decisions 269 (R-1250 fix the same day) and 270 (R-1218 live proof waived); D55's window result in 268. - 08 §: the drain-wait design line. STATUS, CONTEXT, register (223 -> 214).
This commit is contained in:
1 parent
708a34512e
commit
acd79a78cc
51 files changed
+1767
-22
No files matched your search
+14
@@ -16,6 +16,20 @@
|
||||
> and holds nothing of its own; this file does hold its own content, namely the standing rulings below.
|
||||
|
||||
|
||||
> **2026-10-27 (attended release block) — RELEASED: hub v0.173.0, agent v0.167.0, controller v0.346.0.** Hub 0.173.0
|
||||
> deployed 09:35 CET (image `sha256:458bfb03…`, from `29134c52`, ArgoCD sync of Deployment/hub only, 30-min watch clean).
|
||||
> Agent 0.167.0 by `release-agent.sh` from a clean clone (agent `28bdd282…`, bundle `9d034416…`; tag `v0.167.0`), signed
|
||||
> `agent_update` to the three test boxes (configs/ unchanged → no bundle job); **NOT vouched yet** — after the vouch set
|
||||
> `pinned.day0_agent` in `felhom-agent/scripts/retention-policy.json` (D50). Controller 0.346.0 from `b1b9be3` (image
|
||||
> `sha256:3d910b03…`, CI 2423): per-box floors 15:09 CET, box walk green, held-apps lists match (0 = 0), global floor
|
||||
> 15:37 CET (MinAgent 0.158.1). **R-1250 fixed the same day (`09` §3 decision 269):** the hold failed four times
|
||||
> („not quiet" — qBittorrent sends ~14 s after its limit falls; the agent reads 5–15 s after the call); `710ceac`
|
||||
> `upwatch.waitDrained` asks only after the held app reports its own upload near zero; live on `0.346.0-rc.1` on 9201:
|
||||
> 94.5 Mbit/s, the limit back exactly (`audits/linetest-2026-10-27/`). **R-1218's live proof waived (decision 270):** the
|
||||
> hub page's off-site switch did not reach Tester 1's saved target (R-1312). demo-hp's slot is minute 95 (11:35 CET),
|
||||
> Tester 1's 213, demo-felhom's 20 — each host's own. D55's window ran 03:18Z: 223 removed, 373 → 150. R-1174 closed
|
||||
> (the status gate refuses since today). Closed 11 rows; opened R-1312.
|
||||
|
||||
> **2026-10-26 night (alone) — the data-safety fixes, on `main`, NOT released.** Controller: R-1220 `7e15a37`
|
||||
> (`liveDriveBinds(drives)`: an unreadable app.yaml = installed), R-1218/R-1219 `1170b48` (stage when the password FILE
|
||||
> exists; no ceremony during a recovery offer), R-1187 `dfd0f8e`…`90a2530` (.fab: links as links, FIFO refused, `os.Root`
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
**Ready for Tester 2? Yes — tell the friend go (hand-over list: `documentation/pilot/TESTER2-handover.md`).**
|
||||
|
||||
**Updated 2026-10-26 (night).** Saved and proven tonight, not released: kept data never offers a live app's folder; a reinstalled box backs up off-site at once; app-file import keeps links and owners and works again for MariaDB apps; Go 1.27.3. D55's window runs tonight.
|
||||
**Updated 2026-10-27 (afternoon).** Released on your yes: hub 0.173.0, agent 0.167.0 (not vouched yet), controller 0.346.0 (floor 15:37 CET). The line test on a seeding box failed first (qBittorrent keeps sending 14 s after the hold) and works since the same-day fix: 94.5 Mbit/s, the limit put back exactly. demo-hp's clean-up window removed 223 old copies, no alarm.
|
||||
|
||||
## What works
|
||||
- **The Plex attack (10-17 → 10-23) did not reach Felhom's secrets** (R-1241).
|
||||
@@ -23,8 +23,8 @@
|
||||
- DooPlex: something sets the shared checkout to „bare" (R-935).
|
||||
|
||||
## What we work on
|
||||
- Built, not released (Tuesday's block, each on your yes): R-1291, R-1220, R-1232, R-1187, R-1219, R-1298, R-972, R-1285. R-1218 needs you: off-site off on Tester 1 for minutes (hub customer page), or it leaves the release.
|
||||
- Dated checks, run by CC. 2026-10-27: the line test on a seeding box, DooPlex's qBittorrent as the peer (R-1250, your yes). 2026-10-30: D35, website and installer to Cloudflare, starts (R-1228, ruled yes).
|
||||
- Released 2026-10-27: held apps reach you; safer kept data, ceremony and app import; reinstalled boxes back up off-site at once; the line test works while seeding; Go 1.27.3. Open: R-1285 (needs a BYO box on an old agent), R-1312 (what the hub's off-site switch does on the box).
|
||||
- Dated checks, run by CC. 2026-10-30: D35, website and installer to Cloudflare, starts (R-1228, ruled yes).
|
||||
|
||||
## Waiting on you — decide
|
||||
|
||||
@@ -48,7 +48,7 @@ Newest first. CC's pick is in the „Pick" column. Each row also has its full te
|
||||
6. BIOS: on the N100, read „After Power Loss"; on the HP, set „Bypass F1 Prompt on Configuration Changes" to Enable. (since 10-14)
|
||||
7. Pin the first Facebook post (R-917), and look at the new cover in the Facebook phone app (R-919). (since 10-12)
|
||||
|
||||
**2026-10-26.** On the hub's Hosts page, delete `Tester4-b5dbbd` (CC's test VM of tonight, uninstalled and destroyed; you already deleted `Tester4-b5ec39`). If not: the hub alarms that the box went silent. After demo-hp's window has run (CC says when, Tuesday morning), revoke the token `cc-d55-window` (R-1294). New: a nightly security watch mails you (R-1303).
|
||||
**2026-10-27.** 1. Vouch agent 0.167.0 (hub → Configs → Day-0; both sha256 in the release report). If not: new installs start on 0.166.0. 2. Revoke the token `cc-d55-window`; the window ran (R-1294). 3. Delete hub host `Tester4-b5dbbd`; if not, it keeps alarming. New: a nightly security watch mails you (R-1303).
|
||||
**2026-10-23 do list.**
|
||||
1. Print the break-glass sheet (`documentation/runbooks/break-glass-sheet.md`, the part from „The sheet”, one A4), fill it by hand, keep it outside the home (D32; R-923, R-924). If not: after a DooPlex loss no off-site copy opens.
|
||||
2. On the hub's Hosts page: Discard appliance 49. If not: a dead entry alarms.
|
||||
@@ -58,4 +58,4 @@ Newest first. CC's pick is in the „Pick" column. Each row also has its full te
|
||||
- Rotate the reused homelab logins and decide the Gitea repo's visibility (R-925, P1). (since 10-09)
|
||||
- Two DooPlex leftovers: `leftovers/2026-10-14/first-post/` (keep or delete); the `deny`-list edit in homelab-manifests' `.claude/settings.json` (commit or drop). (since 10-14)
|
||||
- Before the first paying customer: Tandoor's permission (R-789); a lawyer for the licence list and the terms (R-802, R-813); SparkyFitness by e-mail (R-784).
|
||||
- Later (yours, not urgent): R-1250 (a seeding qBittorrent is never tested), R-1248 (a hard upload cap per app), R-1229 (ArgoCD's sync settings into git), R-862 (Tester 2's bootstrap, when it is back), R-504, R-1071, R-1073, R-1077, R-1042, R-132, R-908, R-779, R-904, R-232, R-433, R-933, R-213, R-832, R-388, R-882, R-883, R-814, R-1056, R-1164, R-930, R-920, R-902.
|
||||
- Later (yours, not urgent): R-1248 (a hard upload cap per app), R-1229 (ArgoCD's sync settings into git), R-862 (Tester 2's bootstrap, when it is back), R-504, R-1071, R-1073, R-1077, R-1042, R-132, R-908, R-779, R-904, R-232, R-433, R-933, R-213, R-832, R-388, R-882, R-883, R-814, R-1056, R-1164, R-930, R-920, R-902.
|
||||
@@ -591,6 +591,11 @@ normal use; work it does not explain is the sign of a hacked app. Numbers and me
|
||||
start-up check puts it back; the 50 % rule waits while a record exists. Measured on demo-hp with a real seed (10
|
||||
Mbit/s to DooPlex's qBittorrent): refused `not-quiet` without the hold; with it the uplink fell to 0.02–0.16 Mbit/s,
|
||||
94.2 Mbit/s measured, the app held 56.8 s and back to 1 249 280 B/s exactly (`audits/dooplex-alarms-2026-10-24/`).
|
||||
**[DESIGN — R-1250 drain wait, 2026-10-27; controller `710ceac`, released v0.346.0]:** between the hold and the call
|
||||
the controller waits until every held app REPORTS its own upload ≤ 16 KiB/s on two readings 2 s apart (at most 90 s;
|
||||
an unreadable speed waits 20 s) — qBittorrent 5.2.4 kept sending at full speed ~14 s after its limit fell, inside the
|
||||
agent's 5–15 s quiet read, and four tries in an hour were refused; with the wait the test ran (94.5 Mbit/s, the limit
|
||||
back exactly; `audits/linetest-2026-10-27/`; `09` §3 decision 269).
|
||||
**[DESIGN — R-1261, 2026-10-25 night; controller `a79a292`, unreleased]:** EVERY running seeder is held (qBittorrent
|
||||
and Transmission — one left seeding kept the test refused `not-quiet` every time); all records first
|
||||
(`upwatch.line_test_holds`), then the apps; a record whose app was removed while held is dropped (it used to stop the
|
||||
|
||||
@@ -1107,6 +1107,25 @@ its length, and both fixes cost something the household would notice — operato
|
||||
the plan grows ~14 a night (209 on 2026-10-26, ~223 at the next run), so it is refused again. Why A: the cap must sit
|
||||
above the honest plan on the night it is used. CC's token lacks `offsite:write`, so the operator made a one-purpose
|
||||
token `cc-d55-window` (Off-site write only); CC used it once, 2026-10-26 19:10:31Z (`max:260` stored, read back).
|
||||
**The window ran** 2026-10-27 03:18:15–03:18:41Z (window 17): 223 of 223 planned removed, 373 → 150, closed by the
|
||||
box, no alarm (hub row + the box's own log agree). The operator revokes the token.
|
||||
|
||||
### 2026-10-27 (attended release block) — the line-test hold is fixed the same day; R-1218's live proof is waived
|
||||
|
||||
269. **The line-test hold waits until the held app has really slowed down — fixed in the controller the same day.**
|
||||
*Operator, 2026-10-27 12:30 CET.* Options: A) fix in the controller now, prove it on an rc on demo-hp's 9201 while the
|
||||
seed runs, ride today's 0.346.0 — cost: ~1.5 h, the release later in the afternoon; B) file it and fix later — cost:
|
||||
a box that seeds all day keeps getting no weekly test. Why A: measured four refusals in an hour (qBittorrent sends
|
||||
~14 s after its limit falls; the agent reads 5–15 s after the call). Built `710ceac`; live on `0.346.0-rc.1`: 94.5
|
||||
Mbit/s, the limit back exactly (`audits/linetest-2026-10-27/`).
|
||||
|
||||
270. **R-1218 is released without its live proof (rule 2 waived for this row).** *Operator, 2026-10-27 15:15 CET.*
|
||||
Options: A) keep both halves, waive the live proof — cost: released key code proven by red tests only; a box that
|
||||
lost its key file entirely now gets a 409 on its ceremony instead of a silent demotion; B) revert both halves — cost:
|
||||
a hub 0.173.1 and a second deploy, and the demotion bug stays. Why A: no product path makes the box's saved off-site
|
||||
target „off" on a hub box (the hub page's switch did not reach Tester 1's target; the household's clear is refused on
|
||||
a hub tier), so no live run can tell the old code from the new; the change only widens a safety step and adds a
|
||||
refusal. R-1312 asks what the hub switch does on the box.
|
||||
|
||||
### 2026-10-26 (evening brief) — D53: held apps reach the operator; D54: demo-hp's stuck clean-up; R-1297 (B): a second CI runner
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# Line test on a seeding box, 2026-10-27 (R-1250, R-1261) — the hold failed as built, was fixed, and then held
|
||||
|
||||
Venue: demo-hp guest 9201 (controller 0.345.1, then `0.346.0-rc.1`; agent 0.166.0), a THROWAWAY qBittorrent ("qbline",
|
||||
installed and removed through the product), seeding a private 3 GiB sparse file to DooPlex's qBittorrent (download
|
||||
only, capped 3–4 Mbit/s, operator yes 2026-10-25). DooPlex's qBittorrent is reachable only inside the cluster, so it
|
||||
dialled the seed through a small forwarder on 9201 (`tools/fwd.py`, LAN :6881 → the container). Method: reads of the
|
||||
controller log, the agent journal, qBittorrent's own API and the interface counters. Nothing forced the line test.
|
||||
|
||||
## What the agent's slot is
|
||||
|
||||
demo-hp's slot is NOT 10:00: `slot_minute=95` (the agent's start line), so its test may start from 11:35 CET. Tester 1's
|
||||
is 213 (13:33), demo-felhom's 20 (10:20). The seed was paused on DooPlex from 10:20 to 11:15 so it ran across 11:35
|
||||
(`dooplex-add.txt`).
|
||||
|
||||
## Before the fix — four holds, four refusals (controller 0.345.1)
|
||||
|
||||
11:36, 11:51, 12:06, 12:21 CET: the controller held qBittorrent at 1 KiB/s, asked the agent, put the limit back
|
||||
exactly (5898240 B/s), and the agent refused „not quiet" — 4.2, 4.2, 4.0, 4.0 Mbit/s while held
|
||||
(`controller-upwatch-0345-refusals.txt`, `agent-demohp-day.txt`). **The 0.345.1 container's log was dropped when the rc
|
||||
replaced it**; the refusal lines were recovered from this session's reads of the watcher's copies (said in that file's
|
||||
header). The agent's journal holds the same four refusals independently.
|
||||
|
||||
Why, measured three ways:
|
||||
|
||||
1. `sec1-guest.txt` / `sec1-host.txt` (12:05:40–12:08 CET, one sample per second at the container, the guest and the
|
||||
host NIC): during the 12:06:17–12:06:32 hold the CONTAINER itself kept sending 2–11 Mbit/s each second — the
|
||||
forwarder was not the cause.
|
||||
2. `udp-queues.txt`: the transfer is uTP (no TCP socket); every UDP queue was 0 — no buffering outside qBittorrent.
|
||||
3. `qbsec-2-clean.txt` (the 12:21 hold) and `limitprobe.txt` (12:27, the controller's own 1 KiB/s value set by hand for
|
||||
60 s on the throwaway, then the exact value back; no test started): qBittorrent reports its limit as 1024 within a
|
||||
second, yet sends at full speed for **~14 s**, then 0. The agent reads the uplink 5–15 s after the call
|
||||
(`RequestSettle` 5 s + `RequestQuietWindow` 10 s), inside that drain — so every test on request was refused.
|
||||
|
||||
## The fix (operator's choice 2026-10-27: fix in the controller now) — felhom-controller `710ceac`
|
||||
|
||||
After the hold, `upwatch.waitDrained` polls each held app's OWN upload (`up_info_speed` / Transmission `uploadSpeed`)
|
||||
until ≤ 16 KiB/s twice, 2 s apart (at most 90 s; an unreadable speed waits 20 s), and only then asks the agent. Five
|
||||
tests, red-proved by four mutations (`redproof-r1250-drain.txt`).
|
||||
|
||||
## After the fix — the test ran through the hold (`0.346.0-rc.1` on 9201 from 13:24 CET)
|
||||
|
||||
`rc1-hold-proof.txt`: 13:39:56 held → 13:40:20 „the held app(s) slowed down after 22s — asking the agent" → three runs
|
||||
94.5 / 93.4 / 94.4 Mbit/s → **94.5 Mbit/s** stored (`last_ok_at` 12:40:35Z) → 13:41:17 the limit back as it was
|
||||
(5898240). The 50 % rule then KEPT the normal limit: the line moved 0.15 %, inside its 20 % band
|
||||
(`qblimit.go` „kept"); no household flag; the alternative slot untouched (`upwatch-settings-after.txt`).
|
||||
|
||||
## Teardown (`teardown.txt`)
|
||||
|
||||
DooPlex: the torrent and its data removed, `/tmp/r1250` removed, 326 torrents as before, no category left. 9201: the
|
||||
app removed through the product with `remove_hdd_data` and `remove_backups` FALSE — its download folder is the shared
|
||||
library `media/torrents` (holding `movies`, `tv`, `.temp` from 14–15 October), and it made no backup today; its own
|
||||
volume went with it. The forwarder stopped; the hand-made seed folder `r1250` and `/root/r1250` removed. Hub: nothing
|
||||
provisioned. 9201 stayed on the rc until the per-box floor moved it to 0.346.0 (15:10 CET).
|
||||
@@ -0,0 +1,34 @@
|
||||
Oct 27 11:36:32 demo-hp felhom-agent[1156735]: time=2026-10-27T11:36:32.542+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.2
|
||||
Oct 27 11:51:32 demo-hp felhom-agent[1156735]: time=2026-10-27T11:51:32.488+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.2
|
||||
Oct 27 12:06:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:06:32.519+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.0
|
||||
Oct 27 12:21:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:21:32.698+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.0
|
||||
Oct 27 12:36:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:36:32.503+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.8
|
||||
Oct 27 12:51:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:51:32.497+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.3
|
||||
Oct 27 13:06:32 demo-hp felhom-agent[1156735]: time=2026-10-27T13:06:32.477+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.8
|
||||
Oct 27 13:21:32 demo-hp felhom-agent[1156735]: time=2026-10-27T13:21:32.507+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.1
|
||||
Oct 27 13:40:35 demo-hp felhom-agent[1156735]: time=2026-10-27T13:40:35.610+01:00 level=INFO msg="linetest: test on request (a held torrent app, R-1250)" server=10.77.0.1:5201
|
||||
Oct 27 13:40:45 demo-hp felhom-agent[1156735]: time=2026-10-27T13:40:45.982+01:00 level=INFO msg="linetest: run 1: 94.5 Mbit/s" server=10.77.0.1:5201 server_bytes=118751232 server_seconds=10.050698
|
||||
Oct 27 13:41:01 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:01.335+01:00 level=INFO msg="linetest: run 2: 93.4 Mbit/s" server=10.77.0.1:5201 server_bytes=117440512 server_seconds=10.053919
|
||||
Oct 27 13:41:16 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:16.678+01:00 level=INFO msg="linetest: run 3: 94.4 Mbit/s" server=10.77.0.1:5201 server_bytes=118620160 server_seconds=10.053608
|
||||
Oct 27 13:41:16 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:16.678+01:00 level=INFO msg="linetest: upload line measured: 94.5 Mbit/s (best of 3)" server=10.77.0.1:5201 runs=3 duration_s=41.067967365
|
||||
Oct 27 13:48:23 demo-hp felhom-agent[1156735]: time=2026-10-27T13:48:23.735+01:00 level=WARN msg="signedjobs: AUTHORIZED signed op — executing" job=454a8763e3e8adf9 op=agent_update key_id=felhom-op-1 nonce=656f0799bd7c791166bea35f4503caef
|
||||
Oct 27 13:48:24 demo-hp felhom-agent[1156735]: time=2026-10-27T13:48:24.016+01:00 level=WARN msg="agent_update: handing the signed job to the root wrapper (felhom-os-apply agent_update)" staged=/var/lib/felhom-agent/selfupdate/felhom-agent-0.167.0 version=0.167.0
|
||||
Oct 27 13:48:24 demo-hp felhom-agent[1156735]: time=2026-10-27T13:48:24.619+01:00 level=WARN msg="agent_update: signed update verified as root and handed off; restart scheduled" version=0.167.0 report="{\"agent_update\": {\"sha256\": \"28bdd2826f45f3767880fcff4d3105afb7247c09c0ced99d78b3a978d8d826f0\", \"version\": \"0.167.0\", \"wrapper\": \"Running timer as unit: run-p3482367-i20260742.timer\\nWill run service as unit: run-p3482367-i20260742.service\\nfelhom-selfupdate-guarded: applied 0.167.0 (prev 0.166.0, sha 28bdd2826f45f3767880fcff4d3105afb7247c09c0ced99d78b3a978d8d826f0); detached restart scheduled\", \"…"
|
||||
Oct 27 13:48:24 demo-hp felhom-agent[1156735]: time=2026-10-27T13:48:24.620+01:00 level=WARN msg="signedjobs: signed op COMPLETED" job=454a8763e3e8adf9 op=agent_update
|
||||
Oct 27 13:48:28 demo-hp felhom-agent[3482565]: time=2026-10-27T13:48:28.849+01:00 level=INFO msg="linetest: weekly upload line test starting" schedule="weekly, due Tuesday from 10:00 host-local time; starts 10:00-15:59 after 10 quiet minutes; never beside a backup, restore-test or update" slot_minute=95
|
||||
Oct 27 13:48:28 demo-hp felhom-agent[3482565]: time=2026-10-27T13:48:28.850+01:00 level=WARN msg="selfupdate: new version running — dwelling before commit" version=0.167.0 prev=0.166.0 dwell=1m0s
|
||||
Oct 27 13:49:28 demo-hp sudo[3486943]: felhom-agent : PWD=/ ; USER=root ; COMMAND=/usr/local/sbin/felhom-selfupdate-guarded commit
|
||||
Oct 27 13:49:28 demo-hp felhom-agent[3482565]: time=2026-10-27T13:49:28.876+01:00 level=WARN msg="selfupdate: update committed" version=0.167.0 wrapper=""
|
||||
{
|
||||
"last_ok_at": "2026-10-27T12:40:35.610771254Z",
|
||||
"mbps": 94.5217790843979,
|
||||
"runs_mbps": [
|
||||
94.5217790843979,
|
||||
93.44854439348477,
|
||||
94.39012143700053
|
||||
],
|
||||
"server": "10.77.0.1:5201",
|
||||
"last_attempt_at": "2026-10-27T12:40:35.610771254Z",
|
||||
"tries_day": "2026-10-27",
|
||||
"tries_today": 1
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
Oct 27 11:36:32 demo-hp felhom-agent[1156735]: time=2026-10-27T11:36:32.542+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.2
|
||||
Oct 27 11:51:32 demo-hp felhom-agent[1156735]: time=2026-10-27T11:51:32.488+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.2
|
||||
Oct 27 12:06:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:06:32.519+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.0
|
||||
Oct 27 12:21:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:21:32.698+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.0
|
||||
Oct 27 12:36:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:36:32.503+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.8
|
||||
Oct 27 12:51:32 demo-hp felhom-agent[1156735]: time=2026-10-27T12:51:32.497+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.3
|
||||
Oct 27 13:06:32 demo-hp felhom-agent[1156735]: time=2026-10-27T13:06:32.477+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.8
|
||||
Oct 27 13:21:32 demo-hp felhom-agent[1156735]: time=2026-10-27T13:21:32.507+01:00 level=INFO msg="linetest: test on request refused — the uplink is not quiet" mbps=4.1
|
||||
Oct 27 13:40:35 demo-hp felhom-agent[1156735]: time=2026-10-27T13:40:35.610+01:00 level=INFO msg="linetest: test on request (a held torrent app, R-1250)" server=10.77.0.1:5201
|
||||
Oct 27 13:40:45 demo-hp felhom-agent[1156735]: time=2026-10-27T13:40:45.982+01:00 level=INFO msg="linetest: run 1: 94.5 Mbit/s" server=10.77.0.1:5201 server_bytes=118751232 server_seconds=10.050698
|
||||
Oct 27 13:41:01 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:01.335+01:00 level=INFO msg="linetest: run 2: 93.4 Mbit/s" server=10.77.0.1:5201 server_bytes=117440512 server_seconds=10.053919
|
||||
Oct 27 13:41:16 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:16.678+01:00 level=INFO msg="linetest: run 3: 94.4 Mbit/s" server=10.77.0.1:5201 server_bytes=118620160 server_seconds=10.053608
|
||||
Oct 27 13:41:16 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:16.678+01:00 level=INFO msg="linetest: upload line measured: 94.5 Mbit/s (best of 3)" server=10.77.0.1:5201 runs=3 duration_s=41.067967365
|
||||
Oct 27 13:48:28 demo-hp felhom-agent[3482565]: time=2026-10-27T13:48:28.849+01:00 level=INFO msg="linetest: weekly upload line test starting" schedule="weekly, due Tuesday from 10:00 host-local time; starts 10:00-15:59 after 10 quiet minutes; never beside a backup, restore-test or update" slot_minute=95
|
||||
@@ -0,0 +1,19 @@
|
||||
# demo-hp guest 9201, controller 0.345.1 — the four holds before the fix. SOURCE: the watcher's copies read into the
|
||||
# CC session at 11:55 and 12:22 CET (the container was replaced by the rc at 13:24 CET, which dropped its log; the
|
||||
# watcher rewrote its file each minute from the current container). The agent's own journal (agent-demohp-day.txt)
|
||||
# holds the matching four refusals independently.
|
||||
2026/10/27 10:36:17 linehold.go:252: [INFO] [upwatch] line test: qbittorrent held at {Bytes:1024 Alt:false Enabled:false KBps:0} (was {Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 10:36:17 linehold.go:254: [INFO] [upwatch] line test: 1 app(s) held — asking the agent for a test
|
||||
2026/10/27 10:36:32 linehold.go:187: [INFO] [upwatch] qbittorrent's upload limit is back as it was ({Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 10:36:32 linehold.go:267: [INFO] [upwatch] line test on request refused by the agent: not-quiet (the uplink sent 4.2 Mbit/s while held)
|
||||
2026/10/27 10:51:17 linehold.go:252: [INFO] [upwatch] line test: qbittorrent held at {Bytes:1024 Alt:false Enabled:false KBps:0} (was {Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 10:51:17 linehold.go:254: [INFO] [upwatch] line test: 1 app(s) held — asking the agent for a test
|
||||
2026/10/27 10:51:32 linehold.go:187: [INFO] [upwatch] qbittorrent's upload limit is back as it was ({Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 10:51:32 linehold.go:267: [INFO] [upwatch] line test on request refused by the agent: not-quiet (the uplink sent 4.2 Mbit/s while held)
|
||||
2026/10/27 11:06:17 linehold.go:252: [INFO] [upwatch] line test: qbittorrent held at {Bytes:1024 Alt:false Enabled:false KBps:0} (was {Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 11:06:17 linehold.go:254: [INFO] [upwatch] line test: 1 app(s) held — asking the agent for a test
|
||||
2026/10/27 11:06:32 linehold.go:187: [INFO] [upwatch] qbittorrent's upload limit is back as it was ({Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 11:06:32 linehold.go:267: [INFO] [upwatch] line test on request refused by the agent: not-quiet (the uplink sent 4.0 Mbit/s while held)
|
||||
2026/10/27 11:21:17 linehold.go:254: [INFO] [upwatch] line test: 1 app(s) held — asking the agent for a test
|
||||
2026/10/27 11:21:33 linehold.go:187: [INFO] [upwatch] qbittorrent's upload limit is back as it was ({Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 11:21:33 linehold.go:267: [INFO] [upwatch] line test on request refused by the agent: not-quiet (the uplink sent 4.0 Mbit/s while held)
|
||||
@@ -0,0 +1,8 @@
|
||||
2026/10/27 12:24:55 service.go:83: [INFO] [upwatch] the host's weekly line test: 94.4 Mbit/s (measured 2026-10-24T08:00:33Z)
|
||||
2026/10/27 12:24:55 upwatch_wiring.go:154: [INFO] [upwatch] upload and CPU watch started (line 97 Mbit/s, qBittorrent share 50 %)
|
||||
2026/10/27 12:39:56 linehold.go:327: [INFO] [upwatch] line test: qbittorrent held at {Bytes:1024 Alt:false Enabled:false KBps:0} (was {Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 12:39:56 linehold.go:329: [INFO] [upwatch] line test: 1 app(s) held — asking the agent for a test
|
||||
2026/10/27 12:40:20 linehold.go:261: [INFO] [upwatch] line test: the held app(s) slowed down after 22s — asking the agent
|
||||
2026/10/27 12:41:17 linehold.go:192: [INFO] [upwatch] qbittorrent's upload limit is back as it was ({Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 12:41:17 linehold.go:340: [INFO] [upwatch] line test on request: 94.5 Mbit/s
|
||||
2026/10/27 12:41:17 service.go:83: [INFO] [upwatch] the host's weekly line test: 94.5 Mbit/s (measured 2026-10-27T12:40:35Z)
|
||||
Whitespace-only changes.
@@ -0,0 +1,6 @@
|
||||
{"added_torrent_ids":["8828f12fe7899fa6a8a1c4994c26f11ae19eb6fa"],"failure_count":0,"pending_count":0,"success_count":1}
|
||||
{"8828f12fe7899fa6a8a1c4994c26f11ae19eb6fa":{"added":1,"failed":0}}
|
||||
cap 500000 B/s at 08:26:26
|
||||
paused 09:21:08 — demo-hp's slot_minute=95 (11:35 CET); resume 10:15Z
|
||||
resumed 10:15:22
|
||||
re-added 11:09:31 for the buffer measurement
|
||||
@@ -0,0 +1,6 @@
|
||||
total 0
|
||||
0 -rw-r--r-- 1 1000 1000 3221225472 Oct 27 06:53 r1250-seed.bin
|
||||
addTask: {"taskID":"0a6c300e-631b-4b47-8df3-f74e5b74a6f1"}
|
||||
creator: "pieceSize":1048576 "status":"Finished"
|
||||
torrent r1250-seed.bin 8828f12fe7899fa6a8a1c4994c26f11ae19eb6fa checkingResumeData size 3221225472 private True
|
||||
172.18.0.17
|
||||
@@ -0,0 +1,6 @@
|
||||
deploy-fields: 200 [('DOMAIN', 'domain', True), ('SUBDOMAIN', 'subdomain', True), ('HDD_PATH', 'path', True), ('QBT_ADMIN_PASSWORD', 'password', True)]
|
||||
07:52:19 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['HDD_PATH', 'QBT_ADMIN_PASSWORD']
|
||||
07:52:19 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
|
||||
07:52:35 [1] deployed, controller state=running, pinned={'qbittorrent': 'qbittorrentofficial/qbittorrent-nox:5.2.4-1'}
|
||||
deployed: True
|
||||
answers: True
|
||||
@@ -0,0 +1,64 @@
|
||||
previous up_limit=5898240
|
||||
11:27:32 set up_limit=1024: ok
|
||||
11:27:33 t=1s ctr=4929kbit limit=1024 speed=3.01
|
||||
11:27:34 t=2s ctr=0kbit limit=1024 speed=3.01
|
||||
11:27:35 t=3s ctr=11082kbit limit=1024 speed=5.50
|
||||
11:27:36 t=4s ctr=6573kbit limit=1024 speed=1.83
|
||||
11:27:38 t=5s ctr=2870kbit limit=1024 speed=6.03
|
||||
11:27:39 t=6s ctr=8351kbit limit=1024 speed=5.33
|
||||
11:27:40 t=7s ctr=2865kbit limit=1024 speed=5.33
|
||||
11:27:41 t=8s ctr=0kbit limit=1024 speed=1.83
|
||||
11:27:42 t=9s ctr=8765kbit limit=1024 speed=5.59
|
||||
11:27:44 t=10s ctr=5462kbit limit=1024 speed=3.49
|
||||
11:27:45 t=11s ctr=4937kbit limit=1024 speed=3.15
|
||||
11:27:46 t=12s ctr=5882kbit limit=1024 speed=3.15
|
||||
11:27:47 t=13s ctr=2455kbit limit=1024 speed=3.76
|
||||
11:27:49 t=14s ctr=0kbit limit=1024 speed=1.56
|
||||
11:27:50 t=15s ctr=0kbit limit=1024 speed=0.00
|
||||
11:27:51 t=16s ctr=0kbit limit=1024 speed=0.00
|
||||
11:27:52 t=17s ctr=0kbit limit=1024 speed=0.00
|
||||
11:27:53 t=18s ctr=0kbit limit=1024 speed=0.00
|
||||
11:27:55 t=19s ctr=0kbit limit=1024 speed=0.00
|
||||
11:27:56 t=20s ctr=107kbit limit=1024 speed=0.07
|
||||
11:27:57 t=21s ctr=0kbit limit=1024 speed=0.00
|
||||
11:27:58 t=22s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:00 t=23s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:01 t=24s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:02 t=25s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:03 t=26s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:04 t=27s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:06 t=28s ctr=85kbit limit=1024 speed=0.05
|
||||
11:28:07 t=29s ctr=0kbit limit=1024 speed=0.05
|
||||
11:28:08 t=30s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:09 t=31s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:11 t=32s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:12 t=33s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:13 t=34s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:14 t=35s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:15 t=36s ctr=85kbit limit=1024 speed=0.00
|
||||
11:28:17 t=37s ctr=13kbit limit=1024 speed=0.05
|
||||
11:28:18 t=38s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:19 t=39s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:20 t=40s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:22 t=41s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:23 t=42s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:24 t=43s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:25 t=44s ctr=1kbit limit=1024 speed=0.05
|
||||
11:28:26 t=45s ctr=85kbit limit=1024 speed=0.05
|
||||
11:28:28 t=46s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:29 t=47s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:30 t=48s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:31 t=49s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:33 t=50s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:34 t=51s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:35 t=52s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:36 t=53s ctr=85kbit limit=1024 speed=0.05
|
||||
11:28:37 t=54s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:39 t=55s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:40 t=56s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:41 t=57s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:42 t=58s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:44 t=59s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:45 t=60s ctr=0kbit limit=1024 speed=0.00
|
||||
11:28:45 put back up_limit=5898240: ok
|
||||
after: limit=5898240 speed=0.55
|
||||
@@ -0,0 +1,4 @@
|
||||
08:25:21 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
{
|
||||
"last_ok_at": "2026-10-24T08:00:33.132515698Z",
|
||||
"mbps": 94.38232008767471,
|
||||
@@ -0,0 +1,35 @@
|
||||
11:21:08 rate_limit=5898240 up_speed=4.98Mbit
|
||||
11:21:09 rate_limit=5898240 up_speed=4.98Mbit
|
||||
11:21:09 rate_limit=5898240 up_speed=4.98Mbit
|
||||
11:21:09 rate_limit=5898240 up_speed=3.59Mbit
|
||||
11:21:10 rate_limit=5898240 up_speed=3.59Mbit
|
||||
11:21:10 rate_limit=5898240 up_speed=3.59Mbit
|
||||
11:21:11 rate_limit=5898240 up_speed=3.05Mbit
|
||||
11:21:11 rate_limit=5898240 up_speed=3.05Mbit
|
||||
11:21:12 rate_limit=5898240 up_speed=3.05Mbit
|
||||
11:21:12 rate_limit=5898240 up_speed=2.69Mbit
|
||||
11:21:13 rate_limit=5898240 up_speed=2.69Mbit
|
||||
11:21:13 rate_limit=5898240 up_speed=2.69Mbit
|
||||
11:21:14 rate_limit=5898240 up_speed=4.38Mbit
|
||||
11:21:14 rate_limit=5898240 up_speed=4.38Mbit
|
||||
11:21:15 rate_limit=5898240 up_speed=4.38Mbit
|
||||
11:21:15 rate_limit=5898240 up_speed=5.68Mbit
|
||||
11:21:16 rate_limit=5898240 up_speed=5.68Mbit
|
||||
11:21:16 rate_limit=5898240 up_speed=5.68Mbit
|
||||
11:21:17 rate_limit=5898240 up_speed=5.30Mbit
|
||||
11:21:17 rate_limit=1024 up_speed=5.30Mbit
|
||||
11:21:18 rate_limit=1024 up_speed=5.30Mbit
|
||||
11:21:18 rate_limit=1024 up_speed=1.80Mbit
|
||||
11:21:19 rate_limit=1024 up_speed=1.80Mbit
|
||||
11:21:19 rate_limit=1024 up_speed=1.80Mbit
|
||||
11:21:20 rate_limit=1024 up_speed=5.58Mbit
|
||||
11:21:20 rate_limit=1024 up_speed=5.58Mbit
|
||||
11:21:21 rate_limit=1024 up_speed=5.58Mbit
|
||||
11:21:21 rate_limit=1024 up_speed=3.58Mbit
|
||||
11:21:22 rate_limit=1024 up_speed=3.58Mbit
|
||||
11:21:22 rate_limit=1024 up_speed=3.58Mbit
|
||||
11:21:23 rate_limit=1024 up_speed=3.06Mbit
|
||||
11:21:23 rate_limit=1024 up_speed=3.06Mbit
|
||||
11:21:24 rate_limit=1024 up_speed=3.06Mbit
|
||||
11:21:24 rate_limit=1024 up_speed=5.32Mbit
|
||||
11:21:25 rate_limit=1024 up_speed=5.32Mbit
|
||||
@@ -0,0 +1,19 @@
|
||||
2026/10/27 12:24:55 service.go:83: [INFO] [upwatch] the host's weekly line test: 94.4 Mbit/s (measured 2026-10-24T08:00:33Z)
|
||||
2026/10/27 12:24:55 upwatch_wiring.go:154: [INFO] [upwatch] upload and CPU watch started (line 97 Mbit/s, qBittorrent share 50 %)
|
||||
2026/10/27 12:39:56 linehold.go:327: [INFO] [upwatch] line test: qbittorrent held at {Bytes:1024 Alt:false Enabled:false KBps:0} (was {Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 12:39:56 linehold.go:329: [INFO] [upwatch] line test: 1 app(s) held — asking the agent for a test
|
||||
2026/10/27 12:40:20 linehold.go:261: [INFO] [upwatch] line test: the held app(s) slowed down after 22s — asking the agent
|
||||
2026/10/27 12:41:17 linehold.go:192: [INFO] [upwatch] qbittorrent's upload limit is back as it was ({Bytes:5898240 Alt:false Enabled:false KBps:0})
|
||||
2026/10/27 12:41:17 linehold.go:340: [INFO] [upwatch] line test on request: 94.5 Mbit/s
|
||||
2026/10/27 12:41:17 service.go:83: [INFO] [upwatch] the host's weekly line test: 94.5 Mbit/s (measured 2026-10-27T12:40:35Z)
|
||||
Oct 27 13:40:35 demo-hp felhom-agent[1156735]: time=2026-10-27T13:40:35.610+01:00 level=INFO msg="linetest: test on request (a held torrent app, R-1250)" server=10.77.0.1:5201
|
||||
Oct 27 13:40:45 demo-hp felhom-agent[1156735]: time=2026-10-27T13:40:45.982+01:00 level=INFO msg="linetest: run 1: 94.5 Mbit/s" server=10.77.0.1:5201 server_bytes=118751232 server_seconds=10.050698
|
||||
Oct 27 13:41:01 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:01.335+01:00 level=INFO msg="linetest: run 2: 93.4 Mbit/s" server=10.77.0.1:5201 server_bytes=117440512 server_seconds=10.053919
|
||||
Oct 27 13:41:16 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:16.678+01:00 level=INFO msg="linetest: run 3: 94.4 Mbit/s" server=10.77.0.1:5201 server_bytes=118620160 server_seconds=10.053608
|
||||
Oct 27 13:41:16 demo-hp felhom-agent[1156735]: time=2026-10-27T13:41:16.678+01:00 level=INFO msg="linetest: upload line measured: 94.5 Mbit/s (best of 3)" server=10.77.0.1:5201 runs=3 duration_s=41.067967365
|
||||
{
|
||||
"last_ok_at": "2026-10-27T12:40:35.610771254Z",
|
||||
"mbps": 94.5217790843979,
|
||||
"runs_mbps": [
|
||||
|
||||
[exited with code 0]
|
||||
@@ -0,0 +1,52 @@
|
||||
### 1: no waitDrained call
|
||||
=== RUN TestR1250_TheAgentIsAskedOnlyAfterTheHeldAppSlowedDown
|
||||
linehold_r1250_drain_test.go:40: the agent was asked after 0 speed readings, want 7 — only after two quiet readings in a row
|
||||
--- FAIL: TestR1250_TheAgentIsAskedOnlyAfterTheHeldAppSlowedDown (0.00s)
|
||||
=== RUN TestR1250_EveryHeldAppMustSlowDown
|
||||
linehold_r1250_drain_test.go:66: asked 1 time(s) with 0 transmission reading(s), want once and after its two quiet readings (5)
|
||||
--- FAIL: TestR1250_EveryHeldAppMustSlowDown (0.00s)
|
||||
=== RUN TestR1250_AnAppThatNeverSlowsIsAskedAboutAfterTheMaximum
|
||||
linehold_r1250_drain_test.go:78: asked 1 time(s) after 0s, want once after 1m30s
|
||||
--- FAIL: TestR1250_AnAppThatNeverSlowsIsAskedAboutAfterTheMaximum (0.00s)
|
||||
=== RUN TestR1250_AnUnreadableSpeedGetsTheFallbackWait
|
||||
linehold_r1250_drain_test.go:93: asked 1 time(s) after 0s, want once after 20s
|
||||
--- FAIL: TestR1250_AnUnreadableSpeedGetsTheFallbackWait (0.00s)
|
||||
=== RUN TestR1250_UploadRateReadsTheAppsOwnSpeed
|
||||
--- PASS: TestR1250_UploadRateReadsTheAppsOwnSpeed (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/upwatch 0.010s
|
||||
FAIL
|
||||
### 2: only the first app read
|
||||
=== RUN TestR1250_TheAgentIsAskedOnlyAfterTheHeldAppSlowedDown
|
||||
--- PASS: TestR1250_TheAgentIsAskedOnlyAfterTheHeldAppSlowedDown (0.00s)
|
||||
=== RUN TestR1250_EveryHeldAppMustSlowDown
|
||||
linehold_r1250_drain_test.go:66: asked 1 time(s) with 0 transmission reading(s), want once and after its two quiet readings (5)
|
||||
--- FAIL: TestR1250_EveryHeldAppMustSlowDown (0.00s)
|
||||
=== RUN TestR1250_AnAppThatNeverSlowsIsAskedAboutAfterTheMaximum
|
||||
--- PASS: TestR1250_AnAppThatNeverSlowsIsAskedAboutAfterTheMaximum (0.00s)
|
||||
=== RUN TestR1250_AnUnreadableSpeedGetsTheFallbackWait
|
||||
--- PASS: TestR1250_AnUnreadableSpeedGetsTheFallbackWait (0.00s)
|
||||
=== RUN TestR1250_UploadRateReadsTheAppsOwnSpeed
|
||||
--- PASS: TestR1250_UploadRateReadsTheAppsOwnSpeed (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/upwatch 0.008s
|
||||
FAIL
|
||||
### 3: no fallback wait on a read error
|
||||
=== RUN TestR1250_TheAgentIsAskedOnlyAfterTheHeldAppSlowedDown
|
||||
--- PASS: TestR1250_TheAgentIsAskedOnlyAfterTheHeldAppSlowedDown (0.00s)
|
||||
=== RUN TestR1250_EveryHeldAppMustSlowDown
|
||||
--- PASS: TestR1250_EveryHeldAppMustSlowDown (0.00s)
|
||||
=== RUN TestR1250_AnAppThatNeverSlowsIsAskedAboutAfterTheMaximum
|
||||
--- PASS: TestR1250_AnAppThatNeverSlowsIsAskedAboutAfterTheMaximum (0.00s)
|
||||
=== RUN TestR1250_AnUnreadableSpeedGetsTheFallbackWait
|
||||
linehold_r1250_drain_test.go:93: asked 1 time(s) after 0s, want once after 20s
|
||||
--- FAIL: TestR1250_AnUnreadableSpeedGetsTheFallbackWait (0.00s)
|
||||
=== RUN TestR1250_UploadRateReadsTheAppsOwnSpeed
|
||||
--- PASS: TestR1250_UploadRateReadsTheAppsOwnSpeed (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/upwatch 0.010s
|
||||
FAIL
|
||||
### 4: no drainMax (expect a hang → timeout)
|
||||
panic: test timed out after 10s
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/upwatch 10.012s
|
||||
FAIL
|
||||
@@ -0,0 +1,255 @@
|
||||
08:27:16 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.49Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:28:20 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.76Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:29:24 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.97Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:30:28 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.33Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:31:32 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.03Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:32:36 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=8.65Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:33:40 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.49Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:34:44 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.24Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:35:48 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.13Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:36:51 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.31Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:37:55 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.72Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:38:59 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:40:03 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.76Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:41:07 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.20Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:42:11 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.17Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:43:15 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.24Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:44:19 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.58Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:45:23 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.14Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:46:27 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.83Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:47:31 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.92Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:48:35 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.23Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:49:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.88Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:50:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.99Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:51:47 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.20Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:52:51 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.89Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:53:55 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.59Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:54:59 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:56:03 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.70Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:57:07 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.17Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:58:11 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.81Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
08:59:15 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.83Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:00:19 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:01:24 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:02:28 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.59Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:03:32 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.43Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:04:36 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.93Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:05:40 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.97Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:06:44 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.89Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:07:48 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:08:52 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.32Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:09:56 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:11:00 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.75Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:12:04 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.11Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:13:08 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.83Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:14:12 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.93Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:15:16 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.23Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:16:20 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=8.21Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:17:25 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.50Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:18:29 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.98Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:19:33 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.24Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:20:36 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:21:40 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:22:44 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:23:48 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:24:52 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:25:57 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:27:01 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:28:05 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:29:09 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:30:13 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:31:17 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:32:21 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:33:26 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:34:30 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:35:34 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:36:38 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:37:42 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:38:46 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:39:50 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:40:54 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:41:59 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:43:03 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:44:07 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:45:11 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:46:15 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:47:19 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:48:24 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:49:28 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:50:32 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:51:36 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:52:40 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:53:45 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:54:49 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:55:53 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:56:57 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:58:01 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
09:59:05 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:00:09 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:01:14 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:02:18 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:03:22 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:04:26 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:05:31 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:06:35 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:07:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:08:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:09:47 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:10:52 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:11:56 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:13:00 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:14:04 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:15:09 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:16:13 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.02Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:17:17 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.25Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:18:21 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.96Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:19:26 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.59Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:20:30 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.15Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:21:34 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.71Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:22:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.02Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:23:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.40Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:24:47 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.94Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:25:51 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.95Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:26:56 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:28:00 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.76Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:29:04 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.98Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:30:08 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.93Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:31:13 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.13Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:32:17 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:33:21 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.87Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:34:26 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:35:30 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.75Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:36:34 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:37:38 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.96Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:38:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:39:47 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.15Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:40:51 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.49Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:41:56 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.98Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:43:00 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.62Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:44:04 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.27Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:45:08 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.69Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:46:13 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.97Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:47:17 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.12Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:48:21 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.06Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:49:26 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.66Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:50:30 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.94Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:51:34 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.68Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:52:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.58Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:53:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.89Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:54:47 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.79Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:55:52 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.66Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:56:56 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.73Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:58:01 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.33Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
10:59:05 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.72Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:00:09 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.88Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:01:14 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.33Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:02:18 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.11Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:03:23 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.49Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:04:27 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.17Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:05:31 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.02Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:06:35 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.51Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:07:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:08:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:09:48 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.45Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:10:52 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:11:57 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.06Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:13:01 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.73Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:14:05 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:15:09 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.81Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:16:14 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.24Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:17:18 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:18:23 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.58Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:19:28 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.33Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:20:32 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.06Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:21:36 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.91Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:22:41 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=8.91Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:23:45 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.08Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:24:50 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:25:54 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.02Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:26:59 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.76Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:28:03 seeder: up_limit=1024 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:29:07 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.72Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:30:12 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.15Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:31:16 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.46Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:32:21 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.92Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:33:25 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.50Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:34:30 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.85Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:35:35 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.41Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:36:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.75Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:37:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.11Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:38:48 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.58Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:39:52 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:40:56 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.12Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:42:01 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.86Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:43:05 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.74Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:44:10 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.32Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:45:14 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:46:19 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.19Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:47:23 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.50Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:48:28 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:49:33 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.34Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:50:37 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.23Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:51:42 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.81Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:52:46 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.52Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:53:51 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.67Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:54:55 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.33Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:55:59 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.93Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:57:04 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.76Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:58:08 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.02Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
11:59:12 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.19Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:00:17 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.75Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:01:21 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.76Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:02:26 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.41Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:03:30 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.85Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:04:35 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.33Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:05:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.94Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:06:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.50Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:07:48 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=8.31Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:08:52 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:09:56 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.28Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:11:01 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.15Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:12:05 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.97Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:13:10 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.24Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:14:14 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.50Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:15:18 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.02Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:16:23 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.57Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:17:27 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.15Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:18:32 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.68Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:19:37 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.16Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:20:41 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.41Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:21:45 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.65Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:22:50 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.87Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:23:54 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.93Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:24:58 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.10Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:26:02 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.71Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:27:06 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.94Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:28:10 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.41Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:29:15 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.33Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:30:19 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.37Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:31:23 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.08Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:32:27 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.12Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:33:31 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.50Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:34:35 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.80Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:35:39 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.68Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:36:43 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.89Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:37:47 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.58Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:38:51 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.59Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:39:55 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.93Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:41:00 seeder: up_limit=1024 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:42:04 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=7.06Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:42:06 TEST DONE — 20 more minutes for the 50 % rule's tick
|
||||
12:43:08 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=1.42Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:44:12 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.92Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:45:16 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.89Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:46:20 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.62Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:47:24 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.91Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:48:28 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.34Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:49:34 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=6.82Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:50:38 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.11Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:51:42 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=4.98Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:52:46 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=8.21Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:53:50 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.80Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:54:54 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=5.07Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:55:59 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=2.98Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:57:03 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=0.00Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
12:58:07 seeder: up_limit=5898240 alt_up_limit=10240 alt_mode=0 up_speed=3.59Mbit | ctl: upwatch={"line": [{"at": "2026-10-25T03:17:47Z", "peak10_mbps": 7.54, "bytes": 18588326, "seconds": 46, "counts": false}, {"at": "2026-10-26T03:17:56Z", "peak10_mbps": 5.99, "bytes": 17694322, "seconds": 55, "counts": false}, {"at": "2026-10-27T03:18:41Z", "peak10_mbps": 97.21, "bytes": 169114983, "seconds": 82, "counts": true}], "qb_limit": {"box_set_bytes": 5898240, "line_mbps": 94.38232008767471, "set_
|
||||
@@ -0,0 +1,45 @@
|
||||
11:21:08 ctr_tx=3720430734 guest_tx=4191329811
|
||||
11:21:09 ctr_tx=3721161419 guest_tx=4192048156
|
||||
11:21:10 ctr_tx=3721803031 guest_tx=4192678300
|
||||
11:21:11 ctr_tx=3721803031 guest_tx=4192678639
|
||||
11:21:12 ctr_tx=3722329245 guest_tx=4193201516
|
||||
11:21:13 ctr_tx=3723186755 guest_tx=4194078439
|
||||
11:21:14 ctr_tx=3724033016 guest_tx=4194917738
|
||||
11:21:15 ctr_tx=3724376145 guest_tx=4195269350
|
||||
11:21:16 ctr_tx=3724376145 guest_tx=4195269699
|
||||
11:21:17 ctr_tx=3725419455 guest_tx=4196340083
|
||||
11:21:18 ctr_tx=3725771666 guest_tx=4196690340
|
||||
11:21:19 ctr_tx=3725771666 guest_tx=4196704446
|
||||
11:21:20 ctr_tx=3726885998 guest_tx=4197824018
|
||||
11:21:21 ctr_tx=3727569177 guest_tx=4198522946
|
||||
11:21:22 ctr_tx=3728167648 guest_tx=4199135443
|
||||
11:21:23 ctr_tx=3728167648 guest_tx=4199135692
|
||||
11:21:24 ctr_tx=3729251591 guest_tx=4200237966
|
||||
11:21:25 ctr_tx=3729577628 guest_tx=4200571609
|
||||
11:21:26 ctr_tx=3730433281 guest_tx=4201446511
|
||||
11:21:27 ctr_tx=3730757142 guest_tx=4201777963
|
||||
11:21:28 ctr_tx=3730757142 guest_tx=4201778402
|
||||
11:21:29 ctr_tx=3731854062 guest_tx=4202899979
|
||||
11:21:30 ctr_tx=3732403419 guest_tx=4203462274
|
||||
11:21:31 ctr_tx=3733079530 guest_tx=4204127706
|
||||
11:21:32 ctr_tx=3733079530 guest_tx=4204128145
|
||||
11:21:33 ctr_tx=3734045673 guest_tx=4205107863
|
||||
11:21:34 ctr_tx=3734049230 guest_tx=4205108131
|
||||
11:21:35 ctr_tx=3734620537 guest_tx=4205692808
|
||||
11:21:36 ctr_tx=3735383082 guest_tx=4206472874
|
||||
11:21:37 ctr_tx=3735383082 guest_tx=4206473301
|
||||
11:21:38 ctr_tx=3736361579 guest_tx=4207452416
|
||||
11:21:39 ctr_tx=3737096572 guest_tx=4208204190
|
||||
11:21:40 ctr_tx=3737787526 guest_tx=4208887884
|
||||
11:21:41 ctr_tx=3737787658 guest_tx=4208888394
|
||||
11:21:42 ctr_tx=3738495267 guest_tx=4209587505
|
||||
11:21:43 ctr_tx=3739333599 guest_tx=4210445029
|
||||
11:21:44 ctr_tx=3739333599 guest_tx=4210445463
|
||||
11:21:45 ctr_tx=3740103138 guest_tx=4211232933
|
||||
11:21:46 ctr_tx=3740694338 guest_tx=4211828555
|
||||
11:21:47 ctr_tx=3740694338 guest_tx=4211828899
|
||||
11:21:48 ctr_tx=3741686134 guest_tx=4212843181
|
||||
11:21:49 ctr_tx=3742405075 guest_tx=4213578722
|
||||
11:21:50 ctr_tx=3743067504 guest_tx=4214244964
|
||||
11:21:51 ctr_tx=3743067504 guest_tx=4214245396
|
||||
11:21:52 ctr_tx=3743768303 guest_tx=4214962364
|
||||
@@ -0,0 +1,150 @@
|
||||
11:05:45 ctr_tx=3313871257 guest_tx=3777840176
|
||||
11:05:46 ctr_tx=3314487726 guest_tx=3778471133
|
||||
11:05:47 ctr_tx=3314487726 guest_tx=3778471477
|
||||
11:05:48 ctr_tx=3315497309 guest_tx=3779504388
|
||||
11:05:49 ctr_tx=3316198893 guest_tx=3780222432
|
||||
11:05:50 ctr_tx=3316198893 guest_tx=3780222851
|
||||
11:05:51 ctr_tx=3316884725 guest_tx=3780924993
|
||||
11:05:52 ctr_tx=3317569183 guest_tx=3781625913
|
||||
11:05:53 ctr_tx=3318390305 guest_tx=3782466273
|
||||
11:05:54 ctr_tx=3318390305 guest_tx=3782467595
|
||||
11:05:55 ctr_tx=3319178173 guest_tx=3783273791
|
||||
11:05:56 ctr_tx=3319743674 guest_tx=3783852666
|
||||
11:05:57 ctr_tx=3319743674 guest_tx=3783853052
|
||||
11:05:58 ctr_tx=3320754016 guest_tx=3784886756
|
||||
11:05:59 ctr_tx=3321113058 guest_tx=3785254370
|
||||
11:06:00 ctr_tx=3321113100 guest_tx=3785254780
|
||||
11:06:01 ctr_tx=3322192604 guest_tx=3786359369
|
||||
11:06:02 ctr_tx=3322859502 guest_tx=3787041987
|
||||
11:06:03 ctr_tx=3323476191 guest_tx=3787673254
|
||||
11:06:04 ctr_tx=3323476191 guest_tx=3787673508
|
||||
11:06:05 ctr_tx=3324845825 guest_tx=3789075323
|
||||
11:06:06 ctr_tx=3324845825 guest_tx=3789075577
|
||||
11:06:07 ctr_tx=3325685101 guest_tx=3789934597
|
||||
11:06:08 ctr_tx=3326010790 guest_tx=3790267978
|
||||
11:06:09 ctr_tx=3326010790 guest_tx=3790268496
|
||||
11:06:10 ctr_tx=3327071817 guest_tx=3791354051
|
||||
11:06:11 ctr_tx=3327619583 guest_tx=3791914797
|
||||
11:06:12 ctr_tx=3328252881 guest_tx=3792562901
|
||||
11:06:13 ctr_tx=3328252881 guest_tx=3792563335
|
||||
11:06:14 ctr_tx=3329193887 guest_tx=3793525981
|
||||
11:06:15 ctr_tx=3329827027 guest_tx=3794174197
|
||||
11:06:16 ctr_tx=3330495271 guest_tx=3794857995
|
||||
11:06:17 ctr_tx=3330501276 guest_tx=3794862021
|
||||
11:06:18 ctr_tx=3331446550 guest_tx=3795824910
|
||||
11:06:19 ctr_tx=3332166653 guest_tx=3796575731
|
||||
11:06:20 ctr_tx=3332166653 guest_tx=3796576217
|
||||
11:06:21 ctr_tx=3332816688 guest_tx=3797241500
|
||||
11:06:22 ctr_tx=3333826412 guest_tx=3798274582
|
||||
11:06:23 ctr_tx=3334220153 guest_tx=3798677723
|
||||
11:06:24 ctr_tx=3334220153 guest_tx=3798678273
|
||||
11:06:25 ctr_tx=3335333658 guest_tx=3799817334
|
||||
11:06:26 ctr_tx=3335333658 guest_tx=3799817666
|
||||
11:06:27 ctr_tx=3336019176 guest_tx=3800519282
|
||||
11:06:28 ctr_tx=3336668809 guest_tx=3801184139
|
||||
11:06:29 ctr_tx=3337387905 guest_tx=3801919994
|
||||
11:06:30 ctr_tx=3337387905 guest_tx=3801920392
|
||||
11:06:31 ctr_tx=3338175741 guest_tx=3802726848
|
||||
11:06:32 ctr_tx=3338644552 guest_tx=3803206672
|
||||
11:06:33 ctr_tx=3338727332 guest_tx=3803279803
|
||||
11:06:34 ctr_tx=3339539697 guest_tx=3804111085
|
||||
11:06:35 ctr_tx=3340550257 guest_tx=3805145250
|
||||
11:06:36 ctr_tx=3340550257 guest_tx=3805145945
|
||||
11:06:37 ctr_tx=3341252097 guest_tx=3805864252
|
||||
11:06:38 ctr_tx=3341902119 guest_tx=3806529666
|
||||
11:06:39 ctr_tx=3342588273 guest_tx=3807232481
|
||||
11:06:40 ctr_tx=3342588273 guest_tx=3807232730
|
||||
11:06:41 ctr_tx=3343391916 guest_tx=3808055025
|
||||
11:06:42 ctr_tx=3344163034 guest_tx=3808844151
|
||||
11:06:43 ctr_tx=3344727879 guest_tx=3809422306
|
||||
11:06:44 ctr_tx=3344727879 guest_tx=3809422638
|
||||
11:06:45 ctr_tx=3345703537 guest_tx=3810420988
|
||||
11:06:46 ctr_tx=3345703537 guest_tx=3810421386
|
||||
11:06:47 ctr_tx=3346422666 guest_tx=3811157452
|
||||
11:06:48 ctr_tx=3347039295 guest_tx=3811788649
|
||||
11:06:49 ctr_tx=3347740853 guest_tx=3812506865
|
||||
11:06:50 ctr_tx=3347740853 guest_tx=3812507376
|
||||
11:06:51 ctr_tx=3348510332 guest_tx=3813294852
|
||||
11:06:52 ctr_tx=3349281337 guest_tx=3814083738
|
||||
11:06:53 ctr_tx=3349829152 guest_tx=3814644484
|
||||
11:06:54 ctr_tx=3349829152 guest_tx=3814644887
|
||||
11:06:55 ctr_tx=3350787682 guest_tx=3815625808
|
||||
11:06:56 ctr_tx=3351490003 guest_tx=3816344392
|
||||
11:06:57 ctr_tx=3352106613 guest_tx=3816975651
|
||||
11:06:58 ctr_tx=3352106613 guest_tx=3816975942
|
||||
11:06:59 ctr_tx=3353116754 guest_tx=3818009581
|
||||
11:07:00 ctr_tx=3353116796 guest_tx=3818009918
|
||||
11:07:01 ctr_tx=3353817760 guest_tx=3818727406
|
||||
11:07:02 ctr_tx=3354502861 guest_tx=3819428484
|
||||
11:07:03 ctr_tx=3355188640 guest_tx=3820130356
|
||||
11:07:04 ctr_tx=3355188640 guest_tx=3820131009
|
||||
11:07:05 ctr_tx=3356009234 guest_tx=3820970756
|
||||
11:07:06 ctr_tx=3356796965 guest_tx=3821776742
|
||||
11:07:07 ctr_tx=3356796965 guest_tx=3821777159
|
||||
11:07:08 ctr_tx=3357362583 guest_tx=3822356060
|
||||
11:07:09 ctr_tx=3358373252 guest_tx=3823389926
|
||||
11:07:10 ctr_tx=3358732029 guest_tx=3823757310
|
||||
11:07:11 ctr_tx=3358732029 guest_tx=3823757661
|
||||
11:07:12 ctr_tx=3359810599 guest_tx=3824861218
|
||||
11:07:13 ctr_tx=3360478431 guest_tx=3825544735
|
||||
11:07:14 ctr_tx=3360478431 guest_tx=3825545970
|
||||
11:07:15 ctr_tx=3361095665 guest_tx=3826177788
|
||||
11:07:16 ctr_tx=3361095665 guest_tx=3826178120
|
||||
11:07:17 ctr_tx=3362466441 guest_tx=3827579026
|
||||
11:07:18 ctr_tx=3362466441 guest_tx=3827579358
|
||||
11:07:19 ctr_tx=3363305362 guest_tx=3828437977
|
||||
11:07:20 ctr_tx=3363630069 guest_tx=3828770462
|
||||
11:07:21 ctr_tx=3363630069 guest_tx=3828770884
|
||||
11:07:22 ctr_tx=3364692510 guest_tx=3829857745
|
||||
11:07:23 ctr_tx=3365239269 guest_tx=3830417406
|
||||
11:07:24 ctr_tx=3365873417 guest_tx=3831066529
|
||||
11:07:25 ctr_tx=3365873549 guest_tx=3831066885
|
||||
11:07:26 ctr_tx=3366815697 guest_tx=3832030595
|
||||
11:07:27 ctr_tx=3367448221 guest_tx=3832678035
|
||||
11:07:28 ctr_tx=3368050637 guest_tx=3833294485
|
||||
11:07:29 ctr_tx=3368050637 guest_tx=3833294907
|
||||
11:07:30 ctr_tx=3368050699 guest_tx=3833295301
|
||||
11:07:31 ctr_tx=3368050741 guest_tx=3833295699
|
||||
11:07:32 ctr_tx=3368050741 guest_tx=3833296097
|
||||
11:07:33 ctr_tx=3368050741 guest_tx=3833296453
|
||||
11:07:34 ctr_tx=3368050741 guest_tx=3833297173
|
||||
11:07:35 ctr_tx=3368050741 guest_tx=3833297529
|
||||
11:07:36 ctr_tx=3368050741 guest_tx=3833297861
|
||||
11:07:37 ctr_tx=3368052169 guest_tx=3833298217
|
||||
11:07:38 ctr_tx=3368052169 guest_tx=3833298712
|
||||
11:07:39 ctr_tx=3368052169 guest_tx=3833299134
|
||||
11:07:40 ctr_tx=3368052169 guest_tx=3833299466
|
||||
11:07:41 ctr_tx=3368052169 guest_tx=3833299906
|
||||
11:07:42 ctr_tx=3368052169 guest_tx=3833300238
|
||||
11:07:43 ctr_tx=3368052169 guest_tx=3833300594
|
||||
11:07:44 ctr_tx=3368052169 guest_tx=3833300992
|
||||
11:07:45 ctr_tx=3368052301 guest_tx=3833301348
|
||||
11:07:46 ctr_tx=3368052301 guest_tx=3833301680
|
||||
11:07:47 ctr_tx=3368052301 guest_tx=3833302102
|
||||
11:07:48 ctr_tx=3368052301 guest_tx=3833302434
|
||||
11:07:49 ctr_tx=3368052301 guest_tx=3833303522
|
||||
11:07:50 ctr_tx=3368052301 guest_tx=3833303942
|
||||
11:07:51 ctr_tx=3368052301 guest_tx=3833304381
|
||||
11:07:52 ctr_tx=3368052301 guest_tx=3833304801
|
||||
11:07:53 ctr_tx=3368052301 guest_tx=3833305240
|
||||
11:07:54 ctr_tx=3368052301 guest_tx=3833305726
|
||||
11:07:55 ctr_tx=3368052301 guest_tx=3833306249
|
||||
11:07:56 ctr_tx=3368052301 guest_tx=3833306669
|
||||
11:07:57 ctr_tx=3368052301 guest_tx=3833307174
|
||||
11:07:58 ctr_tx=3368052301 guest_tx=3833307506
|
||||
11:07:59 ctr_tx=3368052301 guest_tx=3833307948
|
||||
11:08:01 ctr_tx=3368052301 guest_tx=3833308285
|
||||
11:08:02 ctr_tx=3368052301 guest_tx=3833308636
|
||||
11:08:03 ctr_tx=3368052301 guest_tx=3833309181
|
||||
11:08:04 ctr_tx=3368052301 guest_tx=3833309532
|
||||
11:08:05 ctr_tx=3368052301 guest_tx=3833309935
|
||||
11:08:06 ctr_tx=3368052301 guest_tx=3833310286
|
||||
11:08:07 ctr_tx=3368052301 guest_tx=3833310789
|
||||
11:08:08 ctr_tx=3368052301 guest_tx=3833311140
|
||||
11:08:09 ctr_tx=3368052301 guest_tx=3833311477
|
||||
11:08:10 ctr_tx=3368052301 guest_tx=3833311904
|
||||
11:08:11 ctr_tx=3368052301 guest_tx=3833312325
|
||||
11:08:12 ctr_tx=3368052301 guest_tx=3833312718
|
||||
11:08:13 ctr_tx=3368052301 guest_tx=3833313121
|
||||
11:08:14 ctr_tx=3368052301 guest_tx=3833313472
|
||||
11:08:15 ctr_tx=3368052301 guest_tx=3833313875
|
||||
@@ -0,0 +1,150 @@
|
||||
11:05:44 nic0_tx=10835385824
|
||||
11:05:45 nic0_tx=10836105439
|
||||
11:05:46 nic0_tx=10836737019
|
||||
11:05:47 nic0_tx=10836745529
|
||||
11:05:48 nic0_tx=10837779155
|
||||
11:05:49 nic0_tx=10838505203
|
||||
11:05:50 nic0_tx=10838513817
|
||||
11:05:51 nic0_tx=10839230759
|
||||
11:05:52 nic0_tx=10839947446
|
||||
11:05:53 nic0_tx=10840795720
|
||||
11:05:54 nic0_tx=10840798099
|
||||
11:05:55 nic0_tx=10841604925
|
||||
11:05:56 nic0_tx=10842186544
|
||||
11:05:57 nic0_tx=10842304662
|
||||
11:05:58 nic0_tx=10843594238
|
||||
11:05:59 nic0_tx=10843595212
|
||||
11:06:00 nic0_tx=10844052562
|
||||
11:06:01 nic0_tx=10845391161
|
||||
11:06:02 nic0_tx=10845392559
|
||||
11:06:03 nic0_tx=10846024611
|
||||
11:06:04 nic0_tx=10846025675
|
||||
11:06:05 nic0_tx=10847428113
|
||||
11:06:06 nic0_tx=10847429897
|
||||
11:06:07 nic0_tx=10848297292
|
||||
11:06:08 nic0_tx=10848631435
|
||||
11:06:09 nic0_tx=10848633002
|
||||
11:06:10 nic0_tx=10849719277
|
||||
11:06:11 nic0_tx=10850295044
|
||||
11:06:12 nic0_tx=10850943827
|
||||
11:06:13 nic0_tx=10850952184
|
||||
11:06:14 nic0_tx=10851915467
|
||||
11:06:15 nic0_tx=10852564306
|
||||
11:06:16 nic0_tx=10853248741
|
||||
11:06:17 nic0_tx=10853270223
|
||||
11:06:18 nic0_tx=10854260861
|
||||
11:06:19 nic0_tx=10855034035
|
||||
11:06:20 nic0_tx=10855057090
|
||||
11:06:21 nic0_tx=10855736582
|
||||
11:06:22 nic0_tx=10856777847
|
||||
11:06:23 nic0_tx=10857181701
|
||||
11:06:24 nic0_tx=10857183134
|
||||
11:06:25 nic0_tx=10858322825
|
||||
11:06:26 nic0_tx=10858329509
|
||||
11:06:27 nic0_tx=10859033359
|
||||
11:06:28 nic0_tx=10859698846
|
||||
11:06:29 nic0_tx=10860435373
|
||||
11:06:30 nic0_tx=10860436658
|
||||
11:06:31 nic0_tx=10861257686
|
||||
11:06:32 nic0_tx=10861738289
|
||||
11:06:33 nic0_tx=10861819440
|
||||
11:06:34 nic0_tx=10862657149
|
||||
11:06:35 nic0_tx=10863691944
|
||||
11:06:36 nic0_tx=10863701375
|
||||
11:06:37 nic0_tx=10864433012
|
||||
11:06:38 nic0_tx=10865101373
|
||||
11:06:39 nic0_tx=10865804901
|
||||
11:06:40 nic0_tx=10865805870
|
||||
11:06:41 nic0_tx=10866636034
|
||||
11:06:42 nic0_tx=10867425888
|
||||
11:06:43 nic0_tx=10868004758
|
||||
11:06:44 nic0_tx=10868005720
|
||||
11:06:45 nic0_tx=10869004700
|
||||
11:06:46 nic0_tx=10869005770
|
||||
11:06:47 nic0_tx=10869749766
|
||||
11:06:48 nic0_tx=10870381593
|
||||
11:06:49 nic0_tx=10871107676
|
||||
11:06:50 nic0_tx=10871121953
|
||||
11:06:51 nic0_tx=10871925790
|
||||
11:06:52 nic0_tx=10872725592
|
||||
11:06:53 nic0_tx=10873291138
|
||||
11:06:54 nic0_tx=10873292171
|
||||
11:06:55 nic0_tx=10874273722
|
||||
11:06:56 nic0_tx=10874996430
|
||||
11:06:57 nic0_tx=10875632329
|
||||
11:06:58 nic0_tx=10875633142
|
||||
11:06:59 nic0_tx=10876667411
|
||||
11:07:00 nic0_tx=10876668378
|
||||
11:07:01 nic0_tx=10877393504
|
||||
11:07:02 nic0_tx=10878095254
|
||||
11:07:03 nic0_tx=10878797756
|
||||
11:07:04 nic0_tx=10878799375
|
||||
11:07:05 nic0_tx=10879639752
|
||||
11:07:06 nic0_tx=10880446510
|
||||
11:07:07 nic0_tx=10880454848
|
||||
11:07:08 nic0_tx=10881034372
|
||||
11:07:09 nic0_tx=10882068875
|
||||
11:07:10 nic0_tx=10882447678
|
||||
11:07:11 nic0_tx=10882452162
|
||||
11:07:12 nic0_tx=10883563780
|
||||
11:07:13 nic0_tx=10884247934
|
||||
11:07:14 nic0_tx=10884249792
|
||||
11:07:15 nic0_tx=10884882583
|
||||
11:07:16 nic0_tx=10884883704
|
||||
11:07:17 nic0_tx=10886299805
|
||||
11:07:18 nic0_tx=10886306269
|
||||
11:07:19 nic0_tx=10887172783
|
||||
11:07:20 nic0_tx=10887521315
|
||||
11:07:21 nic0_tx=10887536486
|
||||
11:07:22 nic0_tx=10888631558
|
||||
11:07:23 nic0_tx=10889191676
|
||||
11:07:24 nic0_tx=10889841618
|
||||
11:07:25 nic0_tx=10889842781
|
||||
11:07:26 nic0_tx=10890814590
|
||||
11:07:27 nic0_tx=10891462667
|
||||
11:07:28 nic0_tx=10892079740
|
||||
11:07:29 nic0_tx=10892080799
|
||||
11:07:30 nic0_tx=10892094408
|
||||
11:07:31 nic0_tx=10892096933
|
||||
11:07:32 nic0_tx=10892105254
|
||||
11:07:33 nic0_tx=10892106247
|
||||
11:07:34 nic0_tx=10892107756
|
||||
11:07:35 nic0_tx=10892108881
|
||||
11:07:36 nic0_tx=10892109878
|
||||
11:07:37 nic0_tx=10892118479
|
||||
11:07:38 nic0_tx=10892124860
|
||||
11:07:39 nic0_tx=10892126179
|
||||
11:07:40 nic0_tx=10892139696
|
||||
11:07:41 nic0_tx=10892147979
|
||||
11:07:42 nic0_tx=10892151258
|
||||
11:07:43 nic0_tx=10892152251
|
||||
11:07:44 nic0_tx=10892153272
|
||||
11:07:45 nic0_tx=10892154265
|
||||
11:07:46 nic0_tx=10892162050
|
||||
11:07:47 nic0_tx=10892163629
|
||||
11:07:48 nic0_tx=10892164750
|
||||
11:07:49 nic0_tx=10892176424
|
||||
11:07:50 nic0_tx=10892196445
|
||||
11:07:51 nic0_tx=10892206601
|
||||
11:07:52 nic0_tx=10892219726
|
||||
11:07:53 nic0_tx=10892220802
|
||||
11:07:54 nic0_tx=10892221995
|
||||
11:07:55 nic0_tx=10892223491
|
||||
11:07:56 nic0_tx=10892231746
|
||||
11:07:57 nic0_tx=10892232888
|
||||
11:07:58 nic0_tx=10892233843
|
||||
11:07:59 nic0_tx=10892234922
|
||||
11:08:00 nic0_tx=10892242370
|
||||
11:08:02 nic0_tx=10892243878
|
||||
11:08:03 nic0_tx=10892245046
|
||||
11:08:04 nic0_tx=10892246034
|
||||
11:08:05 nic0_tx=10892247060
|
||||
11:08:06 nic0_tx=10892248048
|
||||
11:08:07 nic0_tx=10892249174
|
||||
11:08:08 nic0_tx=10892257726
|
||||
11:08:09 nic0_tx=10892258686
|
||||
11:08:10 nic0_tx=10892259841
|
||||
11:08:11 nic0_tx=10892275237
|
||||
11:08:12 nic0_tx=10892276333
|
||||
11:08:13 nic0_tx=10892284797
|
||||
11:08:14 nic0_tx=10892285785
|
||||
@@ -0,0 +1,15 @@
|
||||
== 11:13:47
|
||||
-- qbittorrent (container netns), established, port 6881:
|
||||
-- forwarder (guest netns), established, port 6881:
|
||||
== 11:13:50
|
||||
-- qbittorrent (container netns), established, port 6881:
|
||||
-- forwarder (guest netns), established, port 6881:
|
||||
== 11:13:53
|
||||
-- qbittorrent (container netns), established, port 6881:
|
||||
-- forwarder (guest netns), established, port 6881:
|
||||
== 11:13:56
|
||||
-- qbittorrent (container netns), established, port 6881:
|
||||
-- forwarder (guest netns), established, port 6881:
|
||||
== 11:13:59
|
||||
-- qbittorrent (container netns), established, port 6881:
|
||||
-- forwarder (guest netns), established, port 6881:
|
||||
@@ -0,0 +1,21 @@
|
||||
== 1. DooPlex qBittorrent: torrent + data removed
|
||||
left in the list: []
|
||||
left on disk: total 8
|
||||
drwxr-xr-x 2 abc users 4096 Oct 27 13:59 .
|
||||
drwxrwxrwt 1 root root 4096 Oct 27 12:09 ..
|
||||
categories: {"prowlarr":{"download_path":null,"inactive_seeding_time_limit":-2,"name":"prowlarr","ratio_limit":-2,"savePath":"","seeding_time_limit":-2,"share_limit_action":"Default","share_limits_mode":"Default"
|
||||
== 2. forwarder stopped, my seed folder removed (made by hand, not by the product)
|
||||
0
|
||||
movies
|
||||
tv
|
||||
== 3. app removed through the product
|
||||
stop: 200
|
||||
remove: 200 {'ok': True, 'data': {'removed': 'qbittorrent', 'volumes_removed': ['qbittorrent_qbittorrent_config'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'user
|
||||
== 4. verify: no container, no app.yaml, no volume
|
||||
0
|
||||
ls: cannot access '/opt/docker/stacks/qbittorrent/app.yaml': No such file or directory
|
||||
0
|
||||
0
|
||||
/tmp/r1250 removed
|
||||
0
|
||||
326 torrents
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
# dooplex_qb.sh add|status|remove — R-1250 live test (2026-10-27) only: DooPlex's qBittorrent as the DOWNLOAD-ONLY peer.
|
||||
# add: the torrent saved to the pod's /tmp/r1250 (never a media folder), its download capped at 375000 B/s (3 Mbit/s,
|
||||
# above the agent's 2 Mbit/s quiet line), the seed's address given as its peer. remove: the torrent AND its data.
|
||||
set -u
|
||||
H=8828f12fe7899fa6a8a1c4994c26f11ae19eb6fa; TOR=$(dirname "$0")/../p8ev/r1250.torrent
|
||||
P=$(sudo kubectl -n servarr-system get pod -l app=qbittorrent -o name | head -1); P=${P#pod/}
|
||||
x(){ sudo kubectl -n servarr-system exec "$P" -- "$@"; }
|
||||
B=http://127.0.0.1:8080/api/v2
|
||||
case "$1" in
|
||||
add)
|
||||
sudo kubectl -n servarr-system cp "$TOR" "$P:/tmp/r1250.torrent" >/dev/null
|
||||
x curl -s -F torrents=@/tmp/r1250.torrent -F savepath=/tmp/r1250 -F dlLimit=375000 -F category=cc-r1250 $B/torrents/add; echo
|
||||
sleep 3
|
||||
x curl -s --data "hashes=$H&limit=375000" $B/torrents/setDownloadLimit; x curl -s --data "hashes=$H&value=0" $B/torrents/setShareLimits >/dev/null 2>&1
|
||||
x curl -s --data "hashes=$H&peers=192.168.0.155:6881" $B/torrents/addPeers; echo
|
||||
x rm -f /tmp/r1250.torrent ;;
|
||||
status)
|
||||
x curl -s "$B/torrents/info?hashes=$H" | python3 -c 'import json,sys
|
||||
for t in json.load(sys.stdin): print(t["name"], t["state"], "%.1f%%" % (t["progress"]*100), "dl %.2f Mbit/s" % (t["dlspeed"]*8/1e6), "limit", t["dl_limit"], "seeds", t["num_seeds"], "save", t["save_path"])' ;;
|
||||
remove)
|
||||
x curl -s --data "hashes=$H&deleteFiles=true" $B/torrents/delete; sleep 3
|
||||
echo "left in the list: $(x curl -s "$B/torrents/info?hashes=$H")"; echo "left on disk: $(x sh -c 'ls -la /tmp/r1250 2>&1 | head -3')"
|
||||
x curl -s "$B/torrents/categories" | grep -q cc-r1250 && x curl -s --data "categories=cc-r1250" $B/torrents/removeCategories; echo "categories: $(x curl -s $B/torrents/categories | head -c 200)" ;;
|
||||
esac
|
||||
@@ -0,0 +1,36 @@
|
||||
# R-1250 live test only (2026-10-27): forward guest 9201's LAN :6881 (TCP and UDP) to its throwaway qBittorrent
|
||||
# container, so DooPlex's qBittorrent can reach the seed. Started by hand, killed at teardown.
|
||||
import socket, sys, threading
|
||||
LAN, DST = sys.argv[1], (sys.argv[2], 6881)
|
||||
def pipe(a, b):
|
||||
try:
|
||||
while True:
|
||||
d = a.recv(65536)
|
||||
if not d: break
|
||||
b.sendall(d)
|
||||
except OSError: pass
|
||||
finally:
|
||||
for s in (a, b):
|
||||
try: s.shutdown(socket.SHUT_RDWR)
|
||||
except OSError: pass
|
||||
def udp():
|
||||
us = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); us.bind((LAN, 6881)); peers = {}
|
||||
def back(client, s):
|
||||
while True:
|
||||
try: d, _ = s.recvfrom(65536)
|
||||
except OSError: return
|
||||
us.sendto(d, client)
|
||||
while True:
|
||||
d, client = us.recvfrom(65536)
|
||||
s = peers.get(client)
|
||||
if s is None:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.connect(DST); peers[client] = s
|
||||
threading.Thread(target=back, args=(client, s), daemon=True).start()
|
||||
s.send(d)
|
||||
threading.Thread(target=udp, daemon=True).start()
|
||||
ls = socket.socket(); ls.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1); ls.bind((LAN, 6881)); ls.listen(16)
|
||||
while True:
|
||||
c, _ = ls.accept()
|
||||
u = socket.create_connection(DST)
|
||||
threading.Thread(target=pipe, args=(c, u), daemon=True).start()
|
||||
threading.Thread(target=pipe, args=(u, c), daemon=True).start()
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
# gsample.sh — INSIDE guest 9201: one sample of the seeder (its limits, speed) and the controller's line-test records.
|
||||
Q=/root/r1250/qbg.sh
|
||||
P=$(sh $Q app/preferences | python3 -c 'import json,sys
|
||||
try:
|
||||
d=json.load(sys.stdin); print("up_limit=%s alt_up_limit=%s" % (d.get("up_limit"), d.get("alt_up_limit")))
|
||||
except Exception as e: print("prefs unreadable")')
|
||||
M=$(sh $Q transfer/speedLimitsMode)
|
||||
T=$(sh $Q transfer/info | python3 -c 'import json,sys
|
||||
try:
|
||||
d=json.load(sys.stdin); print("up_speed=%.2fMbit" % (d.get("up_info_speed",0)*8/1e6))
|
||||
except Exception: print("transfer unreadable")')
|
||||
R=$(python3 -c 'import json
|
||||
d=json.load(open("/var/lib/docker/volumes/felhom-controller-data/_data/data/settings.json")); u=d.get("upwatch") or {}
|
||||
print("upwatch=%s" % json.dumps(u)[:400])' 2>&1)
|
||||
echo "$(date -u +%H:%M:%S) seeder: $P alt_mode=$M $T | ctl: $R"
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
# gsetup.sh — INSIDE guest 9201 (R-1250 live test, 2026-10-27): a SPARSE 3 GiB seed file in the throwaway qBittorrent's
|
||||
# downloads folder, a private torrent of it made by qBittorrent's own creator, its peer settings (fixed port 6881, no
|
||||
# DHT/PeX/LSD so it talks to the one LAN peer only). Prints the container IP and the torrent's hash. No secret printed.
|
||||
set -eu
|
||||
Q=/root/r1250/qbg.sh
|
||||
D=/mnt/felhom-drives/hdd_1/userdata/media/torrents/r1250
|
||||
mkdir -p $D; [ -f $D/r1250-seed.bin ] || truncate -s 3G $D/r1250-seed.bin
|
||||
chown -R 1000:1000 $D 2>/dev/null || true
|
||||
ls -ls $D
|
||||
sh $Q app/setPreferences 'json={"listen_port":6881,"upnp":false,"dht":false,"pex":false,"lsd":false,"queueing_enabled":false,"max_connec_per_torrent":20}'
|
||||
T=$(sh $Q torrentcreator/addTask 'sourcePath=/downloads/r1250/r1250-seed.bin&private=true&startSeeding=true&comment=R-1250 live proof, LAN only')
|
||||
echo "addTask: $T"; ID=$(echo "$T" | grep -oE '"taskID":"[^"]+"' | cut -d'"' -f4)
|
||||
i=0; while [ $i -lt 120 ]; do S=$(sh $Q "torrentcreator/status?taskID=$ID"); echo "$S" | grep -q '"Finished"' && break; i=$((i+1)); sleep 2; done
|
||||
echo "creator: $(echo "$S" | grep -oE '"(status|errorMessage|pieceSize)":[^,]*' | paste -sd' ')"
|
||||
docker exec qbittorrent sh -c 'ls /config/qBittorrent/BT_backup 2>/dev/null | head' || true
|
||||
sh $Q torrents/info | python3 -c 'import json,sys
|
||||
for t in json.load(sys.stdin): print("torrent", t["name"], t["hash"], t["state"], "size", t["size"], "private", t.get("private"))'
|
||||
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}' qbittorrent
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env python3
|
||||
"""install_qb.py — Part 8 (R-1250): install a THROWAWAY qBittorrent on demo-hp guest 9201 through the endpoints the UI
|
||||
invokes (box_walk). usage: SC=<dir with .ctlpw> TARGET=9201 DRIVE_ROOT=/mnt/felhom-drives/hdd_1 python3 -u install_qb.py"""
|
||||
import os, sys
|
||||
sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/catalog-sweep-2026-10-24/tools")
|
||||
import box_walk as w
|
||||
w.login()
|
||||
code, d = w.ctl("GET", "/api/stacks/qbittorrent/deploy-fields")
|
||||
print("deploy-fields:", code, [(f.get("env_var"), f.get("type"), f.get("required")) for f in ((((d.get("data") or {}).get("metadata") or {}).get("deploy_fields")) or [])])
|
||||
ok = w.deploy("qbittorrent", "qbline")
|
||||
print("deployed:", ok)
|
||||
print("answers:", ok and w.wait_app("qbline", "/", tries=60, delay=5))
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
# limitprobe.sh — INSIDE guest 9201, R-1250 diagnosis on the THROWAWAY qBittorrent only (no line test is started): the
|
||||
# controller's own hold value (up_limit 1024 B/s, the same app/preferences call) for 60 s, then the exact previous
|
||||
# value back. Each second: qBittorrent's reported limit + speed and the bytes its container sent.
|
||||
Q=/root/r1250/qbg.sh; PID=$(docker inspect -f '{{.State.Pid}}' qbittorrent)
|
||||
rd(){ sh $Q transfer/info | python3 -c 'import json,sys;d=json.load(sys.stdin);print("limit=%s speed=%.2f" % (d.get("up_rate_limit"), d.get("up_info_speed",0)*8/1e6))'; }
|
||||
PREV=$(sh $Q app/preferences | python3 -c 'import json,sys;print(json.loads(sys.stdin.read().replace("\\\\","/")).get("up_limit"))' 2>/dev/null)
|
||||
echo "previous up_limit=$PREV"; [ -n "$PREV" ] || { echo "cannot read the previous limit — no probe"; exit 1; }
|
||||
c0=$(awk '/eth0:/{print $10}' /proc/$PID/net/dev)
|
||||
echo "$(date -u +%T) set up_limit=1024: $(sh $Q app/setPreferences 'json={"up_limit":1024}'; echo ok)"
|
||||
i=0; while [ $i -lt 60 ]; do sleep 1; c=$(awk '/eth0:/{print $10}' /proc/$PID/net/dev); echo "$(date -u +%T) t=$((i+1))s ctr=$(( (c-c0)*8/1000 ))kbit $(rd)"; c0=$c; i=$((i+1)); done
|
||||
echo "$(date -u +%T) put back up_limit=$PREV: $(sh $Q app/setPreferences "json={\"up_limit\":$PREV}"; echo ok)"
|
||||
sleep 2; echo "after: $(rd)"
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
# qbg.sh <api path> [form data] [-F] — INSIDE guest 9201: one call to the throwaway qBittorrent's API from inside its
|
||||
# container. The admin password is read from the container's own env inside the container — never an argument, never printed.
|
||||
P="$1"; D="${2:-}"
|
||||
docker exec -i -e AP="$P" -e AD="$D" qbittorrent sh -s <<'IN'
|
||||
c=/tmp/r1250.c; B=http://localhost:8080
|
||||
printf 'username=admin&password=%s' "$QBT_ADMIN_PASSWORD" | curl -s -o /dev/null -c $c -H "Referer: $B" --data-binary @- $B/api/v2/auth/login
|
||||
if [ -n "$AD" ]; then curl -s -b $c -H "Referer: $B" --data "$AD" "$B/api/v2/$AP"; else curl -s -b $c -H "Referer: $B" "$B/api/v2/$AP"; fi
|
||||
rm -f $c
|
||||
IN
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
# qbsec.sh <n> — INSIDE guest 9201 (R-1250 diagnosis, read only): each second, qBittorrent's own view of the global
|
||||
# upload limit (transfer/info up_rate_limit and preferences up_limit) and its upload speed.
|
||||
i=0; while [ $i -lt $1 ]; do
|
||||
T=$(sh /root/r1250/qbg.sh transfer/info); P=$(sh /root/r1250/qbg.sh app/preferences)
|
||||
printf '%s %s %s\n' "$(date -u +%H:%M:%S)" "$(echo "$T" | python3 -c 'import json,sys;d=json.load(sys.stdin);print("rate_limit=%s up_speed=%.2fMbit" % (d.get("up_rate_limit"), d.get("up_info_speed",0)*8/1e6))' 2>&1)" "$(echo "$P" | python3 -c 'import json,sys;d=json.load(sys.stdin);print("pref_up_limit=%s" % d.get("up_limit"))' 2>&1)"
|
||||
i=$((i+1))
|
||||
done
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env python3
|
||||
"""remove_qb.py — Part 8 teardown: the throwaway qBittorrent on 9201 removed THROUGH THE PRODUCT (stop, then remove). The
|
||||
shared library folder media/torrents (older than this test) and the app's older backups stay: remove_hdd_data and
|
||||
remove_backups are false. usage: SC=<dir with .ctlpw> TARGET=9201 python3 remove_qb.py"""
|
||||
import sys, time
|
||||
sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/audits/catalog-sweep-2026-10-24/tools")
|
||||
import box_walk as w
|
||||
w.login()
|
||||
print("stop:", w.ctl("POST", "/api/stacks/qbittorrent/stop")[0])
|
||||
time.sleep(5)
|
||||
c, d = w.ctl("POST", "/api/stacks/qbittorrent/remove", {"remove_hdd_data": False, "remove_backups": False})
|
||||
print("remove:", c, str(d)[:160])
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
# sec1.sh <seconds> — INSIDE guest 9201 (R-1250 diagnosis, read only): every second, the bytes the throwaway qBittorrent
|
||||
# container sent (its own eth0, inside its netns) and the bytes the guest sent on its LAN eth0 (after the forwarder).
|
||||
N=$1; PID=$(docker inspect -f '{{.State.Pid}}' qbittorrent)
|
||||
i=0; while [ $i -lt $N ]; do
|
||||
c=$(awk '/eth0:/{print $10}' /proc/$PID/net/dev); g=$(cat /sys/class/net/eth0/statistics/tx_bytes)
|
||||
echo "$(date -u +%H:%M:%S) ctr_tx=$c guest_tx=$g"; i=$((i+1)); sleep 1
|
||||
done
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
# ssq.sh — INSIDE guest 9201 (R-1250 diagnosis, read only): the queued bytes on the seed's TCP sockets — qBittorrent's own
|
||||
# (in its container's netns) and the forwarder's two (guest netns) — five readings 3 s apart.
|
||||
PID=$(docker inspect -f '{{.State.Pid}}' qbittorrent)
|
||||
for i in 1 2 3 4 5; do
|
||||
echo "== $(date -u +%T)"
|
||||
echo "-- qbittorrent (container netns), established, port 6881:"
|
||||
nsenter -t $PID -n ss -tni state established '( sport = :6881 or dport = :6881 )' | grep -v '^Recv' | awk 'NR%2==1{printf "%s ",$0; next}{print}' | awk '{print "Recv-Q="$1, "Send-Q="$2, $3, $4}'
|
||||
echo "-- forwarder (guest netns), established, port 6881:"
|
||||
ss -tni state established '( sport = :6881 or dport = :6881 )' | grep -v '^Recv' | awk 'NR%2==1{printf "%s ",$0; next}{print}' | awk '{print "Recv-Q="$1, "Send-Q="$2, $3, $4}'
|
||||
sleep 3
|
||||
done
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
# watch.sh <evidence-dir> — on DooPlex, 2026-10-27 from ~09:45 CET: sample every 60 s; stop 20 min after the agent's
|
||||
# measurement AND the controller's „limit is back" line, or at 16:05 CET. Reads only; forces nothing.
|
||||
E=$1; since=$(date -u +%Y-%m-%dT%H:%M:%SZ); done_at=""
|
||||
while true; do
|
||||
ssh -o ConnectTimeout=20 demo-hp "pct exec 9201 -- sh /root/r1250/gsample.sh" >> $E/samples.txt 2>&1
|
||||
ssh -o ConnectTimeout=20 demo-hp "journalctl -u felhom-agent --since '$since' --no-pager | grep -iE 'linetest'" > $E/agent-linetest.txt 2>&1
|
||||
ssh -o ConnectTimeout=20 demo-hp "pct exec 9201 -- sh -c 'docker logs --since $since felhom-controller 2>&1 | grep -iE \"upwatch|line test|qbittorrent.*limit\" | grep -v DEBUG'" > $E/controller-upwatch.txt 2>&1
|
||||
if [ -z "$done_at" ] && grep -q "upload line measured" $E/agent-linetest.txt && grep -q "limit is back" $E/controller-upwatch.txt; then
|
||||
done_at=$(date +%s); echo "$(date -u +%T) TEST DONE — 20 more minutes for the 50 % rule's tick" >> $E/samples.txt
|
||||
fi
|
||||
[ -n "$done_at" ] && [ $(( $(date +%s) - done_at )) -ge 1200 ] && { echo "$(date -u +%T) watch end (done)" >> $E/samples.txt; exit 0; }
|
||||
[ "$(TZ=Europe/Budapest date +%H%M)" -ge 1605 ] && { echo "$(date -u +%T) watch end (16:05 CET)" >> $E/samples.txt; exit 0; }
|
||||
sleep 60
|
||||
done
|
||||
@@ -0,0 +1,17 @@
|
||||
11:14:23
|
||||
container: UNCONN 0 0 172.18.0.17%eth0:6881 0.0.0.0:* UNCONN 0 0 127.0.0.1%lo:6881 0.0.0.0:* UNCONN 0 0 [::1]%lo:6881 [::]:*
|
||||
guest: UNCONN 0 0 192.168.0.155:6881 0.0.0.0:* ESTAB 0 0 172.18.0.1:57134 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:58337 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:45298 172.18.0.17:6881
|
||||
11:14:25
|
||||
container: UNCONN 0 0 172.18.0.17%eth0:6881 0.0.0.0:* UNCONN 0 0 127.0.0.1%lo:6881 0.0.0.0:* UNCONN 0 0 [::1]%lo:6881 [::]:*
|
||||
guest: UNCONN 0 0 192.168.0.155:6881 0.0.0.0:* ESTAB 0 0 172.18.0.1:57134 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:58337 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:45298 172.18.0.17:6881
|
||||
11:14:27
|
||||
container: UNCONN 0 0 172.18.0.17%eth0:6881 0.0.0.0:* UNCONN 0 0 127.0.0.1%lo:6881 0.0.0.0:* UNCONN 0 0 [::1]%lo:6881 [::]:*
|
||||
guest: UNCONN 0 0 192.168.0.155:6881 0.0.0.0:* ESTAB 0 0 172.18.0.1:57134 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:58337 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:45298 172.18.0.17:6881
|
||||
11:14:29
|
||||
container: UNCONN 0 0 172.18.0.17%eth0:6881 0.0.0.0:* UNCONN 0 0 127.0.0.1%lo:6881 0.0.0.0:* UNCONN 0 0 [::1]%lo:6881 [::]:*
|
||||
guest: UNCONN 0 0 192.168.0.155:6881 0.0.0.0:* ESTAB 0 0 172.18.0.1:57134 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:58337 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:45298 172.18.0.17:6881
|
||||
11:14:31
|
||||
container: UNCONN 0 0 172.18.0.17%eth0:6881 0.0.0.0:* UNCONN 0 0 127.0.0.1%lo:6881 0.0.0.0:* UNCONN 0 0 [::1]%lo:6881 [::]:*
|
||||
guest: UNCONN 0 0 192.168.0.155:6881 0.0.0.0:* ESTAB 0 0 172.18.0.1:57134 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:58337 172.18.0.17:6881 ESTAB 0 0 172.18.0.1:45298 172.18.0.17:6881
|
||||
net.core.rmem_default = 212992
|
||||
net.core.wmem_default = 212992
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"line": [
|
||||
{
|
||||
"at": "2026-10-25T03:17:47Z",
|
||||
"peak10_mbps": 7.54,
|
||||
"bytes": 18588326,
|
||||
"seconds": 46,
|
||||
"counts": false
|
||||
},
|
||||
{
|
||||
"at": "2026-10-26T03:17:56Z",
|
||||
"peak10_mbps": 5.99,
|
||||
"bytes": 17694322,
|
||||
"seconds": 55,
|
||||
"counts": false
|
||||
},
|
||||
{
|
||||
"at": "2026-10-27T03:18:41Z",
|
||||
"peak10_mbps": 97.21,
|
||||
"bytes": 169114983,
|
||||
"seconds": 82,
|
||||
"counts": true
|
||||
}
|
||||
],
|
||||
"qb_limit": {
|
||||
"box_set_bytes": 5898240,
|
||||
"line_mbps": 94.38232008767471,
|
||||
"set_at": "2026-10-27T07:06:17Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
demo-felhom
|
||||
felhom-agent 0.167.0
|
||||
Oct 27 10:25:25 demo-felhom felhom-agent[1634408]: time=2026-10-27T10:25:25.584+01:00 level=WARN msg="selfupdate: new version running — dwelling before commit" version=0.167.0 prev=0.166.0 dwell=1m0
|
||||
Oct 27 10:26:25 demo-felhom sudo[1636399]: felhom-agent : PWD=/ ; USER=root ; COMMAND=/usr/local/sbin/felhom-selfupdate-guarded commit
|
||||
Oct 27 10:26:25 demo-felhom felhom-agent[1634408]: time=2026-10-27T10:26:25.627+01:00 level=WARN msg="selfupdate: update committed" version=0.167.0 wrapper=""
|
||||
Oct 27 10:26:25 demo-felhom felhom-agent[1634408]: time=2026-10-27T10:26:25.627+01:00 level=INFO msg="osupdate: running the bundle policy pass after the self-update commit (R-1285)" agent_version=0.16
|
||||
Oct 27 10:26:25 demo-felhom felhom-agent[1634408]: time=2026-10-27T10:26:25.745+01:00 level=INFO msg="osupdate: wrapper" line="os-apply: BUNDLE POLICY DONE install_mode=appliance removed=0"
|
||||
Oct 27 10:26:25 demo-felhom felhom-agent[1634408]: time=2026-10-27T10:26:25.745+01:00 level=INFO msg="osupdate: bundle policy pass done" bundle_policy="{\"install_mode\": \"appliance\", \"removed\": [
|
||||
felhom
|
||||
felhom-agent 0.167.0
|
||||
Oct 27 10:32:30 felhom sudo[963380]: felhom-agent : PWD=/ ; USER=root ; COMMAND=/usr/local/sbin/felhom-selfupdate-guarded commit
|
||||
Oct 27 10:32:30 felhom felhom-agent[961489]: time=2026-10-27T10:32:30.608+01:00 level=WARN msg="selfupdate: update committed" version=0.167.0 wrapper=""
|
||||
Oct 27 10:32:30 felhom felhom-agent[961489]: time=2026-10-27T10:32:30.609+01:00 level=INFO msg="osupdate: running the bundle policy pass after the self-update commit (R-1285)" agent_version=0.167.0
|
||||
Oct 27 10:32:30 felhom felhom-os-apply[963416]: os-apply: BUNDLE POLICY DONE install_mode=appliance removed=0
|
||||
Oct 27 10:32:30 felhom felhom-agent[961489]: time=2026-10-27T10:32:30.744+01:00 level=INFO msg="osupdate: wrapper" line="os-apply: BUNDLE POLICY DONE install_mode=appliance removed=0"
|
||||
Oct 27 10:32:30 felhom felhom-agent[961489]: time=2026-10-27T10:32:30.744+01:00 level=INFO msg="osupdate: bundle policy pass done" bundle_policy="{\"install_mode\": \"appliance\", \"removed\": []}"
|
||||
|
||||
[exited with code 0]
|
||||
@@ -0,0 +1,29 @@
|
||||
[release-agent] building 0.167.0 …
|
||||
[release-agent] built ok: sha256 28bdd2826f45f3767880fcff4d3105afb7247c09c0ced99d78b3a978d8d826f0
|
||||
[release-agent] config bundle built: sha256 9d0344164b22634159984bfbcdaf77c53e6d2423812973ed8b4f2135a7ed1268
|
||||
[release-agent] tagging v0.167.0 at 54d3a10 …
|
||||
[release-agent] publishing …
|
||||
[publish-agent] publishing /tmp/felhom-agent-RAFefZ (16296021 bytes, sha256 28bdd2826f45f376…) → https://gitea.dooplex.hu/api/packages/admin/generic/felhom-agent/0.167.0/felhom-agent
|
||||
[publish-agent] pre-delete existing artifact: HTTP 404 (404/204 expected)
|
||||
[publish-agent] upload OK (HTTP 201)
|
||||
[publish-agent] round-trip GET verified (sha256 matches)
|
||||
[publish-agent] DONE. Record in the hub operator UI (Configs → Day-0 artifacts): agent 0.167.0 / 28bdd2826f45f3767880fcff4d3105afb7247c09c0ced99d78b3a978d8d826f0
|
||||
[release-agent] config bundle published (HTTP 201)
|
||||
[release-agent] pushing v0.167.0 …
|
||||
remote: . Processing 1 references
|
||||
remote: Processed 1 references in total
|
||||
To https://gitea.dooplex.huAGENT_VERSION=0.167.0
|
||||
AGENT_SHA256=28bdd2826f45f3767880fcff4d3105afb7247c09c0ced99d78b3a978d8d826f0
|
||||
|
||||
RELEASED — and installable, verified by download, not by this script's own say-so.
|
||||
|
||||
version : 0.167.0
|
||||
tag : v0.167.0
|
||||
sha256 : 28bdd2826f45f3767880fcff4d3105afb7247c09c0ced99d78b3a978d8d826f0
|
||||
bundle : 9d0344164b22634159984bfbcdaf77c53e6d2423812973ed8b4f2135a7ed1268 (felhom-config-bundle.json — vouch it with the agent)
|
||||
|
||||
NOT VOUCHED. Vouching is what points machines at this version and stays your deliberate act:
|
||||
hub operator UI → Configs → Day-0 artifacts. Until then boxes keep installing the previous one.
|
||||
/admin/felhom-agent.git
|
||||
* [new tag] v0.167.0 -> v0.167.0
|
||||
[release-agent] verifying by independent download …
|
||||
@@ -0,0 +1,70 @@
|
||||
grep: write error: Broken pipe
|
||||
2026/10/27 14:09:43 [INFO] felhom-controller 0.346.0 starting (customer: demo-felhom, domain: demo-felhom.eu)
|
||||
2026/10/27 14:09:43 [INFO] [selfupdate] Post-update startup: update successful (0.345.1 → 0.346.0)
|
||||
apps:
|
||||
opengist Up 10 hours (healthy)
|
||||
prowlarr Up 10 hours (healthy)
|
||||
qbittorrent Up 10 hours (healthy)
|
||||
radarr Up 10 hours (healthy)
|
||||
sonarr Up 10 hours (healthy)
|
||||
unhealthy: 0
|
||||
2026/10/27 14:09:43 [INFO] local-api: channel up (agent 169.254.253.1:8443) — guest 9201, 3 mount(s) visible
|
||||
2026/10/27 14:09:43 [INFO] local-api: mount mp0 → /var/lib/felhom (storage=local-lvm, class=, backup=true)
|
||||
2026/10/27 14:09:43 [INFO] local-api: mount mp9 → /etc/felhom-bootstrap (storage=/var/lib/felhom-agent/guests/9201/bootstrap, class=, backup=false)
|
||||
2026/10/27 14:09:43 [INFO] local-api: mount mp8 → /mnt/felhom-drives (storage=/mnt/felhom-drives, class=, backup=false)
|
||||
2026/10/27 14:09:43 [INFO] felhom-controller 0.346.0 starting (customer: demo-felhom, domain: demo-felhom.eu)
|
||||
2026/10/27 14:09:43 [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json
|
||||
2026/10/27 14:09:43 [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key
|
||||
2026/10/27 14:09:43 [INFO] [stacks] Using compose command: docker compose
|
||||
2026/10/27 14:09:43 [INFO] [stacks] ScanStacks complete: 68 stacks found (5 deployed, 63 available)
|
||||
2026/10/27 14:09:43 [INFO] [stacks] Status refresh: 8 containers across 68 stacks
|
||||
2026/10/27 14:09:43 [INFO] [stacks] InjectMissingFields: processed 5 stacks
|
||||
2026/10/27 14:09:43 [INFO] [stacks] Encryption migration: no stacks needed migration
|
||||
2026/10/27 14:09:43 [INFO] [quiesce] loop started (poll 5m0s, max-quiesce 30m0s)
|
||||
2026/10/27 14:09:43 [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained)
|
||||
2026/10/27 14:09:43 [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 5 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing)
|
||||
2026/10/27 14:09:43 [INFO] [stacks] pin adoption: 0 pinned, 5 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers)
|
||||
2026/10/27 14:09:43 [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box
|
||||
2026/10/27 14:09:43 [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git, interval: 15m0s)
|
||||
2026/10/27 14:09:43 [INFO] [sync] Starting catalog sync
|
||||
2026/10/27 14:09:43 [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db
|
||||
2026/10/27 14:09:43 [INFO] Metrics collector started (60s interval)
|
||||
2026/10/27 14:09:43 [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git (branch: main)
|
||||
2026/10/27 14:09:43 [INFO] [tier2] start-up: no leftover second-drive copy container
|
||||
2026/10/27 14:09:43 [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)
|
||||
2026/10/27 14:09:43 [INFO] [backup] app-data run record wired: /opt/docker/felhom-controller/data/appdata-run.json (an earlier cut still shown: false)
|
||||
2026/10/27 14:09:43 [INFO] Notifier enabled (hub: https://hub.felhom.eu)
|
||||
2026/10/27 14:09:43 [INFO] [upwatch] the host's weekly line test: 94.0 Mbit/s (measured 2026-10-27T09:20:13Z)
|
||||
2026/10/27 14:09:43 [INFO] [upwatch] upload and CPU watch started (line 94 Mbit/s, qBittorrent share 50 %)
|
||||
2026/10/27 14:09:43 [INFO] [selfupdate] Post-update startup: update successful (0.345.1 → 0.346.0)
|
||||
2026/10/27 14:09:43 [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: status-refresh (every 10s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: docker-socket-watch (every 15s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: docker-socket-users (every 5m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: health-probes (every 10s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: system-health (every 5m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: after-unclean-boot (every 30s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: hold-report (every 1m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: ring-spill (every 30s)
|
||||
2026/10/27 14:09:43 [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job db-dump scheduled for 2026-10-28 02:30 CET
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: conversion-copy-release (every 1h0m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-10-28 03:30 CET
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-10-28 04:15 CET
|
||||
2026/10/27 14:09:43 [INFO] [catch-up] controller start: no backup leg missed its last scheduled time — nothing to make up
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-10-28 05:10 CET
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-10-28 06:00 CET
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-10-28 05:30 CET
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-10-28 04:00 CET
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Daily job fill-watch scheduled for 2026-10-28 03:30 CET
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: fill-watch-interval (every 10m0s)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: hub-report (every 15m0s)
|
||||
2026/10/27 14:09:43 [INFO] Hub reporting enabled (every 15m0s to https://hub.felhom.eu)
|
||||
2026/10/27 14:09:43 [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
|
||||
2026/10/27 14:09:43 [INFO] ========== Startup Self-Test ==========
|
||||
2026/10/27 14:09:43 [INFO] [PASS] Docker socket: reachable (v29.9.2)
|
||||
2026/10/27 14:09:43 [INFO] [PASS] Stacks directory: /opt/docker/stacks
|
||||
@@ -0,0 +1,87 @@
|
||||
grep: write error: Broken pipe
|
||||
2026/10/27 14:10:02 main.go:356: [INFO] felhom-controller 0.346.0 starting (customer: demo-hp, domain: enkisfelhom.hu)
|
||||
2026/10/27 14:10:02 updater.go:855: [INFO] [selfupdate] Post-update startup: update successful (0.346.0-rc.1 → 0.346.0)
|
||||
apps:
|
||||
adventurelog Up 11 hours (healthy)
|
||||
adventurelog-frontend Up 11 hours (healthy)
|
||||
adventurelog-postgres Up 11 hours (healthy)
|
||||
bentopdf Up 11 hours (healthy)
|
||||
bookstack Up 11 hours (healthy)
|
||||
bookstack-db Up 11 hours (healthy)
|
||||
calibre-web Up 11 hours (healthy)
|
||||
docmost Up 11 hours (healthy)
|
||||
docmost-postgres Up 11 hours (healthy)
|
||||
docmost-redis Up 11 hours (healthy)
|
||||
home-assistant Up 11 hours (healthy)
|
||||
kimai Up 11 hours (healthy)
|
||||
kimai-db Up 11 hours (healthy)
|
||||
opengist Up 11 hours (healthy)
|
||||
paperless-postgres Up 11 hours (healthy)
|
||||
paperless-redis Up 11 hours (healthy)
|
||||
paperless-webserver Up 11 hours (healthy)
|
||||
plex Up 11 hours (healthy)
|
||||
privatebin Up 11 hours (healthy)
|
||||
romm Up 11 hours (healthy)
|
||||
romm-db Up 11 hours (healthy)
|
||||
romm-redis Up 11 hours (healthy)
|
||||
unhealthy: 0
|
||||
2026/10/27 14:10:02 main.go:4010: [INFO] local-api: channel up (agent 169.254.253.1:8443) — guest 9201, 3 mount(s) visible
|
||||
2026/10/27 14:10:02 main.go:4013: [INFO] local-api: mount mp0 → /var/lib/felhom (storage=local-lvm, class=, backup=true)
|
||||
2026/10/27 14:10:02 main.go:4013: [INFO] local-api: mount mp8 → /mnt/felhom-drives (storage=/mnt/felhom-drives, class=, backup=false)
|
||||
2026/10/27 14:10:02 main.go:4013: [INFO] local-api: mount mp9 → /etc/felhom-bootstrap (storage=/var/lib/felhom-agent/guests/9201/bootstrap, class=, backup=false)
|
||||
2026/10/27 14:10:02 main.go:356: [INFO] felhom-controller 0.346.0 starting (customer: demo-hp, domain: enkisfelhom.hu)
|
||||
2026/10/27 14:10:02 settings.go:821: [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json
|
||||
2026/10/27 14:10:02 main.go:382: [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key
|
||||
2026/10/27 14:10:02 manager.go:400: [INFO] [stacks] Using compose command: docker compose
|
||||
2026/10/27 14:10:02 manager.go:792: [INFO] [stacks] ScanStacks complete: 69 stacks found (12 deployed, 57 available)
|
||||
2026/10/27 14:10:02 manager.go:843: [INFO] [stacks] Status refresh: 25 containers across 69 stacks
|
||||
2026/10/27 14:10:02 deploy.go:1470: [WARN] [stacks] Stack plex: new field PLEX_CLAIM (type=text) requires manual configuration
|
||||
2026/10/27 14:10:02 deploy.go:1470: [WARN] [stacks] Stack bookstack: new field ADMIN_PASSWORD (type=password) requires manual configuration
|
||||
2026/10/27 14:10:02 deploy.go:1470: [WARN] [stacks] Stack calibre-web: new field ADMIN_PASSWORD (type=password) requires manual configuration
|
||||
2026/10/27 14:10:02 deploy.go:1482: [INFO] [stacks] InjectMissingFields: processed 12 stacks
|
||||
2026/10/27 14:10:02 manager.go:583: [INFO] [stacks] Encryption migration: no stacks needed migration
|
||||
2026/10/27 14:10:02 quiesce.go:192: [INFO] [quiesce] loop started (poll 5m0s, max-quiesce 30m0s)
|
||||
2026/10/27 14:10:02 desiredstate.go:137: [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained)
|
||||
2026/10/27 14:10:02 installed.go:537: [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 12 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing)
|
||||
2026/10/27 14:10:02 pin.go:290: [INFO] [stacks] pin adoption: 0 pinned, 12 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers)
|
||||
2026/10/27 14:10:02 undo.go:676: [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box
|
||||
2026/10/27 14:10:02 sync.go:137: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git, interval: 15m0s)
|
||||
2026/10/27 14:10:02 sync.go:228: [INFO] [sync] Starting catalog sync
|
||||
2026/10/27 14:10:02 sync.go:358: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git (branch: main)
|
||||
2026/10/27 14:10:02 main.go:571: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db
|
||||
2026/10/27 14:10:02 main.go:580: [INFO] Metrics collector started (60s interval)
|
||||
2026/10/27 14:10:02 [INFO] [tier2] start-up: no leftover second-drive copy container
|
||||
2026/10/27 14:10:02 restore_record_wiring.go:37: [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)
|
||||
2026/10/27 14:10:02 run_record_wiring.go:29: [INFO] [backup] app-data run record wired: /opt/docker/felhom-controller/data/appdata-run.json (an earlier cut still shown: false)
|
||||
2026/10/27 14:10:02 notifier.go:81: [INFO] Notifier enabled (hub: https://hub.felhom.eu)
|
||||
2026/10/27 14:10:02 service.go:83: [INFO] [upwatch] the host's weekly line test: 94.5 Mbit/s (measured 2026-10-27T12:40:35Z)
|
||||
2026/10/27 14:10:02 upwatch_wiring.go:154: [INFO] [upwatch] upload and CPU watch started (line 97 Mbit/s, qBittorrent share 50 %)
|
||||
2026/10/27 14:10:02 updater.go:855: [INFO] [selfupdate] Post-update startup: update successful (0.346.0-rc.1 → 0.346.0)
|
||||
2026/10/27 14:10:02 main.go:865: [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: status-refresh (every 10s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: docker-socket-watch (every 15s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: docker-socket-users (every 5m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: health-probes (every 10s)
|
||||
2026/10/27 14:10:02 offsiteapply.go:148: [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: system-health (every 5m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: after-unclean-boot (every 30s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: hold-report (every 1m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: ring-spill (every 30s)
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job db-dump scheduled for 2026-10-28 02:30 CET
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: conversion-copy-release (every 1h0m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-10-28 03:30 CET
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-10-28 04:15 CET
|
||||
2026/10/27 14:10:02 nightchain.go:284: [INFO] [catch-up] controller start: no backup leg missed its last scheduled time — nothing to make up
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-10-28 05:10 CET
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-10-28 06:00 CET
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-10-28 05:30 CET
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-10-28 04:00 CET
|
||||
2026/10/27 14:10:02 scheduler.go:150: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-10-28 03:30 CET
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: fill-watch-interval (every 10m0s)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: hub-report (every 15m0s)
|
||||
2026/10/27 14:10:02 main.go:1838: [INFO] Hub reporting enabled (every 15m0s to https://hub.felhom.eu)
|
||||
2026/10/27 14:10:02 scheduler.go:120: [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
|
||||
@@ -0,0 +1,6 @@
|
||||
== demo-hp: holds: [] | reported: None | log: 2026/10/27 14:28:02 scheduler.go:450: [INFO] [scheduler] Running job: hold-report
|
||||
2026/10/27 14:28:02 scheduler.go:467: [INFO] [scheduler] Job hold-report completed (took 0s)
|
||||
== tester-1: holds: [] | reported: None | log: 2026/10/27 14:28:00 [INFO] [scheduler] Running job: hold-report
|
||||
2026/10/27 14:28:00 [INFO] [scheduler] Job hold-report completed (took 0s)
|
||||
== demo-felhom: holds: [] | reported: None | log: 2026/10/27 14:27:43 [INFO] [scheduler] Running job: hold-report
|
||||
2026/10/27 14:27:43 [INFO] [scheduler] Job hold-report completed (took 0s)
|
||||
@@ -0,0 +1,34 @@
|
||||
control NEGATIVE (a stub answering 200 over plain http): convicted, as it must (200 -)
|
||||
== tester-1 (enkicsifelhom.hu): 6 public name(s)
|
||||
OK control POSITIVE http://felhom.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://felhom.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://files.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://files.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://no-such-name-r1033.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://no-such-name-r1033.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://paperless.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://paperless.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://paste.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://paste.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://wiki.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://wiki.enkicsifelhom.hu/r1033-check?q=1
|
||||
== demo-hp (enkisfelhom.hu): 15 public name(s)
|
||||
OK http://arcade.enkisfelhom.hu/r1033-check?q=1 -> 301 https://arcade.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://books.enkisfelhom.hu/r1033-check?q=1 -> 301 https://books.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://docs.enkisfelhom.hu/r1033-check?q=1 -> 301 https://docs.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://felhom.enkisfelhom.hu/r1033-check?q=1 -> 301 https://felhom.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://files.enkisfelhom.hu/r1033-check?q=1 -> 301 https://files.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://gist.enkisfelhom.hu/r1033-check?q=1 -> 301 https://gist.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://ha.enkisfelhom.hu/r1033-check?q=1 -> 301 https://ha.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://no-such-name-r1033.enkisfelhom.hu/r1033-check?q=1 -> 301 https://no-such-name-r1033.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://papir.enkisfelhom.hu/r1033-check?q=1 -> 301 https://papir.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://paste.enkisfelhom.hu/r1033-check?q=1 -> 301 https://paste.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://pdf.enkisfelhom.hu/r1033-check?q=1 -> 301 https://pdf.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://plex.enkisfelhom.hu/r1033-check?q=1 -> 301 https://plex.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://time.enkisfelhom.hu/r1033-check?q=1 -> 301 https://time.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://travel.enkisfelhom.hu/r1033-check?q=1 -> 301 https://travel.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://wiki.enkisfelhom.hu/r1033-check?q=1 -> 301 https://wiki.enkisfelhom.hu/r1033-check?q=1
|
||||
== demo-felhom (demo-felhom.eu): 8 public name(s)
|
||||
OK http://felhom.demo-felhom.eu/r1033-check?q=1 -> 301 https://felhom.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://files.demo-felhom.eu/r1033-check?q=1 -> 301 https://files.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://gist.demo-felhom.eu/r1033-check?q=1 -> 301 https://gist.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://no-such-name-r1033.demo-felhom.eu/r1033-check?q=1 -> 301 https://no-such-name-r1033.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://prowlarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://prowlarr.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://radarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://radarr.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://sonarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://sonarr.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://torrent.demo-felhom.eu/r1033-check?q=1 -> 301 https://torrent.demo-felhom.eu/r1033-check?q=1
|
||||
== every public name redirects http -> https
|
||||
@@ -0,0 +1,71 @@
|
||||
grep: write error: Broken pipe
|
||||
2026/10/27 14:09:59 [INFO] felhom-controller 0.346.0 starting (customer: tester-1, domain: enkicsifelhom.hu)
|
||||
2026/10/27 14:10:00 [INFO] [selfupdate] Post-update startup: update successful (0.346.0-rc.1 → 0.346.0)
|
||||
apps:
|
||||
bookstack Up 11 hours (healthy)
|
||||
bookstack-db Up 11 hours (healthy)
|
||||
paperless-postgres Up 11 hours (healthy)
|
||||
paperless-redis Up 11 hours (healthy)
|
||||
paperless-webserver Up 11 hours (healthy)
|
||||
privatebin Up 11 hours (healthy)
|
||||
unhealthy: 0
|
||||
2026/10/27 14:09:59 [INFO] local-api: channel up (agent 169.254.253.1:8443) — guest 9201, 3 mount(s) visible
|
||||
2026/10/27 14:09:59 [INFO] local-api: mount mp8 → /mnt/felhom-drives (storage=/mnt/felhom-drives, class=, backup=false)
|
||||
2026/10/27 14:09:59 [INFO] local-api: mount mp0 → /var/lib/felhom (storage=local-lvm, class=, backup=true)
|
||||
2026/10/27 14:09:59 [INFO] local-api: mount mp9 → /etc/felhom-bootstrap (storage=/var/lib/felhom-agent/guests/9201/bootstrap, class=, backup=false)
|
||||
2026/10/27 14:09:59 [INFO] felhom-controller 0.346.0 starting (customer: tester-1, domain: enkicsifelhom.hu)
|
||||
2026/10/27 14:09:59 [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json
|
||||
2026/10/27 14:09:59 [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key
|
||||
2026/10/27 14:09:59 [INFO] [stacks] Using compose command: docker compose
|
||||
2026/10/27 14:09:59 [INFO] [stacks] ScanStacks complete: 68 stacks found (3 deployed, 65 available)
|
||||
2026/10/27 14:10:00 [INFO] [stacks] Status refresh: 9 containers across 68 stacks
|
||||
2026/10/27 14:10:00 [INFO] [stacks] InjectMissingFields: processed 3 stacks
|
||||
2026/10/27 14:10:00 [INFO] [stacks] Encryption migration: no stacks needed migration
|
||||
2026/10/27 14:10:00 [INFO] [quiesce] loop started (poll 5m0s, max-quiesce 30m0s)
|
||||
2026/10/27 14:10:00 [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained)
|
||||
2026/10/27 14:10:00 [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 3 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing)
|
||||
2026/10/27 14:10:00 [INFO] [stacks] pin adoption: 0 pinned, 3 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers)
|
||||
2026/10/27 14:10:00 [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box
|
||||
2026/10/27 14:10:00 [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git, interval: 15m0s)
|
||||
2026/10/27 14:10:00 [INFO] [sync] Starting catalog sync
|
||||
2026/10/27 14:10:00 [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db
|
||||
2026/10/27 14:10:00 [INFO] Metrics collector started (60s interval)
|
||||
2026/10/27 14:10:00 [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git (branch: main)
|
||||
2026/10/27 14:10:00 [INFO] [tier2] start-up: no leftover second-drive copy container
|
||||
2026/10/27 14:10:00 [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)
|
||||
2026/10/27 14:10:00 [INFO] [backup] app-data run record wired: /opt/docker/felhom-controller/data/appdata-run.json (an earlier cut still shown: false)
|
||||
2026/10/27 14:10:00 [INFO] Notifier enabled (hub: https://hub.felhom.eu)
|
||||
2026/10/27 14:10:00 [INFO] [upwatch] the host's weekly line test: 94.0 Mbit/s (measured 2026-10-27T12:33:30Z)
|
||||
2026/10/27 14:10:00 [INFO] [upwatch] upload and CPU watch started (line 94 Mbit/s, qBittorrent share 50 %)
|
||||
2026/10/27 14:10:00 [INFO] [selfupdate] Post-update startup: update successful (0.346.0-rc.1 → 0.346.0)
|
||||
2026/10/27 14:10:00 [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: status-refresh (every 10s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: docker-socket-watch (every 15s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: docker-socket-users (every 5m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: health-probes (every 10s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: system-health (every 5m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: after-unclean-boot (every 30s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: hold-report (every 1m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: ring-spill (every 30s)
|
||||
2026/10/27 14:10:00 [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job db-dump scheduled for 2026-10-28 02:30 CET
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: conversion-copy-release (every 1h0m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-10-28 03:30 CET
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-10-28 04:15 CET
|
||||
2026/10/27 14:10:00 [INFO] [catch-up] controller start: no backup leg missed its last scheduled time — nothing to make up
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-10-28 05:10 CET
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-10-28 06:00 CET
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-10-28 05:30 CET
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-10-28 04:00 CET
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Daily job fill-watch scheduled for 2026-10-28 03:30 CET
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: fill-watch-interval (every 10m0s)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: hub-report (every 15m0s)
|
||||
2026/10/27 14:10:00 [INFO] Hub reporting enabled (every 15m0s to https://hub.felhom.eu)
|
||||
2026/10/27 14:10:00 [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
|
||||
2026/10/27 14:10:00 [INFO] ========== Startup Self-Test ==========
|
||||
2026/10/27 14:10:00 [INFO] Event pushed: controller_updated (info) [hu-only] — Controller frissítve: 0.346.0-rc.1 → 0.346.0
|
||||
2026/10/27 14:10:00 [INFO] [PASS] Docker socket: reachable (v29.8.2)
|
||||
@@ -0,0 +1,5 @@
|
||||
14:37:27
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /configuration?flash=floor_set
|
||||
min_controller_version|0.346.0
|
||||
min_controller_version_declared_min_agent|0.346.0=0.158.1
|
||||
@@ -0,0 +1,176 @@
|
||||
[0;36m[STEP][0m 0/3 — Checking the registry: is 0.173.0 already published?
|
||||
[0;32m[INFO][0m 0.173.0 is not present in the registry — proceeding.
|
||||
[0;36m[STEP][0m 1/3 — Pulling latest code (the tree must be clean and at origin/main)...
|
||||
|
||||
[0;32m[INFO][0m ╔══════════════════════════════════════╗
|
||||
[0;32m[INFO][0m ║ felhom-hub build ║
|
||||
[0;32m[INFO][0m ╚══════════════════════════════════════╝
|
||||
[0;32m[INFO][0m Version: 0.173.0 (build-hub.sh v1.25.0)
|
||||
[0;32m[INFO][0m Commit: 29134c52
|
||||
[0;32m[INFO][0m Source: /mnt/5_hdd/felhom.eu/git/felhom.eu/hub
|
||||
[0;32m[INFO][0m Build: /mnt/5_hdd/felhom.eu/build/felhom-hub/workspace
|
||||
[0;32m[INFO][0m Image: gitea.dooplex.hu/admin/felhom-hub:0.173.0
|
||||
|
||||
[0;36m[STEP][0m 2/3 — Syncing source to workspace...
|
||||
[0;32m[INFO][0m Source synced to /mnt/5_hdd/felhom.eu/build/felhom-hub/workspace
|
||||
[0;32m[INFO][0m App assets synced (263 files)
|
||||
[0;32m[INFO][0m Package structure verified ✓
|
||||
[0;32m[INFO][0m Running go mod tidy...
|
||||
[0;36m[STEP][0m 3/3 — Building Docker image...
|
||||
[0;32m[INFO][0m Building for current platform + pushing...
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 1.46kB done
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/golang:1.27.3-alpine3.24@sha256:b8c9b82affbbb82a020bbcf998dad2ba9516944ac7e883524642a481a9505e9c
|
||||
#2 ...
|
||||
|
||||
#3 [auth] library/alpine:pull token for registry-1.docker.io
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [auth] library/golang:pull token for registry-1.docker.io
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [internal] load metadata for docker.io/library/alpine:3.24.2@sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6
|
||||
#5 DONE 1.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/golang:1.27.3-alpine3.24@sha256:b8c9b82affbbb82a020bbcf998dad2ba9516944ac7e883524642a481a9505e9c
|
||||
#2 DONE 1.7s
|
||||
|
||||
#6 [internal] load .dockerignore
|
||||
#6 transferring context: 2B done
|
||||
#6 DONE 0.0s
|
||||
|
||||
#7 [stage-1 1/5] FROM docker.io/library/alpine:3.24.2@sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6
|
||||
#7 resolve docker.io/library/alpine:3.24.2@sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6 0.0s done
|
||||
#7 DONE 0.0s
|
||||
|
||||
#8 [builder 1/6] FROM docker.io/library/golang:1.27.3-alpine3.24@sha256:b8c9b82affbbb82a020bbcf998dad2ba9516944ac7e883524642a481a9505e9c
|
||||
#8 resolve docker.io/library/golang:1.27.3-alpine3.24@sha256:b8c9b82affbbb82a020bbcf998dad2ba9516944ac7e883524642a481a9505e9c 0.0s done
|
||||
#8 extracting sha256:7b229517ed222597277036d94892173207d01a731ab3a88eeb1de2e963a2c788
|
||||
#8 ...
|
||||
|
||||
#9 [internal] load build context
|
||||
#9 transferring context: 22.57MB 0.3s done
|
||||
#9 DONE 0.3s
|
||||
|
||||
#8 [builder 1/6] FROM docker.io/library/golang:1.27.3-alpine3.24@sha256:b8c9b82affbbb82a020bbcf998dad2ba9516944ac7e883524642a481a9505e9c
|
||||
#8 sha256:c8e3100880d834be60a9562375f4c5018b2cb26d64591bd0060aa3a80b935f43 0B / 126B 0.2s
|
||||
#8 extracting sha256:7b229517ed222597277036d94892173207d01a731ab3a88eeb1de2e963a2c788 0.2s done
|
||||
#8 sha256:c8e3100880d834be60a9562375f4c5018b2cb26d64591bd0060aa3a80b935f43 126B / 126B 0.2s done
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 0B / 71.15MB 0.3s
|
||||
#8 sha256:c012d78a862fe59ae6789c91f982ea68a882c9c44bbde97013914458dcdd9c4c 0B / 244.47kB 0.2s
|
||||
#8 sha256:c012d78a862fe59ae6789c91f982ea68a882c9c44bbde97013914458dcdd9c4c 244.47kB / 244.47kB 0.6s done
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 15.73MB / 71.15MB 0.8s
|
||||
#8 extracting sha256:c012d78a862fe59ae6789c91f982ea68a882c9c44bbde97013914458dcdd9c4c 0.1s done
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 26.21MB / 71.15MB 0.9s
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 34.60MB / 71.15MB 1.1s
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 45.09MB / 71.15MB 1.2s
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 56.62MB / 71.15MB 1.4s
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 69.21MB / 71.15MB 1.5s
|
||||
#8 sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 71.15MB / 71.15MB 1.7s done
|
||||
#8 extracting sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b
|
||||
#8 extracting sha256:82e0bb27ae78502103ed383ed33346f88a83943fb7bd93977850d5890ee8fb3b 5.6s done
|
||||
#8 DONE 7.5s
|
||||
|
||||
#8 [builder 1/6] FROM docker.io/library/golang:1.27.3-alpine3.24@sha256:b8c9b82affbbb82a020bbcf998dad2ba9516944ac7e883524642a481a9505e9c
|
||||
#8 extracting sha256:c8e3100880d834be60a9562375f4c5018b2cb26d64591bd0060aa3a80b935f43 0.0s done
|
||||
#8 extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s done
|
||||
#8 DONE 7.6s
|
||||
|
||||
#10 [builder 2/6] WORKDIR /app
|
||||
#10 DONE 1.0s
|
||||
|
||||
#11 [builder 3/6] COPY go.mod go.sum* ./
|
||||
#11 DONE 0.0s
|
||||
|
||||
#12 [builder 4/6] RUN go mod download || true
|
||||
#12 DONE 8.8s
|
||||
|
||||
#13 [builder 5/6] COPY . .
|
||||
#13 DONE 0.8s
|
||||
|
||||
#14 [builder 6/6] RUN go mod tidy && CGO_ENABLED=0 go build -ldflags "-s -w -X main.Version=0.173.0 -X main.BuildTime=2026-10-27T08:30:47Z" -o /felhom-hub ./cmd/hub/
|
||||
#14 0.706 go: downloading gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
|
||||
#14 0.745 go: downloading modernc.org/fileutil v1.3.40
|
||||
#14 0.746 go: downloading github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e
|
||||
#14 0.764 go: downloading golang.org/x/term v0.47.0
|
||||
#14 0.916 go: downloading modernc.org/ccgo/v4 v4.30.1
|
||||
#14 0.916 go: downloading modernc.org/goabi0 v0.2.0
|
||||
#14 0.916 go: downloading golang.org/x/tools v0.38.0
|
||||
#14 0.916 go: downloading modernc.org/cc/v4 v4.27.1
|
||||
#14 1.357 go: downloading modernc.org/token v1.1.0
|
||||
#14 1.357 go: downloading modernc.org/opt v0.1.4
|
||||
#14 1.357 go: downloading modernc.org/strutil v1.2.1
|
||||
#14 1.357 go: downloading modernc.org/sortutil v1.2.1
|
||||
#14 1.458 go: downloading modernc.org/gc/v2 v2.6.5
|
||||
#14 1.458 go: downloading golang.org/x/mod v0.29.0
|
||||
#14 1.458 go: downloading modernc.org/gc/v3 v3.1.1
|
||||
#14 1.647 go: downloading github.com/hashicorp/golang-lru/v2 v2.0.7
|
||||
#14 1.987 go: downloading golang.org/x/sync v0.17.0
|
||||
#14 DONE 23.0s
|
||||
|
||||
#15 [stage-1 2/5] RUN apk add --no-cache ca-certificates tzdata
|
||||
#15 CACHED
|
||||
|
||||
#16 [stage-1 3/5] COPY --from=builder /felhom-hub /usr/local/bin/felhom-hub
|
||||
#16 DONE 0.1s
|
||||
|
||||
#17 [stage-1 4/5] RUN mkdir -p /data /etc/felhom-hub
|
||||
#17 DONE 0.3s
|
||||
|
||||
#18 [stage-1 5/5] COPY assets/ /usr/share/felhom/assets-seed/
|
||||
#18 DONE 0.2s
|
||||
|
||||
#19 exporting to image
|
||||
#19 exporting layers
|
||||
#19 exporting layers 1.7s done
|
||||
#19 exporting manifest sha256:4bb29461bedd838aa9d1acfcd37af056498a1a57ca1f8b1c6b4191951c06ac5b 0.0s done
|
||||
#19 exporting config sha256:b9818cbb36163c3fa20d3c88d331763eb75b855c79447f4256db9b5c9c3f3660 done
|
||||
#19 exporting attestation manifest sha256:f20f1ff514f2c68b9300f1996540d8d8195e67e2c39f852a7333d8b12ef1d88a 0.0s done
|
||||
#19 exporting manifest list sha256:458bfb03e614db4b7abd6442e6af15c652ba4b9b4509fe2b0efe00ac979b8f52 done
|
||||
#19 naming to gitea.dooplex.hu/admin/felhom-hub:0.173.0 done
|
||||
#19 unpacking to gitea.dooplex.hu/admin/felhom-hub:0.173.0
|
||||
#19 unpacking to gitea.dooplex.hu/admin/felhom-hub:0.173.0 0.4s done
|
||||
#19 DONE 2.2s
|
||||
[0;32m[INFO][0m Pushing...
|
||||
The push refers to repository [gitea.dooplex.hu/admin/felhom-hub]
|
||||
44136fa355b3: Waiting
|
||||
93c1eb832da7: Waiting
|
||||
b128e85bfc6d: Waiting
|
||||
e2de96513ba9: Waiting
|
||||
44136fa355b3: Waiting
|
||||
93c1eb832da7: Waiting
|
||||
b128e85bfc6d: Waiting
|
||||
e2de96513ba9: Waiting
|
||||
9d2a0c58fd60: Waiting
|
||||
6b29cdaa98fc: Waiting
|
||||
44136fa355b3: Already exists
|
||||
93c1eb832da7: Layer already exists
|
||||
e2de96513ba9: Layer already exists
|
||||
b128e85bfc6d: Pushed
|
||||
9d2a0c58fd60: Pushed
|
||||
99c9eb131832: Pushed
|
||||
6b29cdaa98fc: Pushed
|
||||
0.173.0: digest: sha256:458bfb03e614db4b7abd6442e6af15c652ba4b9b4509fe2b0efe00ac979b8f52 size: 856
|
||||
|
||||
[0;32m[INFO][0m ╔══════════════════════════════════════╗
|
||||
[0;32m[INFO][0m ║ Build complete ✓ ║
|
||||
[0;32m[INFO][0m ╚══════════════════════════════════════╝
|
||||
[0;32m[INFO][0m Image: gitea.dooplex.hu/admin/felhom-hub:0.173.0
|
||||
[0;32m[INFO][0m Size: 73M
|
||||
|
||||
[0;32m[INFO][0m Image pushed to registry.
|
||||
|
||||
[0;32m[INFO][0m Deploy to k3s — GitOps ONLY. The manifest in git is the source of truth:
|
||||
[0;32m[INFO][0m 1. bump the image tag in /mnt/5_hdd/felhom.eu/git/felhom.eu/manifests/hub.yaml to 0.173.0, commit, push
|
||||
[0;32m[INFO][0m 2. hard-refresh + sync the ArgoCD app (auto-sync is OFF — the sync is deliberate):
|
||||
[0;32m[INFO][0m sudo kubectl -n argocd annotate application felhom argocd.argoproj.io/refresh=hard --overwrite
|
||||
[0;32m[INFO][0m sudo kubectl -n argocd patch application felhom --type merge \
|
||||
[0;32m[INFO][0m -p '"{"operation":"initiatedBy":{"username":"cc"}}"' -p '"{"operation":"sync":{"syncStrategy":{"apply":{}}}}"'
|
||||
[0;32m[INFO][0m
|
||||
[0;32m[INFO][0m NEVER `kubectl set image` or `kubectl apply` by hand — ArgoCD reverts it on the next
|
||||
[0;32m[INFO][0m sync, so the change looks applied, works for a while, and then silently disappears.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
== tester-1
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /customers/tester-1?flash=floor_set
|
||||
== demo-hp
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /customers/demo-hp?flash=floor_set
|
||||
== demo-felhom
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /customers/demo-felhom?flash=floor_set
|
||||
@@ -26,6 +26,21 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-10-27 (attended release block) — ten rows released and closed (full text of the rows: `git show 708a3451:documentation/backlog/OPEN-ITEMS.md`)
|
||||
|
||||
| Row | What | Closed | Evidence |
|
||||
|---|---|---|---|
|
||||
| **R-1250** | **A qBittorrent that seeds all day is never line-tested, so it never gets the limit that exists for it.** (P3) | CLOSED 2026-10-27 — the hold FAILED as built (four holds 11:36–12:21 CET on demo-hp, each refused „not quiet” 4.0–4.2 Mbit/s: qBittorrent 5.2.4 sends at full speed ~14 s after its limit falls, the agent reads 5–15 s after the call); fixed in controller `710ceac` (`waitDrained`: ask only after the held app reports its own upload near zero; red-proved by four mutations), RELEASED in v0.346.0 (global floor 15:37 CET). Live on the rc: 13:39:56 held → slowed after 22 s → **94.5 Mbit/s** → the limit back exactly (5898240) → the 50 % rule kept the normal slot (0.15 % move, inside its 20 % band). Operator's choice 2026-10-27: fix in the controller the same day. | `audits/linetest-2026-10-27/` (README, `rc1-hold-proof.txt`, `limitprobe.txt`, `sec1-*.txt`, `redproof-r1250-drain.txt`) |
|
||||
| **R-1261** | **The R-1250 line hold (committed, NOT released): three edges before it ships (review round 2, HUNT-4 H4–H6).** (P3) | CLOSED 2026-10-27 — released in v0.344.0; live 2026-10-27 on demo-hp: every hold put the limit back exactly in the slot it held (five holds), and the 50 % rule did not read the put-back value as the household's (no household flag). | `audits/linetest-2026-10-27/` (`controller-upwatch-0345-refusals.txt`, `upwatch-settings-after.txt`) |
|
||||
| **R-1218** | **A recovery ceremony done while off-site is switched off (or cleared) seals no off-site repository password, and the hub then demotes the GOOD older package to operator-only custody: the household's own recovery code no longer opens its off-site copy.** (P2) | CLOSED 2026-10-27 — both halves RELEASED (hub v0.173.0 09:35 CET; controller v0.346.0, global floor 15:37 CET). **Live proof WAIVED by the operator** (2026-10-27, attended): no product path makes the box's saved off-site target „off” on a hub box — the hub customer page's switch did not reach Tester 1's target or its controller.yaml (unchanged since 2026-10-04), and the household's clear is refused on a hub tier — so a live run could not tell old code from new. Red-proofs stand for both halves. Follow-up: R-1312. | `audits/night-fixes-2026-10-26/`; `audits/release-2026-10-27/` |
|
||||
| **R-1219** | **During a recovery offer the backups page hides the „create your recovery code” ceremony (it would replace the key that opens the old off-site copy), but the global top bar still links to it and the start handler does not refuse.** (P2) | CLOSED 2026-10-27 — RELEASED in controller v0.346.0 (global floor 15:37 CET). Proof: the handler tests (the brief's allowance — a recovery offer cannot be staged safely), red-proved. | controller `1170b48` tests |
|
||||
| **R-1220** | **„Megőrzött adatok” (kept data) can list an INSTALLED app's live folder as kept — and offer to delete it — when that app's app.yaml cannot be read.** (P2) | CLOSED 2026-10-27 — RELEASED in controller v0.346.0 (global floor 15:37 CET); live 2026-10-26 night on 9202 (`audits/night-fixes-2026-10-26/`). | `audits/night-fixes-2026-10-26/` |
|
||||
| **R-1232** | **A reinstalled box may take its first whole-box copy to ep0 up to a week late: the old box's copy in the same household space seems to count as its last one.** (P2) | CLOSED 2026-10-27 — RELEASED in agent v0.167.0 (published + tagged 2026-10-27; signed updates committed on demo-felhom 10:26, Tester 1 10:32, demo-hp 13:49 CET); live 2026-10-26 night on a fresh BYO Tester4 box. The Day-0 vouch of 0.167.0 is the operator's (STATUS). | `audits/night-fixes-2026-10-26/r1232/`; `audits/release-2026-10-27/agent-*` |
|
||||
| **R-1187** | **A `.fab` export or import can lose or mix household data — code-confirmed paths from the data-loss hunt:** (P2) | CLOSED 2026-10-27 — (a)(b)(d)(f)(g) + the two import defects RELEASED in controller v0.346.0 (global floor 15:37 CET); live 2026-10-26 night on 9202 for (a)(b)(g), unit tests for (d)(f) (`audits/night-fixes-2026-10-26/`). | `audits/night-fixes-2026-10-26/` |
|
||||
| **R-1298** | **Scratch guest 9202 carries leftovers made outside the product, and D53 would remind about them every week once released: four crash-loop holds since 2026-09-24 for apps that are not installed (`chaoscrash`, `chaosoom`, `chaosoomb`, `gokapi`), and a PrivateBin `app.yaml` (2026-10-25) with no container that the product reads as „installed".** (P3) | CLOSED 2026-10-27 — RELEASED in controller v0.346.0; live 2026-10-26 night on 9202 (four orphan holds cleared, PrivateBin removed through the product). The three test boxes report 0 holds and the hub lists 0 (15:30 CET). | `audits/night-fixes-2026-10-26/r1298/`; `audits/release-2026-10-27/boxes-0.346.0/held-apps-boxes.txt` |
|
||||
| **R-972** | **The shipped controller and hub programs are built with Go 1.24.13 and golang.org/x/crypto v0.31.0, and the agent with Go 1.26.0, so dozens of fixed Go security bugs (including html/template escaping fixes) are still in what runs on boxes and the hub.** (P2) | CLOSED 2026-10-27 — Go 1.27.3 RELEASED in all three: hub v0.173.0, agent v0.167.0, controller v0.346.0 (govulncheck 1 → 0 called each, `audits/r972-*`). | `audits/r972-*` |
|
||||
| **R-1291** | **A held app gives the operator no lasting signal: one event at the stop, then nothing — demo-hp's Kimai sat held 11 days unseen.** (P3) | CLOSED 2026-10-27 — RELEASED: hub v0.173.0 (09:35 CET, the Hosts page shows „Held apps”, 30-min watch clean) + controller v0.346.0 (global floor 15:37 CET); the three test boxes' hold report runs every minute and the hub list matches each box (0 = 0). | `audits/d53-held-apps-2026-10-26/`; `audits/release-2026-10-27/` |
|
||||
|
||||
## 2026-10-27 (night) — R-1174 measured and closed (full text of the row: `git show 3c8c1ded:documentation/backlog/OPEN-ITEMS.md`)
|
||||
|
||||
| Row | What | Closed | Evidence |
|
||||
|
||||
@@ -159,7 +159,7 @@ stopping line that lies.
|
||||
| **R-683** | App updates | P3 | **[P3-LOW] Watch: after a power cut during an update's health check, the hold named an HOUR-OLD second-drive copy, not the one the update's own backup should have just made.** 2026-09-24 chaos round 3 (nextcloud, `backup_max_age: 1m`): no `backing-up` phase was seen and the hold named Tier 2 at 13:04 for an update pressed at 14:04; the pre-cut controller log was lost with the container (the runner now saves it at arm time — R-320). Round 11, the same action without a power cut, named a fresh 14:34 copy and logged the Tier-2 copy. The sentence was TRUE (it named the copy it offered); the question is why the update did not back up first. Not reproduced; watch the next power-cut drill. `audits/night-2026-09-24/E/round-03*.json`, `E/round-11-controller-pre.log` | **OPEN — P3; owner: CC (watch)** | — | — | CC |
|
||||
| **R-785** | App updates | P3 | **[P3-LOW] SparkyFitness is pinned 11 releases and a major behind upstream (v0.17.3; upstream v1.7.3, v1.6.0 dated 2026-07-24).** READ 2026-10-01 (`audits/visitors-2026-10-01/C/bench/C1-previous-tag.txt`). **Needs:** an update walk 0.17 → 1.x through the ladder (bench + box), after R-784 is decided. | **OPEN — rank P3-LOW; owner: CC (after R-784)** | — | — | CC |
|
||||
|
||||
## Backup & restore — 51 rows (P2 9, P3 24, P4 18)
|
||||
## Backup & restore — 46 rows (P2 4, P3 24, P4 18)
|
||||
|
||||
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
@@ -195,7 +195,6 @@ stopping line that lies.
|
||||
| **R-1184** | Backup & restore | P3 | **A cut-off shared-folder restore can be „placed" and reported restored while files are missing; the download is then deleted.** Readiness is only „the scratch folder is not empty" (`internal/backup/shares_restore.go:131-140`) — the R-358 class fixed for apps, not for shares; 30-min download window (`web/offbox_handlers.go:716`); fixed 2 GiB free-space gate that fails open (`:107`). CONFIRMED in code. Data-loss hunt 2026-10-20 (C1 reviewer 1, R3). | OPEN | — | Fix: a completion marker after restic succeeds, as for apps | CC |
|
||||
| **R-1185** | Backup & restore | P3 | **A database dump that fails its own content check has already replaced last night's good dump, and the second drive copies it an hour later.** `appbackup/dbdump.go:388-422`: size check, rename over the good file (`:399`), then `ValidateDump` (`:419`). Volume tars are promoted with no content check either (`backup.go:902`). Tier 1 is one point per app by design (07 §6.1); the ORDER is the defect. PROVEN against production code (`audits/dataloss-hunt-2026-10-20/C3-D5-dump-replaced/`, a docker stub prints a header-only dump): `ValidateDump` says invalid („dump file too small"), `DumpOneTo` returns no error, and last night's good dump (with its `CREATE TABLE`) is gone from disk. Data-loss hunt 2026-10-20 (D5). | OPEN | — | Fix: validate the temp file before the rename; keep the last good dump on a failed check | CC |
|
||||
| **R-1186** | Backup & restore | P3 | **The nightly off-site copy is skipped silently when another backup holds the flag, and the catch-up never re-runs it.** `offbox.go:981-996` returns nil with an INFO line on the nightly path; `withLeg` marks the leg ended anyway (`cmd/controller/main.go:1246`). The 05:30 proof and 06:00 integrity check take the same flag, so a backup time near them collides every night. Only the hub's 48 h `offsite_stale` notices. CONFIRMED in code. Data-loss hunt 2026-10-20 (T5). | OPEN | — | Fix: mark the leg NOT ended on a busy skip so the catch-up retries; say it on the backups page | CC |
|
||||
| **R-1187** | Backup & restore | P2 | **A `.fab` export or import can lose or mix household data — code-confirmed paths from the data-loss hunt:** (a) an export silently drops a whole drive folder that holds a symlink and still ends „done” (`appexport/fabplan.go:292-310`, `export.go:712`; a FIFO also hangs the export on `os.Open`); (b) the import handles only folders and regular files: no owners set, symlinks dropped (`restore.go:1138-1183`); (c) **FIXED in controller main `d5f88a2`, unreleased (rides 0.340.0):** an import over an installed app that is not running merged the old data with the bundle's (`docker cp` never deletes) — reproduced on 9202 before the fix (stopped: a marker written after the export SURVIVED the import; running control: replaced), now refused with a Hungarian sentence and the app untouched; red-proved (`r1187c_test.go`), proven on 9202 rc.2 (`audits/night-2026-10-22/P3-candidates/r1187c-9202.txt`); (d) PLAUSIBLE: no restore-busy check in `StartImport`, no undo, no record (`restore.go:181-186`); (f) the bundle's HDD_PATH is trusted, an empty one gives a relative path (`restore.go:589-631`); (g) the DB import misses postgis images (adventurelog, dawarich: `classifyDBImage`) and runs psql without ON_ERROR_STOP (`restore.go:1047-1056, 933-943`; the dump is `--clean --if-exists`, so ON_ERROR_STOP is safe). (e) was R-1191. Research `audits/night-2026-10-22/P3-candidates/analysis.md`; first list `audits/dataloss-hunt-2026-10-20/C1-restore-rollback-candidates.md`. | **VERIFY — fixed on `main`: (a), (b), (d), (f), (g) + two import defects found by the live proof; waits for the controller release** — 2026-10-26 night: controller `dfd0f8e`, `106325d`, `f24233c`, `cccb9ae` (three rounds of the automated security review on the link handling: writes only through `os.Root`, links only downward), `a3ed63e` (the import's compose runs get the controller's path variables; a warning is never the container id), `90a2530` (the database loads through `appbackup.ImportDump` — every MariaDB 11+ import had timed out on `mysqladmin`). Live on 9202 (Grimmory: FIFO refused naming the path, owner/mode/inside link back, outside link refused; the import now succeeds and the app answers; AdventureLog: a postgis user back after the import) — `audits/night-fixes-2026-10-26/`. (d), (f): unit tests. Still open from the row: C2's two merge paths of an import over an existing app. **Earlier:** OPEN — **2026-10-23: (c) and the C3/N9 refusal texts released in controller 0.340.0;** (a), (b), (f), (g) and the two import paths of C2 stay open. OPEN — **2026-10-22 night: re-ranked P3→P2** ((a) and (b) lose household files on a move to a new box with no error). (c) fixed in code; (a), (b), (f), (g) read in code, not live-proven. **2026-10-23 night — fresh review (`REPORT-night-2026-10-23.md`, C2, C3):** two more import paths still merge — a running app whose `RemoveStackVolumes` fails falls back to `StopStack` and goes on (`appexport/restore.go:375-380`), and `restoreHDDData` extracts drive-folder tars over the existing folder without clearing it (`restore.go:602-655`) for running and stopped apps alike. Both exist in 0.339.0 — not a hold for 0.340.0. The (c) refusal also catches an unhealthy or restarting app (`IsStackRunning`: running/degraded only); its text now says so and names removal (controller `943c517`). Recovery code: fix only with a red-proof + a 9202 proof. | — | Fix (a)+(b) with a red-proof and a 9202 proof (capture code — the night rule); (g) small fix with a 9202 postgis app; (d) after (a) | CC |
|
||||
| **R-1188** | Backup & restore | P4 | **Restore-path candidates from the data-loss hunt — what is left is unlikely or a sentence:** (b) a failed `volume rm` is ignored before the untar, which then lands in the old volume (`backup/restore.go:218`; `StopStack` is `compose down`, so the rm rarely fails); (d) the full off-site download stops at 30 min per press and the household is not told to press again (`web/offbox_handlers.go:455`; the scratch is kept, so a second press probably continues — not measured); (e) place and full restore re-read the LATEST snapshot, not the downloaded one (`offbox_restore.go:675-679`, `_ = id`). Closed parts: (a) with R-1195 (controller 0.338.0), (c) in controller 0.337.0 (`TestR1188c_ALeftoverTempDoesNotBlockTheRetry`). Evidence `audits/dataloss-hunt-2026-10-20/C1-restore-rollback-candidates.md`, `audits/night-2026-10-22/P3-candidates/analysis.md`. | OPEN — **2026-10-22 night: re-ranked P3→P4**: (a) and (c) are shipped; the rest is low-chance or a sentence. | — | (d): measure a second press on a large download on 9202, then write the sentence; (b), (e): unit tests when the file is next touched | CC |
|
||||
| **R-1189** | Backup & restore | P3 | **Time and concurrency candidates from the data-loss hunt — what is left:** (a) a host clock ahead during one whole-guest backup silences that tier until real time passes it: the agent turns a future archive time into a negative age (`localapi/server.go:1179-1192`); half-live 2026-10-21 (B6 #8, `s8-wrong-clock/README.md`: a local archive dated 2028-10-21); agent code, so it rides an agent release and the operator's vouch; (c) the whole-guest quiesce waits for the catch-up and the update leg, not for a restore (`quiesce.go:213-275, 565`); (f) the OS leg and kernel reboot follow a daytime valve backup (agent `server.go:982-986`, `kernel.go:101-114`) — a design question; (g) spring forward 2027-03-28 moves 02:30 onto the 03:30 second copy; (h) self-update busy check before the pull only (`updater.go:532-545, 764`; not re-read); (i) a double-clicked restore shows failed while it runs (check and begin not atomic, `web/handlers.go:1860, 1881`). **Moved out 2026-10-22 night:** (b) the skipped nights after an off-cycle run were FIXED by R-899 (controller 0.304.0; demo-hp's journal shows a night run after each of three off-cycle runs since), the creep → R-1221; (d) **FIXED in controller main `d5f88a2`, unreleased (rides 0.340.0):** the catch-up now runs the off-site proof and the integrity check once after its legs, the false comment corrected; red-proved (`nightchain/r1189d_test.go`, `cmd/controller/r1189d_wiring_test.go`); (e) → R-1222 (hub). Evidence `audits/dataloss-hunt-2026-10-20/C1-time-concurrency-candidates.md`, `audits/night-2026-10-22/P3-candidates/analysis.md`. | OPEN — **2026-10-23: (d) released in controller 0.340.0;** (a), (c), (f), (g) stay as written. OPEN — 2026-10-22 night: (b) half closed, (d) fixed in code, (e) split out. | — | (a) with the next agent release (a unit test with a future archive); (c) a 9202 recipe; (g) a unit test with the 2027 clock; (f) to the operator at the next design review | CC |
|
||||
| **R-1190** | Backup & restore | P3 | **Key and retention candidates from the data-loss hunt — what is left:** (c) PLAUSIBLE: after a reuse-path reinstall the new PBS key K is never escrowed and nothing compares fingerprints (`felhom-pbs-apply:99`, `escrow_confirm.go:182-205`); (d) whole-guest off-site copies run before any escrow exists — a design question against `07` §6.1's Tier-3 gate (the operator's); (e) the escrow PUT is two statements; (f) the operator's off-site re-issue resets the provider password before saving it (hub `offsite.go:217-245`); (h) a unit restore can point an app back at an old drive and F5 then prunes the current drive's unit (`backup.go:1517-1574`) — (e), (f), (h) not re-read. **Moved out 2026-10-22 night:** (a) → R-1218, (b) → R-1219, (g) → R-1220. Evidence `audits/dataloss-hunt-2026-10-20/C1-keys-candidates.md`, `C1-delete-retention-candidates.md`, `audits/night-2026-10-22/P3-candidates/analysis.md`. | OPEN | — | (c) a read-only fingerprint compare on a reinstalled test box; (e), (f), (h) re-read, then unit tests; (d) to the operator at the next design review | CC |
|
||||
@@ -203,14 +202,10 @@ stopping line that lies.
|
||||
| **R-1200** | Backup & restore | P3 | **A box installed in the afternoon gets no whole-box backup on its first night: the install's own backup starts the 24 h clock, so the family's whole first day reaches a whole-box copy only on the SECOND night (~38 h after install).** Rehearsal 2026-10-20 B5 (`audits/rehearsal-2026-10-20/B5-night/README.md`): Tester4's install backup at 12:09Z; at the 02:30–06:30Z window the agent answered „within cadence window" (`felhom-agent internal/localapi/server.go:1187`, `age >= tier.Cadence`, default 24 h). R-899 (closed) fixed the same shape for a daytime PRESS only. The other tiers did run that night (database copy, second drive, off-site — all PASS), so app data was covered; the whole-box (DR) tier was not. | **OPEN** — a design question: should the first scheduled night always run (like a press), or is one tier enough on night one? | — | decide; if „always run": treat the install backup like a press in the due rule, with a test on the first night | CC |
|
||||
| **R-1206** | Backup & restore | P3 | **Backups written while the box's clock ran ahead stay „the latest" after the clock is fixed.** The rehearsal's scenario #10 (clock set to 2026-10-28) left off-site snapshots dated 2026-10-28; on 2026-10-21 the rebuilt box's recovery page listed every app's „Legutóbbi mentés: 2026. 10. 28. 07:39", and the full restore said „mentés: 2026. 10. 28. 07:37" — a date in the future (`audits/fixes-2026-10-21/P1-live/07-unlock-right.txt`, `11-nextcloud-full-restore.txt`). restic orders snapshots by their own time, so the future ones are „newest" to every retention rule for a week. NOT measured: whether the box's keep-daily prune then drops a real snapshot. Related R-1202, R-1204 (clock). | NARROWED — the NAS tier only. **2026-10-22 night (read, `backup/offbox_window.go:22-24, 130-137`):** on the Felhom off-site tier no real snapshot is lost — the guard refuses a prune while any snapshot is future-dated (R-822, by design). The NAS tier prunes without that guard: open. **2026-10-25:** the kept-data choice no longer takes such a future-dated copy as the newest (R-1271, controller `bd9f4f7`); retention is unchanged — this row. | — | A pure unit test with the policy simulator on the NAS tier and one future-dated snapshot; if a real one is dropped, give the NAS tier the same guard | CC |
|
||||
| **R-1212** | Backup & restore | P4 | **Two household texts on the backup path do not follow the box's language:** the share-restore summary (`SharesRestoreResult.FlashMessage`, `controller/internal/backup/shares_restore.go`) is built from Hungarian Go literals, and the off-site `LastError` for an interrupted run is the Hungarian literal „megszakadt futás (a vezérlő újraindult futás közben)" (`controller/internal/backup/backup.go`). An English household reads Hungarian there. Found by the night helper 2026-10-21. | OPEN | — | Bundle keys for both (rendered in the box language when written, R-557), with parity fixtures | CC |
|
||||
| **R-1218** | Backup & restore | P2 | **A recovery ceremony done while off-site is switched off (or cleared) seals no off-site repository password, and the hub then demotes the GOOD older package to operator-only custody: the household's own recovery code no longer opens its off-site copy.** REAL in code (night 2026-10-22, read; split from R-1190 (a)): `web/escrow_handlers.go:217-224` stages the password only if `OffboxConfigured()` (`backup/offbox.go:695-710`), false when the target is cleared or disabled — although `ClearOffboxTarget` keeps the password file on purpose (`offbox_clear.go` header); the agent then seals no password (`cmd/felhom-agent/main.go:2981-3003`) and uploads sha ""; hub `SaveHostEscrow` sees `curSHA != ""` and moves the good package to retained custody; `OffsiteRecoveryOffer` reads "" as „covers no key” (`offbox.go:1855-1873`) and says nothing. Evidence `audits/night-2026-10-22/P3-candidates/analysis.md` §R-1190(a). | **OPEN — fixed on `main` (both halves), red-proved; LIVE PROOF PENDING** — controller `1170b48` (stage when the password FILE exists) + hub `09b5f02f` (a keyed package is never replaced by a key-less one: 409). The live shape needs off-site switched OFF on a hub box: the household cannot switch a hub tier off (only per-app switches; a clear is refused by design), so it needs the operator's customer-page change on Tester 1 during Tuesday's attended block — otherwise both halves are REVERTED before the release (rule 2). **Earlier:** OPEN — proposed fix, not built (key-handling code: a fix needs a red-proof AND a live proof, and 9202 has no hub to prove it with) | — | Fix (~6 lines): stage when the password FILE exists (`PushOffboxPasswordForEscrow`, `offbox.go:800`, reads only the file). Red-proof: a web test that the stage runs with off-site cleared; a hub store test pinning „abc”→"" ⇒ superseded (and refuse that demotion). Live proof on a test box with a hub (demo-hp 9201) | CC |
|
||||
| **R-1219** | Backup & restore | P2 | **During a recovery offer the backups page hides the „create your recovery code” ceremony (it would replace the key that opens the old off-site copy), but the global top bar still links to it and the start handler does not refuse.** REAL in code (night 2026-10-22, read; split from R-1190 (b)): `web/escrow_banner.go:23-35` ignores `recoveryOffer()`; `templates/backups_remote.html:144-160` hides it and its own comment names the harm (R-199); `escrow_handlers.go:180-245` starts anyway; reachable in offer shape (c), `offbox.go:1866-1870`. Evidence `audits/night-2026-10-22/P3-candidates/analysis.md`. | **VERIFY — fixed on `main`, waits for the controller release** — controller `1170b48` (the top bar hides the ceremony during a recovery offer; the start handler answers 409 `api.escrow.recovery_offer_open`), red-proved with a real session and a no-offer control. The offer state cannot be staged without hand-set state, so the handler test is the proof (the brief's allowance). **Earlier:** OPEN — proposed fix, not built (key-handling code) | — | Fix: the bar hides its link during an offer, and the start handler answers 409 with a Hungarian sentence; red-proof with a handler test; live proof with an offer state on a test box with a hub | CC |
|
||||
| **R-1220** | Backup & restore | P2 | **„Megőrzött adatok” (kept data) can list an INSTALLED app's live folder as kept — and offer to delete it — when that app's app.yaml cannot be read.** REAL in code (night 2026-10-22, read; split from R-1190 (g)): a nil AppConfig drops the app from `liveDriveBinds` (`stacks/kept.go:220-235, 336-360, 372-389`); a parse error gives nil (`deploy.go:1113-1125`). Evidence `audits/night-2026-10-22/P3-candidates/analysis.md`. | **VERIFY — fixed on `main`, waits for the controller release** — 2026-10-26 night: controller `7e15a37` (an app whose `app.yaml` exists but does not parse counts as installed; its folders are never kept data), red-proved; live on 9202 (the kept-data page did not list the folder) — `audits/night-fixes-2026-10-26/`. **Earlier:** OPEN — proposed fix, not built (delete-path code) | — | Fix: an app whose app.yaml is unreadable counts as live (fail closed); its folders are never listed as kept. Red-proof: a unit test with a broken app.yaml; 9202 proof with a throwaway app | CC |
|
||||
| **R-1221** | Backup & restore | P4 | **The nightly whole-box backup starts ~1.5–5 min later each night, until one night is skipped (after ~70–80 nights with no press between).** REAL, low harm (night 2026-10-22; split from R-1189 (b)): agent `localapi/server.go:1184` is `age >= Cadence` with the age counted from the archive START; the controller polls every 5 min (`quiesce.go:150`) and the archive starts after the apps stop. Measured on demo-hp: 04:31:07 → 04:33:18 → 04:36:47 → 04:38:14, and 04:33:37 → 04:38:44 → 04:42:40. At W+6h one night is skipped (44 h is below the 48 h valve, `quiesce.go:807-818`); the hub's 26 h line (`deadline.go:29`) mails the operator. Any manual or off-cycle run resets the drift. Evidence `audits/night-2026-10-22/P3-candidates/demohp-whole-box-completions.txt`. | OPEN | — | Fix: inside the night window a tier is due at `age >= cadence - 4h`; the agent answers due-ness, so it is agent code (a unit test with an injected clock) and rides an agent release | CC |
|
||||
| **R-1228** | Backup & restore | P3 | **The website, the installer script and the hub are all served from the home line — a DooPlex loss stops new installs and the public site.** DooPlex survey 2026-10-23 night (`audits/dooplex-survival-2026-10-22/PLAN.md`, G8): `felhom.eu`, `hub.felhom.eu` and `gitea.dooplex.hu` resolve to the home address; the installer fetches `felhom.eu/scripts/felhom-host-install.sh`; only the ISO (Cloudflare R2) survives. | OPEN — **2026-10-23 — D35 ruled YES, after the release week (operator):** serve the website and the installer from Cloudflare like the ISO. Dated: start on or after 2026-10-30 (DUE-CHECKS). OPEN | the operator's yes | Operator decides (STATUS): A) accept — Gitea and the hub first, the site after; B) the static site + the installer tag on Cloudflare like the ISO — CC's pick, after the release week | CC (ruled yes 2026-10-23, D35) |
|
||||
| **R-1229** | Backup & restore | P4 | **ArgoCD's per-app auto-sync settings live only on the cluster, not in git.** DooPlex survey 2026-10-23 night (`audits/dooplex-survival-2026-10-22/PLAN.md`, G9): the Applications differ (`enabled` true/false, prune, selfHeal); a rebuilt cluster from `homelab-manifests` would not have them. | OPEN | — | Write each Application's sync policy into `homelab-manifests` (a homelab change, the operator's yes for the commit that changes live behaviour) | operator |
|
||||
| **R-1231** | Backup & restore | P4 | **The recovery page says the box's host service is „older” when the controller only cannot tell.** Test night 2026-10-23 (`P4-testnight/07a-unlock-refused-fixture-version.txt`): with the agent's capability `unknown` (a version string it could not compare), the page read „…a hozzá tartozó házon belüli szolgáltatás régebbi… A gép magától frissül”. The same page is reached by a merely-down agent, for which „older” and „updates itself” are not true. | OPEN | — | A separate sentence for `unknown` („a gép most nem éri el a házon belüli szolgáltatást — próbáld újra pár perc múlva”); a render test per state; rides a controller release | CC |
|
||||
| **R-1232** | Backup & restore | P2 | **A reinstalled box may take its first whole-box copy to ep0 up to a week late: the old box's copy in the same household space seems to count as its last one.** Test night 2026-10-23 (`audits/night-2026-10-23/P4-testnight/`): the new Tester4 box (guest 9201) had its PBS tier applied at 19:28 UTC, but no whole-box run to ep0 came all night; the only archive in the household's ep0 space is the rehearsal box's `ct/9201` of 2026-10-20 (same guest number), and the tier's cadence is 168 h. The agent's due-check reads the newest archive for that vmid on the tier's storage (`localapi/server.go` `newestArchiveOn`) — so the old box's copy reads as „2.6 days old, not due”. If so, the ep0 copy is the OLD box's for up to a week. PLAUSIBLE — read from the code and the night's silence, not proven by a log line (the controller logs the due-check only at debug). | **VERIFY — fixed on `main`, waits for the agent release (the operator's vouch)** — 2026-10-26 night: agent `3911cc6` (the due-check counts only archives with this storage's key, the R-727 discriminator), red-proved; live on a fresh BYO Tester4 box (VM 9375): the released agent said `due: false` (the old box's archive, 6.3 days), the fixed one `due: true / absent`, and the first whole-box copy ran 4 minutes later — `audits/night-fixes-2026-10-26/`. Hub host `Tester4-b5dbbd` to delete (operator). **Earlier:** OPEN | — | Prove: read `GET /backup/tiers` for the box (the agent's answer per tier) on the next reinstall; fix: a tier's „last backup” counts only archives this host wrote (or after the host's enrollment); an agent test with a foreign archive in the namespace | CC |
|
||||
| **R-1235** | Backup & restore | P3 | **The release copy on ep0 (D33) is proven to load, not yet to restore a registry — and it follows the newest versions, not the ones the fleet needs.** Built 2026-10-23 (`scripts/release-copy/`, `audits/day-2026-10-23/08-release-copy-D33.txt`). (a) `total-loss-of-dooplex.md` „Restore the release copy” steps 2 (skopeo push back, same digest) and 3 (agent packages back) were never walked into a real new registry — only a `docker load` on 9202. (b) The copy keeps the newest 3 image tags and 5 agent versions; it does not ask the hub for the floor and the vouched agent and always include them — a vouch more than 5 releases behind would fall out. (c) The golden (`felhom-golden`, 637 MB for 0.331.0) is not copied: a new install after a DooPlex loss needs it (the brief named images + agent packages only; one golden fits under the 3 GB cap). | OPEN | — | (a) a throwaway registry on demo-hp, push one tag back, compare digests; (b) read `/configuration`'s floor + vouched agent; (c) the operator says whether the golden goes in | CC |
|
||||
| **R-1263** | Backup & restore | P4 | **Small items from review round 2:** a LOCAL restore's put-back mails the operator „its off-site restore FAILED” (`felhom-controller/controller/cmd/controller/main.go:1514-1518`, shared via `restore_unit.go:517-518`); Remove — even „keep my data” — deletes undeclared volumes labelled with the app's project, which no tier holds (`internal/stacks/delete.go:763-764`, R-1117); the capped copy's `--delete` reads the source in the daemon's mount view, the emptiness check in the controller's (`tier2.go:834` vs `:464`); stale comments — `felhom-agent/internal/localapi/backup_cap.go:15` („keep-last”) and `restore_crash_putback.go:32` (names a test file that does not exist); the qBittorrent password goes to whatever answers the DNS name `qbittorrent` (`upwatch/explain.go:94,108-113`); kept-copy Remove has a check-to-remove gap (`tier2_kept.go:92-111`); the release-copy restore check trusts hashes stored on ep0 (`runbooks/total-loss-of-dooplex.md`); rrsync without `-munge`/`-wo` (`audits/day-2026-10-23/08-release-copy-D33.txt:6`). | OPEN | — | fix in each repo's next attended pass | CC |
|
||||
| **R-1294** | Backup & restore | P3 | **demo-hp's weekly off-site clean-up was refused by its own guard on 2026-10-26 (window 16): the plan would remove 209 of 359 snapshots, above the week's cap (179) — nothing was deleted, and each refused week adds to the next plan.** Seen in the operator mailbox during the 2026-10-26 release run (03:17Z, `offsite_prune_guard_refused`, error; details `count_before 359, count_after 359, outcome guard-refused`). The cap refusal is kept on purpose (R-824, R-867 closed the false ones); the open question is whether a store that once exceeds the cap can ever prune again by itself, or refuses every week while it grows. demo-hp is the Tier-0 box with many hand-made backups (sweeps, probes). Earlier cap refusals: demo-hp 2026-10-03 (window 1), demo-felhom 2026-10-05 (window 3). | **OPEN — the grant is SET (D55 = 260, `09` §3 decision 268)**: 2026-10-26 19:10:31Z through the operator's one-purpose token `cc-d55-window`, read back `max:260`; it is used at demo-hp's next window request (after its nightly off-site run, ~03:15Z). Close when that window prunes; then the operator revokes the token. **Earlier:** WAITING-ON-OPERATOR — 2026-10-26 evening: CC could NOT set the D54 grant — `POST /offsite/window-grant/demo-hp` (`max_remove=220`) with CC's hub token answered **403 „missing scope offsite:write"** (the hub log shows the refusal; nothing granted). The plan also grows: restic's dry-run 2026-10-26 18:56Z still 359 copies / plan 209 / default cap 179 (before tonight's run); a simulation of the keep rule adds ~14 per night (14 of 18 groups back up nightly), so ~223 at the night of 10-27 and ~237 at 10-28 — a cap of 220 would be refused again. STATUS D55: the operator grants it, with the cap. The grant opens the box's NEXT window request, which comes after its next nightly off-site run. Ruled D54 = prune once (`09` §3 decision 266). **Earlier:** WAITING-ON-OPERATOR — 2026-10-26 (read only, `audits/r1294-offsite-cap-2026-10-26/`): the plan is HONEST (restic's own dry-run: keep 150, remove 209; every removal 7–30 days old; every app keeps ≥ 9 or its last copies; the bulk is one test day, 2026-10-16, 152 snapshots). It can NOT recover by itself: the cap is half the store and grows ~49/week while the plan grows ~84/week. Only demo-hp has this shape (demo-felhom and Tester 1 pruned normally 10-26). The pick is STATUS D54. **Earlier:** OPEN | — | read the guard's cap rule (controller off-site prune) against demo-hp's snapshot list: is the plan honest (old, superseded) or not; if honest, say how such a store gets back under the cap (an attended one-time prune, or a cap that follows the store) — a design question for the operator if it changes what a box may delete | CC |
|
||||
@@ -233,7 +228,7 @@ stopping line that lies.
|
||||
| **R-1275** | Storage & devices | P4 | **An English household sees the drive names in Hungarian** on the install page (and wherever a storage label shows): „Belső tárhely — 52.0 GB free (default)”, „Külső tárhely (hdd_1)” (catalog sweep 2026-10-24, `audits/catalog-sweep-2026-10-24/navidrome/page-install-en.txt`). The label is stored once, in Hungarian, when the drive is found (`felhom-controller/controller/internal/settings/settings.go` `InferStorageLabel`); a household may rename it. | OPEN | — | Render a label that still equals the inferred default in the reader's language; a test per language | CC |
|
||||
| **R-1276** | Storage & devices | P4 | **„Remove with data” leaves the app's empty parent folder** (`<drive>/appdata/<app>`) when the template binds a subfolder: Grimmory, RomM, Paperless-ngx (catalog sweep 2026-10-24; 4 KB each; the bound folders were removed). Harmless (empty, not counted as old data), untidy for a household that browses the drive. | OPEN | — | Remove the parent when it is empty after the bound folders go; a test | CC |
|
||||
|
||||
## Security & access — 30 rows (P1 2, P2 5, P3 16, P4 7)
|
||||
## Security & access — 31 rows (P1 2, P2 5, P3 17, P4 7)
|
||||
|
||||
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
@@ -267,8 +262,9 @@ stopping line that lies.
|
||||
| **R-1237** | Security & access | P3 | **The nightly CC-secrets sweep found stored one-time codes in a session record dated 2026-10-23: 14 names in one file (bind tokens and setup codes of test boxes — NIGHT_2026_10_23_*, FIXES_2026_10_21_*, NIGHT_2026_10_21_*, REHEARSAL_2026_10_20_* — and R_DEMO_FELHOM in a file of 2026-10-20).** Mail „[DooPlex CC secrets] 2 secret name(s) found in old session records", 2026-10-23 01:57 UTC, read in the day session (names only). One file holding all of them suggests one command printed many stored values at once (a listing or a dump) in the night session. All but R_DEMO_FELHOM are one-time install codes of test boxes; NIGHT_2026_10_23_* die when Tester4-16fdef is deleted (the operator's do list). | OPEN | — | CC: find the file and the command by the sweep's own report (names only), add a hook shape for that command if it is not one; R_DEMO_FELHOM (demo-felhom's recovery code) — the operator decides whether to rotate it | CC |
|
||||
| **R-1248** | Security & access | P3 | **An app's own numbers can lie: an attacker with code inside an app's container can answer the app's API with whatever matches its flood, and the upload watch (R-1244) would then call it explained.** Measured remedy, not built: a per-container upload ceiling with `tc` from a helper container in the app's network namespace — on scratch 9202 (unprivileged) a flood was held at 19.9–20.1 Mbit/s and the app kept answering (`audits/SPIKE-upload-watch-2026-10-23.md` §5). Costs: a helper image with `tc` (a new external image, or `tc` in the controller image), `NET_ADMIN` for that helper, re-applied after each app restart. | OPEN | an operator decision (the new image / capability) | Decide; if yes, CC builds the ceiling for the download and media apps first | operator |
|
||||
| **R-1309** | Security & access | P4 | **What no automated source shows: a fix announced only by mail, forum or a blog we do not read; a security fix nobody calls one (cloudflared 2026.10.2's „bump distroless image"); closed-source apps (Plex, Emby).** The watch (R-1303) shows these only as BEHIND (weekly). The vendor mails the operator receives stay a source. `audits/security-watch-2026-10-26/SPIKE.md` | OPEN — filed 2026-10-26 (a stated limit) | — | none until a vendor offers a feed; add a vendor's feed to `security_watch.FEEDS` when one exists | CC |
|
||||
| **R-1312** | Backup & restore | P3 | **The hub customer page's off-site switch did not reach the box: on Tester 1 (2026-10-27, operator-attended, ~14:00–14:12 UTC) the box's saved off-site target stayed `enabled` and its `controller.yaml` `offsite.enabled: true` (unchanged since 2026-10-04) while the hub showed off-site OFF.** So what the switch stops on the box side is not known: the controller reads `cfg.Offsite.Enabled` only at start (`cmd/controller/main.go:890`), and nothing rewrote the file. Either the switch is hub-side only by design (then the page must say so), or a box keeps pushing off-site while the operator believes it is off. Found by the R-1218 live attempt (R-1218 closed 2026-10-27 with its live proof waived by the operator). | OPEN | — | Read the hub handler behind the switch and what it changes (config, tenancy, storage access); then one attended run: switch off, watch the box's next off-site push (does it run, does it fail at the storage) | CC |
|
||||
|
||||
## Box system & updates — 14 rows (P2 1, P3 8, P4 5)
|
||||
## Box system & updates — 13 rows (P3 8, P4 5)
|
||||
|
||||
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
@@ -277,7 +273,6 @@ stopping line that lies.
|
||||
| **R-984** | Box system & updates | P4 | **Host and agent hardening, low risk each: the backup-target route has no role check; the unsigned guest spec has no size bounds; signed ops have no maximum validity; the guarded mkfs does not refuse LVs, zvols or RAID devices; the local API is reachable from the LAN by a static route; a sudoers inspect pattern is wider than needed; install passes secrets on the command line; guest settings files are world-readable; the host offers rpcbind and DNS on the LAN.** Fix each in its own small change. Security review 2026-10-12 (`audits/security-review-2026-10-12/`); detail held off-git for the operator (`/mnt/5_hdd/felhom.eu/evidence/security-review-2026-10-12-PRIVATE/`). | OPEN | — | Batch into hardening work | CC |
|
||||
| **R-979** | Box system & updates | P3 | **Controller updates are trusted by registry tag alone (no digest, no signature), and the Update button offers any newer tag, even an unvouched one; the built-in traefik, cloudflared and FileBrowser images are also pinned by tag only.** Whoever can push to the registry decides what runs. Fix: pin by digest from the hub's vouched list; offer only vouched versions. Security review 2026-10-12 (`audits/security-review-2026-10-12/`); detail held off-git for the operator (`/mnt/5_hdd/felhom.eu/evidence/security-review-2026-10-12-PRIVATE/`). | OPEN — design-proposal | — | Design note, then build | CC |
|
||||
| **R-974** | Box system & updates | P3 | **A compromised host agent can likely become root on the host through the root wrapper that applies PBS settings: the wrapper accepts a folder path inside the agent's own writable tree and then acts on it as root.** Static (the symlink behaviour was reasoned, not run). Same class as R-861. Fix: a fixed root-owned folder, and refuse symlinks before any root action. Security review 2026-10-12 (`audits/security-review-2026-10-12/`); detail held off-git for the operator (`/mnt/5_hdd/felhom.eu/evidence/security-review-2026-10-12-PRIVATE/`). | OPEN | — | Fix the wrapper with a test on a throwaway box | CC |
|
||||
| **R-972** | Box system & updates | P2 | **The shipped controller and hub programs are built with Go 1.24.13 and golang.org/x/crypto v0.31.0, and the agent with Go 1.26.0, so dozens of fixed Go security bugs (including html/template escaping fixes) are still in what runs on boxes and the hub.** Go 1.24 has had no security fixes since Go 1.26 was released (Go supports the two newest major releases: https://go.dev/doc/devel/release#policy); the scanners name fixes in Go 1.26.9 and 1.27.2. Also: the controller image's Debian 12 base has 12 fixable critical packages, and the Samba image has 48 fixable high ones. Fix: build all three on a supported, patched Go; update x/crypto; rebuild the base images. Scanner output: `audits/security-review-2026-10-12/scanners/`. | **NARROWED — Go 1.27.3 committed in all three, waits for the releases** — 2026-10-26 night: agent `fbbb168`, controller `2560cf1` (+ builder `golang:1.27.3-trixie`), hub `d625a143` (+ `golang:1.27.3-alpine3.24`); govulncheck 1 → 0 called vulnerabilities each (GO-2026-6809, `crypto/x509`); x/crypto v0.58.0 already newest; full tests green — `audits/r972-go1273-2026-10-26/`. **Earlier:** **NARROWED** 2026-10-16 (burndown 2): **controller v0.322.0 released** on Go 1.27.2 + x/crypto v0.58.0, runtime debian:12.13-slim + `apt-get upgrade` (Debian 13 deliberately not: restic 0.18, R-1105) — scanner: critical 16 → 4, fixable criticals and highs in the OS 0; govulncheck 62 → 1 (module-level, `openpgp` not linked). **Hub v0.156.0 deployed** 2026-10-16 19:26 on the operator's yes (Go 1.27.2, alpine 3.24.2: 0 critical, 0 high); Synced/Healthy, reports from all three boxes after the start, the floor reads 0.322.0. **Agent: Go 1.27.2 committed (`37b99d7`), tested, NOT released** — the next vouched agent release carries it. Open: the Samba image (48 fixable high, not rebuilt); docker-compose plugin's own Go (4 high, upstream). Evidence `audits/burndown2-2026-10-16/P4/` **2026-10-16 (evening): the Samba part is DONE in controller v0.323.0** — felhom-samba 1.2.0 on Alpine 3.24.2 (0 critical / 0 high, was 48 fixable high), proven on demo-hp with the same household password (smbclient, nmbd, mDNS, WS-Discovery); on the three test boxes now, on every box with the global floor (R-1105's night check). The controller's Debian 13 OS part: 1 critical / 70 high, none fixable. Left: docker-compose plugin's own Go (4 high, upstream); the agent release; restic's binary is R-1107. **2026-10-17 (evening): agent v0.159.1 (Go 1.27.2) RELEASED and running on demo-hp, Tester 1 and demo-felhom** (signed jobs on the operator's yes); waiting for the operator's vouch — then only the upstream compose plugin is left (close then, recorded). | the next vouched agent release | Close when the global floor carries v0.323.0 and the next vouched agent release carries Go 1.27.2 (compose plugin: upstream, recorded) | CC |
|
||||
| **R-1214** | Box system & updates | P3 | **On the 8 GB box with the swap fix, the night's second-drive backup still pushes memory „full" pressure above 20 % for about 3 minutes; the box keeps answering.** Night soak 2026-10-21→22 (`audits/night-2026-10-21/P1-soak/03-rec.jsonl`, 10-s samples; fresh box from the public ISO, agent with swap = RAM, 8 apps, the rehearsal uploads for 2 h): at 01:30–01:34 UTC (the 03:30 tier2 job) host 39 % / guest 45 % over 10 s, over 60 s at most 20 % / 25 %; IO „full" 66 %; guest swap 1.35 → 2.1 GB; `/api/health` answered every probe (slowest 4.1 s, largest interval 16 s); 0 OOM kills. Once more in the upload window (Immich loading its models, 31 % / 35 % for one sample). The brief's soak pass line was „full" < 20 %, so the soak missed that one line; the freeze itself (96 % for an hour, R-1192) did not come back. Not diagnosed: which part of the tier2 job (the copy's page cache, the volume dumps) causes it. | WATCHING — **2026-10-24 02:4xZ dated check read (weekend-night session, read only):** Tester 1 (8 GB host, guest 4 GB, controller 0.341.0) ran its 03:30 copy at 01:30:00–01:30:13Z (3 apps, 157 MB + 86 MB + 16 KB; no „capped copy container did not start" WARN, no leftover `felhom-tier2-copy-*`); the guest cgroup's memory „full" stall counter on the host (`/sys/fs/cgroup/lxc/9201/memory.pressure`) read **total 444 µs** over the whole 11.1 h since the host started (15:32Z), so „full" stayed far under 20 % (20 % of 10 s = 2 s); 0 OOM kills. **Not shown:** that the copy ran in the capped container (the INFO log does not name it; Docker keeps only ~200 events, from 02:36Z). **Weak load:** 0.24 GB, not the soak's large copy — so the row stays WATCHING; close after a night whose copy moves ≥ 1 GB, read from the same counter. WATCHING — **RELEASED 2026-10-23 in controller 0.340.0** (floor 06:41 UTC; on all three test boxes, start-up „no leftover”, 0 copy containers; Tester 1's manual second-drive run: 3 apps, 0 containers left). **Open only for the consequence:** dated check 2026-10-24 — Tester 1's first night copy ran in the capped container and memory „full” pressure stayed under 20 % (the box's own night log). READY — rides controller 0.340.0. READY — waits for the controller 0.340.0 release. **2026-10-22 night — cause measured, fix built and proven on 9202, waits for the controller release.** Cause: the copy's page cache is charged to the guest and evicts the apps' working set. On 9202 (4 GB RAM, 1.8 GB held by a hog, a 6 GB copy): plain rsync full stall 5 702 / 2 464 ms, peak „full” 16.8 / 6.9 %; the same copy in a 512 MB memory-capped container 374 / 320 ms, 0.9 / 1.0 %. Controller main `03c0a69` + `ae39467` (unreleased, rides 0.340.0): the copy runs capped only for clean `/mnt/` paths with no symlink (security review); a docker error (exit 125) falls back to plain rsync. A real `POST /api/backup/tier2` on rc.4: 6 capped containers, each exit 0; Immich's copy equals its source (dry-run 0 differences, 44 = 44 files). Evidence `audits/night-2026-10-22/P4-R1214/`. **2026-10-23 night (stray-copy fix, night brief Part 1).** The capped copy's container outlived the copy (a timeout or a controller restart killed only the `docker` CLI; `--delete` went on outside the R-1180 guard). Controller main `66a69d4` + `912e592` (unreleased, rides 0.340.0): a fixed name + label per copy, removed by name on any error, every leftover removed at start before the scheduler and the web server, a restore refused while a copy runs or may run; `--mount` (a path the daemon does not see is refused, not created empty) and the image ID with `--pull never` (review C4, C7). Proven on 9202 with rc.5 (`audits/night-2026-10-23/P1-straycopy/`): a restart in the middle of a 16 GB copy → the new controller removed `felhom-tier2-copy-immich-948f2280` at start, the restore probe was refused during the copy, the redone copy equals the source; a 15 s test build → the timed-out copy's container removed, the partial copy stopped growing. A second review of that code (N2–N5) and the commit's own security review (two races) → `9d9e404`, `1babfe9`: a stray clears when a later removal works, the start-up check never removes this process's own copy and holds the destination's lock, one copy per destination at a time, `RunTier2` refuses during a restore for every caller and records itself in one step with that check, every leg asks again. Re-proven on 9202 with rc.8 (`audits/night-2026-10-23/P1-straycopy/1*`). 9202 back on 0.339.0. | — | Release 0.340.0; then re-measure the 03:30 job on the 8 GB soak box and close if „full” stays low | CC |
|
||||
| **R-862** | Box system & updates | P3 | **Tester 2 cannot take the config bundle until one by-hand bootstrap is done: its `felhom-os-apply` (agent 0.142.0) predates the bundle mode, and no signed job can write a root file on it.** FOUND 2026-10-04 (R-840 build, Part C): the route reaches every box installed from installer 1.31.0 on, and the demo boxes (bootstrapped by CC); Tester 2 has every root file of agent 0.142.0 (installer 1.30.0) and lacks only the R-858 wrapper fix, which matters only for a Docker step it gets solely from a signed job. CC has no route to Tester 2 (its door admits only the operator's WireGuard peer; `felhom-op` cannot become root). The steps: `runbooks/config-bundle.md` "Tester 2". Then CC signs the bundle and reads it back. | **WAITING-ON-OPERATOR** — the operator said (2026-10-04 ~19:05) he will try through his tunnel **2026-10-07 07:58 (`09` §3 decision 170): the operator believes Tester 2 never set up the off-site backup (no escrow); the laptop may stay off for days; the tester plans to add an HDD.** **2026-10-07 (Part H, read only):** in Tester 2's last 10 notifications (2026-10-05 09:16 → 2026-10-07 06:58) the household got 0 mails, the operator 10 (host_down ×9, expected_dbdump_missed ×1); control: the household channel shows on the other three customers. So the household is not mailed daily while the box is off; no row (`audits/day-2026-10-07/H/`). **2026-10-22: closes when Tester 2 is reinstalled (operator ruling 2026-10-22 14:11 — a new install from the public download replaces the bootstrap and the off-site check; `pilot/TESTER2-handover.md`).** | the operator's WireGuard tunnel | the operator runs the three bootstrap commands; CC sends the bundle | operator |
|
||||
| **R-78** | Box system & updates | P3 | **`local_api` authority ruling — auto-reconcile vs detect-only** **MIGRATED FROM `ROADMAP.md` 2026-08-22 (R-369) — originally filed 2026-07-25, size M, roadmap state `idea (deferred OUT of R-77 on purpose)`.** Moved verbatim; nothing added or reinterpreted. The roadmap keeps its copy as history, marked moved. **An OWED OPERATOR DECISION, not a defect — moved because an owed ruling hidden among feature ideas is the shape this session exists to remove.** | **OPEN — migrated from ROADMAP 2026-08-22, rank unchanged** | — | R-77 ships detection because the fix is genuinely undecided, and **both directions can lose customer-visible function**. **Direction 1 (today):** `controller.yaml` wins and drift is silent → the 2026-07-25 island migration blinded the whole fleet's control plane for 17.5 h (drive gate, guest-reboot recovery, quiesce/backup all degrade). R-77 makes that loud but does not stop it recurring. **Direction 2 (`bootstrap.json` wins, auto-reconcile on boot):** a guest whose `controller.yaml` is CORRECT and whose `bootstrap.json` is stale — a half-completed re-provision, a hand-repaired guest, a setup-wizard box — gets a **working channel clobbered on the next restart**, fleet-wide and silently, during a routine deploy. That is not obviously better than the bug. Needs a spike: which writer is authoritative per field (endpoint vs fingerprint vs token — `mergeLocalAPI` replaces the whole block, so they cannot be reconciled independently today), whether the agent side should stamp a generation/mtime so 'newer wins' is even expressible, and whether reconcile should require an operator ack. Until then the drift alert plus a manual edit is the supported path. | CC |
|
||||
@@ -285,19 +280,17 @@ stopping line that lies.
|
||||
| **R-1004** | Box system & updates | P4 | **After an unclean stop every guest ext4 volume waits ~43 s in multi-mount protection before it mounts, so each restart after a power cut takes ~1.5 min longer.** Kernel: „EXT4-fs warning (device dm-6): ext4_multi_mount_protect: MMP interval 42 higher than expected, please wait" on dm-6/dm-7 and loop0/loop1, demo-hp and Tester 1, every round of `audits/night-power-2026-10-13/` (R1 `repairs.txt`). | **READY** — filed 2026-10-14 | — | CC: find where MMP is switched on for the guest volumes (Proxmox `pct` create, or our own mkfs), whether it protects anything on a one-host disk, and measure the restart without it on a scratch guest | CC |
|
||||
| **R-1013** | Box system & updates | P4 | **After a power cut the agent's start-up stale-lock pass logs an ERROR „pct unlock failed … no lock found" when Proxmox's own start-all removed the lock in the same second.** The outcome is the goal (no lock), so the line is a false alarm in the log. Seen on demo-hp 2026-10-14 12:07:44–45 UTC (`audits/power-cut-fixes-2026-10-14/E/after-boot.txt`; Proxmox: „removed left over backup lock from '9201'!"). Small, but the agent's release for this session is spent (v0.156.1). | **OPEN** — filed 2026-10-14 | — | CC: treat „no lock found" from `pct unlock` as already clear (INFO), with a test; ride the next agent release | CC |
|
||||
| **R-1061** | Box system & updates | P4 | **A per-customer floor reached Tester 1 only at its next 15-minute report, not in seconds.** Set 2026-10-15 12:55:51 UTC for tester-1, demo-hp and demo-felhom together (hub 0.153.0, CC's token): demo-hp and demo-felhom ran 0.314.0 within 13 s (the hub's wake); Tester 1 moved at 13:09:35, its regular report (`audits/gate-restore-2026-10-15/release/03-boxes-move.txt`). It had restarted at 12:54:29 onto rc.1 and logged „hub wait channel active". Why the wake did not reach it is not read (the wake line is DEBUG). No harm: the floor arrived. | **OPEN** — filed 2026-10-15 | — | Read Tester 1's DEBUG ring at the next floor change; compare with the hub's bump log | CC |
|
||||
| **R-1285** | Box system & updates | P4 | **D43's removal of our SSH drop-in from a BYO host happens one bundle LATE: the bundle run that delivers agent 0.165.0 is planned by the box's OLD (0.164.0) wrapper, which writes the drop-in as before („same"), and only then replaces itself.** Measured 2026-10-25 on the BYO test host (VM 9371 on demo-hp, `Tester4-f967d4`; attended release run): 0.164.0 day-0 → signed `agent_update` + `agent_config_update` 0.165.0 → the planted drop-in still there; a second `agent_config_update` (same bundle) → `BUNDLE REMOVED … (ours, on a BYO host — D43)`, nothing written, `sshd -T` the owner's own `permitrootlogin yes` (`audits/release-2026-10-26/byo/byo-proof.txt`). No box is affected today (the fleet's only BYO host is this test host); a fresh BYO install on ≥ 0.165.0 runs the new wrapper from the start. | **VERIFY** — 2026-10-26: agent `b1bc63d` (unreleased) — the new agent runs the bundle-policy pass once right after its self-update commits (`selfupdate.SetOnCommitted`); test in the real order (commit, then one pass), red-proved. **Not live:** only a box coming FROM 0.164.0 discriminates (0.165.0's wrapper already applies D43), which needs a signed downgrade chain on a BYO box — the live proof rides the next agent release. **Earlier:** **OPEN** — 2026-10-26 (agent 0.166.0 released, attended run): the policy pass is wired, but in the normal delivery it does NOT run: the box gets `agent_update` and `agent_config_update` in ONE pass, and the bundle job runs in the OLD process (demo-hp: pid 1966780, agent 0.165.0, bundle 09:03:07–09:03:09 CET; the restart into 0.166.0 at 09:03:10) — no `bundle policy pass` line on any of the three boxes. So a BYO host coming from 0.164.0 still loses our drop-in one release late. The night proof (`audits/night-2026-10-25/rig/r1285-live.txt`) ran a bundle under an agent that was ALREADY 0.166.0-code, so it did not cover this order. No BYO host is in the fleet today. Fix options: the agent runs the pass once at start-up after `update committed`; or the release procedure sends the bundle job only after the commit. **Earlier state:** **VERIFY** — fixed on main 2026-10-25 night (agent `abcc1e6`), waits for the agent release + the vouch: the agent runs the wrapper's `bundle-policy` pass after every install (red-proved, `redproof-r1285.txt`). **Live on the rig in ONE signed run** (BYO host, staged as upgraded from 0.164.0: the new agent by hand, the old 0.164.0 wrapper on disk, our drop-in planted; one `agent_config_update` of a test bundle): the old wrapper installed the bundle and replaced itself, then „BUNDLE POLICY REMOVED … (ours, on a BYO host)", `sshd -T` the owner's own `permitrootlogin yes` (`rig/r1285-live.txt`); the test package deleted from the registry after. **Earlier state:** OPEN | — | either the wrapper plans again after it replaced itself (one agent change + a test that a 0.164.0→0.165.0 bundle on a BYO record removes our copy in ONE run, red first), or the release procedure sends a BYO box's config bundle twice; until then a BYO box upgraded from ≤ 0.164.0 keeps our drop-in until its next bundle | CC |
|
||||
| **R-1285** | Box system & updates | P4 | **D43's removal of our SSH drop-in from a BYO host happens one bundle LATE: the bundle run that delivers agent 0.165.0 is planned by the box's OLD (0.164.0) wrapper, which writes the drop-in as before („same"), and only then replaces itself.** Measured 2026-10-25 on the BYO test host (VM 9371 on demo-hp, `Tester4-f967d4`; attended release run): 0.164.0 day-0 → signed `agent_update` + `agent_config_update` 0.165.0 → the planted drop-in still there; a second `agent_config_update` (same bundle) → `BUNDLE REMOVED … (ours, on a BYO host — D43)`, nothing written, `sshd -T` the owner's own `permitrootlogin yes` (`audits/release-2026-10-26/byo/byo-proof.txt`). No box is affected today (the fleet's only BYO host is this test host); a fresh BYO install on ≥ 0.165.0 runs the new wrapper from the start. | **VERIFY** — 2026-10-27: agent v0.167.0 RELEASED; in the NORMAL signed delivery the pass now runs right after the commit on all three boxes („running the bundle policy pass after the self-update commit (R-1285)” → `BUNDLE POLICY DONE install_mode=appliance removed=0`; `audits/release-2026-10-27/agent-0167-tester1-demofelhom.txt`). Not live: a BYO box coming FROM 0.164.0 (none in the fleet). **Earlier:** **VERIFY** — 2026-10-26: agent `b1bc63d` (unreleased) — the new agent runs the bundle-policy pass once right after its self-update commits (`selfupdate.SetOnCommitted`); test in the real order (commit, then one pass), red-proved. **Not live:** only a box coming FROM 0.164.0 discriminates (0.165.0's wrapper already applies D43), which needs a signed downgrade chain on a BYO box — the live proof rides the next agent release. **Earlier:** **OPEN** — 2026-10-26 (agent 0.166.0 released, attended run): the policy pass is wired, but in the normal delivery it does NOT run: the box gets `agent_update` and `agent_config_update` in ONE pass, and the bundle job runs in the OLD process (demo-hp: pid 1966780, agent 0.165.0, bundle 09:03:07–09:03:09 CET; the restart into 0.166.0 at 09:03:10) — no `bundle policy pass` line on any of the three boxes. So a BYO host coming from 0.164.0 still loses our drop-in one release late. The night proof (`audits/night-2026-10-25/rig/r1285-live.txt`) ran a bundle under an agent that was ALREADY 0.166.0-code, so it did not cover this order. No BYO host is in the fleet today. Fix options: the agent runs the pass once at start-up after `update committed`; or the release procedure sends the bundle job only after the commit. **Earlier state:** **VERIFY** — fixed on main 2026-10-25 night (agent `abcc1e6`), waits for the agent release + the vouch: the agent runs the wrapper's `bundle-policy` pass after every install (red-proved, `redproof-r1285.txt`). **Live on the rig in ONE signed run** (BYO host, staged as upgraded from 0.164.0: the new agent by hand, the old 0.164.0 wrapper on disk, our drop-in planted; one `agent_config_update` of a test bundle): the old wrapper installed the bundle and replaced itself, then „BUNDLE POLICY REMOVED … (ours, on a BYO host)", `sshd -T` the owner's own `permitrootlogin yes` (`rig/r1285-live.txt`); the test package deleted from the registry after. **Earlier state:** OPEN | — | either the wrapper plans again after it replaced itself (one agent change + a test that a 0.164.0→0.165.0 bundle on a BYO record removes our copy in ONE run, red first), or the release procedure sends a BYO box's config bundle twice; until then a BYO box upgraded from ≤ 0.164.0 keeps our drop-in until its next bundle | CC |
|
||||
|
||||
|
||||
## Monitoring & notifications — 25 rows (P2 1, P3 17, P4 7)
|
||||
## Monitoring & notifications — 21 rows (P2 1, P3 13, P4 7)
|
||||
|
||||
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| **R-1261** | Monitoring & notifications | P3 | **The R-1250 line hold (committed, NOT released): three edges before it ships (review round 2, HUNT-4 H4–H6).** Two seeders behind one uplink: the hold takes only the first, so the test is refused „not quiet” every 15 min in the Tuesday window and never counted (`felhom-controller/controller/internal/upwatch/linehold.go:155-160`; agent `internal/linetest/linetest.go:379-381`); a hold record of an app removed while held is never cleared and the 50 % rule never runs again (`linehold.go:106-108`; `upwatch/service.go:149`); a qBittorrent alt-speed flip during the hold leaves 1 KiB/s stored (`explain.go:175`; `linehold.go:127-128`). | **VERIFY** — RELEASED in controller v0.344.0 (global floor 2026-10-26 09:07:47Z, every live box on 0.344.0); the live test with a seeding box is Tuesday 10:00–16:00 (R-1250's dated check). **Earlier:** **VERIFY** — fixed on main 2026-10-25 night (controller `a79a292`), waits for the controller release (before any household gets agent 0.165.0 by signed update): every running seeder held, a removed app's record dropped, qBittorrent's slot named (`up_limit`/`alt_up_limit`). Red-proofs `audits/night-2026-10-25/redproof-r1261.txt`. **Live on the night's rig** (BYO VM, agent 0.165.0, rc.1, two seeders): both held, 94.8 Mbit/s, both limits back; a speed-mode switch mid-test left no 1 KiB/s (`rig/hold-watch*.txt`); the removed-app case by test only. **Earlier state:** OPEN — **now in controller 0.343.0 (released 2026-10-25); the three edges act only on a box whose agent is ≥ 0.165.0 (it alone reports `waiting_for_quiet`) — fix before any household gets agent 0.165.0 by signed update** | — | before the next controller and agent release: hold every running seeder; clear a record whose app is gone; read the mode | CC |
|
||||
| **R-1262** | Monitoring & notifications | P3 | **The upload watch treats ANY viewer as an explanation for any amount of upload, so a hacked Plex can send freely while one family member watches.** Found 2026-10-24 (SEC-1 X1): `felhom-controller/controller/internal/upwatch/watch.go:275,299`; `08` §9 states the rule, its limits list did not name this case. | OPEN | — | propose a cap (viewers × a bitrate ceiling) for the operator's R-1244 design; `08`'s limits list names the case meanwhile | CC |
|
||||
| **R-1310** | Monitoring & notifications | P3 | **The security watch (R-1303) flags notices that do not apply and misses fixes that do — measured by reading all 38 flagged pins by hand on 2026-10-27.** False: advisories of ecosystem `actions` (Home Assistant's CI), of another package in the repo (Gitea's runner), with a hostname or ≤-old range (cal.com 2023/2024, Grafana 2022), for the desktop/Electron client (Termix), for the rootless image only (Uptime Kuma); a release hit on a word (Dawarich „no longer receives security fixes", Rallly v4.16.0). Wrong „no fix": Vikunja's six (range `<= 2.6.0`, fixed in 2.7.0), karakeep-chrome (154/156 exist). Missed: Tandoor 2.7.0 names 8 GHSA ids (1 matched), Dawarich 1.16.0 (2FA, export deletion), Wishlist v0.69.0 (critical, no GHSA). BEHIND reads linuxserver `26.09.20260929` as newer than 26.09.2; Seerr follows the renamed-away `fallenbagel/jellyseerr`. `audits/security-app-updates-2026-10-27/TRIAGE.md` NOT-A-FINDING list and `triage-notes/` | OPEN — filed 2026-10-27; **two shapes FIXED the same day** (ecosystem `actions` not listed; an empty fix with a closed range reads „after X"; test W9, red first) | — | teach `security_watch.py`: skip a package that is not the pinned one; match every GHSA id a release body names; ignore `YY.MM.YYYYMMDD` tags; repoint seerr to `seerr-team/seerr`; each with a test seen failing | CC |
|
||||
| **R-1020** | Monitoring & notifications | P4 | **`app_repaired_after_crash` reports a duration of 0 s, and the controller log says „in 0s".** `RunAfterUncleanBoot` sets `res.Duration` in a deferred func after the result is already returned (no named result), so the caller sees 0; the `app.yaml` record is right (10,172 ms on demo-hp 2026-10-14, `audits/immich-repair-2026-10-14/D/`). Small, but the controller release for this session is spent (v0.311.0). | **OPEN** — filed 2026-10-14 | — | CC: a named result (or set the duration before return), with a test on the returned value; ride the next controller release | CC |
|
||||
| **R-528** | Monitoring & notifications | P2 | **[P2-MEDIUM] Docker does not report an OOM kill inside a Felhom LXC guest: `OOMKilled` stays false and no `oom` event fires, so the v0.243.0 OOM line is not proven live.** MEASURED 2026-09-15 on scratch 9202 (Docker 29.8.0): Paperless capped at 128M restarted 11 times with `OOMKilled=false` and zero `docker events --filter event=oom`; a memory hog inside the running container was killed (rc 137) with the same silence (`E2-oom-signal-measure-9202.txt`). BIGNIGHT VM 333 did read `oomkilled=true`, so the shape differs by case. **Fix shape:** the agent reads the guest container cgroups' `memory.events oom_kill` counters (host-side, reliable), or the controller alarms on a restart-count trend **RE-MEASURED 2026-09-16 on the DRILL box (fresh install, nested VM 334, Docker in an LXC guest, controller 0.243.0), so the finding is not a property of one machine:** the Paperless webserver was capped at 128 M with `docker update --memory`; it restarted 9-10 times, and all three signals stayed silent - `OOMKilled=false` on every inspect, `docker events --filter event=oom` EMPTY for the whole window, the container's cgroup not visible from inside the guest, and `dmesg` unreadable there. Identical to scratch 9202. So the v0.243.0 OOM line cannot fire on ANY Felhom box as shipped, on either host. Evidence: `audits/evidence-drill-0243-2026-09-16/phase2-m1-oom.txt`. | **WATCHING — DESIGN WRITTEN 2026-10-26 night (the brief's Part 7: build only if time is left; it was not built — the line test and the attended release came first).** The host-side counter EXISTS and is readable (read on demo-hp 2026-10-26): `/sys/fs/cgroup/lxc/<vmid>/ns/system.slice/docker-<64-hex id>.scope/memory.events`, line `oom_kill N`. **Design:** (1) agent: a read-only collector (no root CLI — a sysfs read under the agent's own rights; if not readable, the existing sudoers fence gets one read-only `Cmnd_Alias`) that, for each guest in the `felhom` pool, globs those scopes and keeps `{container_id: oom_kill}`; served on the guest's own local API as `GET /guest/oom-kills` (`withGuest`, the guest's containers only). (2) controller: the 30-s dead-app scan asks once per pass; a RISE of a container's counter = an OOM kill whatever Docker's `OOMKilled` says → the existing `app_oom` line (R-636's per-run grain), `source: cgroup` in the details. An agent without the route = today's behaviour. (3) Tests: a fake cgroup tree (agent), a rising counter → one `app_oom` (controller, red-first). (4) Live: 9202, a throwaway app capped at 64M with a memory hog: the counter rises, `app_oom` names the container while `OOMKilled` reads false. ~1 day, two repos, one agent release. **Earlier:** WATCHING — **2026-10-12: the built part is released** (agent v0.150.0 carries the Docker-approval memory-kill check; the boxes run 0.154.0; hub 0.140.0+ requires a passing `oom_check` before a Docker set is approved). Per decision 157 nothing else is built; the row watches for a box whose Docker reports a false OOM flag. Dated look: 2026-11-12. **READY — rank P2-MEDIUM; owner: CC** **2026-09-17 (chaos night): an OOM WAS detected on a fresh box, and named precisely.** On `tester-1-022354` (controller 0.245.0, guest 9201, 6 GB RAM) immich’s Postgres was killed by the memory limit during its reverse-geocoding import, and the controller pushed `app_oom` (warning, operator-only): „Alkalmazás memóriája elfogyott: immich (immich-postgres) — egy folyamatát a memóriakorlát leállította” — naming the app AND the exact container. The visible consequence was `write CONNECTION_CLOSED immich-postgres:5432` and twelve restarts of immich-server. So on THIS box the OOM scan works and was the fastest route to the diagnosis; recorded here rather than filed as a new row. Evidence: `audits/evidence-chaos-night-2026-09-17/round-2.txt`. **2026-10-05 (burn-down night): a one-page design proposal (no code) is in `audits/night-burndown-2026-10-05/design-R-528.md`** — for the operator. **2026-10-06: STOPPED BEFORE ANY CODE — the measurement contradicted the design** (decision 155 said A then C). On scratch 9202, Docker 29.8.2, the `OOMKilled` flag was TRUE in all four shapes tried: a child process killed while the container kept running (`oom_kill` 0 → 3, flag true) and three main-process kills (exit 137, flag true); an `oom` event each time. The false flags of 2026-09-15 were on Docker 29.8.0. Cost read for the record: one exec read of 21 containers on demo-hp = 1.6 s. `audits/design-build-2026-10-06/`C/. **2026-10-06 18:24: operator ruling, option A (decision 157):** nothing is built; the row stays open as a WATCH for a box whose Docker reports a false flag. **Added:** a Docker engine set may not be approved until it reports a memory kill correctly on the boxes that ran it (built in this row's next session). **2026-10-06 (night): the Docker-approval memory-kill check is BUILT** — hub v0.140.0 (LIVE: the approval waits for a Line truncated
|
||||
| **R-1250** | Monitoring & notifications | P3 | **A qBittorrent that seeds all day is never line-tested, so it never gets the limit that exists for it.** The weekly test (R-1247) starts only after 10 minutes in which the host's uplink sent < 2 Mbit/s each minute; a seed at the line's speed keeps it busy through every window, so no test, no tested line, and no qBittorrent limit (D41 uses the tested line only). Found 2026-10-24 by reading the rule against the case it serves; not yet seen on a box (no test box seeds). **Due check moved 2026-10-27 → 2026-10-28 (2026-10-27 04:20Z, CC):** the measurement runs TODAY in the host's window (from 10:00 CET); on 2026-10-27 the gate would refuse every push until then. The result is recorded here today, and the line leaves the block. | **VERIFY — released 2026-10-25, the live proof is a dated check:** controller 0.343.0 (global floor 17:53Z) + agent 0.165.0 (vouched 18:38 CET) carry it; the real proof cannot run before the next due window — the agent starts a test only on its due Tuesday 10:00–15:59 local, and every box measured on 2026-10-24. **DUE 2026-10-27:** a throwaway qBittorrent on demo-hp seeding to DooPlex's qBittorrent (operator's yes 2026-10-25, about 30 minutes), from before the host's slot; read the agent's line value and the limit back. **Earlier: NARROWED 2026-10-24 — FIXED on main, not released** (brief 2026-10-24 Part 4, commit only): agent `29bcf44`+`1e087bb` (`waiting_for_quiet`, `POST /host/line-test/run`), controller `046b808` (`internal/upwatch/linehold.go`: record first, hold at 1 KiB/s, test, the exact old limit back; the start-up check after a kill; the 50 % rule waits). Red-proofs in both CHANGELOGs. **Live on demo-hp with a real seed** (10 Mbit/s to DooPlex's qBittorrent): refused `not-quiet` without the hold; held: uplink 0.02–0.16 Mbit/s, 94.2 Mbit/s, 56.8 s, back to 1 249 280 B/s exactly; a kill -9 mid-test left the record and the start-up check put the limit back (`audits/dooplex-alarms-2026-10-24/part4-r1250-live-proof.txt`). The live run used probes over plain HTTP (the pinned agent client is unit-tested, not live). | the next release train (agent ≥ 0.165.0 needs the operator's vouch) | Release agent + controller in the next normal train; on a seeding box read one Tuesday's `line test on request` line; then close | CC |
|
||||
| **R-1193** | Monitoring & notifications | P3 | **When the box froze (R-1192), the operator heard only „no report for 45 m" — 28 minutes in — and the household heard nothing at all.** Measured 2026-10-20 against the operator mailbox (the second channel): the freeze began ~13:05 UTC; the hub page read ONLINE / OK at 13:22 (correct inside the 45-minute threshold, R-549); `host_stale` at 13:33, `app_oom` at 13:34 (immich-machine-learning killed by its memory limit), `host_crash_restart` at 14:26 and 16:29 (the two plug pulls), `node_stale` 15:59 / `node_recovered` 16:03. No mail or banner tells the household that its box is not answering, and no operator mail says „the box answers ping but not its dashboard". CORRECTED the same day: the first version of this row said the hub showed OK „throughout" and „nobody was told" — that read only the hub page, not the mailbox. Evidence `audits/rehearsal-2026-10-20/journal.md`. | OPEN | — | Design note (2026-10-21, after R-1192's diagnosis): the freeze's signature is cheap to see from the HOST side — the guest cgroup's memory PSI „full" above ~50 % for a minute, or its `memory.events max` climbing, while the host still reports; the agent could raise `guest_memory_thrash` (operator mail in its own words, not „no report for 45 m") and the household banner „A dobozod most nagyon lassú…". With the swap fix (R-1192) the measured thrash ends within a minute, so this alarm should be built only if a freeze is seen again after the agent release; until then it stays a design. Decide whether a dashboard that does not answer for N minutes while the host still reports should alarm sooner and in its own words (guest-side liveness), and whether the household is told | CC |
|
||||
| **R-1202** | Monitoring & notifications | P3 | **A box whose clock is behind blames the hub and stops an app without telling anyone.** Rehearsal 2026-10-20 B6 #8: RTC set 2 years back (the OS raised it to 2026-04-13): the dashboard shows only „Hub nem elérhető" while the log says „x509: certificate … not yet valid: current time 2026-04-13…"; Paperless crash-looped and the box stopped it with a restore hold; the `app_stopped_unhealthy` event failed (hub unreachable), so neither the household nor the operator heard. After the real time came back the app stayed stopped until a Start (clear sentence, 1 min). | **OPEN** | — | say „the box's clock is wrong (it says <date>)" when TLS fails with not-yet-valid/expired against a hub that answers; keep the stop event queued until the hub is reachable | CC |
|
||||
| **R-340** | Monitoring & notifications | P3 | **The new reachability check does not touch the surface that actually failed.** R-339 reports when the hub cannot READ ep0 — but the read it performs is the `usage` op, which is `proxmox-backup-manager` plus `df` over SSH, and therefore rides the **local API daemon**. The 2026-08-18 incident explicitly CLEARED that daemon: `proxmox-backup.service` was healthy throughout, and it was the **HTTPS proxy on 8007** that was wedged with a full accept queue. **So R-339's check would have returned green for all 9 h 37 m of that outage.** It closes the case where ep0 is unreachable *as a host*; it does not close the case that actually happened. This is not a defect in R-339 — it is the honest boundary of what it watches, recorded so a future reader does not mistake a green box gauge for a working off-site tier | **READY (M) — NEW 2026-08-18** | a tenantsync endpoint-script version bump (the op is added on ep0, so it needs the same version-gated rollout `ErrUsageUnsupported` already models) | Add a **health op** to `scripts/felhom-tenantsync.sh` that probes `https://127.0.0.1:8007/` on ep0 and reports the proxy's fd count and listen-queue depth, then surface it as a third signal. **Overlaps the connections spike (R-336's remaining half): both want the same observations from ep0, so whichever runs SECOND must reuse the first's evidence rather than re-measuring a protected machine twice** **REUSE, per this row's own instruction — the connections spike ran FIRST (2026-08-20) and already produced most of what the health op wants; do not re-measure a protected machine a third time.** Available in `audits/evidence-ep0-established-connections-2026-08-20/`: the proxy **fd count** and its type breakdown (`lsof` + `/proc/<pid>/fd`), the **listen-queue depth** (`ss -lnt` — `Recv-Q 0`, `Send-Q 1024`), the **ESTAB/CLOSE-WAIT split**, the **per-peer** connection histogram, a **31-minute persistence diff** of full 4-tuples, and a **46.18 h** slope with Poisson bounds. What the health op would still add beyond these: a loopback `GET https://127.0.0.1:8007/` probe — the observation that distinguished "process problem" from "network problem" on 2026-08-18 and the one thing this spike did NOT take, because it is the surface R-339 cannot see. **And this spike sharpens what the op should report:** a rising **ESTAB** count is the live signal (CLOSE-WAIT was **0**, not merely flat), and per **R-344** the fd ceiling that matters may be the **agent's**, not only ep0's. | CC |
|
||||
@@ -314,7 +307,6 @@ stopping line that lies.
|
||||
| **R-1223** | Monitoring & notifications | P3 | **After a reboot, a box whose tunnel ep0 refuses is invisible: the future stamp is gone, so neither the D30 re-key nor the hub's alarm sees it.** Fresh review 2026-10-23 night (`REPORT-night-2026-10-23.md`, A8 + H1): the kernel forgets `latest-handshake` when the interface restarts (0 = never); the agent then sends neither `last_handshake_age_s` nor `handshake_future_s`, and `checkWGTunnel` (`hub/internal/api/host_tunnel.go`) does not judge a registered, active tunnel with no handshake at all. Shape: the clock ran ahead, was corrected, the box rebooted (some households switch off at night), ep0 still holds the future stamp and starts nothing. | OPEN | — | Agent: report `tunnel_up_s` (how long the unit has been active) with no handshake; hub: a registered, active tunnel with no handshake for > 30 min while reporting → `wg_tunnel_stale`; the agent re-keys the same way after 30 min with no handshake. Tests both sides; rides an agent release + a hub deploy | CC |
|
||||
| **R-1224** | Monitoring & notifications | P4 | **The operator's 1-hour mail cooldown for `wg_tunnel_stale` is per customer, not per host, and `wg_tunnel_ok` does not end it.** Fresh review 2026-10-23 night (`REPORT-night-2026-10-23.md`, H3): `notify/dispatcher.go:620` keys the cooldown `customerID:eventType`. Two hosts of one household going stale within an hour, or stale → ok → stale, store a second event row but mail once (the suppression is in `notification_log`). | OPEN | — | Key the cooldown by `host_id` from the details for host-scoped operator events, and let the matching ok event end it; a dispatcher test with two hosts; rides a hub deploy | CC |
|
||||
| **R-1233** | Monitoring & notifications | P4 | **`[ERROR] [stacks] execCommand failed: exit status 1` names no command.** Seen once a night (2026-10-21 00:30:49 and 2026-10-23 02:17:14 UTC, each right after an app stopped for its dump); the command and stderr go only into the returned error, which the caller may drop (`internal/stacks/manager.go:1757`). An ERROR nobody can judge. | OPEN | — | Log the command's first two words (`docker inspect`, never the arguments — `docker exec … psql` can carry a password) and the stderr's first line; find the caller of the nightly one | CC |
|
||||
| **R-1291** | Monitoring & notifications | P3 | **A held app gives the operator no lasting signal: one event at the stop, then nothing — demo-hp's Kimai sat held 11 days unseen.** Found 2026-10-25 night (R-1286). No held-app state reaches the hub (the report carries none; the hub shows none); the crash-loop stop sends `app_stopped_unhealthy` once. On a household box an app held after a crash loop, a failed update or a failed restore stays stopped until someone opens its page. | **OPEN — BUILT, commit only, NOT released** — 2026-10-26 evening: controller `5bd03ad` (`internal/holdreport`) + hub `7e57e824` (`held_apps`, `HeldAppsChecker`, the „Held apps" list on the host page and the Hosts page); red-proved; live on 9202 against a test hub with a 3-min grace (listed, one operator mail, Start cleared it, the row went, household leg `skipped operator_only`) — `audits/d53-held-apps-2026-10-26/`. Closes when both release. Ruled D53 = operator-only reminders first (`09` §3 decision 265). **Earlier:** WAITING-ON-OPERATOR — 2026-10-26: the design is written (`08` §10 [DESIGN — proposed]: `app_held` / `app_hold_cleared` events + a daily re-send, a „Held apps" list on the host page, an operator reminder after a grace per reason, the hub never clears a hold; ~½ day controller + ~1 day hub). The pick is STATUS D53. **Earlier:** OPEN | — | a two-repo design: the controller reports its holds (stack, reason, since), the hub shows them on the host and mails a reminder after N days (the D-level of the reason); one row's worth of design first | CC |
|
||||
| **R-1296** | Monitoring & notifications | P4 | **When ep0's tenancy script refuses, the hub log shows only its one-line error — PBS's own reason (the 403 `missing Datastore.Audit|Datastore.Backup on …`) stays in the script's stderr, which the hub drops on a refusal.** Found 2026-10-26 diagnosing R-1295: the cause was visible only by reading ep0's proxy journal over root SSH. `hub/internal/tenantsync/client.go` `parseResponse` returns the JSON error and ignores stderr; the script keeps secrets off stderr by design (its header), so the tail is safe to log. | OPEN | — | append the last ~3 stderr lines to the refusal error (bounded, never stdout); a test that a secret on stdout never appears | CC |
|
||||
|
||||
## Hub & operator — 12 rows (P3 3, P4 9)
|
||||
@@ -353,7 +345,7 @@ stopping line that lies.
|
||||
| **R-990** | Business & legal | P4 | **Operator: read `documentation/audits/forum-research-2026-10-12/FELHOM.md` §5 and rule on each recommendation.** READ-ONLY research 2026-10-12: three years (#7943–#11092, 2,908 posts, 195 people, 82 beginner threads) of the public PROHARDVER! topic „Home server / házi szerver építése”, tagged and counted by person (`FINDINGS.md`, method and spot-check in `METHOD.md`; no username or post text in git). Ten ranked recommendations, none acted on; the top three: a „which machine works” page (8 of 33 beginners who name their hardware own only a Synology, a router disk or a Raspberry Pi — the installer cannot run there; the same gap is R-989's first recommendation from a different source, and the shipped-page half is R-991), „you do not choose an operating system — we do” (the biggest beginner question, 20 of 82 threads), and „bring your old office PC” as the cheap entry. Catalog gap (≥ 3 people): a DLNA server (7), an ad/DNS blocker (5), a camera recorder (5). | **WAITING-ON-OPERATOR** — filed 2026-10-12 | the operator's reading | Operator: rule on each of the ten (yes / no / later). If nothing is done: nothing changes; the research ages | operator |
|
||||
| **R-1035** | Business & legal | P4 | **Did the „felhő tárhely” page earn anything? Two dated checks.** **Baseline (reported by the operator from Search Console, 2026-10-14, last 3 months):** 1 click, 48 impressions, CTR 2.1 %, average position **73.6**; „felhő tárhely” 19 impressions, „felhőtárhely” 5, „felhő alapú tárhely” 3. CC measured separately that the phrase „felhő tárhely” appeared **0 times** on the home, FAQ and backup pages — Google was showing the home page for those queries by accident. `/sajat-felho-tarhely` + `/en/own-cloud-storage` published **2026-10-14**; full baseline, price sources and the power provenance in `audits/seo-2026-10-14/BASELINE.md`. **What to measure, both times:** impressions and average position for „felhő tárhely” and „saját felhő tárhely”, plus the new page's own impressions, clicks and position. **A null result at +4 weeks means nothing on its own** — a new page on a site at position 73.6 takes weeks to months to move, and „felhő tárhely” alone is held by Microsoft, Google and the big list sites; the page aims at the two longer phrases. That is why there are two checks and not one, and why neither should be read as a verdict on the copy. **There is no Search Console connector in this project, so CC cannot read these numbers** — the operator reads them, CC records and compares. **Blocked until the operator asks for indexing** (Search Console → URL-ellenőrzés → the URL → „Indexelés kérése”): until that happens, or Google finds the page itself, both checks read zero for a reason that is not the page. **This is a slow channel and does not replace talking to people.** | **WATCHING** | operator: request indexing, then supply the Search Console read | 2026-11-11: first read (+4 weeks); 2026-12-09: second (+8 weeks), compared with the first | operator + CC |
|
||||
|
||||
## Process & tooling — 33 rows (P3 8, P4 25)
|
||||
## Process & tooling — 34 rows (P3 8, P4 26)
|
||||
|
||||
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
@@ -397,7 +389,6 @@ stopping line that lies.
|
||||
the R-row. Duplicating them here would create the second source this design avoids. -->
|
||||
| item | due (UTC) | what to measure |
|
||||
|---|---|---|
|
||||
| R-1250 | 2026-10-28 | the released line hold, live: a seeding qBittorrent on demo-hp (peer DooPlex's, operator yes 2026-10-25) through the host's due window; the line value and the limit back; detail in the R-1250 row |
|
||||
| R-1293 | 2027-03-29 | the spring clock change: the hub's 02:00 snapshot and the 02:30 push on 2027-03-28 (02:00–03:00 does not exist) — which file each push took; detail in the R-1293 row |
|
||||
| R-1228 | 2026-10-30 | D35 (yes, after the release week): start moving the website + installer to Cloudflare; detail in the R-1228 row |
|
||||
| R-1050 | 2026-11-15 | HSTS one year if no https trouble since 2026-10-15; detail in the R-1050 row |
|
||||
@@ -406,6 +397,5 @@ stopping line that lies.
|
||||
| R-1035 | 2026-12-09 | the same three numbers 8 weeks after publishing, compared with the 4-week read; a null at 4 weeks is not a verdict, both reads are needed; detail in the R-1035 row |
|
||||
<!-- DUE-CHECKS-END -->
|
||||
| **R-1297** | Process & tooling | P3 | **CI waits dominate a working day: felhom.eu's CI run takes ~13 min and the ONE runner makes every repo's job wait behind it (up to 10–17 min queued).** Measured 2026-10-26 (operator: „these CI waiting times are getting out of hand"): since 10-25 felhom.eu runs median 793 s, the controller/agent/catalog 57–102 s; queue median 5 s, max 548–1023 s. In run 2366, ~10 of 13 minutes are four suites — `test_gate_decoys.py` 232 s, `test_due_checks_gate.py` 133 s, `test_repo_gates.py` 132 s (it runs the whole gate set a SECOND time), `dooplex-offsite/test_dooplex_offsite.py` 69 s — plus `hub-gofmt` ~110 s (a cold Go cache per run). **Ruled 2026-10-26 by the operator: BOTH** — (A) trim felhom.eu CI: the heavy suites only when their own files change, no duplicate full run, a Go cache for hub-gofmt; (B) a second CI runner on DooPlex. | **OPEN — (A) BUILT 2026-10-26 evening, closes after the first nightly run (2026-10-27 03:20 UTC) is read.** Both runners proven at once (jobs 2374 + 2375 on `felhom-gates-runner` / `-2`, 17:11:41Z). felhom.eu CI, one push each: **(a) docs only** 810 s (old runner) → 351 s (2 CPUs) → see the close-out; **(b) a gate script** 351 → 203 s (`ecd82aba`, job 2376); **(c) a hub change** 351 → 118 s (`7e57e824`, job 2378). Heavy suites by path + tag + nightly; `test_repo_gates.py` and due-checks group G test the wiring (130 s each → under 3 s). Decoys through CI's entry point with the filter ON: a docs-only register break → red; an inert gate → GREEN at first (a decoy hole, fixed in `e33ec821`) → red. No Go cache: CI has no Go (the 110 s was security-scan, now 27 s). `audits/r1297-ci-trim-2026-10-26/`. (B) DONE by the operator (`09` §3 decision 267). | — | (A) CC, a run of its own (a CI scope change, ruled); (B) a DooPlex change — a brief or the homelab session; and CC waits on CI only before a release or at the end of a run | CC |
|
||||
| **R-1298** | Monitoring & notifications | P3 | **Scratch guest 9202 carries leftovers made outside the product, and D53 would remind about them every week once released: four crash-loop holds since 2026-09-24 for apps that are not installed (`chaoscrash`, `chaosoom`, `chaosoomb`, `gokapi`), and a PrivateBin `app.yaml` (2026-10-25) with no container that the product reads as „installed".** Found 2026-10-26 evening in the D53 live proof: the new reporter sent the four holds at its first tick and the test hub mailed four reminders („held 32 days"). The product's removal clears an install's hold (R-704); these apps were removed by hand in a chaos drill. On a household box the same shape would mail the operator weekly about an app that does not exist. | **VERIFY — fixed on `main`, waits for the controller release** — controller `b156e45` (an install's hold of an app that is not installed is not reported; a restore hold always is), red-proved; live on 9202 (the four orphans skipped by name). 9202's four holds cleared with `-clear-restore-hold` and the PrivateBin leftover removed through the product — `audits/night-fixes-2026-10-26/`. Close at the release. **Earlier:** OPEN | — | decide whether the reporter (or the hub) skips an `unhealthy_stop` / `update_failed` / `putback_pending` hold whose app is not installed (a restore hold stays reported — operator-cleared by design, R-379); then clear 9202's four holds with `-clear-restore-hold` and remove PrivateBin through the product | CC |
|
||||
| **R-1299** | Process & tooling | P4 | **The operator's one-shot clean-up grant (`POST /offsite/window-grant/<customer>`, optional `max_remove`) has no button on any hub page** — the operator could not find it on 2026-10-26 (D55) and had to make a one-purpose access token so CC could call the route. The route, its scope (`offsite:write`) and its event exist (R-833); only the form is missing. | OPEN | — | a small form on the Off-site page (customer, optional cap ≤ 500), with a render test for both branches | CC |
|
||||
| **R-1302** | Monitoring & notifications | P4 | **A fresh install's agent logs ERROR „store-grant: GRANT WAS MISSING AND HAS BEEN SELF-REPAIRED — investigate the loss (R-190)" and „capability DEGRADED" for `felhom-pbs` at its FIRST start, although the grant was simply never made yet** — the whole-guest tier is armed (21:00:45) before the PBS storage exists (created 21:00:57 on the hub's descriptor). Seen 2026-10-26 night on the R-1232 BYO box (VM 9375, `audits/night-fixes-2026-10-26/r1232/3-first-run.txt`) and on 2026-10-25's BYO box (`degraded=pve:store-grant:felhom-pbs`). An ERROR that says „investigate the loss" on every new box teaches the reader to skip it. | OPEN | — | on the first grant of a tier whose storage did not exist before, log INFO „granted" instead of the loss ERROR; keep the ERROR for a grant that existed and vanished; a test for both | CC |
|
||||
@@ -5,6 +5,14 @@ Moved here byte for byte on 2026-10-14 (night session), newest first, so that `S
|
||||
|
||||
**Updated 2026-10-13 (night): demo-hp, demo-felhom and Tester 1 run agent 0.155.0; demo-felhom runs controller 0.310.0, the other two 0.309.0 until the floor is raised. The open-items list is at 127. Reports: `REPORT-poweroff.md`, `REPORT-plugmeter.md`, `REPORT-usenet-2026-10-12.md`, `REPORT-newapps-2026-10-12.md`, `REPORT-disk-evening-2026-10-12.md`, `REPORT-answers-2026-10-12.md`, `REPORT-m3-2026-10-11.md`, `REPORT-redesign-2026-10-10.md`, `REPORT-testers-2026-10-10.md`, `REPORT-register-shrink-2026-10-10.md`, `REPORT-new-apps-2026-10-10.md`, `REPORT-release-2026-10-10.md`, `REPORT-break-the-circle-2026-10-09.md`, `REPORT-dooplex-survival-2026-10-09.md`, `REPORT-day4-2026-10-09.md`.**
|
||||
|
||||
## Moved from STATUS on 2026-10-27 (afternoon)
|
||||
|
||||
**Updated 2026-10-26 (night).** Saved and proven tonight, not released: kept data never offers a live app's folder; a reinstalled box backs up off-site at once; app-file import keeps links and owners and works again for MariaDB apps; Go 1.27.3. D55's window runs tonight.
|
||||
|
||||
- Built, not released (Tuesday's block, each on your yes): R-1291, R-1220, R-1232, R-1187, R-1219, R-1298, R-972, R-1285. R-1218 needs you: off-site off on Tester 1 for minutes (hub customer page), or it leaves the release.
|
||||
|
||||
**2026-10-26.** On the hub's Hosts page, delete `Tester4-b5dbbd` (CC's test VM of tonight, uninstalled and destroyed; you already deleted `Tester4-b5ec39`). If not: the hub alarms that the box went silent. After demo-hp's window has run (CC says when, Tuesday morning), revoke the token `cc-d55-window` (R-1294). New: a nightly security watch mails you (R-1303).
|
||||
|
||||
## Moved from STATUS on 2026-10-26 (night)
|
||||
|
||||
**Updated 2026-10-26 (evening).** CI is faster: two runners work at once, and a hub or document push now takes about 2 minutes instead of 6–13. Held apps now reach you (built, not released): a „Held apps" list on the host page and the Hosts page, and one mail after a waiting time. One pick for you: D55.
|
||||
|
||||
Reference in new issue
Block a user