R-1007 closed: proven live on demo-hp — a real power cut mid-upload, 41 of 41 broken photos repaired by Immich itself, 120 controls untouched
gates / gates (push) Successful in 6m59s

Docs 02/05/07/13 and capability F12 (PROVEN-LIVE); the audit's C and D sections; R-1020 (the
duration reads 0) and R-1021 (the hub build builds a stale checkout) filed; STATUS one screen.
Register 133 -> 140 (this session: opened 2, closed 1; another session added 6). Both plugs ON.
Report: REPORT-immich-repair-2026-10-14.md.

Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
This commit is contained in:
2026-10-14 17:50:17 +02:00
parent 8395aee4c2
commit 170d090e7b
23 changed files with 616 additions and 8 deletions
+51
View File
@@ -0,0 +1,51 @@
# REPORT — 2026-10-14: Immich repairs its broken photos after a power cut (R-1007)
Times UTC. Baselines: catalog `8ee687e5`, controller `acbbf4b3` (0.310.0), felhom.eu `3e2bdda7`, agent `9b749ee7`
(0.156.1, not changed). Read first: `02`, `05`, `07`, `13`, `FIRST-ADMIN.md`, the R-1007 row. Evidence:
`documentation/audits/immich-repair-2026-10-14/`. No key, token, password or household file name in any file.
## 1. How the box asks Immich (decision 236)
Through **Immich's own job queue**: the controller adds, inside `immich-server`, the same job Immich's API adds, for the
photos whose small pictures are empty — nothing else. Then it runs Immich's own lost-file check and reads its report.
No key into the household's account; the household sees nothing unless a photo is lost, then a note on the Immich app
page (name, date taken, „upload it again from the phone", a dismiss button). The operator gets counts only.
Spike A (9202): the CLI has no job command; a household-made API key repairs only the admin's photos (a family member's
was refused); Immich's nightly run reads only its database. Only the queue worked for every user (5 of 5 in 1.08 s, 0 of
50 controls touched).
## 2. The live proof (demo-hp 9201, one real cut, 15:25:04)
41 photos had empty thumbnail and preview files. 15 min after the controller started, all 41 were repaired in 10 s; 0
empty files left; the 120 control files untouched. No original was lost, so the household note was not exercised live
(tests cover it). The operator's event was recorded as info (all repaired), not mailed. No repeat cut.
## 3. Versions; what waits on the operator
Controller 0.311.0 (demo-hp only, by its own floor), hub 0.150.0 (deployed with the operator present), catalog Immich
block, agent 0.156.1 unchanged, golden 0.310.0. **Waits on the operator:** golden 0.311.0 + vouch + global floor (then
clear demo-hp's own floor) to bring the repair to the N100 and Tester 1; the owner of the shared checkout's leftovers
(R-1021).
## 4. Claims in the prompt that were wrong
- The draft `id_from_name: "^([0-9a-f-]{36})-"`: the separator is `_` (`<asset id>_thumbnail.webp`).
- „New catalog keys need `min_controller` (README ~242)": that line is the family-gate rule. `min_controller` refuses an
INSTALL on an older box; an older controller ignores this block and installs Immich correctly — so none was added.
- „vouch / floor": a controller above the golden cannot be vouched (the hub's list holds goldens); it needs a floor with a
DECLARED MinAgent (done for demo-hp).
- „mail text (hu + en)" on the hub: the operator mail is the hub's English template; the hu/en sentences are the
controller's event keys. The hub adds one counts line.
## 5. Record
- Commits: catalog `6a1bb04`; controller `8d862e4`, `3b85a0c`; felhom.eu `5d39171e`, `822d0393`, `70250ffb` (hub
deploy), and this one.
- Fixed in the session: a security review finding (a failing command's output could reach the log and the event) —
fixed before the build. New rows: **R-1020** (duration reads 0), **R-1021** (the hub build builds a stale checkout).
- Register: **133 before → 140 after; this session opened 2 (R-1020, R-1021), closed 1 (R-1007)**; another session
added 6 meanwhile.
- STATUS.md: 47 lines. System poster: no listed fact changed. Capability map: F12 (PROVEN-LIVE).
- **Both plugs ON** (the HP back by its countdown at 15:25:14; the N100 never cut). One real cut only.
- Teardown: 9201 — Immich removed through the product, no leftovers, bench folders removed; 9202 — the spike Immich
removed twice, no leftovers; host — nothing made; hub — the deploy only.
+6 -4
View File
@@ -2,11 +2,12 @@
**Ready for the first real tester (Tester-2): yes. Tester 2 (a laptop) is off; nothing was sent to it.**
**Updated 2026-10-14 (day).** Agent 0.156.1 + its bundle and controller 0.310.0 on all three boxes; golden 0.310.0. Open items: see `documentation/backlog/OPEN-ITEMS.md`. Older notes, day by day:
`documentation/backlog/STATUS-HISTORY.md`. Reports: `REPORT-power-cut-fixes-2026-10-14.md`, `REPORT-night-power-2026-10-13.md`, `REPORT-poweroff.md`.
**Updated 2026-10-14 (evening).** Agent 0.156.1 + its bundle on all three boxes; controller 0.311.0 on demo-hp (its own floor), 0.310.0 on the other two; hub 0.150.0; golden 0.310.0. Open items: see `documentation/backlog/OPEN-ITEMS.md`. Older notes, day by day:
`documentation/backlog/STATUS-HISTORY.md`. Reports: `REPORT-immich-repair-2026-10-14.md`, `REPORT-power-cut-fixes-2026-10-14.md`, `REPORT-night-power-2026-10-13.md`, `REPORT-poweroff.md`.
## What works
- A power cut in the middle of a backup no longer blocks later backups: the box removes the half-written backup at start-up (proven with a real cut on demo-hp, on all three boxes now).
- After a power cut, Immich repairs the photos the cut left broken, by itself, and the app page lists any lost photo (proven with a real cut on demo-hp: 41 of 41 repaired; on demo-hp only until the floor moves).
- A household can switch the machine off; the hub holds alarms for 14 days and clears the state by itself (N100).
- A real power cut on demo-hp: it started by itself after all 8 cuts of the night (with the BIOS set), every app back in ~4 min; stale and recovered mails true and paired.
- The machine estimator is public (/gepigeny, /en/sizing), with figures from two machines (N100 and HP t740; raised only, 2026-10-14).
@@ -18,10 +19,9 @@
- DooPlex: a failed disk with its alarms silenced (R-934); CI jobs still get lost (R-887); something sets the shared
checkout to „bare" (R-935); a Longhorn volume at 91 %.
- Tester 2 has never made an off-site check (R-862). The scratch box cannot read the drill catalog (R-992).
- After a power cut: Immich keeps photos with empty previews or no original; your ruling „fix only the broken photos" is shown to work (Immich rebuilds single photos) — the build is a later task (R-1007).
## What we work on
- The power-cut findings still open (R-1004, R-1005, R-1007, R-1010, R-1012, R-1013) and the Immich repair build (R-1007).
- The power-cut findings still open (R-1004, R-1005, R-1010, R-1012, R-1013); the hub build must refuse a stale checkout (R-1021).
## Waiting on you — decide
@@ -37,6 +37,8 @@
| D8 | R-206 | Install DooPlex's Docker settings from git (restarts Docker), and prune the build cache weekly: yes or no? | **Yes, in a quiet window** | — | a rebuild of DooPlex still has the settings in git | — |
## Waiting on you — do
- **Controller 0.311.0 to the N100 and Tester 1:** bake golden 0.311.0 (CC, ~30 min), vouch it, then the global floor 0.311.0 (MinAgent 0.155.0) and clear demo-hp's own floor. If not: only demo-hp repairs Immich after a power cut; demo-hp's own floor stays above the golden.
- **The shared `git/felhom.eu` checkout** is behind and its pull fails on untracked leftovers (R-1021): say whose they are, or let CC move them aside. If not: the hub build script builds stale code.
- **N100 BIOS:** read „After Power Loss" (the HP's „Previous State" made it start after 8 of 8 cuts). **HP BIOS:** „Bypass F1 Prompt on Configuration Changes" → Enable.
- **Pull the failed disk** Z6A07P2G (R-934; the twin Z6A070XZ is `/mnt/3_hdd`). If not: its alarms return on 11 November.
- **Hub master key** into the password manager, then `shred -u` the key file (security review 2026-10-12, in the history).
@@ -217,6 +217,7 @@
| <a id="f7"></a>[F7](capability-map-detail/F.md#f7) | Always-on debug rings + on-demand log-bundle pulls with TTL/custody | controller v0.116, agent v0.83, hub v0.46 | **PROVEN-LIVE** | — | `audits/CAMPAIGN-3-2026-07-11.md` (2026-07-11) |
| <a id="f8"></a>[F8](capability-map-detail/F.md#f8) | Operator alerting (Healthchecks → monitoring@felhom.eu) | k3s, Resend | **IMPLEMENTED** | no corpus validation doc | operator infra; no evidence document |
| <a id="f9"></a>[F9](capability-map-detail/F.md#f9) | Backup-deadline alerting (`expected_backup_missed`) is ANCHORED — absence of signal is UNKNOWN, not failure | hub v0.75.0 | **IMPLEMENTED** | — | `audits/DIAG-backup-missed-2026-07-26.md` (2026-07-26); R-82 |
| <a id="f12"></a>[F12](capability-map-detail/F.md#f12) | After a power cut, an app rebuilds the files the cut left empty, and the household sees any lost photo on the app page | controller v0.311.0, hub v0.150.0, catalog Immich block | **PROVEN-LIVE** | demo-hp 2026-10-14: a real cut mid-upload, 41 of 41 broken photos repaired, 120 controls untouched; the lost-photo note not exercised live (0 lost; unit- and 9202-tested) | `audits/immich-repair-2026-10-14/README.md` (2026-10-14); `09` §3 decision 236; R-1007 |
| <a id="f11"></a>[F11](capability-map-detail/F.md#f11) | The household turns the whole machine off („A gép kikapcsolása"); the hub holds every silence alarm for 14 days and shows KIKAPCSOLVA | agent v0.155.0, hub v0.149.0, controller v0.310.0 | **PROVEN-LIVE** | proven on the N100 2026-10-13; fleet delivery waits on the floor | `audits/poweroff-2026-10-13/README.md` (2026-10-13); `architecture/14-host-power-off.md`; R-1000, R-1002 |
| <a id="f10"></a>[F10](capability-map-detail/F.md#f10) | A box that is not always on (off at its backup time) makes the missed night up once when it comes back; the household sees a banner; the operator gets the missed-backup alarm, down or not | controller v0.295.0, hub v0.134.0, agent v0.145.0 | **PARTIAL** | catch-up and banner live; R-872 alarm by tests; suspend not measured | `audits/catchup-2026-10-05/partA/` (2026-10-05); R-872 |
@@ -285,6 +285,17 @@ own; every caller that is not the customer must decide for itself whether the ap
| `collector.go` | **PORT** | Container metrics (`docker stats`) keep; host metrics via `system.GetInfo` (temp, physical disk) become **agent-provided or dropped**. | needs-rework |
| `sysinfo.go`/`sysinfo_other.go` | **MODIFY** | Reads `/host/etc`, `/proc/cpuinfo`, uptime — host static info; in-guest some is meaningful, hardware identity via agent. | needs-rework |
### `aftercrash/` + `stacks/after_unclean_boot.go` — KEEP (v0.311.0, R-1007, `09` §3 decision 236)
**[FACT, read from source 2026-10-14, felhom-controller `3b85a0c`]** Once per controller start that followed an UNCLEAN
host boot — `crashboot.Grace.Decided` (the host crash guard's fact via the agent; unknown = a normal boot), after
`CrashGrace` (15 min) — `aftercrash.Runner` runs each deployed app's `after_unclean_boot` template block: scan the app's
folder for zero-byte regular files (no symlinks, one filesystem), map names to the app's ids, run the app's own repair
command for those ids in batches, re-scan, retry once, run the app's lost-file check; record in `app.yaml`
(`after_unclean_boot:`), push `app_repaired_after_crash` (counts only). The commands run through a QUIET compose exec
(`quietComposeExec`: nothing logged, stderr dropped, the error is the exit code only) because their output can carry the
household's file names. The household's lost list is shown on the app page (`lostFilesNote`) until dismissed.
### `monitor/`
| File | Class | Reason | Risk |
|---|---|---|---|
@@ -382,6 +382,15 @@ answer the question the text refuses to — for every customer who is not Hungar
state therefore always renders in the default language; every other state already discloses that the
token is real. Pinned by `TestBindExpiredIsAlwaysDefaultLanguage`.
### 15.4a What the household is NOT mailed: an app's repair after a power cut [hub v0.150.0, R-1007]
**[FACT, hub `822d0393`]** `app_repaired_after_crash` (controller v0.311.0) is allow-listed AND operator-only
(`notify.operatorOnlyEvents`, registered in one commit and pinned together), and a per-app cooldown member. It carries
counts only — empty files found / repaired / still broken, originals lost, the boot, the duration, or a skip reason.
warning mails the operator (anything lost, still broken, failed or skipped); info (all repaired) is recorded, not mailed.
The operator mail renders the counts as one `Repair:` line. The household's side is NOT a mail: the lost files (name,
date taken) are shown on its own app page, on its box, until it dismisses them — file names never leave the box.
### 15.5 How "the Hungarian did not change" is known
56 goldens captured from v0.117.0 before any string moved, in
@@ -458,6 +458,16 @@ nothing holds the entry open (a killed worker leaves `tar`/`zstd` writing for mi
`audits/power-cut-fixes-2026-10-14/`. A full host root also breaks LVM's own metadata writes (C4) — the reason this matters
beyond one skipped night.
**[FACT, 2026-10-14] A power cut while an app writes leaves some of its files ZERO BYTES, and from controller v0.311.0 the
app repairs them itself.** ext4 keeps the name and loses the data written in the last seconds: the night's cut left 81 of
101 recent Immich photos with empty thumbnails and previews and one original gone (`audits/night-power-2026-10-13/` R2);
the R-1007 live proof (demo-hp 9201, 15:25:04 UTC, mid-upload) left 41 photos with both files empty. Immich never redoes
them (its „missing" run reads its database, not the disk). After an UNCLEAN boot the controller runs the app's
`after_unclean_boot` block (`02` `aftercrash/`): 41 of 41 repaired in 10 s, the 120 control files untouched (mtimes),
the lost-file check read (0 lost). A lost ORIGINAL is restored only from a backup (Tier 2, the night's DB + volumes; the
upload library is a mandatory class) or uploaded again by the household — its app page lists it
(`audits/immich-repair-2026-10-14/`).
**[FACT] What the whole-guest tiers do NOT carry.** `mp8 /mnt/felhom-drives` and
`mp9 /etc/felhom-bootstrap` are **host bind mounts** and are out of `vzdump` scope entirely (LIVE
`pct config 9201`, both hosts). So the whole-guest tiers carry the guest and **none of the customer's
@@ -60,6 +60,7 @@ OS packages (exact versions, apt-signed), the installer script (by tag, R-980).
| end-user ↔ apps | holds, with gaps | traefik routing and header stripping hold; homepage has the Docker socket and no gate (R-981) |
| customer ↔ controller UI | partly | bcrypt and session hold; small gaps (R-983); family sessions survive a reset (R-976) |
| controller ↔ agent | partly | every route bound to the caller's guest; a compromised controller can still flush restore points (R-973), void the recovery code (R-978), and — since agent v0.155.0 — switch the whole machine off once per power-on, holding the hub's silence alarms for up to 14 days (R-998; mitigations and residual risk: `14-host-power-off.md` §5) |
| **added (R-1007):** controller → an app's own job queue | holds — nothing new | the `after_unclean_boot` commands run inside the app's container through the docker socket the controller already holds, and read the app's database with a read-only session: no key into the household's account, nothing a compromised controller could not already do (exec in any app, read its database). The household's lost-file names stay on the box (`app.yaml`, the app page); the operator event carries counts only, and a failing command's output is never logged (security review of controller `8d862e4`, fixed in `3b85a0c`) |
| **added:** agent ↔ root on the host | holds by the sudoers | every root verb is one regex-anchored line or a root wrapper that re-checks its input (`03` §3); agent v0.156.1 adds one delete: `felhom-vzdump-partial-clean` removes only a DEAD half-written vzdump of the named guest on a `dir` storage (no vzdump on the host, nothing holding it open) — a compromised agent gains the deletion of a leftover that is not a backup |
| agent ↔ hub | holds for destructive ops | signed jobs verified in the documented order; unsigned spec has no size bounds (R-984) |
| controller ↔ hub | **did not hold until 2026-10-12** | the global key was public (R-950, rotated) and three routes needed no key (R-951, fixed); per-box keys are bound to their box (R-955) |
@@ -198,3 +198,20 @@ v0.310.0 (the card, `POST /api/server/poweroff`).
**Gap / roadmap:** the website FAQ line (R-1000); the hosts-page badge reads ONLINE for the first 45 min (R-1002).
---
## F12 — After a power cut, an app rebuilds the files the cut left empty
*Map row: [F12](../00-capability-map.md#f12).*
**Scenario:** the power goes off while photos upload; some thumbnails and previews are left zero bytes, rarely an
original is lost. After the unclean boot (and the 15-minute crash grace) the box asks Immich to rebuild exactly those
photos, runs Immich's missing-files check, shows a lost photo's name and date on the app page, and gives the operator the
counts.
**Components:** controller v0.311.0 (`internal/aftercrash`, `internal/stacks/after_unclean_boot.go`), hub v0.150.0
(`app_repaired_after_crash`, operator-only), catalog `templates/immich/.felhom.yml` `after_unclean_boot` (proven on
`immich-server:v3.2.4`). Decision 236.
**Evidence:** `audits/immich-repair-2026-10-14/` — spike A on 9202 (the five candidates), the scripts on real damage
(9202), the live cut on demo-hp 9201 (D/). **Not exercised live:** a lost original (the cut lost none); pinned by unit
tests and the 9202 run.
@@ -0,0 +1,12 @@
17:20:29 immich: deploy -> 202 {'ok': True, 'message': 'The install has started – the card shows how it is going'}
17:22:39 immich: deployed, state=running
deploy: ok
17:22:39 immich: deployed, state=running
stranger admin-sign-up -> 401
gate passed as the household: True
household admin-sign-up through the gate -> 201
installed_images:
immich-machine-learning:
ref: ghcr.io/immich-app/immich-machine-learning:v3.2.4
digest: sha256:e16c2f166a8174901959fdf85e2e4c7bd1ebc4b37e0b6655de97c41408a260c4
@@ -0,0 +1 @@
GET /apps/immich -> 200 | lost-files card shown: False | page bytes: 45821
@@ -0,0 +1,8 @@
after_unclean_boot:
at: "2026-10-14T15:42:56Z"
boot_at: "2026-10-14T15:25:38Z"
found: 41
repaired: 41
still_broken: 0
lost_checked: true
duration_ms: 10172
@@ -0,0 +1,5 @@
15:38:38
thumb files: 273
empty: 82
41 preview.jpeg
41 thumbnail.webp
@@ -0,0 +1,9 @@
15:43:08
2026/10/14 15:28:16 crashboot.go:147: [INFO] [deadapp] boot grace 15m0s: the host's last boot (2026-10-14T15:25:38Z) followed an UNCLEAN stop (R-856)
2026/10/14 15:42:46 aftercrash.go:106: [INFO] [aftercrash] the host's boot at 2026-10-14T15:25:38Z followed an unclean stop — 1 app(s) with an after_unclean_boot block (R-1007)
2026/10/14 15:42:56 aftercrash.go:106: [INFO] [aftercrash] immich: found 41 empty file(s), repaired 41, still broken 0, lost 0 (checked=true) in 0s
2026/10/14 15:42:56 notifier.go:315: [DEBUG] PushEvent: type=app_repaired_after_crash severity=info url=https://hub.felhom.eu/api/v1/event
2026/10/14 15:42:56 notifier.go:341: [DEBUG] PushEvent: app_repaired_after_crash pushed OK (HTTP 200)
2026/10/14 15:42:56 notifier.go:353: [INFO] Event pushed: app_repaired_after_crash (info) [+household(en)] — Immich: a váratlan leállás után 41 sérült előnézeti fájl, ebből 41 javítva, 0 maradt hibás; elveszett eredeti fájl: 0
[exited with code 0]
@@ -0,0 +1,121 @@
.immich 13 1791991349.3662731990
825b76a1-fc84-4c59-b234-421cce44c0a9/06/36/0636e93b-f3a1-4df5-848e-9aa834400a7c_preview.jpeg 199884 1791991418.1001872850
825b76a1-fc84-4c59-b234-421cce44c0a9/06/36/0636e93b-f3a1-4df5-848e-9aa834400a7c_thumbnail.webp 5782 1791991418.0131861280
825b76a1-fc84-4c59-b234-421cce44c0a9/06/c5/06c5c7b0-49fa-4dff-ad0d-022995257ca5_preview.jpeg 208760 1791991413.6041274910
825b76a1-fc84-4c59-b234-421cce44c0a9/06/c5/06c5c7b0-49fa-4dff-ad0d-022995257ca5_thumbnail.webp 6698 1791991413.5351265740
825b76a1-fc84-4c59-b234-421cce44c0a9/0e/05/0e0578fc-227f-45c4-8da5-6563aaf6b535_preview.jpeg 188089 1791991430.1003468740
825b76a1-fc84-4c59-b234-421cce44c0a9/0e/05/0e0578fc-227f-45c4-8da5-6563aaf6b535_thumbnail.webp 5428 1791991430.0643463950
825b76a1-fc84-4c59-b234-421cce44c0a9/10/cc/10cc4943-a7c6-488b-ac76-a4c7eda64f47_preview.jpeg 200898 1791991417.0361731340
825b76a1-fc84-4c59-b234-421cce44c0a9/10/cc/10cc4943-a7c6-488b-ac76-a4c7eda64f47_thumbnail.webp 6244 1791991416.9781723630
825b76a1-fc84-4c59-b234-421cce44c0a9/17/80/178077d2-4162-4dc7-a998-384649eb991a_preview.jpeg 201274 1791991417.2331757540
825b76a1-fc84-4c59-b234-421cce44c0a9/17/80/178077d2-4162-4dc7-a998-384649eb991a_thumbnail.webp 6568 1791991417.1451745840
825b76a1-fc84-4c59-b234-421cce44c0a9/18/7b/187b4c1d-18bb-40fe-a8f1-8c4ef89a02ef_preview.jpeg 193665 1791991413.7271291270
825b76a1-fc84-4c59-b234-421cce44c0a9/18/7b/187b4c1d-18bb-40fe-a8f1-8c4ef89a02ef_thumbnail.webp 5856 1791991413.6331278770
825b76a1-fc84-4c59-b234-421cce44c0a9/1a/e4/1ae410ad-4557-4f7d-8be7-017510e5dace_preview.jpeg 187907 1791991418.8931978310
825b76a1-fc84-4c59-b234-421cce44c0a9/1a/e4/1ae410ad-4557-4f7d-8be7-017510e5dace_thumbnail.webp 5680 1791991418.7741962480
825b76a1-fc84-4c59-b234-421cce44c0a9/1e/83/1e83a7b1-1f2d-4566-bb88-73c60ae794f8_preview.jpeg 200725 1791991418.9481985620
825b76a1-fc84-4c59-b234-421cce44c0a9/1e/83/1e83a7b1-1f2d-4566-bb88-73c60ae794f8_thumbnail.webp 6248 1791991418.9991992410
825b76a1-fc84-4c59-b234-421cce44c0a9/1f/34/1f34a3db-c276-4979-a5d7-36a71b223788_preview.jpeg 197250 1791991414.8291437830
825b76a1-fc84-4c59-b234-421cce44c0a9/1f/34/1f34a3db-c276-4979-a5d7-36a71b223788_thumbnail.webp 5574 1791991414.7901432640
825b76a1-fc84-4c59-b234-421cce44c0a9/20/86/20868b46-bb12-42f9-9426-0a88ee2899b3_preview.jpeg 213828 1791991422.1302408800
825b76a1-fc84-4c59-b234-421cce44c0a9/20/86/20868b46-bb12-42f9-9426-0a88ee2899b3_thumbnail.webp 6860 1791991422.1032405210
825b76a1-fc84-4c59-b234-421cce44c0a9/22/70/2270684f-1c5a-4171-8fa4-056d68b3f229_preview.jpeg 194345 1791991429.5683397990
825b76a1-fc84-4c59-b234-421cce44c0a9/22/70/2270684f-1c5a-4171-8fa4-056d68b3f229_thumbnail.webp 5642 1791991429.4433381370
825b76a1-fc84-4c59-b234-421cce44c0a9/23/ed/23ed9733-6e9f-4029-a078-9cecde0ce5aa_preview.jpeg 201532 1791991428.0433195180
825b76a1-fc84-4c59-b234-421cce44c0a9/23/ed/23ed9733-6e9f-4029-a078-9cecde0ce5aa_thumbnail.webp 6224 1791991428.0593197300
825b76a1-fc84-4c59-b234-421cce44c0a9/25/2c/252c2904-3cbf-4ac1-8901-fa5f159667ed_preview.jpeg 203955 1791991429.5623397190
825b76a1-fc84-4c59-b234-421cce44c0a9/25/2c/252c2904-3cbf-4ac1-8901-fa5f159667ed_thumbnail.webp 6218 1791991429.4593383490
825b76a1-fc84-4c59-b234-421cce44c0a9/29/1d/291d12c9-bb22-44a4-9f3e-20c6fbad2dca_preview.jpeg 188088 1791991428.8693305030
825b76a1-fc84-4c59-b234-421cce44c0a9/29/1d/291d12c9-bb22-44a4-9f3e-20c6fbad2dca_thumbnail.webp 5068 1791991428.7443288400
825b76a1-fc84-4c59-b234-421cce44c0a9/31/8b/318bd25f-8941-4bcf-b6c3-0e4ce3aea4a8_preview.jpeg 196583 1791991421.4942324220
825b76a1-fc84-4c59-b234-421cce44c0a9/31/8b/318bd25f-8941-4bcf-b6c3-0e4ce3aea4a8_thumbnail.webp 6026 1791991421.4662320500
825b76a1-fc84-4c59-b234-421cce44c0a9/31/d4/31d428eb-11cd-43f2-8519-2f329ce49b2d_preview.jpeg 194607 1791991413.6691283560
825b76a1-fc84-4c59-b234-421cce44c0a9/31/d4/31d428eb-11cd-43f2-8519-2f329ce49b2d_thumbnail.webp 5882 1791991413.5951273720
825b76a1-fc84-4c59-b234-421cce44c0a9/37/cb/37cba3f0-1f20-49db-bcbb-995607aa95b1_preview.jpeg 197643 1791991416.6251676680
825b76a1-fc84-4c59-b234-421cce44c0a9/37/cb/37cba3f0-1f20-49db-bcbb-995607aa95b1_thumbnail.webp 5726 1791991416.5581667770
825b76a1-fc84-4c59-b234-421cce44c0a9/39/7e/397e626c-9b29-4162-a074-b15d20ce2bc9_preview.jpeg 202385 1791991427.4123111260
825b76a1-fc84-4c59-b234-421cce44c0a9/39/7e/397e626c-9b29-4162-a074-b15d20ce2bc9_thumbnail.webp 6018 1791991427.3263099820
825b76a1-fc84-4c59-b234-421cce44c0a9/3d/dc/3ddcccf0-9663-496d-973f-5be56311a0a5_preview.jpeg 195669 1791991428.7043283080
825b76a1-fc84-4c59-b234-421cce44c0a9/3d/dc/3ddcccf0-9663-496d-973f-5be56311a0a5_thumbnail.webp 5694 1791991428.6023269520
825b76a1-fc84-4c59-b234-421cce44c0a9/46/4b/464b8d58-79de-45d8-af7c-8ef0beabe85b_preview.jpeg 201188 1791991415.3451506450
825b76a1-fc84-4c59-b234-421cce44c0a9/46/4b/464b8d58-79de-45d8-af7c-8ef0beabe85b_thumbnail.webp 6468 1791991415.3091501670
825b76a1-fc84-4c59-b234-421cce44c0a9/4d/7a/4d7a069f-9315-4c3a-bfb8-b3de343a6b17_preview.jpeg 205251 1791991421.6392343500
825b76a1-fc84-4c59-b234-421cce44c0a9/4d/7a/4d7a069f-9315-4c3a-bfb8-b3de343a6b17_thumbnail.webp 5886 1791991421.5642333530
825b76a1-fc84-4c59-b234-421cce44c0a9/54/b0/54b07a0b-fbc0-436f-8645-19d3bb4637b9_preview.jpeg 196467 1791991415.2981500200
825b76a1-fc84-4c59-b234-421cce44c0a9/54/b0/54b07a0b-fbc0-436f-8645-19d3bb4637b9_thumbnail.webp 5756 1791991415.2211489960
825b76a1-fc84-4c59-b234-421cce44c0a9/56/2c/562ccb49-02e6-4306-9c9d-dcb102c23a9e_preview.jpeg 200184 1791991430.9233578190
825b76a1-fc84-4c59-b234-421cce44c0a9/56/2c/562ccb49-02e6-4306-9c9d-dcb102c23a9e_thumbnail.webp 6016 1791991430.8663570610
825b76a1-fc84-4c59-b234-421cce44c0a9/57/30/573074ef-f13a-45a0-af32-3dc2b56a3752_preview.jpeg 190675 1791991418.0301863540
825b76a1-fc84-4c59-b234-421cce44c0a9/57/30/573074ef-f13a-45a0-af32-3dc2b56a3752_thumbnail.webp 5508 1791991417.8591840790
825b76a1-fc84-4c59-b234-421cce44c0a9/60/ac/60ac593d-97ac-4ec7-895b-e503da308c74_preview.jpeg 208786 1791991427.3413101820
825b76a1-fc84-4c59-b234-421cce44c0a9/60/ac/60ac593d-97ac-4ec7-895b-e503da308c74_thumbnail.webp 6480 1791991427.2583090780
825b76a1-fc84-4c59-b234-421cce44c0a9/63/6a/636a2991-1924-4ee3-bbe7-cff87e176169_preview.jpeg 200408 1791991421.1142273680
825b76a1-fc84-4c59-b234-421cce44c0a9/63/6a/636a2991-1924-4ee3-bbe7-cff87e176169_thumbnail.webp 6044 1791991421.0772268760
825b76a1-fc84-4c59-b234-421cce44c0a9/66/ef/66ef835b-ce48-4915-8114-43145d1f326f_preview.jpeg 209522 1791991426.6203005930
825b76a1-fc84-4c59-b234-421cce44c0a9/66/ef/66ef835b-ce48-4915-8114-43145d1f326f_thumbnail.webp 6840 1791991426.4572984250
825b76a1-fc84-4c59-b234-421cce44c0a9/67/24/67241461-a169-451e-aa0a-7b07e9710435_preview.jpeg 203401 1791991430.9033575530
825b76a1-fc84-4c59-b234-421cce44c0a9/67/24/67241461-a169-451e-aa0a-7b07e9710435_thumbnail.webp 6480 1791991430.7903560500
825b76a1-fc84-4c59-b234-421cce44c0a9/71/17/71176403-4d68-4f1b-8102-1cbe45dff6c7_preview.jpeg 192301 1791991421.0842269690
825b76a1-fc84-4c59-b234-421cce44c0a9/71/17/71176403-4d68-4f1b-8102-1cbe45dff6c7_thumbnail.webp 5590 1791991420.9492251740
825b76a1-fc84-4c59-b234-421cce44c0a9/72/9e/729ec82a-3fe2-4f98-a79e-a8de3f6bf5f4_preview.jpeg 197443 1791991414.3281371200
825b76a1-fc84-4c59-b234-421cce44c0a9/72/9e/729ec82a-3fe2-4f98-a79e-a8de3f6bf5f4_thumbnail.webp 5630 1791991414.2711363620
825b76a1-fc84-4c59-b234-421cce44c0a9/7a/76/7a76a5df-6489-4206-b366-30960213d79b_preview.jpeg 193479 1791991428.8823306760
825b76a1-fc84-4c59-b234-421cce44c0a9/7a/76/7a76a5df-6489-4206-b366-30960213d79b_thumbnail.webp 5958 1791991428.7983295590
825b76a1-fc84-4c59-b234-421cce44c0a9/7d/fc/7dfc640d-1c7a-4c29-a580-a01c26350869_preview.jpeg 195430 1791991415.3701509780
825b76a1-fc84-4c59-b234-421cce44c0a9/7d/fc/7dfc640d-1c7a-4c29-a580-a01c26350869_thumbnail.webp 5556 1791991415.3581508180
825b76a1-fc84-4c59-b234-421cce44c0a9/86/f2/86f2b83c-7c39-437c-9f30-5e4ac3fc12d2_preview.jpeg 206399 1791991417.2401758470
825b76a1-fc84-4c59-b234-421cce44c0a9/86/f2/86f2b83c-7c39-437c-9f30-5e4ac3fc12d2_thumbnail.webp 6696 1791991417.1101741180
825b76a1-fc84-4c59-b234-421cce44c0a9/87/56/8756a77c-4d79-40fc-9c94-337fafe40f4f_preview.jpeg 193687 1791991416.6381678410
825b76a1-fc84-4c59-b234-421cce44c0a9/87/56/8756a77c-4d79-40fc-9c94-337fafe40f4f_thumbnail.webp 5704 1791991416.5231663120
825b76a1-fc84-4c59-b234-421cce44c0a9/89/d6/89d67bd8-5b3b-438b-8460-f56151dcd503_preview.jpeg 201851 1791991430.3303499330
825b76a1-fc84-4c59-b234-421cce44c0a9/89/d6/89d67bd8-5b3b-438b-8460-f56151dcd503_thumbnail.webp 5980 1791991430.2583489750
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/3c/8c3ccedb-525b-4123-b24e-fc67089455fe_preview.jpeg 203236 1791991415.9791590770
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/3c/8c3ccedb-525b-4123-b24e-fc67089455fe_thumbnail.webp 6236 1791991415.9391585450
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/a2/8ca2df4c-4514-4337-b755-48535ec36611_preview.jpeg 191994 1791991421.5712334460
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/a2/8ca2df4c-4514-4337-b755-48535ec36611_thumbnail.webp 5604 1791991421.5152327010
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/ae/8cae32ac-d325-4e3d-b8ce-9e9586d92e2b_preview.jpeg 199550 1791991417.8831843990
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/ae/8cae32ac-d325-4e3d-b8ce-9e9586d92e2b_thumbnail.webp 5906 1791991417.8081834010
825b76a1-fc84-4c59-b234-421cce44c0a9/8e/6e/8e6eff3d-8f0c-4bd5-983a-627b038a92d3_preview.jpeg 204198 1791991415.9161582390
825b76a1-fc84-4c59-b234-421cce44c0a9/8e/6e/8e6eff3d-8f0c-4bd5-983a-627b038a92d3_thumbnail.webp 6168 1791991415.8131568690
825b76a1-fc84-4c59-b234-421cce44c0a9/93/15/9315100e-17b4-4d53-873c-8fd40cd4a348_preview.jpeg 192579 1791991422.0242394710
825b76a1-fc84-4c59-b234-421cce44c0a9/93/15/9315100e-17b4-4d53-873c-8fd40cd4a348_thumbnail.webp 5708 1791991421.9682387260
825b76a1-fc84-4c59-b234-421cce44c0a9/93/ed/93ed762f-256a-4c85-b29c-776e538da327_preview.jpeg 210257 1791991430.3263498800
825b76a1-fc84-4c59-b234-421cce44c0a9/93/ed/93ed762f-256a-4c85-b29c-776e538da327_thumbnail.webp 6812 1791991430.2603490020
825b76a1-fc84-4c59-b234-421cce44c0a9/95/80/95803fbd-ab39-498b-9e6c-b7066d5334a9_preview.jpeg 198427 1791991413.0361199380
825b76a1-fc84-4c59-b234-421cce44c0a9/95/80/95803fbd-ab39-498b-9e6c-b7066d5334a9_thumbnail.webp 5964 1791991413.0351199240
825b76a1-fc84-4c59-b234-421cce44c0a9/9b/b9/9bb94a8a-8ed6-4f93-b5a7-d369900370b0_preview.jpeg 204622 1791991414.1731350590
825b76a1-fc84-4c59-b234-421cce44c0a9/9b/b9/9bb94a8a-8ed6-4f93-b5a7-d369900370b0_thumbnail.webp 6022 1791991414.1481347260
825b76a1-fc84-4c59-b234-421cce44c0a9/9c/34/9c343b7b-5472-45fe-9ed8-f270452b74ba_preview.jpeg 193720 1791991421.0342263040
825b76a1-fc84-4c59-b234-421cce44c0a9/9c/34/9c343b7b-5472-45fe-9ed8-f270452b74ba_thumbnail.webp 5642 1791991420.9932257590
825b76a1-fc84-4c59-b234-421cce44c0a9/9f/f5/9ff5df2a-c518-410d-987b-441ae1c980d4_preview.jpeg 203683 1791991413.0351199240
825b76a1-fc84-4c59-b234-421cce44c0a9/9f/f5/9ff5df2a-c518-410d-987b-441ae1c980d4_thumbnail.webp 6398 1791991413.0191197120
825b76a1-fc84-4c59-b234-421cce44c0a9/ac/ae/acae67d3-fb7e-471b-8e15-d0f66b9a975d_preview.jpeg 208183 1791991422.1152406800
825b76a1-fc84-4c59-b234-421cce44c0a9/ac/ae/acae67d3-fb7e-471b-8e15-d0f66b9a975d_thumbnail.webp 6528 1791991422.0822402420
825b76a1-fc84-4c59-b234-421cce44c0a9/ae/fe/aefe8cb5-27de-4980-9791-da6cfdc72d4f_preview.jpeg 194665 1791991412.9911193390
825b76a1-fc84-4c59-b234-421cce44c0a9/ae/fe/aefe8cb5-27de-4980-9791-da6cfdc72d4f_thumbnail.webp 5858 1791991413.0031194990
825b76a1-fc84-4c59-b234-421cce44c0a9/b2/82/b2828416-455b-4938-a999-7d9727856a29_preview.jpeg 193186 1791991414.8191436500
825b76a1-fc84-4c59-b234-421cce44c0a9/b2/82/b2828416-455b-4938-a999-7d9727856a29_thumbnail.webp 6038 1791991414.7421426260
825b76a1-fc84-4c59-b234-421cce44c0a9/b3/4c/b34c4648-891c-4a99-a54c-7302aae74161_preview.jpeg 199228 1791991414.2861365620
825b76a1-fc84-4c59-b234-421cce44c0a9/b3/4c/b34c4648-891c-4a99-a54c-7302aae74161_thumbnail.webp 5720 1791991414.2081355240
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/09/b409ad65-b113-436e-a6cc-7ed164c2d15d_preview.jpeg 192278 1791991430.7623556780
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/09/b409ad65-b113-436e-a6cc-7ed164c2d15d_thumbnail.webp 6008 1791991430.6953547870
825b76a1-fc84-4c59-b234-421cce44c0a9/b5/3e/b53e4066-32b1-4de9-ae25-cb23d3f802bd_preview.jpeg 196419 1791991429.4603383630
825b76a1-fc84-4c59-b234-421cce44c0a9/b5/3e/b53e4066-32b1-4de9-ae25-cb23d3f802bd_thumbnail.webp 5698 1791991429.3593370200
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/2a/b92a9145-b3c2-41df-aa4b-084fca4437cc_preview.jpeg 195520 1791991428.1783213130
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/2a/b92a9145-b3c2-41df-aa4b-084fca4437cc_thumbnail.webp 5750 1791991428.1663211540
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/9f/b99fc392-865f-44a0-866f-7471d036148b_preview.jpeg 201464 1791991414.8051434640
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/9f/b99fc392-865f-44a0-866f-7471d036148b_thumbnail.webp 6246 1791991414.7591428520
825b76a1-fc84-4c59-b234-421cce44c0a9/c6/b6/c6b61764-8f42-4fa2-9f19-c652f23e2c96_preview.jpeg 196005 1791991418.9941991740
825b76a1-fc84-4c59-b234-421cce44c0a9/c6/b6/c6b61764-8f42-4fa2-9f19-c652f23e2c96_thumbnail.webp 5770 1791991418.8801976580
825b76a1-fc84-4c59-b234-421cce44c0a9/d7/ac/d7ac4f26-b41a-47bf-b1e6-fe2e438356a1_preview.jpeg 191533 1791991426.6793013770
825b76a1-fc84-4c59-b234-421cce44c0a9/d7/ac/d7ac4f26-b41a-47bf-b1e6-fe2e438356a1_thumbnail.webp 5678 1791991426.6023003530
825b76a1-fc84-4c59-b234-421cce44c0a9/da/be/dabe182f-035c-4fb4-a61b-b6912e1928f3_preview.jpeg 204726 1791991427.9863187600
825b76a1-fc84-4c59-b234-421cce44c0a9/da/be/dabe182f-035c-4fb4-a61b-b6912e1928f3_thumbnail.webp 6144 1791991427.9163178290
825b76a1-fc84-4c59-b234-421cce44c0a9/e3/80/e3804e30-afe9-4527-8b37-46e299535de1_preview.jpeg 190925 1791991426.6373008190
825b76a1-fc84-4c59-b234-421cce44c0a9/e3/80/e3804e30-afe9-4527-8b37-46e299535de1_thumbnail.webp 5790 1791991426.6103004600
825b76a1-fc84-4c59-b234-421cce44c0a9/e4/35/e4355f0e-8d52-4785-a4ff-1d3eb3fb93de_preview.jpeg 202211 1791991415.9281583990
825b76a1-fc84-4c59-b234-421cce44c0a9/e4/35/e4355f0e-8d52-4785-a4ff-1d3eb3fb93de_thumbnail.webp 6120 1791991415.8801577600
825b76a1-fc84-4c59-b234-421cce44c0a9/f1/45/f145567a-e193-4ee6-a7d1-b00e48420799_preview.jpeg 196313 1791991427.4633118040
825b76a1-fc84-4c59-b234-421cce44c0a9/f1/45/f145567a-e193-4ee6-a7d1-b00e48420799_thumbnail.webp 5936 1791991427.3413101820
825b76a1-fc84-4c59-b234-421cce44c0a9/f2/5a/f25ad6bf-341e-454d-987d-002f85c0064d_preview.jpeg 192734 1791991416.5481666440
825b76a1-fc84-4c59-b234-421cce44c0a9/f2/5a/f25ad6bf-341e-454d-987d-002f85c0064d_thumbnail.webp 5444 1791991416.5401665380
@@ -0,0 +1,2 @@
files after: 273 | empty after: 0
controls (complete before the cut): 121 | changed or gone: 1 ['.immich']
@@ -0,0 +1,14 @@
fences clear 15:23:28
upload started 15:23:31
phase1 done 15:24:46: 121 thumb files, empty: 0
controls copied off: 121 lines
fences clear 15:25:00
count at cut: 130 15:25:02
15:25:03.531 gen-133.jpg 201
15:25:03.791 gen-134.jpg 201
15:25:03.982 gen-135.jpg 201
btime 1791979645
2026-10-14T15:25:04.552Z hp watchdog armed (pid 1252768, relay on after 25 s at the latest)
2026-10-14T15:25:04.680Z hp CUT: relay off + countdown 10 s sent in one command
2026-10-14T15:25:04.718Z hp read back: relay=off countdown=10
2026-10-14T15:25:14.753Z hp BACK: relay on by the plug countdown, +10.0 s after the cut
@@ -0,0 +1 @@
2026/10/14 17:42:56 [INFO] Event from demo-hp: app_repaired_after_crash (info) — Immich: a váratlan leállás után 41 sérült előnézeti fájl, ebből 41 javítva, 0 maradt hibás; elveszett eredeti fájl: 0
@@ -0,0 +1,5 @@
2026-10-14T15:25:04.552Z hp watchdog armed (pid 1252768, relay on after 25 s at the latest)
2026-10-14T15:25:04.680Z hp CUT: relay off + countdown 10 s sent in one command
2026-10-14T15:25:04.718Z hp read back: relay=off countdown=10
2026-10-14T15:25:14.753Z hp BACK: relay on by the plug countdown, +10.0 s after the cut
2026-10-14T15:25:29.769Z hp watchdog: relay already on — nothing to do
@@ -0,0 +1,11 @@
17:45:26 immich: stop 200, remove 200, deployed=False, leftovers=''
True
documents
downloads
media
roms
0
dirs left: 0
immich data folder: gone
containers: 0 immich; volumes: 0; images: 0
@@ -0,0 +1,273 @@
.immich 13 1791991717.0095883650
825b76a1-fc84-4c59-b234-421cce44c0a9/06/36/0636e93b-f3a1-4df5-848e-9aa834400a7c_preview.jpeg 199884 1791991418.1001872850
825b76a1-fc84-4c59-b234-421cce44c0a9/06/36/0636e93b-f3a1-4df5-848e-9aa834400a7c_thumbnail.webp 5782 1791991418.0131861280
825b76a1-fc84-4c59-b234-421cce44c0a9/06/c5/06c5c7b0-49fa-4dff-ad0d-022995257ca5_preview.jpeg 208760 1791991413.6041274910
825b76a1-fc84-4c59-b234-421cce44c0a9/06/c5/06c5c7b0-49fa-4dff-ad0d-022995257ca5_thumbnail.webp 6698 1791991413.5351265740
825b76a1-fc84-4c59-b234-421cce44c0a9/09/0b/090babd3-f5b4-4fab-b605-fd4cf4a71521_preview.jpeg 209862 1791991717.8996002690
825b76a1-fc84-4c59-b234-421cce44c0a9/09/0b/090babd3-f5b4-4fab-b605-fd4cf4a71521_thumbnail.webp 6602 1791991717.7975989040
825b76a1-fc84-4c59-b234-421cce44c0a9/09/12/091205af-713d-4017-ab68-7623cd9107b4_preview.jpeg 213103 1791992567.1868773230
825b76a1-fc84-4c59-b234-421cce44c0a9/09/12/091205af-713d-4017-ab68-7623cd9107b4_thumbnail.webp 6842 1791992567.1678770290
825b76a1-fc84-4c59-b234-421cce44c0a9/0c/26/0c269291-7af7-4c16-8602-acb05c8722ce_preview.jpeg 201492 1791991721.4016471080
825b76a1-fc84-4c59-b234-421cce44c0a9/0c/26/0c269291-7af7-4c16-8602-acb05c8722ce_thumbnail.webp 6200 1791991721.3686466660
825b76a1-fc84-4c59-b234-421cce44c0a9/0c/d6/0cd62fb3-aef6-4fb3-8dc2-e85aa3e4c380_preview.jpeg 200584 1791992567.1928774160
825b76a1-fc84-4c59-b234-421cce44c0a9/0c/d6/0cd62fb3-aef6-4fb3-8dc2-e85aa3e4c380_thumbnail.webp 6004 1791992567.1288764270
825b76a1-fc84-4c59-b234-421cce44c0a9/0e/05/0e0578fc-227f-45c4-8da5-6563aaf6b535_preview.jpeg 188089 1791991430.1003468740
825b76a1-fc84-4c59-b234-421cce44c0a9/0e/05/0e0578fc-227f-45c4-8da5-6563aaf6b535_thumbnail.webp 5428 1791991430.0643463950
825b76a1-fc84-4c59-b234-421cce44c0a9/10/cc/10cc4943-a7c6-488b-ac76-a4c7eda64f47_preview.jpeg 200898 1791991417.0361731340
825b76a1-fc84-4c59-b234-421cce44c0a9/10/cc/10cc4943-a7c6-488b-ac76-a4c7eda64f47_thumbnail.webp 6244 1791991416.9781723630
825b76a1-fc84-4c59-b234-421cce44c0a9/15/8d/158d19c2-af33-4793-87fb-84d9da3b002e_preview.jpeg 204281 1791992567.1888773540
825b76a1-fc84-4c59-b234-421cce44c0a9/15/8d/158d19c2-af33-4793-87fb-84d9da3b002e_thumbnail.webp 6412 1791992567.1658769990
825b76a1-fc84-4c59-b234-421cce44c0a9/17/80/178077d2-4162-4dc7-a998-384649eb991a_preview.jpeg 201274 1791991417.2331757540
825b76a1-fc84-4c59-b234-421cce44c0a9/17/80/178077d2-4162-4dc7-a998-384649eb991a_thumbnail.webp 6568 1791991417.1451745840
825b76a1-fc84-4c59-b234-421cce44c0a9/18/7b/187b4c1d-18bb-40fe-a8f1-8c4ef89a02ef_preview.jpeg 193665 1791991413.7271291270
825b76a1-fc84-4c59-b234-421cce44c0a9/18/7b/187b4c1d-18bb-40fe-a8f1-8c4ef89a02ef_thumbnail.webp 5856 1791991413.6331278770
825b76a1-fc84-4c59-b234-421cce44c0a9/18/c8/18c8d054-743c-41ef-93dd-5bc3047c12ae_preview.jpeg 200761 1791991722.6366636260
825b76a1-fc84-4c59-b234-421cce44c0a9/18/c8/18c8d054-743c-41ef-93dd-5bc3047c12ae_thumbnail.webp 6160 1791991722.5636626490
825b76a1-fc84-4c59-b234-421cce44c0a9/19/33/193346fc-7d17-4aa6-abf0-b9968a3f4151_preview.jpeg 205662 1791992567.6298841640
825b76a1-fc84-4c59-b234-421cce44c0a9/19/33/193346fc-7d17-4aa6-abf0-b9968a3f4151_thumbnail.webp 6416 1791992567.6098838550
825b76a1-fc84-4c59-b234-421cce44c0a9/1a/86/1a86b72d-52de-4a3e-b094-e469c16d7b10_preview.jpeg 196136 1791992567.7548860940
825b76a1-fc84-4c59-b234-421cce44c0a9/1a/86/1a86b72d-52de-4a3e-b094-e469c16d7b10_thumbnail.webp 5752 1791992567.6918851210
825b76a1-fc84-4c59-b234-421cce44c0a9/1a/e4/1ae410ad-4557-4f7d-8be7-017510e5dace_preview.jpeg 187907 1791991418.8931978310
825b76a1-fc84-4c59-b234-421cce44c0a9/1a/e4/1ae410ad-4557-4f7d-8be7-017510e5dace_thumbnail.webp 5680 1791991418.7741962480
825b76a1-fc84-4c59-b234-421cce44c0a9/1b/c8/1bc82259-9948-4a74-8db8-eb2af97da5de_preview.jpeg 212718 1791992567.7438859240
825b76a1-fc84-4c59-b234-421cce44c0a9/1b/c8/1bc82259-9948-4a74-8db8-eb2af97da5de_thumbnail.webp 6888 1791992567.7208855690
825b76a1-fc84-4c59-b234-421cce44c0a9/1c/0c/1c0cca7b-6219-40ef-876d-bb802970c287_preview.jpeg 182653 1791991723.7726788190
825b76a1-fc84-4c59-b234-421cce44c0a9/1c/0c/1c0cca7b-6219-40ef-876d-bb802970c287_thumbnail.webp 5168 1791991723.6926777490
825b76a1-fc84-4c59-b234-421cce44c0a9/1e/83/1e83a7b1-1f2d-4566-bb88-73c60ae794f8_preview.jpeg 200725 1791991418.9481985620
825b76a1-fc84-4c59-b234-421cce44c0a9/1e/83/1e83a7b1-1f2d-4566-bb88-73c60ae794f8_thumbnail.webp 6248 1791991418.9991992410
825b76a1-fc84-4c59-b234-421cce44c0a9/1f/34/1f34a3db-c276-4979-a5d7-36a71b223788_preview.jpeg 197250 1791991414.8291437830
825b76a1-fc84-4c59-b234-421cce44c0a9/1f/34/1f34a3db-c276-4979-a5d7-36a71b223788_thumbnail.webp 5574 1791991414.7901432640
825b76a1-fc84-4c59-b234-421cce44c0a9/20/86/20868b46-bb12-42f9-9426-0a88ee2899b3_preview.jpeg 213828 1791991422.1302408800
825b76a1-fc84-4c59-b234-421cce44c0a9/20/86/20868b46-bb12-42f9-9426-0a88ee2899b3_thumbnail.webp 6860 1791991422.1032405210
825b76a1-fc84-4c59-b234-421cce44c0a9/21/58/2158f7ba-d5bd-46ff-830a-7354e6872476_preview.jpeg 205696 1791991718.5336087480
825b76a1-fc84-4c59-b234-421cce44c0a9/21/58/2158f7ba-d5bd-46ff-830a-7354e6872476_thumbnail.webp 6522 1791991718.4736079460
825b76a1-fc84-4c59-b234-421cce44c0a9/22/70/2270684f-1c5a-4171-8fa4-056d68b3f229_preview.jpeg 194345 1791991429.5683397990
825b76a1-fc84-4c59-b234-421cce44c0a9/22/70/2270684f-1c5a-4171-8fa4-056d68b3f229_thumbnail.webp 5642 1791991429.4433381370
825b76a1-fc84-4c59-b234-421cce44c0a9/22/a6/22a67712-1d57-429c-bd23-b0077a51ba5c_preview.jpeg 201767 1791991718.6026096710
825b76a1-fc84-4c59-b234-421cce44c0a9/22/a6/22a67712-1d57-429c-bd23-b0077a51ba5c_thumbnail.webp 5830 1791991718.5316087220
825b76a1-fc84-4c59-b234-421cce44c0a9/23/ed/23ed9733-6e9f-4029-a078-9cecde0ce5aa_preview.jpeg 201532 1791991428.0433195180
825b76a1-fc84-4c59-b234-421cce44c0a9/23/ed/23ed9733-6e9f-4029-a078-9cecde0ce5aa_thumbnail.webp 6224 1791991428.0593197300
825b76a1-fc84-4c59-b234-421cce44c0a9/25/2c/252c2904-3cbf-4ac1-8901-fa5f159667ed_preview.jpeg 203955 1791991429.5623397190
825b76a1-fc84-4c59-b234-421cce44c0a9/25/2c/252c2904-3cbf-4ac1-8901-fa5f159667ed_thumbnail.webp 6218 1791991429.4593383490
825b76a1-fc84-4c59-b234-421cce44c0a9/25/b1/25b1836a-6c8b-4b8f-bfa4-d0b6b455aefa_preview.jpeg 196214 1791991719.2226179640
825b76a1-fc84-4c59-b234-421cce44c0a9/25/b1/25b1836a-6c8b-4b8f-bfa4-d0b6b455aefa_thumbnail.webp 5698 1791991719.1806174020
825b76a1-fc84-4c59-b234-421cce44c0a9/26/21/26216493-6c73-46a4-b88a-5e83d9364943_preview.jpeg 189202 1791992568.0198901860
825b76a1-fc84-4c59-b234-421cce44c0a9/26/21/26216493-6c73-46a4-b88a-5e83d9364943_thumbnail.webp 5582 1791992567.9978898470
825b76a1-fc84-4c59-b234-421cce44c0a9/26/97/26970400-2ba6-422c-abc9-f41946dfba67_preview.jpeg 195176 1791992568.0798911130
825b76a1-fc84-4c59-b234-421cce44c0a9/26/97/26970400-2ba6-422c-abc9-f41946dfba67_thumbnail.webp 5662 1791992568.0478906190
825b76a1-fc84-4c59-b234-421cce44c0a9/29/1d/291d12c9-bb22-44a4-9f3e-20c6fbad2dca_preview.jpeg 188088 1791991428.8693305030
825b76a1-fc84-4c59-b234-421cce44c0a9/29/1d/291d12c9-bb22-44a4-9f3e-20c6fbad2dca_thumbnail.webp 5068 1791991428.7443288400
825b76a1-fc84-4c59-b234-421cce44c0a9/2d/7e/2d7e6aee-d336-487a-b0cc-e4248f29bd9d_preview.jpeg 207138 1791991719.0436155690
825b76a1-fc84-4c59-b234-421cce44c0a9/2d/7e/2d7e6aee-d336-487a-b0cc-e4248f29bd9d_thumbnail.webp 6366 1791991719.0206152620
825b76a1-fc84-4c59-b234-421cce44c0a9/2d/97/2d978379-cc0d-4c84-b9ae-f9e240e238a1_preview.jpeg 191531 1791991720.6746373840
825b76a1-fc84-4c59-b234-421cce44c0a9/2d/97/2d978379-cc0d-4c84-b9ae-f9e240e238a1_thumbnail.webp 5744 1791991720.4986350300
825b76a1-fc84-4c59-b234-421cce44c0a9/30/a6/30a66cc5-729f-4424-8089-b752bd2d9e4a_preview.jpeg 197164 1791992568.0958913600
825b76a1-fc84-4c59-b234-421cce44c0a9/30/a6/30a66cc5-729f-4424-8089-b752bd2d9e4a_thumbnail.webp 5786 1791992568.0778910820
825b76a1-fc84-4c59-b234-421cce44c0a9/31/09/3109db02-fd17-4b30-800b-11023b623d7e_preview.jpeg 200315 1791992568.3588954210
825b76a1-fc84-4c59-b234-421cce44c0a9/31/09/3109db02-fd17-4b30-800b-11023b623d7e_thumbnail.webp 6016 1791992568.3388951120
825b76a1-fc84-4c59-b234-421cce44c0a9/31/8b/318bd25f-8941-4bcf-b6c3-0e4ce3aea4a8_preview.jpeg 196583 1791991421.4942324220
825b76a1-fc84-4c59-b234-421cce44c0a9/31/8b/318bd25f-8941-4bcf-b6c3-0e4ce3aea4a8_thumbnail.webp 6026 1791991421.4662320500
825b76a1-fc84-4c59-b234-421cce44c0a9/31/d4/31d428eb-11cd-43f2-8519-2f329ce49b2d_preview.jpeg 194607 1791991413.6691283560
825b76a1-fc84-4c59-b234-421cce44c0a9/31/d4/31d428eb-11cd-43f2-8519-2f329ce49b2d_thumbnail.webp 5882 1791991413.5951273720
825b76a1-fc84-4c59-b234-421cce44c0a9/35/08/350858c7-227b-41f9-aeb0-25658a2be0d7_preview.jpeg 197848 1791992568.5128977990
825b76a1-fc84-4c59-b234-421cce44c0a9/35/08/350858c7-227b-41f9-aeb0-25658a2be0d7_thumbnail.webp 6018 1791992568.4928974910
825b76a1-fc84-4c59-b234-421cce44c0a9/37/cb/37cba3f0-1f20-49db-bcbb-995607aa95b1_preview.jpeg 197643 1791991416.6251676680
825b76a1-fc84-4c59-b234-421cce44c0a9/37/cb/37cba3f0-1f20-49db-bcbb-995607aa95b1_thumbnail.webp 5726 1791991416.5581667770
825b76a1-fc84-4c59-b234-421cce44c0a9/39/7e/397e626c-9b29-4162-a074-b15d20ce2bc9_preview.jpeg 202385 1791991427.4123111260
825b76a1-fc84-4c59-b234-421cce44c0a9/39/7e/397e626c-9b29-4162-a074-b15d20ce2bc9_thumbnail.webp 6018 1791991427.3263099820
825b76a1-fc84-4c59-b234-421cce44c0a9/3c/2f/3c2fd0d7-7baf-4fe5-9619-eefcbd513901_preview.jpeg 189275 1791991719.7776253870
825b76a1-fc84-4c59-b234-421cce44c0a9/3c/2f/3c2fd0d7-7baf-4fe5-9619-eefcbd513901_thumbnail.webp 5356 1791991719.6616238350
825b76a1-fc84-4c59-b234-421cce44c0a9/3d/dc/3ddcccf0-9663-496d-973f-5be56311a0a5_preview.jpeg 195669 1791991428.7043283080
825b76a1-fc84-4c59-b234-421cce44c0a9/3d/dc/3ddcccf0-9663-496d-973f-5be56311a0a5_thumbnail.webp 5694 1791991428.6023269520
825b76a1-fc84-4c59-b234-421cce44c0a9/44/4a/444a7890-ab20-433c-9f32-8fa910e085ca_preview.jpeg 196547 1791992568.5258980000
825b76a1-fc84-4c59-b234-421cce44c0a9/44/4a/444a7890-ab20-433c-9f32-8fa910e085ca_thumbnail.webp 5890 1791992568.4918974750
825b76a1-fc84-4c59-b234-421cce44c0a9/46/4b/464b8d58-79de-45d8-af7c-8ef0beabe85b_preview.jpeg 201188 1791991415.3451506450
825b76a1-fc84-4c59-b234-421cce44c0a9/46/4b/464b8d58-79de-45d8-af7c-8ef0beabe85b_thumbnail.webp 6468 1791991415.3091501670
825b76a1-fc84-4c59-b234-421cce44c0a9/4d/69/4d69de2a-246d-4f38-8f79-54eaa5cd1b03_preview.jpeg 185854 1791992568.7489014440
825b76a1-fc84-4c59-b234-421cce44c0a9/4d/69/4d69de2a-246d-4f38-8f79-54eaa5cd1b03_thumbnail.webp 5158 1791992568.7259010880
825b76a1-fc84-4c59-b234-421cce44c0a9/4d/7a/4d7a069f-9315-4c3a-bfb8-b3de343a6b17_preview.jpeg 205251 1791991421.6392343500
825b76a1-fc84-4c59-b234-421cce44c0a9/4d/7a/4d7a069f-9315-4c3a-bfb8-b3de343a6b17_thumbnail.webp 5886 1791991421.5642333530
825b76a1-fc84-4c59-b234-421cce44c0a9/4f/72/4f720431-89d9-4507-b21a-a44f37c4f51d_preview.jpeg 203515 1791992568.8789034510
825b76a1-fc84-4c59-b234-421cce44c0a9/4f/72/4f720431-89d9-4507-b21a-a44f37c4f51d_thumbnail.webp 6254 1791992568.8279026640
825b76a1-fc84-4c59-b234-421cce44c0a9/54/b0/54b07a0b-fbc0-436f-8645-19d3bb4637b9_preview.jpeg 196467 1791991415.2981500200
825b76a1-fc84-4c59-b234-421cce44c0a9/54/b0/54b07a0b-fbc0-436f-8645-19d3bb4637b9_thumbnail.webp 5756 1791991415.2211489960
825b76a1-fc84-4c59-b234-421cce44c0a9/55/bf/55bffbd1-26d5-4476-aad1-0b6c79ba797c_preview.jpeg 194291 1791992568.8989037600
825b76a1-fc84-4c59-b234-421cce44c0a9/55/bf/55bffbd1-26d5-4476-aad1-0b6c79ba797c_thumbnail.webp 5862 1791992568.8589031420
825b76a1-fc84-4c59-b234-421cce44c0a9/56/2c/562ccb49-02e6-4306-9c9d-dcb102c23a9e_preview.jpeg 200184 1791991430.9233578190
825b76a1-fc84-4c59-b234-421cce44c0a9/56/2c/562ccb49-02e6-4306-9c9d-dcb102c23a9e_thumbnail.webp 6016 1791991430.8663570610
825b76a1-fc84-4c59-b234-421cce44c0a9/57/30/573074ef-f13a-45a0-af32-3dc2b56a3752_preview.jpeg 190675 1791991418.0301863540
825b76a1-fc84-4c59-b234-421cce44c0a9/57/30/573074ef-f13a-45a0-af32-3dc2b56a3752_thumbnail.webp 5508 1791991417.8591840790
825b76a1-fc84-4c59-b234-421cce44c0a9/5c/26/5c266f69-1957-444e-93ff-45aebb1b27b9_preview.jpeg 196161 1791991717.9196005360
825b76a1-fc84-4c59-b234-421cce44c0a9/5c/26/5c266f69-1957-444e-93ff-45aebb1b27b9_thumbnail.webp 5784 1791991717.9086003890
825b76a1-fc84-4c59-b234-421cce44c0a9/5d/4c/5d4c14fe-59f8-4ace-8bd4-5d5d3329c98b_preview.jpeg 206391 1791992569.1039069260
825b76a1-fc84-4c59-b234-421cce44c0a9/5d/4c/5d4c14fe-59f8-4ace-8bd4-5d5d3329c98b_thumbnail.webp 6462 1791992569.0869066630
825b76a1-fc84-4c59-b234-421cce44c0a9/60/ac/60ac593d-97ac-4ec7-895b-e503da308c74_preview.jpeg 208786 1791991427.3413101820
825b76a1-fc84-4c59-b234-421cce44c0a9/60/ac/60ac593d-97ac-4ec7-895b-e503da308c74_thumbnail.webp 6480 1791991427.2583090780
825b76a1-fc84-4c59-b234-421cce44c0a9/63/17/63179ec8-40c1-4134-92a0-afab71f0be8f_preview.jpeg 212283 1791992569.2299088720
825b76a1-fc84-4c59-b234-421cce44c0a9/63/17/63179ec8-40c1-4134-92a0-afab71f0be8f_thumbnail.webp 6746 1791992569.1989083930
825b76a1-fc84-4c59-b234-421cce44c0a9/63/6a/636a2991-1924-4ee3-bbe7-cff87e176169_preview.jpeg 200408 1791991421.1142273680
825b76a1-fc84-4c59-b234-421cce44c0a9/63/6a/636a2991-1924-4ee3-bbe7-cff87e176169_thumbnail.webp 6044 1791991421.0772268760
825b76a1-fc84-4c59-b234-421cce44c0a9/65/9e/659ee6fc-c007-4eb2-a587-d693aedaedc5_preview.jpeg 189460 1791992569.2569092880
825b76a1-fc84-4c59-b234-421cce44c0a9/65/9e/659ee6fc-c007-4eb2-a587-d693aedaedc5_thumbnail.webp 5362 1791992569.2349089490
825b76a1-fc84-4c59-b234-421cce44c0a9/65/df/65dfbe02-8ba9-494d-8278-5581e6656c2c_preview.jpeg 197527 1791992569.4749126550
825b76a1-fc84-4c59-b234-421cce44c0a9/65/df/65dfbe02-8ba9-494d-8278-5581e6656c2c_thumbnail.webp 5998 1791992569.4529123150
825b76a1-fc84-4c59-b234-421cce44c0a9/66/2a/662ad2bd-7d88-474d-b622-6832c50f7659_preview.jpeg 200815 1791992569.6279150180
825b76a1-fc84-4c59-b234-421cce44c0a9/66/2a/662ad2bd-7d88-474d-b622-6832c50f7659_thumbnail.webp 6072 1791992569.5799142760
825b76a1-fc84-4c59-b234-421cce44c0a9/66/ef/66ef835b-ce48-4915-8114-43145d1f326f_preview.jpeg 209522 1791991426.6203005930
825b76a1-fc84-4c59-b234-421cce44c0a9/66/ef/66ef835b-ce48-4915-8114-43145d1f326f_thumbnail.webp 6840 1791991426.4572984250
825b76a1-fc84-4c59-b234-421cce44c0a9/67/24/67241461-a169-451e-aa0a-7b07e9710435_preview.jpeg 203401 1791991430.9033575530
825b76a1-fc84-4c59-b234-421cce44c0a9/67/24/67241461-a169-451e-aa0a-7b07e9710435_thumbnail.webp 6480 1791991430.7903560500
825b76a1-fc84-4c59-b234-421cce44c0a9/68/b9/68b9b466-198a-45a2-bacd-e013f467277f_preview.jpeg 185795 1791992569.6589154960
825b76a1-fc84-4c59-b234-421cce44c0a9/68/b9/68b9b466-198a-45a2-bacd-e013f467277f_thumbnail.webp 5230 1791992569.6299150480
825b76a1-fc84-4c59-b234-421cce44c0a9/69/43/69438865-a737-4934-a59f-6d8b21d880a3_preview.jpeg 204569 1791991724.4046872720
825b76a1-fc84-4c59-b234-421cce44c0a9/69/43/69438865-a737-4934-a59f-6d8b21d880a3_thumbnail.webp 6318 1791991724.3696868040
825b76a1-fc84-4c59-b234-421cce44c0a9/6a/c7/6ac7ab35-744f-4162-b141-7a12f9e9f184_preview.jpeg 196742 1791992569.8739188160
825b76a1-fc84-4c59-b234-421cce44c0a9/6a/c7/6ac7ab35-744f-4162-b141-7a12f9e9f184_thumbnail.webp 5980 1791992569.8589185850
825b76a1-fc84-4c59-b234-421cce44c0a9/6b/bb/6bbba6d5-2b1c-4c0d-b16b-726e535dad1a_preview.jpeg 193321 1791992570.0159210090
825b76a1-fc84-4c59-b234-421cce44c0a9/6b/bb/6bbba6d5-2b1c-4c0d-b16b-726e535dad1a_thumbnail.webp 5544 1791992570.0059208550
825b76a1-fc84-4c59-b234-421cce44c0a9/6b/f1/6bf10886-3d8e-45a3-93b8-17678ed4e03e_preview.jpeg 195104 1791991723.8806802640
825b76a1-fc84-4c59-b234-421cce44c0a9/6b/f1/6bf10886-3d8e-45a3-93b8-17678ed4e03e_thumbnail.webp 5838 1791991723.8336796350
825b76a1-fc84-4c59-b234-421cce44c0a9/71/17/71176403-4d68-4f1b-8102-1cbe45dff6c7_preview.jpeg 192301 1791991421.0842269690
825b76a1-fc84-4c59-b234-421cce44c0a9/71/17/71176403-4d68-4f1b-8102-1cbe45dff6c7_thumbnail.webp 5590 1791991420.9492251740
825b76a1-fc84-4c59-b234-421cce44c0a9/72/87/728793bb-6278-4062-90b4-a1f51b72643c_preview.jpeg 193544 1791991722.0436556940
825b76a1-fc84-4c59-b234-421cce44c0a9/72/87/728793bb-6278-4062-90b4-a1f51b72643c_thumbnail.webp 5896 1791991722.0116552660
825b76a1-fc84-4c59-b234-421cce44c0a9/72/9e/729ec82a-3fe2-4f98-a79e-a8de3f6bf5f4_preview.jpeg 197443 1791991414.3281371200
825b76a1-fc84-4c59-b234-421cce44c0a9/72/9e/729ec82a-3fe2-4f98-a79e-a8de3f6bf5f4_thumbnail.webp 5630 1791991414.2711363620
825b76a1-fc84-4c59-b234-421cce44c0a9/7a/76/7a76a5df-6489-4206-b366-30960213d79b_preview.jpeg 193479 1791991428.8823306760
825b76a1-fc84-4c59-b234-421cce44c0a9/7a/76/7a76a5df-6489-4206-b366-30960213d79b_thumbnail.webp 5958 1791991428.7983295590
825b76a1-fc84-4c59-b234-421cce44c0a9/7b/11/7b119427-96ea-4964-adbb-7ed6a85f8705_preview.jpeg 202772 1791991724.6886910710
825b76a1-fc84-4c59-b234-421cce44c0a9/7b/11/7b119427-96ea-4964-adbb-7ed6a85f8705_thumbnail.webp 6350 1791991724.6406904290
825b76a1-fc84-4c59-b234-421cce44c0a9/7d/fc/7dfc640d-1c7a-4c29-a580-a01c26350869_preview.jpeg 195430 1791991415.3701509780
825b76a1-fc84-4c59-b234-421cce44c0a9/7d/fc/7dfc640d-1c7a-4c29-a580-a01c26350869_thumbnail.webp 5556 1791991415.3581508180
825b76a1-fc84-4c59-b234-421cce44c0a9/7e/ab/7eab7c85-6e52-47f3-8852-5a9f6fa69308_preview.jpeg 206843 1791991723.1826709280
825b76a1-fc84-4c59-b234-421cce44c0a9/7e/ab/7eab7c85-6e52-47f3-8852-5a9f6fa69308_thumbnail.webp 6490 1791991723.0626693230
825b76a1-fc84-4c59-b234-421cce44c0a9/84/da/84da1b63-700d-46b1-8337-76949eb05de2_preview.jpeg 194097 1791991717.9686011920
825b76a1-fc84-4c59-b234-421cce44c0a9/84/da/84da1b63-700d-46b1-8337-76949eb05de2_thumbnail.webp 5714 1791991717.9386007900
825b76a1-fc84-4c59-b234-421cce44c0a9/86/f2/86f2b83c-7c39-437c-9f30-5e4ac3fc12d2_preview.jpeg 206399 1791991417.2401758470
825b76a1-fc84-4c59-b234-421cce44c0a9/86/f2/86f2b83c-7c39-437c-9f30-5e4ac3fc12d2_thumbnail.webp 6696 1791991417.1101741180
825b76a1-fc84-4c59-b234-421cce44c0a9/87/56/8756a77c-4d79-40fc-9c94-337fafe40f4f_preview.jpeg 193687 1791991416.6381678410
825b76a1-fc84-4c59-b234-421cce44c0a9/87/56/8756a77c-4d79-40fc-9c94-337fafe40f4f_thumbnail.webp 5704 1791991416.5231663120
825b76a1-fc84-4c59-b234-421cce44c0a9/87/94/8794611e-f669-4c38-855d-4ac40ca7b1c1_preview.jpeg 195136 1791991717.0515889270
825b76a1-fc84-4c59-b234-421cce44c0a9/87/94/8794611e-f669-4c38-855d-4ac40ca7b1c1_thumbnail.webp 5732 1791991716.9955881780
825b76a1-fc84-4c59-b234-421cce44c0a9/89/03/89033082-74a3-498e-910b-bd53f7e86317_preview.jpeg 201264 1791991719.8226259890
825b76a1-fc84-4c59-b234-421cce44c0a9/89/03/89033082-74a3-498e-910b-bd53f7e86317_thumbnail.webp 6100 1791991719.7796254130
825b76a1-fc84-4c59-b234-421cce44c0a9/89/d6/89d67bd8-5b3b-438b-8460-f56151dcd503_preview.jpeg 201851 1791991430.3303499330
825b76a1-fc84-4c59-b234-421cce44c0a9/89/d6/89d67bd8-5b3b-438b-8460-f56151dcd503_thumbnail.webp 5980 1791991430.2583489750
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/3c/8c3ccedb-525b-4123-b24e-fc67089455fe_preview.jpeg 203236 1791991415.9791590770
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/3c/8c3ccedb-525b-4123-b24e-fc67089455fe_thumbnail.webp 6236 1791991415.9391585450
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/a2/8ca2df4c-4514-4337-b755-48535ec36611_preview.jpeg 191994 1791991421.5712334460
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/a2/8ca2df4c-4514-4337-b755-48535ec36611_thumbnail.webp 5604 1791991421.5152327010
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/ae/8cae32ac-d325-4e3d-b8ce-9e9586d92e2b_preview.jpeg 199550 1791991417.8831843990
825b76a1-fc84-4c59-b234-421cce44c0a9/8c/ae/8cae32ac-d325-4e3d-b8ce-9e9586d92e2b_thumbnail.webp 5906 1791991417.8081834010
825b76a1-fc84-4c59-b234-421cce44c0a9/8e/6e/8e6eff3d-8f0c-4bd5-983a-627b038a92d3_preview.jpeg 204198 1791991415.9161582390
825b76a1-fc84-4c59-b234-421cce44c0a9/8e/6e/8e6eff3d-8f0c-4bd5-983a-627b038a92d3_thumbnail.webp 6168 1791991415.8131568690
825b76a1-fc84-4c59-b234-421cce44c0a9/92/20/92207fdc-7162-446f-b764-c66081ed8873_preview.jpeg 198623 1791991721.1516437640
825b76a1-fc84-4c59-b234-421cce44c0a9/92/20/92207fdc-7162-446f-b764-c66081ed8873_thumbnail.webp 5770 1791991721.0756427470
825b76a1-fc84-4c59-b234-421cce44c0a9/93/15/9315100e-17b4-4d53-873c-8fd40cd4a348_preview.jpeg 192579 1791991422.0242394710
825b76a1-fc84-4c59-b234-421cce44c0a9/93/15/9315100e-17b4-4d53-873c-8fd40cd4a348_thumbnail.webp 5708 1791991421.9682387260
825b76a1-fc84-4c59-b234-421cce44c0a9/93/ed/93ed762f-256a-4c85-b29c-776e538da327_preview.jpeg 210257 1791991430.3263498800
825b76a1-fc84-4c59-b234-421cce44c0a9/93/ed/93ed762f-256a-4c85-b29c-776e538da327_thumbnail.webp 6812 1791991430.2603490020
825b76a1-fc84-4c59-b234-421cce44c0a9/95/80/95803fbd-ab39-498b-9e6c-b7066d5334a9_preview.jpeg 198427 1791991413.0361199380
825b76a1-fc84-4c59-b234-421cce44c0a9/95/80/95803fbd-ab39-498b-9e6c-b7066d5334a9_thumbnail.webp 5964 1791991413.0351199240
825b76a1-fc84-4c59-b234-421cce44c0a9/9b/b9/9bb94a8a-8ed6-4f93-b5a7-d369900370b0_preview.jpeg 204622 1791991414.1731350590
825b76a1-fc84-4c59-b234-421cce44c0a9/9b/b9/9bb94a8a-8ed6-4f93-b5a7-d369900370b0_thumbnail.webp 6022 1791991414.1481347260
825b76a1-fc84-4c59-b234-421cce44c0a9/9c/34/9c343b7b-5472-45fe-9ed8-f270452b74ba_preview.jpeg 193720 1791991421.0342263040
825b76a1-fc84-4c59-b234-421cce44c0a9/9c/34/9c343b7b-5472-45fe-9ed8-f270452b74ba_thumbnail.webp 5642 1791991420.9932257590
825b76a1-fc84-4c59-b234-421cce44c0a9/9e/b8/9eb8deee-56e0-43b0-9ec0-0aa0757120bc_preview.jpeg 190163 1791992570.0379213490
825b76a1-fc84-4c59-b234-421cce44c0a9/9e/b8/9eb8deee-56e0-43b0-9ec0-0aa0757120bc_thumbnail.webp 5392 1791992570.0149209940
825b76a1-fc84-4c59-b234-421cce44c0a9/9f/f5/9ff5df2a-c518-410d-987b-441ae1c980d4_preview.jpeg 203683 1791991413.0351199240
825b76a1-fc84-4c59-b234-421cce44c0a9/9f/f5/9ff5df2a-c518-410d-987b-441ae1c980d4_thumbnail.webp 6398 1791991413.0191197120
825b76a1-fc84-4c59-b234-421cce44c0a9/a1/aa/a1aa8a4e-e434-425e-befb-e9482a6519f9_preview.jpeg 206801 1791991720.4816348030
825b76a1-fc84-4c59-b234-421cce44c0a9/a1/aa/a1aa8a4e-e434-425e-befb-e9482a6519f9_thumbnail.webp 6074 1791991720.4116338660
825b76a1-fc84-4c59-b234-421cce44c0a9/a2/9c/a29c241d-2464-45c3-a225-a72d268ca7ef_preview.jpeg 199210 1791992570.2589247620
825b76a1-fc84-4c59-b234-421cce44c0a9/a2/9c/a29c241d-2464-45c3-a225-a72d268ca7ef_thumbnail.webp 5884 1791992570.2399244680
825b76a1-fc84-4c59-b234-421cce44c0a9/a3/8a/a38a32bd-a351-4f37-98e0-e063fb7aaea8_preview.jpeg 199798 1791991724.7486918730
825b76a1-fc84-4c59-b234-421cce44c0a9/a3/8a/a38a32bd-a351-4f37-98e0-e063fb7aaea8_thumbnail.webp 6248 1791991724.6986912050
825b76a1-fc84-4c59-b234-421cce44c0a9/ac/22/ac2264f5-8c82-4908-bd63-40965c444a2c_preview.jpeg 191876 1791992570.4009269540
825b76a1-fc84-4c59-b234-421cce44c0a9/ac/22/ac2264f5-8c82-4908-bd63-40965c444a2c_thumbnail.webp 5480 1791992570.3629263680
825b76a1-fc84-4c59-b234-421cce44c0a9/ac/ae/acae67d3-fb7e-471b-8e15-d0f66b9a975d_preview.jpeg 208183 1791991422.1152406800
825b76a1-fc84-4c59-b234-421cce44c0a9/ac/ae/acae67d3-fb7e-471b-8e15-d0f66b9a975d_thumbnail.webp 6528 1791991422.0822402420
825b76a1-fc84-4c59-b234-421cce44c0a9/ad/27/ad2769c9-502a-4c02-82f4-f47bf160a97a_preview.jpeg 194219 1791992570.4359274950
825b76a1-fc84-4c59-b234-421cce44c0a9/ad/27/ad2769c9-502a-4c02-82f4-f47bf160a97a_thumbnail.webp 5996 1791992570.3939268460
825b76a1-fc84-4c59-b234-421cce44c0a9/ad/64/ad643833-b9de-4037-8c68-5ceadd0328ba_preview.jpeg 198227 1791992570.7009315870
825b76a1-fc84-4c59-b234-421cce44c0a9/ad/64/ad643833-b9de-4037-8c68-5ceadd0328ba_thumbnail.webp 5680 1791992570.6529308460
825b76a1-fc84-4c59-b234-421cce44c0a9/ad/97/ad976601-eec8-4980-8705-f43fcd744fb3_preview.jpeg 206759 1791992570.8269335330
825b76a1-fc84-4c59-b234-421cce44c0a9/ad/97/ad976601-eec8-4980-8705-f43fcd744fb3_thumbnail.webp 6396 1791992570.7959330540
825b76a1-fc84-4c59-b234-421cce44c0a9/ae/fe/aefe8cb5-27de-4980-9791-da6cfdc72d4f_preview.jpeg 194665 1791991412.9911193390
825b76a1-fc84-4c59-b234-421cce44c0a9/ae/fe/aefe8cb5-27de-4980-9791-da6cfdc72d4f_thumbnail.webp 5858 1791991413.0031194990
825b76a1-fc84-4c59-b234-421cce44c0a9/b2/82/b2828416-455b-4938-a999-7d9727856a29_preview.jpeg 193186 1791991414.8191436500
825b76a1-fc84-4c59-b234-421cce44c0a9/b2/82/b2828416-455b-4938-a999-7d9727856a29_thumbnail.webp 6038 1791991414.7421426260
825b76a1-fc84-4c59-b234-421cce44c0a9/b3/4c/b34c4648-891c-4a99-a54c-7302aae74161_preview.jpeg 199228 1791991414.2861365620
825b76a1-fc84-4c59-b234-421cce44c0a9/b3/4c/b34c4648-891c-4a99-a54c-7302aae74161_thumbnail.webp 5720 1791991414.2081355240
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/09/b409ad65-b113-436e-a6cc-7ed164c2d15d_preview.jpeg 192278 1791991430.7623556780
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/09/b409ad65-b113-436e-a6cc-7ed164c2d15d_thumbnail.webp 6008 1791991430.6953547870
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/72/b472749f-506e-44cf-97a6-2ab96582723d_preview.jpeg 191765 1791992570.8349336560
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/72/b472749f-506e-44cf-97a6-2ab96582723d_thumbnail.webp 5504 1791992570.8189334090
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/b4/b4b41568-fe39-4f8d-b6dc-4e2f471698af_preview.jpeg 205580 1791992571.1259381500
825b76a1-fc84-4c59-b234-421cce44c0a9/b4/b4/b4b41568-fe39-4f8d-b6dc-4e2f471698af_thumbnail.webp 6446 1791992571.1059378410
825b76a1-fc84-4c59-b234-421cce44c0a9/b5/3e/b53e4066-32b1-4de9-ae25-cb23d3f802bd_preview.jpeg 196419 1791991429.4603383630
825b76a1-fc84-4c59-b234-421cce44c0a9/b5/3e/b53e4066-32b1-4de9-ae25-cb23d3f802bd_thumbnail.webp 5698 1791991429.3593370200
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/2a/b92a9145-b3c2-41df-aa4b-084fca4437cc_preview.jpeg 195520 1791991428.1783213130
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/2a/b92a9145-b3c2-41df-aa4b-084fca4437cc_thumbnail.webp 5750 1791991428.1663211540
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/31/b9311695-1110-4b22-a1d0-a56814e5e6af_preview.jpeg 201605 1791992571.2579401880
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/31/b9311695-1110-4b22-a1d0-a56814e5e6af_thumbnail.webp 6078 1791992571.2299397560
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/9f/b99fc392-865f-44a0-866f-7471d036148b_preview.jpeg 201464 1791991414.8051434640
825b76a1-fc84-4c59-b234-421cce44c0a9/b9/9f/b99fc392-865f-44a0-866f-7471d036148b_thumbnail.webp 6246 1791991414.7591428520
825b76a1-fc84-4c59-b234-421cce44c0a9/ba/17/ba17c9bd-731f-4e3e-b2cc-380c2a770a25_preview.jpeg 205311 1791991718.4356074380
825b76a1-fc84-4c59-b234-421cce44c0a9/ba/17/ba17c9bd-731f-4e3e-b2cc-380c2a770a25_thumbnail.webp 6288 1791991718.4126071300
825b76a1-fc84-4c59-b234-421cce44c0a9/ba/74/ba74bf8d-5762-4d59-981d-72093b9bf81c_preview.jpeg 193482 1791991720.4486343610
825b76a1-fc84-4c59-b234-421cce44c0a9/ba/74/ba74bf8d-5762-4d59-981d-72093b9bf81c_thumbnail.webp 5366 1791991720.3436329570
825b76a1-fc84-4c59-b234-421cce44c0a9/c4/bb/c4bbb610-1543-48a1-ba96-fd1a66724073_preview.jpeg 198863 1791991721.7746520960
825b76a1-fc84-4c59-b234-421cce44c0a9/c4/bb/c4bbb610-1543-48a1-ba96-fd1a66724073_thumbnail.webp 5970 1791991721.7126512670
825b76a1-fc84-4c59-b234-421cce44c0a9/c5/b5/c5b577b7-d7a1-48ac-b431-7af16740b96f_preview.jpeg 189416 1791992571.3039408990
825b76a1-fc84-4c59-b234-421cce44c0a9/c5/b5/c5b577b7-d7a1-48ac-b431-7af16740b96f_thumbnail.webp 5470 1791992571.2619402500
825b76a1-fc84-4c59-b234-421cce44c0a9/c6/b6/c6b61764-8f42-4fa2-9f19-c652f23e2c96_preview.jpeg 196005 1791991418.9941991740
825b76a1-fc84-4c59-b234-421cce44c0a9/c6/b6/c6b61764-8f42-4fa2-9f19-c652f23e2c96_thumbnail.webp 5770 1791991418.8801976580
825b76a1-fc84-4c59-b234-421cce44c0a9/c7/f2/c7f23688-c34e-4588-8b13-b42389ea1167_preview.jpeg 196297 1791991721.4086472010
825b76a1-fc84-4c59-b234-421cce44c0a9/c7/f2/c7f23688-c34e-4588-8b13-b42389ea1167_thumbnail.webp 5734 1791991721.3616465720
825b76a1-fc84-4c59-b234-421cce44c0a9/ca/05/ca056d96-81be-4669-a1b0-d944bd78ad01_preview.jpeg 201353 1791992571.5439446050
825b76a1-fc84-4c59-b234-421cce44c0a9/ca/05/ca056d96-81be-4669-a1b0-d944bd78ad01_thumbnail.webp 6198 1791992571.5109440950
825b76a1-fc84-4c59-b234-421cce44c0a9/cc/85/cc85a874-3083-4dd2-9794-91a451bb3ed6_preview.jpeg 212656 1791991747.7579996160
825b76a1-fc84-4c59-b234-421cce44c0a9/cc/85/cc85a874-3083-4dd2-9794-91a451bb3ed6_thumbnail.webp 6954 1791991747.6739984930
825b76a1-fc84-4c59-b234-421cce44c0a9/d0/71/d071fe85-9265-4c72-8749-afa92857835f_preview.jpeg 191813 1791991723.9616813470
825b76a1-fc84-4c59-b234-421cce44c0a9/d0/71/d071fe85-9265-4c72-8749-afa92857835f_thumbnail.webp 5736 1791991723.8856803310
825b76a1-fc84-4c59-b234-421cce44c0a9/d0/e8/d0e815c3-fa1f-48d0-a3a5-2fd3756e7643_preview.jpeg 200594 1791991718.9476142850
825b76a1-fc84-4c59-b234-421cce44c0a9/d0/e8/d0e815c3-fa1f-48d0-a3a5-2fd3756e7643_thumbnail.webp 6298 1791991718.9166138710
825b76a1-fc84-4c59-b234-421cce44c0a9/d2/54/d2545012-7417-44a6-aa86-344968b93dac_preview.jpeg 200775 1791992571.6759466430
825b76a1-fc84-4c59-b234-421cce44c0a9/d2/54/d2545012-7417-44a6-aa86-344968b93dac_thumbnail.webp 6226 1791992571.6579463650
825b76a1-fc84-4c59-b234-421cce44c0a9/d4/8b/d48b0f9b-0f56-4463-9cf4-0e56eb0b24e8_preview.jpeg 203061 1791992571.7239473840
825b76a1-fc84-4c59-b234-421cce44c0a9/d4/8b/d48b0f9b-0f56-4463-9cf4-0e56eb0b24e8_thumbnail.webp 6230 1791992571.7009470290
825b76a1-fc84-4c59-b234-421cce44c0a9/d5/94/d594f637-1ab4-4f29-9ae8-6b35077aa1e7_preview.jpeg 196099 1791992571.9619510600
825b76a1-fc84-4c59-b234-421cce44c0a9/d5/94/d594f637-1ab4-4f29-9ae8-6b35077aa1e7_thumbnail.webp 6020 1791992571.9269505190
825b76a1-fc84-4c59-b234-421cce44c0a9/d7/ac/d7ac4f26-b41a-47bf-b1e6-fe2e438356a1_preview.jpeg 191533 1791991426.6793013770
825b76a1-fc84-4c59-b234-421cce44c0a9/d7/ac/d7ac4f26-b41a-47bf-b1e6-fe2e438356a1_thumbnail.webp 5678 1791991426.6023003530
825b76a1-fc84-4c59-b234-421cce44c0a9/d8/b7/d8b7a47b-7f66-4eb1-a032-25359a27befd_preview.jpeg 198101 1791991722.1656573260
825b76a1-fc84-4c59-b234-421cce44c0a9/d8/b7/d8b7a47b-7f66-4eb1-a032-25359a27befd_thumbnail.webp 6090 1791991722.0796561760
825b76a1-fc84-4c59-b234-421cce44c0a9/da/be/dabe182f-035c-4fb4-a61b-b6912e1928f3_preview.jpeg 204726 1791991427.9863187600
825b76a1-fc84-4c59-b234-421cce44c0a9/da/be/dabe182f-035c-4fb4-a61b-b6912e1928f3_thumbnail.webp 6144 1791991427.9163178290
825b76a1-fc84-4c59-b234-421cce44c0a9/de/45/de4586b9-f9a1-4e39-a59b-b4e6220ed7d0_preview.jpeg 197890 1791992572.0539524800
825b76a1-fc84-4c59-b234-421cce44c0a9/de/45/de4586b9-f9a1-4e39-a59b-b4e6220ed7d0_thumbnail.webp 5760 1791992572.0329521560
825b76a1-fc84-4c59-b234-421cce44c0a9/e3/80/e3804e30-afe9-4527-8b37-46e299535de1_preview.jpeg 190925 1791991426.6373008190
825b76a1-fc84-4c59-b234-421cce44c0a9/e3/80/e3804e30-afe9-4527-8b37-46e299535de1_thumbnail.webp 5790 1791991426.6103004600
825b76a1-fc84-4c59-b234-421cce44c0a9/e3/aa/e3aa84da-d537-4b83-b263-dafdf72f4064_preview.jpeg 213154 1791991723.0746694840
825b76a1-fc84-4c59-b234-421cce44c0a9/e3/aa/e3aa84da-d537-4b83-b263-dafdf72f4064_thumbnail.webp 6832 1791991722.7646653380
825b76a1-fc84-4c59-b234-421cce44c0a9/e4/35/e4355f0e-8d52-4785-a4ff-1d3eb3fb93de_preview.jpeg 202211 1791991415.9281583990
825b76a1-fc84-4c59-b234-421cce44c0a9/e4/35/e4355f0e-8d52-4785-a4ff-1d3eb3fb93de_thumbnail.webp 6120 1791991415.8801577600
825b76a1-fc84-4c59-b234-421cce44c0a9/e5/d8/e5d85a99-e266-4a5c-a4c7-12f16c782725_preview.jpeg 203824 1791992572.0929530830
825b76a1-fc84-4c59-b234-421cce44c0a9/e5/d8/e5d85a99-e266-4a5c-a4c7-12f16c782725_thumbnail.webp 6268 1791992572.0739527890
825b76a1-fc84-4c59-b234-421cce44c0a9/e9/18/e9186996-bc28-4afc-b29b-22109af890fe_preview.jpeg 203204 1791991719.7326247850
825b76a1-fc84-4c59-b234-421cce44c0a9/e9/18/e9186996-bc28-4afc-b29b-22109af890fe_thumbnail.webp 6248 1791991719.7476249860
825b76a1-fc84-4c59-b234-421cce44c0a9/eb/9e/eb9eddbe-5167-4d9e-9912-afd302697cb8_preview.jpeg 200453 1791991747.2309925680
825b76a1-fc84-4c59-b234-421cce44c0a9/eb/9e/eb9eddbe-5167-4d9e-9912-afd302697cb8_thumbnail.webp 6314 1791991747.1539915380
825b76a1-fc84-4c59-b234-421cce44c0a9/ec/f8/ecf8b374-86c9-421b-8ae5-4b6be16e18f7_preview.jpeg 188370 1791991747.2299925540
825b76a1-fc84-4c59-b234-421cce44c0a9/ec/f8/ecf8b374-86c9-421b-8ae5-4b6be16e18f7_thumbnail.webp 5322 1791991747.1829919260
825b76a1-fc84-4c59-b234-421cce44c0a9/f1/45/f145567a-e193-4ee6-a7d1-b00e48420799_preview.jpeg 196313 1791991427.4633118040
825b76a1-fc84-4c59-b234-421cce44c0a9/f1/45/f145567a-e193-4ee6-a7d1-b00e48420799_thumbnail.webp 5936 1791991427.3413101820
825b76a1-fc84-4c59-b234-421cce44c0a9/f2/5a/f25ad6bf-341e-454d-987d-002f85c0064d_preview.jpeg 192734 1791991416.5481666440
825b76a1-fc84-4c59-b234-421cce44c0a9/f2/5a/f25ad6bf-341e-454d-987d-002f85c0064d_thumbnail.webp 5444 1791991416.5401665380
825b76a1-fc84-4c59-b234-421cce44c0a9/f4/1d/f41d30a5-ab5b-4fcd-97ca-96d085bbf31a_preview.jpeg 196840 1791992572.3229566340
825b76a1-fc84-4c59-b234-421cce44c0a9/f4/1d/f41d30a5-ab5b-4fcd-97ca-96d085bbf31a_thumbnail.webp 5896 1791992572.2949562020
825b76a1-fc84-4c59-b234-421cce44c0a9/f6/9f/f69f39e3-bb6c-47c1-941e-8fcdf369384a_preview.jpeg 197577 1791991747.1729917920
825b76a1-fc84-4c59-b234-421cce44c0a9/f6/9f/f69f39e3-bb6c-47c1-941e-8fcdf369384a_thumbnail.webp 6028 1791991747.0389900000
825b76a1-fc84-4c59-b234-421cce44c0a9/fc/cd/fccda6ce-f5cf-4ce9-83f5-814c4292744c_preview.jpeg 192674 1791992572.3779574840
825b76a1-fc84-4c59-b234-421cce44c0a9/fc/cd/fccda6ce-f5cf-4ce9-83f5-814c4292744c_thumbnail.webp 5612 1791992572.3469570050
@@ -55,3 +55,40 @@ here the household password was used only to look at results as the household; n
| Threat | none new: the controller already has the docker socket and the database password | a stored key the box must guard |
**If you do nothing:** the fallback A6 — no automatic repair; a note tells the household to run „thumbnails: all".
**Operator answer (2026-10-14, in chat): Option 1 — Immich's own queue.** Recorded as `09` §3 decision 236 and in R-1007.
## Part C — the build
- **Catalog** `6a1bb04`: Immich's `after_unclean_boot` block — the two scripts tested on 9202 (`C/scripts-on-9202.txt`:
4 broken assets of two users repaired in 2.4 s, 0 of 53 controls rewritten; the deleted original reported with its name
and date), byte-equal in the template. No `min_controller` (an older controller ignores the block).
- **Controller** v0.311.0 (`8d862e4`, `3b85a0c`): `internal/aftercrash`, `internal/stacks/after_unclean_boot.go`, the
app page's lost-files note, `app_repaired_after_crash`. 15 guards red-proofed. A security review of `8d862e4` found that
a failing command's output could reach the log and the event's `problem`; fixed before the build (`3b85a0c`).
- **Hub** v0.150.0 (`822d0393`): allow-list + operator-only + per-app cooldown + the counts line; 3 guards red-proofed.
Deployed with the operator present (ArgoCD, the hub Deployment only; Synced/Healthy; image 0.150.0 ready).
## Part D — the live proof on demo-hp guest 9201 (`D/`)
Controller 0.311.0 on 9201 by demo-hp's own floor (operator, MinAgent 0.155.0; hub „managed floor SERVED … from
declared"). Immich deployed through the product onto `hdd_1`; the admin through the setup gate as a household (a
stranger's sign-up 401, the household's 201). Uploads 1–60 settled (121 thumbnail files, 0 empty) and were copied off as
the CONTROLS before the cut; uploads 61–200 ran into the cut.
| Step | Result |
|---|---|
| fences | clear 15:25:00 (demo-hp and Tester 1: no vzdump, PBS client, OS step, restic, lock) |
| the cut | 15:25:04.680 off → 15:25:14.753 on (plug countdown); about 135 uploads done; SSH back 15:25:57 |
| crash verdict | controller 15:28:16 „boot grace 15m0s: the host's last boot (15:25:38Z) followed an UNCLEAN stop" |
| damage (read only, 15:38) | 273 thumbnail files, **82 empty: 41 photos with both thumbnail and preview empty** |
| the run | 15:42:46 „1 app(s) with an after_unclean_boot block" → 15:42:56 „immich: found 41 empty file(s), repaired 41, still broken 0, lost 0 (checked=true)" — 10.2 s (`app.yaml` 10,172 ms) |
| after | **0 empty files**, 273 files; **the 120 control photo files untouched** (size + mtime; the 121st, `.immich`, is Immich's own marker, rewritten at its start) |
| the operator | hub 17:42:56 local: `app_repaired_after_crash` (info) — recorded, not mailed (all repaired) |
| the household | the app page (200) shows no lost-files card — nothing was lost. **The lost-photo note was not exercised live** (pinned by unit tests and the 9202 run) |
| repeat cut | not needed (the first cut left 41 broken) |
| teardown | Immich removed through the product; no container, volume, image or data folder; `/root/sizing` and the empty `/mnt/sizing-bench` skeleton (0 files, this morning's bench) removed |
Findings: the event's and the log's duration read 0 (R-1020); the hub build script builds a stale checkout when its pull
fails (R-1021). Not this session: Plex was removed on Tester 1 at 15:41 and its controller restarted at 15:42 — another
session's work; this session's cut also restarted Tester 1 (VM 341 on the HP), and that session was told.
+6
View File
@@ -26,6 +26,12 @@
---
## 2026-10-14 — Immich repairs its broken photos after a power cut
| Row | What | Closed | Evidence |
|---|---|---|---|
| **R-1007** | **After a power cut Immich shows photos as done that are broken, and nothing repairs them** (P3) | CLOSED 2026-10-14 — decision 236 (operator): the box asks Immich through Immich's OWN job queue (no key into the household's account; every user's photos), for the asset ids of the zero-byte thumbnail/preview files only, then reads Immich's own missing-files report with a read-only session. Controller v0.311.0 (`after_unclean_boot`, once per start after an UNCLEAN boot, after the 15-min crash grace), hub v0.150.0 (`app_repaired_after_crash`, operator-only, counts only), catalog Immich block (proven on `immich-server:v3.2.4` only). **Proven live on demo-hp 9201:** a real cut mid-upload (15:25:04 UTC) left 41 photos with empty files; 41 of 41 repaired in 10 s; 120 control files untouched; 0 originals lost, so the household's lost-photo note was not exercised live (unit- and 9202-tested). **Reasoning kept:** a household-made Immich API key reaches only the admin's photos — a family member's photo was refused (measured); Immich's nightly „missing thumbnails" reads only its database, never the disk | controller `8d862e4` + `3b85a0c`, hub `822d0393`, catalog `6a1bb04`; `audits/immich-repair-2026-10-14/` |
## 2026-10-14 — the estimator takes the second machine's figures, raise only
| Row | What | Closed | Evidence |
+5 -4
View File
@@ -124,7 +124,7 @@ stopping line that lies.
| **R-494** | Install & onboarding | P4 | **NARROWED 2026-09-14 by operator ruling → [P3-LOW] the hub COULD create the tunnel at customer creation, for a domain already on Cloudflare. Not blocking: every customer has their own domain and the operator creates the tunnel per day-0 A.1 (`architecture/01-topology-and-trust.md`).** *Original finding, kept:* **[P1-HIGH] A new customer's dashboard has NO reachable address unless the operator hand-makes a Cloudflare tunnel — the link in the setup-code mail is dead.** MEASURED 2026-09-14 on a fresh install from the public ISO (drill intervention **I1**): the claim mail points at `https://felhom.drill0242.felhom.eu`; that name has **no A and no AAAA** record (`dig @1.1.1.1`, control `felhom.enkisfelhom.hu` resolves); the hub has **no tunnel- or DNS-creation code** (`hub/internal/cloudflare/` holds only geo-rule removal; `cf_tunnel_token` is a pasted, optional form field, `configs.go:1478`) — day-0 runbook A.1 makes it a manual Cloudflare-dashboard step that nothing on the customer-create page asks for; the box's own split-horizon resolver on the appliance LAN IP answered `google.com` but not the dashboard name at 13:27:39Z; the agent applied the record at **13:27:44Z** (`lanresolver: applied split-horizon record … ip=192.168.0.158`, 3 m 46 s after the controller started), so the box CAN answer the name — **but only to a device that uses the box as its DNS server, and no document, screen or mail tells a household to do that**; the router and the installer-offered DNS answer nothing. The page was reachable only at the guest's LAN address with the name forced (`curl --resolve …:443:192.168.0.158`). **A volunteer could not have done that.** **What it needs:** an operator ruling — the hub creates the tunnel and DNS at customer creation, or the product gives a household a LAN address that works with no DNS change. | **READY — rank P3-LOW; owner: CC** **Re-ranked 2026-10-03: P3→P4: operator-side automation; the operator creates the tunnel by hand per the day-0 runbook.** | — | — | CC |
| **R-504** | Install & onboarding | P4 | **[P3-LOW] `iso.felhom.eu` cannot show an index page on its own — its root returns 404, and the download page lives on the website instead.** MEASURED 2026-09-14: `https://iso.felhom.eu/` and `/index.html` → 404; only named objects answer. The host is an R2 bucket behind a custom domain; whether R2 would serve an uploaded `index.html` at `/` was **not measured** (uploading anything to the public bucket is a publication). The ISO v1.27.0 task puts the Hungarian download page at `felhom.eu/letoltes` (published with the ISO, after the operator's yes). **Remaining:** a redirect from `iso.felhom.eu/` to that page needs a Cloudflare rule the session has no credential for. | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator (Cloudflare rule)** **Re-ranked 2026-10-03: P3→P4: households are sent to the website's download page; the bare address is cosmetic.** | — | — | operator |
## Apps & catalog — 13 rows (P2 2, P3 6, P4 5)
## Apps & catalog — 12 rows (P2 2, P3 5, P4 5)
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|---|---|---|---|---|---|---|---|
@@ -139,7 +139,6 @@ stopping line that lies.
| **R-707** | Apps & catalog | P4 | **[P2] 37 apps still start with a login a stranger can take (`09` §3 decision 45).** Audit of all 53 apps: `app-catalog-felhom.eu/FIRST-ADMIN.md` (class, fix route, status, measured or read). Open: **3 hard-coded defaults** — calibre-web (`admin / admin123`, measured working on demo-hp and 9202; its own `cps.py -s` route needs a generated password WITH a special character — our generator is letters+digits, a controller change), mealie (`changeme@example.com / MyPassword`), wger (`admin / adminadmin`); **34 open first-run screens** (the first visitor creates the admin: actualbudget, adventurelog, audiobookshelf, calcom, docmost, emby, ghost, gitea, gramps-web, home-assistant, homebox, immich, jellyfin, komga, n8n, navidrome, opengist, outline, papra, plant-it, radarr, rallly, recipe-importer, romm, seerr, sonarr, sparkyfitness, tandoor, termix, uptime-kuma, vikunja, wanderer, wishlist, zipline). **Stale notes:** romm's `default_creds` `admin / admin` answers 401 on demo-hp (like a wrong password) — the page now warns with a login that does not exist; zipline's looks stale too. **Measured on demo-hp 2026-09-28 (read-only):** bookstack's default still logs in on the INSTALLED app (the fix is for new installs; the page now warns). Each fix: route (a) env or (b) the app's own CLI/API via `after_install:`, proven on 9202 with the default failing and the generated password working; route (c) a page sentence. Several sessions (operator, 2026-09-28). **2026-09-29 (controller v0.280.0, catalog `d0e7e2e`):** every class-3 app fixed — mealie, wger, calibre-web by `after_install` (calibre-web with the new `password:24:special`), proven on 9202 fresh installs (`audits/login-gate-2026-09-29/D/`); the setup gate (decision 46, spike PASSED) built and live on immich, n8n, audiobookshelf (probes measured) and uptime-kuma (button) (`…/C/`); romm's and zipline's stale notes removed. **Left: 30 class-4 apps** — gate each (probe measured on 9202 where one exists — 11 upstream candidates listed in `…/B/B-VERDICT.md` §3; the button otherwise). **2026-09-29 afternoon (controller v0.281.0, catalog `6faf432`):** 28 more class-4 apps gated — 32 of 34 — each proven on 9202 (`audits/gate-rollout-2026-09-29/`B): stranger → gate page / 401, household reached the first-setup screen, the gate opened (9 by a measured probe, the rest by the press), the app answered after. seerr, outline, rallly: gated, their opening needs a media server / e-mail (not proven). **Left:** wanderer (R-714); plant-it is not installable. | **NARROWED** (2026-10-03 triage: the row's verdict was finished, but it names open work no other row carries — seerr, outline and rallly are gated, but the gate OPENING is not proven (needs a media server / e-mail)) — **CLOSED — 2026-09-29 (the rest → R-714)** | — | — | CC |
| **R-905** | Apps & catalog | P4 | **wger's collected style files (283 MB) go into every wger backup, though the app rebuilds them at every start.** Since R-762's fix (`DJANGO_DEBUG=False` + `collectstatic`, catalog `cf1ed43`) the static files sit in a named volume that the backup legs copy like data (measured 283 MB, `audits/design-build-2026-10-06/`); `collectstatic` regenerates them, so they are rebuildable bytes in every Tier-1 unit, Tier-2 copy and off-site snapshot. wger is `lifecycle: hidden` and no box runs it (hub read 2026-10-08). Options to weigh: a non-backed-up volume class for regenerable data, or an anonymous volume. Found by the R-762 helpers 2026-10-08. | **OPEN — needs a design before wger is shown** | — | Design the „regenerable volume" exclusion (catalog + controller backup legs) | CC |
| **R-995** | Apps & catalog | P4 | **Removing an app through the product can leave unnamed Docker volumes and an empty import folder behind.** MEASURED 2026-10-13 on demo-felhom after 61 removals (`documentation/audits/sizing-2026-10-13/METHOD.md` „Teardown”, `evidence/leftover-volumes-after-bench.txt`): 8 unnamed volumes (4–72 KB; immich 1, romm 2, privatebin 3, onlyoffice 2 — volumes the images declare themselves) and `userdata/import/{paperless,calibre,grimmory}` (empty, created by the deploy). The removal answered 200 and its own leftover check was clean, because it looks only at labelled volumes. No data risk; disk and tidiness only. Removed by name on the bench. | **READY** — filed 2026-10-13 | — | Make the removal account for the containers' unnamed volumes (and an empty import folder it created), with a test that deploys an image that declares a VOLUME | CC |
| **R-1007** | Apps & catalog | P3 | **After a power cut Immich shows photos as done that are broken, and nothing repairs them: of 101 photos uploaded in the last ~30 s before the cut, 81 kept their original but got an EMPTY thumbnail and preview (162 zero-byte files), and 1 — answered „201 Created" 0.3 s before the cut — has no original at all.** Immich's job queues are empty after the start, so it never redoes them (`audits/night-power-2026-10-13/` R2, `immich-check.txt`). Same ext4 effect on a plain 40-byte file. Other apps may do the same with files written just before a cut. | **OPEN** — 2026-10-14 spike (`audits/power-cut-fixes-2026-10-14/README.md` F, Immich v3.2.4): „thumbnails: missing" does not fix a zero-byte thumbnail (nor after deleting it — Immich decides from its database); „thumbnails: all" (force) fixes them; `integrity-missing-files` (`/api/admin/integrity/report?type=missing_file`) finds a lost original; nothing restores one but a backup. **Operator ruling 2026-10-14: fix only the broken photos** — after an unclean boot, find the photos with an empty thumbnail or preview, rebuild only those, run the missing-files integrity check, and tell the operator about lost originals. No „thumbnails: all". **Decision 236 (operator 2026-10-14, after spike A `audits/immich-repair-2026-10-14/`): the box asks Immich through Immich's own job queue (no key; every user's photos; the lost-file report read from the database); the catalog pins the proven Immich versions.** 2026-10-14 B2 spike (`audits/power-cut-fixes-2026-10-14/README.md` B2): **yes** — `POST /api/assets/jobs {assetIds, name: regenerate-thumbnail}` rebuilt exactly the 10 broken assets (1.55 s, 5.3 s CPU) and rewrote none of the other 20; an empty file maps to its asset by the first 36 characters of its name. | — | CC: build per decision 236 — catalog block `after_unclean_boot` (Immich), controller runner after an unclean boot, household note for lost photos, operator-only event; live proof on demo-hp 9201 (`audits/immich-repair-2026-10-14/`) | CC |
| **R-1016** | Apps & catalog | P4 | **qBittorrent's onboarding record names the wrong download folder.** `onboarding/qbittorrent.md` row 2.2 says `${USERDATA_PATH}/media/qbittorrent`; the template binds `media/torrents` (and the skeleton makes `media/torrents`). Record only — the app is right. Found 2026-10-14. | **READY** — filed 2026-10-14 | — | Correct the row with the live-fix task's catalog commit | CC |
@@ -233,10 +232,11 @@ stopping line that lies.
| **R-1010** | Box system & updates | P3 | **The agent's stale-lock janitor cannot remove a half-removed `vzdump` snapshot: Proxmox's delete fails on the first missing volume („Failed to find logical volume pve/snap_vm-9201-disk-0_vzdump") and the janitor retries the same call every 10 min forever, leaving the other volume's snapshot and the snapshot entry.** Seen 2026-10-14 after a backup ran out of space on a full host root (LVM could not write its metadata; `audits/power-cut-fixes-2026-10-14/README.md` C4). Fixed by hand with `pct delsnapshot 9201 vzdump --force`. | **READY** — filed 2026-10-14 | — | CC: on that error, retry once with `--force` (a sudoers line or the API's `force=1`), with a test that replays the error text; next agent release | CC |
## Monitoring & notifications — 8 rows (P2 1, P3 5, P4 2)
## Monitoring & notifications — 9 rows (P2 1, P3 5, P4 3)
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|---|---|---|---|---|---|---|---|
| **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-1001** | Monitoring & notifications | P3 | **Every hub restart re-mails the operator about a box that is already known to be down.** MEASURED 2026-10-13 18:33 UTC (hub v0.149.0 rollout, R-998 session): Tester 2, silent 216 h, got a fresh `host_down` and `restore_test_stale` mail. `monitor/host_staleness.go` leaves a down host unseeded on start so the first Check emits (F2), and its comment says „the dispatcher's 1h cooldown dedups the re-emit" — but host liveness events bypass that cooldown (`dispatcher.go` `nodeLivenessEvents`, 5-min dedupe only); `restore_test_stale` keeps its edge state in memory. The comment states an invariant the code does not provide. | **READY** — filed 2026-10-13 | — | Seed a host silently when a `host_down`/`host_stale` event for it is newer than its last report; the same for the restore-test edge; a test that restarts the checker | 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** — **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 passing `oom_check` on every ring-0 box; a failed, errored or missing one blocks) and the agent's wrapper (`felhom-agent` `acccb66`, unreleased — ships as v0.150.0 after the 2026-10-07 read-back). Proven by hand on demo-hp's guest: `OOMKilled=true`, exit 137, the `oom` event — seen only with an events window ending after the run (the wrapper waits 2 s). `audits/readback-2026-10-07/`F/. | — | 2026-11-12: read the hub for any failed `oom_check` or an `app_oom` with no restart reason since 2026-10-12; none → close | 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 |
@@ -283,10 +283,11 @@ stopping line that lies.
| **R-989** | Business & legal | P4 | **Operator: read `documentation/audits/selfhst-survey-2026-10-12/FELHOM.md` §6 and rule on each recommendation.** READ-ONLY research 2026-10-12: the selfh.st self-hosting survey 2023–2025 (1,869 / 3,655 / 4,081 respondents, hobby users) against our catalog, features, pitch and hardware. Ten ranked recommendations, none acted on; the top three: a supported-hardware page (none exists — finding, §4), off-site backup as a *why* reason in the pitch (only 25.2 % of the crowd backs up off-site), Syncthing as the largest catalog gap (25.9 %). Tables: `TABLE.md`; method and limits: `METHOD.md`. | **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 (the 2026 survey replaces it) | operator |
| **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 |
## Process & tooling — 22 rows (P3 8, P4 14)
## Process & tooling — 23 rows (P3 9, P4 14)
| ID | Category | Sev | What | State | Blocked on | Next action | Owner |
|---|---|---|---|---|---|---|---|
| **R-1021** | Process & tooling | P3 | **`build-hub.sh` builds STALE hub code when its `git pull` fails — it only warns.** 2026-10-14: the shared checkout `git/felhom.eu` was behind `origin/main` (`52b6599d` vs `822d0393`) and its pull aborted on untracked leftovers (`audits/sizing-2026-10-13/`, `audits/usenet-2026-10-12/`, a Facebook folder, a modified `walk.py`) — the script would have shipped hub 0.149-era code labelled 0.150.0. This session built from its own clean clone instead (a copy of the script with only `REPO_DIR` changed). | **OPEN** — filed 2026-10-14 | operator: whose are the leftovers in the shared checkout | CC: make the build refuse unless the source tree is clean and `HEAD == origin/main` (the clean-tree gate, in the script); the operator or their owner cleans the shared checkout | CC |
| **R-992** | Process & tooling | P3 | **The drill-catalog route that `09` §6.5 documents cannot be followed: `admin/app-catalog-drill` is PRIVATE and no box has catalog credentials.** Measured 2026-10-12 while publishing the Usenet pair: the box's clone fails with `fatal: could not read Username for 'https://gitea.dooplex.hu'` (exit 128), the Gitea API reports the drill repo `private=true` and the live catalog `private=false`, and NEITHER the current controller.yaml on 9202 NOR any of its 30 saved copies has ever carried `git.username` or `git.token` (the controller supports both — `internal/config/config.go` GitConfig). The route worked for the campaigns of 2026-10-10 and the torrent pair earlier the same day, so the repository's visibility changed between then and now. **Worked around, not fixed:** that campaign staged its two templates in the box's own catalog cache (`audits/usenet-2026-10-12/tools/stage_in_cache.py`), which is where the sync copies a catalog change anyway, with the sync interval raised to 12h for the duration and rescan used in place of sync. The real fix is an operator decision: either a read-only catalog credential on the scratch box (a secret on a Tier-0 guest) or making the drill repository readable. Until then every new-app campaign hits this. | WAITING-ON-OPERATOR | the operator's choice between a box credential and a readable drill repo | Decide; then either set `git.username`/`git.token` on 9202 from the credentials store, or flip the drill repo, and correct `09` §6.5 either way | operator |
| **R-1017** | Process & tooling | P3 | **A comment names a guard test that does not exist.** `felhom-controller/controller/internal/appbackup/paths.go:58` says „`TestNoBareDrivePathToUserdataDir` is the guard that keeps the count from growing”; no test of that name (or `NoBareDrive*`) exists in the repo (grep 2026-10-14; positive control: `TestRemoveStack_R800_UserdataKeptIsNamed` is found). A comment asserting an invariant with no test pinning it — the class in the `felhom-testing` skill. | **READY** — filed 2026-10-14 | — | Write the guard (a test that fails when a bare drive path reaches `UserdataDir`), red-proof it, or correct the comment | CC |
| **R-987** | Process & tooling | P4 | **The 53 catalog app images have never been scanned for known vulnerabilities.** Fix: a monthly trivy pass over the images the catalog pins, reported, not gating. | OPEN | — | Add to the monthly re-test | CC |