108 lines
8.9 KiB
Markdown
108 lines
8.9 KiB
Markdown
# REPORT — night 2026-10-13 → 14: real power cuts on the HP, the estimator's numbers, a night of wall power
|
||
|
||
Evidence: `documentation/audits/night-power-2026-10-13/README.md` (rounds, mails, power) and
|
||
`documentation/audits/sizing-check-2026-10-14/CHECK.md` (the estimator). Times UTC (CEST = UTC + 2).
|
||
Architecture read: `14-host-power-off.md`, `05-hub-architecture.md` (staleness, crash, recovery mails),
|
||
`07-backup-architecture.md` (the night schedule), `03-host-agent.md` (crash guard).
|
||
|
||
## Decisions I took (each reversible; each is written where it happened)
|
||
|
||
- The countdown spike ran on the **HP's** plug inside R1, not on the N100's (the N100 was running).
|
||
- Rounds ran **earlier** than the table where the fences allowed (R1, R4, R6, R5 before the 00:30 db-dump); R3 used the
|
||
night's **own** whole-guest backup instead of a product-started one; R2 waited for the night backups to end.
|
||
- The 8 GB test ran on **scratch guest 9202**, not 9201; restarted with `pct reboot` (its restart button has no agent link).
|
||
- The family set on 4 GB ran **twice** (the first lacked Nextcloud: its kept data refused the install).
|
||
- The two over-size backup archives were **removed by hand** after their round was recorded, and a fresh backup was started
|
||
through the product, so demo-hp's next night backup is not blocked.
|
||
|
||
## 1. Does the HP start by itself after a power cut?
|
||
|
||
**Yes — every time, 8 cuts in 6 rounds** (R1, R4 ×2, R6, R5 ×2, R3, R2), with the BIOS set to „After Power Loss =
|
||
Previous State" by the operator the evening before. Before that setting it did not start (2026-10-13 20:05). The N100's
|
||
setting is still unknown. The FAQ promises this setting for every installation; a self-install never gets it (R-1003, P1).
|
||
|
||
## 2. The rounds
|
||
|
||
| Round | Cut | Back alone? | To dashboard / all healthy | What broke | Told (operator / household) | True? |
|
||
|---|---|---|---|---|---|---|
|
||
| R1 + spike | idle, 10 s; the tool killed after the off | yes; the plug's countdown switched on | 2 min 43 s / 3 min 42 s | nothing; each guest volume waits ~43 s in ext4 MMP (R-1004) | crash mail / none | yes |
|
||
| R4 | flicker 2 s off, 3 s on, 2 s off | yes | 3 min 0 s / 4 min 12 s | nothing | crash recorded, mail suppressed by cooldown / none | yes (the page has it) |
|
||
| R6 | 50 min off | yes | 3 min 5 s / 4 min 15 s | nothing | `node_stale`, `host_stale` at 45 min, then `*_recovered` pairs, crash mail / none | yes; the recovery mail says „stale for 8m" for a 51-min outage (R-1005) |
|
||
| R5 | 10 s off, again 40 s after power-on | yes | 2 min 38 s / 3 min 51 s | nothing | as R4 | yes |
|
||
| R3 | 10 s off during the night's whole-guest backup | yes; Proxmox removed the stale backup lock | 2 min 46 s / 3 min 57 s | **the 12.2 GB half-backup stayed; every later backup skipped „not enough space"** until removed by hand (R-1006); the agent called the dead backup „in flight" (R-1008) | crash mail, `whole_guest_backup_failed`, later `…_recovered` / none | yes |
|
||
| R2 | 10 s off at mid-import of 200 photos | yes | 2 min 37 s / 4 min 16 s | **Immich: 81 of 101 new photos with an empty thumbnail, 1 with no original — shown as done, never repaired** (R-1007) | as R4 / none | the crash yes; Immich's own view no |
|
||
|
||
Planted files (20, written hours before): intact after every round. Databases repaired themselves every time.
|
||
|
||
## 3. The N100
|
||
|
||
It ran all night (the operator had pressed its button at 21:48, so the prompt's „off all night" did not apply). Normal
|
||
night: database dumps, Tier 2, Tier 3, whole-guest backup, OS steps — all ran; **no alarm, no mail**. 66 Wh in 7.8 h
|
||
(8.5 W average). There is no morning catch-up to do.
|
||
|
||
## 4. Power
|
||
|
||
| | Value |
|
||
|---|---|
|
||
| HP at rest (9201 with its 11 apps + Tester 1's VM + scratch 9202) | 24–27 W (median 24.1 W) |
|
||
| HP, three heavy apps at once (R1) | 71 W average, 81.6 W max |
|
||
| HP boots after a cut | 72–81 W peak, 2.7–3.4 Wh each, 4 min to all healthy |
|
||
| HP backups | Tier 3 restic 43.8 W avg (2.6 Wh); whole-guest vzdump 39–44 W avg, 7–7.5 Wh |
|
||
| HP, the test night 22:12–06:00 | 245 Wh (a bench night, not a household night) |
|
||
| N100, the night 22:12–06:00 | **66 Wh**, 8.5 W average, 20.6 W max (its night backup: 19.8 W max) |
|
||
| The plug's countdown | yes — data point 9, up to 86,400 s; it switched on by itself in every cut, also with the tool killed |
|
||
|
||
## 5. The estimator check (`audits/sizing-check-2026-10-14/CHECK.md`)
|
||
|
||
- **Do the numbers add up when apps run together?** Yes, closely. The „Family starter set" at rest: page 2,791 MB,
|
||
HP 3,007 MB (+8 %). Its real peak with three heavy apps busy at once: **4,900 MB against the page's 5,045 + 470** — the
|
||
page's „all at peak at once" is about right, not pessimistic (my prediction of 60–80 % was wrong).
|
||
- **The three answers on an 8 GB box** (guest set to the installer's 4,096 MiB, on the nearly empty scratch guest):
|
||
|
||
| Selection | Page says | Result |
|
||
|---|---|---|
|
||
| „Just files and passwords" | fits well | **true** — 0 OOM kills, 19 MB swap, upload 28 s |
|
||
| Immich alone | fits, but tight | **true** — works, but 14 OOM kills in its ML container and swap full; import 295 s |
|
||
| „Family starter set" | does not fit | **true** — real harm: 84 of 200 photo uploads failed, transcode 15× slower, Paperless did nothing in 30 min, swap full, load 151 |
|
||
|
||
- **More than 30 % off:** Nextcloud peak −45 %, Vaultwarden peak −60 %, Home Assistant peak +32 %, Calibre-Web peak −41 %,
|
||
Grimmory typical +30 %, qBittorrent typical −89 % (idle). 14 of 16 weak figures re-measured at rest agree within ±30 %.
|
||
- **Decision for the operator (R-1009):** (A, recommended) a small figure update — Immich, Jellyfin, Home Assistant up;
|
||
Nextcloud, Vaultwarden down; Grimmory typical up. Cost: one data edit and the page's data file rebuilt; no verdict
|
||
changes (the site rule: family 5,515 → 5,659 MB). (B) also one sentence for Immich on 8 GB. **If you do nothing:** the
|
||
page keeps today's figures; its three answers were all true, so no household is misled about fit.
|
||
|
||
## 6. The countdown fail-safe
|
||
|
||
**Yes.** The plug has data point 9 `countdown_1` (0–86,400 s). Sent in the same command as the off, it switched the relay
|
||
on by itself in every cut, also with the tool killed (R1) and for 50 minutes (R6). The detached watchdog never had to act.
|
||
|
||
## 7. Claims in the prompt that turned out wrong
|
||
|
||
| Claim | What is true |
|
||
|---|---|
|
||
| „The N100 stays off all night (you switched it off with the button)" | it ran: the operator pressed its button at 21:48. Part N became a normal night; there is no morning catch-up (no `MORNING-n100.md`) |
|
||
| „Prove the countdown on the N100's plug — the N100 is off, a safe bench" | not possible (it ran); the spike ran on the HP plug as part of R1, with the watchdog armed |
|
||
| „HP `standby_w` is not measured" | it was, the evening before: 0–3.2 W (stored in the private plug file) |
|
||
| R3: „`lock: backup` can stop the guest from starting" | Proxmox 9 removes a left-over backup lock at start-all; the guest started. The real damage was the half-written archive (R-1006) |
|
||
| „all at peak at once: pessimistic on purpose" (`sizing.js`) | the real simultaneous peak was 97 % of the sum |
|
||
| Baselines (felhom.eu `95d293b9`, controller `e24430cc`, agent `10ca63aa`) | main had moved: `50bd3f16`, `acbbf4b`, `e7d4ecd` (the power-off session's last commits) |
|
||
| „Paperless: the 20 scans" (through its API) | the box's own Paperless has no password the bench knows; the scans went through its consume folder |
|
||
| „Add an HP row and a one-night row to `sizing.json`" and „no website change" | they conflict: `sizing.json`'s checksum is in the website's data file. The rows went into `SIZING.md` §4 only |
|
||
| „8 GB test on guest 9201" | ran on scratch guest 9202 (9201's own 11 apps would fill 2.6 of the 4 GB); its restart button answered 503 (no agent link by design), so `pct reboot` |
|
||
|
||
## 8. Records
|
||
|
||
| Item | Value |
|
||
|---|---|
|
||
| Commits (felhom.eu) | `13504b90` (plugcut + round table), `8ac7e149` (rounds R1–R6 + R1 set), and the closing commit |
|
||
| Register | **127 before, 134 after; opened 7 (R-1003 … R-1009), closed 0** |
|
||
| STATUS.md | **1,358 lines → 50**; the dated sections moved byte for byte to `documentation/backlog/STATUS-HISTORY.md` (diff proven) |
|
||
| Plugs at the end | HP relay **on** (22.5 W), N100 relay **on** (6.6 W, running) |
|
||
| HP guest memory at the end | 9201 `25898` (never changed), 9202 `25898` (4096 from 03:17 to 05:57 for Part R3) |
|
||
| Capability map | G18 corrected (kernel lane proven 2026-10-08/10 → PROVEN-LIVE); F5 note: operator recovery leg seen live |
|
||
| Instruction files | none needed a fix (`nodes.md`: both `ssh demo-hp` and `ssh hp` work) |
|
||
| System poster | no fact changed |
|
||
| Teardown | machine: bench apps removed through the product, bench folders, planted files, Paperless bench scans, `/root/sizing` removed; host: the two over-size archives removed by hand (README „Teardown"), crash guard still tripped (re-arms 2026-10-15 03:10); hub: nothing set |
|
||
| Fixed without a row | the bench's own scripts only (`plugcut.py` is new; no product code) |
|