Night brief part 2 (run by day 2026-10-20): register 160 -> 156 (closed R-1001, R-1011, R-1167, R-1070, R-1010, R-893, R-1169; opened R-1171..R-1173; R-1019/R-462 narrowed, R-49 READY -> D21, R-1083 re-stated); 07 §6.3 option A as the design; STATUS morning list; report part 2; P4 Immich plan, P7 release evidence
gates / gates (push) Successful in 12m57s
gates / gates (push) Successful in 12m57s
This commit is contained in:
+126
-1
@@ -1,4 +1,129 @@
|
||||
# REPORT — evening/night brief 2026-10-19 (one stop less per night, no false tunnel error, R-893 measured, hub and agent fixes ready, a scanner on every push, ep0's first weekly clean-up)
|
||||
# REPORT — the night briefs of 2026-10-19 and 2026-10-20 (part 2 run by day): one stop less per night, the safe undo for a failed off-site restore, hub 0.162.0 / agent 0.161.0 / installer 1.35.0 delivered, downloads out of the backups, a scanner on every push
|
||||
|
||||
# PART 2 — the night brief part 2 (run by day, 2026-10-20): your four answers, the safe undo, downloads out of the backups, Immich, the update test
|
||||
|
||||
**Safest readings taken alone (written first, as the brief asks):**
|
||||
1. **R-1083 is not in agent 0.161.0.** An agent key would make 9202's controller book the agent's whole-guest backups,
|
||||
one of which writes to ep0 — a change on ep0 the brief forbids; 9202 is also outside the `felhom` pool.
|
||||
2. **All five downloaders' folders are `excluded`, not only the two named** (qBittorrent, Transmission; also NZBGet,
|
||||
SABnzbd, MeTube): the brief's gate rule — a download folder is never optional or mandatory — covers all five.
|
||||
3. **No update-test edge was run:** the bench (guest 9401) and the drill catalog are outside the brief's machines and
|
||||
repos. The list done and the list left are written; the ask is on the morning list.
|
||||
4. The brief was written for a night run and ran by day; its „stop by 05:00" was read as a time box, not a clock.
|
||||
|
||||
## Part 2 — in plain words
|
||||
|
||||
- **Morning list:** vouch agent 0.161.0 · decide D21 (Immich) · MeTube's videos out of the second-drive copy — keep? ·
|
||||
the bench and the drill catalog for the update test — yes?
|
||||
- **Hub 0.162.0 is live.** Its own deploy was the real restart test: Tester-2 (down since 4 October) got no repeat mail
|
||||
— read in the hub and, separately, in your mailbox.
|
||||
- **Agent 0.161.0 runs on demo-hp, Tester 1 and demo-felhom.** On demo-hp the agent said „busy" during a backup and
|
||||
„free" before and after. **Not vouched — that is yours.**
|
||||
- **Installer 1.35.0 is published.** The served file equals the tag's file.
|
||||
- **A failed off-site restore now puts the app back exactly as it was** (your D20 = A, controller 0.336.0, the floor).
|
||||
Proven on the scratch box: after a forced failure the database matched its fingerprints from before, the app ran,
|
||||
nothing was held; a normal restore then worked.
|
||||
- **Downloads are out of the backups** (torrent, usenet, MeTube): the controller's own check copies 0 of them now.
|
||||
- **Immich's off-site copy:** 1.33 GB, of which 102 MB must survive. Two options; pick B (leave out the AI model files).
|
||||
- **ep0's first weekly clean-up:** done this morning (Part 10 of part 1 below).
|
||||
|
||||
## Part 2 — each part
|
||||
|
||||
| Part | Done? | Why / how |
|
||||
|---|---|---|
|
||||
| 1a hub deploy | **done** | `manifests/hub.yaml` → 0.162.0 (`e1d349f1`), only Deployment/hub synced (the only OutOfSync); image `sha256:69285e64…` = the build; Synced/Healthy; reports from all three boxes; floor read 0.335.0; Day-0 agent list has no `-step1`. R-1001 + R-1011 closed. |
|
||||
| 1b agent release | **done** | R-1083 left out (above). `release-agent.sh 0.161.0` from a clean clone; signed `agent_update` per box: demo-hp 06:38, Tester 1 06:54, demo-felhom 06:55 UTC, each COMPLETED, 76/76, committed. `host_busy` live; tunnel `absent` = the fixture row (9202's real Docker 29 answer); R-1010 by its tests. R-1070 + R-1010 closed. |
|
||||
| 1b R-921 live | **not done** | The no-stop case happens only on the night schedule (a press backs up the local tier only). Row R-1173 with a dated check after demo-hp's next off-site night. |
|
||||
| 1c installer | **done** | tag `installer-v1.35.0`, both webpage pins (`b0ae2c57`), webpage Deployment synced alone; served sha256 `f7a196fd…` = tag. R-1167 closed. |
|
||||
| 2 safe undo | **done** | below. R-893 + R-1169 closed. |
|
||||
| 3 downloads | **done, one read left** | catalog `c50adfc`, gate `download-binds`; classifier proof. demo-felhom (qBittorrent) runs its next second-drive copy 2026-10-21 03:30 — dated check on R-1019 (NARROWED). |
|
||||
| 4 Immich | **done (plan only)** | below. R-49 → READY, D21. |
|
||||
| 5 update test | **not done** | fixture side complete for every installed app; the edges need the bench / drill catalog (above). R-462 NARROWED. |
|
||||
| 6 ep0 clean-up | **done** | part 1, Part 10. |
|
||||
| 7 controller release | **done** | 0.336.0 below. |
|
||||
|
||||
## Part 2 — the safe undo, the 9202 proof (`07` §6.3; `audits/night2-2026-10-20/P2/`)
|
||||
|
||||
- Code `93fb251`: the fit check before the stop, the copy right after it (`backups/restore-undo/<app>/`), the put-back on
|
||||
every failure branch, the hold only when the put-back fails, the copy removed on success. 11 tests; nine mutations red.
|
||||
- **9202, rc.1** (a helper with the fences in full; Rallly + postgres 18; the same forced failure as on 19 October):
|
||||
|
||||
| | Live before | After the forced failure |
|
||||
|---|---|---|
|
||||
| public tables | 36 | 36 |
|
||||
| markers | A, B, C, D | A, B, C, D |
|
||||
| `r893_only_old` (backup only) | absent | **absent** (on 19 October: present) |
|
||||
| schema / data / row-count md5 | `05828c77` / `e5c1a72f` / `d8bcbc4b` | **equal** |
|
||||
| app | running | **running**, no hold |
|
||||
| the copy | — | 69 MB in 0.9 s, removed after |
|
||||
|
||||
The sentence: „…visszaállítása sikertelen. Nem változott semmi: az alkalmazás adatai visszakerültek a visszaállítás
|
||||
előtti állapotba, és az alkalmazás újra fut". Then a normal restore of the same snapshot: the snapshot's content
|
||||
(A–C, the backup-only table present), the app running, the copy removed. 9202 back on 0.331.0 as found.
|
||||
- Not measured live (each pinned by a red-proved test): the version-change branch, the `_files` sentence, the refusals
|
||||
before the stop, a failing put-back, the operator event (9202 has no hub).
|
||||
|
||||
## Part 2 — download binds (`15` §7; `audits/night2-2026-10-20/P3/`)
|
||||
|
||||
| App | Bind (userdata) | Class now | Copied by a tier |
|
||||
|---|---|---|---|
|
||||
| qBittorrent | media/torrents | excluded (was optional) | none (was the second drive) |
|
||||
| Transmission | media/transmission, media/transmission/watch | excluded, excluded | none |
|
||||
| NZBGet | media/nzbget | excluded (was optional) | none |
|
||||
| SABnzbd | media/usenet | excluded (was optional) | none |
|
||||
| MeTube | media/metube | excluded (was optional) | none |
|
||||
| Sonarr, Radarr | media (rw) | excluded | none |
|
||||
| Jellyfin, Plex, Emby | media (:ro) | excluded | none |
|
||||
| Prowlarr | no userdata bind | — | — |
|
||||
|
||||
## Part 2 — Immich (`audits/night2-2026-10-20/P4/immich-offsite-plan.md`)
|
||||
|
||||
Model cache 824 MB (62 %) · raw database folder 283 MB (21 %) · Immich's own backups 115 MB (9 %) · logical dump 54 MB
|
||||
· originals 49 MB · thumbnails 2 MB. **A** (leave out all three re-fetchable parts, −92 %) needs a never-run restore
|
||||
from the dump alone on the vectorchord image; **B** (only the model cache, −62 %) needs one restore with an empty cache.
|
||||
**Pick B now**, A's other parts after their proof.
|
||||
|
||||
## Part 2 — update-test edges
|
||||
|
||||
None run (above). Installed apps: 16; with a fixture: 15; without: bentopdf (keeps no data). Upstream within a major,
|
||||
waiting for a tested step: PrivateBin 2.0.6→2.1.0, Home Assistant 2026.9.4→2026.10.2, RomM 5.3.1→5.4.0, Plex
|
||||
1.41.4→1.43.4, Kimai 2.67.0→2.70.0 (`audits/night2-2026-10-20/P5/r462-list.txt`).
|
||||
|
||||
## Part 2 — versions, commits, rows
|
||||
|
||||
- Hub 0.162.0 deployed (`e1d349f1`). Agent 0.161.0 released (`5152123`, tag `v0.161.0`; notes `4e1621c`). Installer
|
||||
1.35.0 published (`b0ae2c57`). Controller 0.336.0 the floor (`93fb251`; notes `aa9e09e`, `7ca59e2`), image
|
||||
`sha256:93cd67d8…8d73`. Catalog `c50adfc`. Evidence `301f4e9e`, `bcaa9576`.
|
||||
- i18n: no page template changed; seven Go-side keys (HU + EN), one rewritten (R-1169); no fixture changed.
|
||||
- **System poster:** no listed fact changed — none of the three.
|
||||
- **Register 160 before, 156 after. Closed 7:** R-1001, R-1011, R-1167, R-1070, R-1010, R-893, R-1169. **Opened 3:**
|
||||
R-1171 (demo-hp's local copy never restore-tested), R-1172 (the put-back logs at ERROR; an empty folder stays),
|
||||
R-1173 (R-921's no-stop not yet seen live). Re-stated: R-1019 (NARROWED, dated 2026-10-21), R-1083, R-462 (NARROWED),
|
||||
R-49 (READY, D21). **Both briefs together: 161 before, 156 after; closed 11, opened 6.**
|
||||
|
||||
## Observations — part 2
|
||||
|
||||
1. demo-hp's local whole-guest copy is never restore-tested: one copy kept, a 24 h settle, replaced at 24 h. FILED: R-1171
|
||||
2. A successful put-back is logged at ERROR, and an empty `backups/restore-undo/` folder stays after a restore. FILED: R-1172
|
||||
3. R-921's no-stop branch has no live observation yet (it needs a night schedule). FILED: R-1173
|
||||
4. R-462's „only three apps are tested" was out of date: 58 apps have fixtures on both venues. NOT-A-FINDING: the row is re-stated with today's list.
|
||||
5. The hub deploy at 06:03 UTC removed the old pod's log, which held the 07:10 Budapest off-site audit lines of today (R-895). NOT-A-FINDING: R-895's dated check is 2026-10-21; that run happens in the new pod.
|
||||
6. In step 4 of the 9202 drill the data-only md5 differed from a read taken before snapshot 2, while the schema and every row count were equal. NOT-A-FINDING: the two reads were at different moments (the read, then the snapshot's own dump); the claim under test — before and after the forced failure — matched on all three fingerprints.
|
||||
7. The helper's brief expected 37 tables after the normal restore; snapshot 2 has 36. NOT-A-FINDING: last night's 37 was the mixed state, not the snapshot (my arithmetic, corrected).
|
||||
8. The first background wait loop for demo-hp's agent update printed a time and stopped before the box had updated. NOT-A-FINDING: the version was read directly and a foreground loop used instead.
|
||||
9. A Python edit of the controller CHANGELOG failed on a quote character, and the commit carried only REPORT.md. NOT-A-FINDING: fixed by the next commit (`7ca59e2`).
|
||||
|
||||
## Part 2 — teardown
|
||||
|
||||
- Machine: 9202 back on 0.331.0 as found (Rallly removed through the product, the SFTP target, images and files removed
|
||||
by name, settings and the off-box folder put back); demo-hp 9201's probe script removed.
|
||||
- Host: demo-hp `/tmp` copies removed; nothing on `pve/data`; no whole-guest backup of 9202.
|
||||
- Hub: per-box floors set and cleared; the global floor raised; nothing else.
|
||||
- ep0: read only.
|
||||
|
||||
---
|
||||
|
||||
# PART 1 — the evening/night brief of 2026-10-19
|
||||
|
||||
## In plain words
|
||||
|
||||
|
||||
@@ -736,6 +736,19 @@ stayed (37 tables, the live app had 36); the definition did not move (same versi
|
||||
answered 409. The restore page's „the database is back as it was" is false for it. Design note with the two options and
|
||||
the pick (A: a copy of the app's live volumes, put back on failure — one copy's disk for the restore's length, a fit
|
||||
check before the stop): `audits/night-2026-10-19/P3/design-R-893.md`; the decision is on `STATUS.md`.
|
||||
**`[DESIGN]` 2026-10-20 — „put back exactly as it was" (R-893 option A, operator decision D20 = A, `09` §3 decision 192
|
||||
second half; controller 0.336.0 is the floor).** Before the stop, every named volume the snapshot will replace is measured
|
||||
and its copy is added to the restore's own free-space need (R-357's exact rule); too little room or an unmeasurable volume
|
||||
refuses with nothing stopped. Right after the stop the volumes are tarred into `<namespace>/backups/restore-undo/<app>/`
|
||||
(outside every capture set). On ANY failure after a volume or the definition moved, the copies are poured back, a volume
|
||||
the snapshot added is removed, the live definition is written back and the app is STARTED; the household reads that the
|
||||
restore failed and nothing changed (with placed files: its database and volumes are back, the copied files stay); the
|
||||
operator gets `backup_run_failures` leg `restore-put-back`. The hold (`restore_mixed`) remains only for a put-back that
|
||||
fails — then the copy is kept for support — and the double failure (replay AND rollback) holds as before. On success the
|
||||
copy is removed. **`[FACT]` 2026-10-20 (9202, controller 0.336.0-rc.1, `audits/night2-2026-10-20/P2/live/`):** the same
|
||||
forced failure as on 2026-10-19 → 36 tables, the backup-only table absent, schema/data/row-count md5 equal to before,
|
||||
the app running, no hold, the copy (69 MB, 0.9 s) gone; a normal restore of the same snapshot then worked. The R-893
|
||||
known limit above is closed for named volumes; placed FILES are still not taken back (the plain-files mix, as ruled).
|
||||
|
||||
**[DESIGN] 2026-08-22 — the failure ladder of a database restore: replay → rollback → hold.**
|
||||
Recorded here rather than only in a closed register row, because a decision that survives only inside
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# R-49 — Immich's off-site copy: what it holds, and two ways to shrink it (2026-10-20)
|
||||
|
||||
Status: **measure and plan only — nothing changed.** Night brief part 2 (run by day), Part 4. Architecture: `07-backup-architecture.md`
|
||||
(the off-site tier = the recovery unit + the app's mandatory data). Measured read-only on scratch guest 9202 (demo-hp), Immich
|
||||
v3.2.4 + `ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0`, data on the drive `/mnt/sizing-bench`, 09:0x UTC.
|
||||
|
||||
## What today's off-site copy holds
|
||||
|
||||
The off-site tier copies the recovery unit (`backups/primary/immich/`, 1 160 553 825 B) and the mandatory drive folder
|
||||
`appdata/immich/` (166 077 159 B) — about **1.33 GB** in all. The external library `media/photos` is `optional` (not off-site;
|
||||
0 B here anyway).
|
||||
|
||||
| Part | Where | Bytes | Share | Can it come back without the copy? |
|
||||
|---|---|---:|---:|---|
|
||||
| ML model cache | unit `volume-dumps/immich_immich_ml_cache.tar` (volume 823 835 298 B) | 823 764 480 | 62 % | **Yes** — Immich downloads the models again when a smart-search or face job first needs them |
|
||||
| Raw database folder | unit `volume-dumps/immich_immich_postgres_data.tar` (volume 282 169 461 B) | 283 049 472 | 21 % | **Yes, if** a restore from the logical dump alone is proven (below) |
|
||||
| Immich's own database backups | `appdata/immich/backups/` | 115 367 547 | 9 % | Yes — a second copy of what the logical dump already holds; it grows every night |
|
||||
| Logical database dump | unit `db-dumps/immich-postgres.sql` | 53 711 763 | 4 % | **No** — this IS the household's albums, people, metadata |
|
||||
| Originals | `appdata/immich/upload/` | 48 673 663 | 4 % | **No** — the photos themselves |
|
||||
| Thumbnails | `appdata/immich/thumbs/` | 2 035 910 | <1 % | Yes — Immich regenerates them |
|
||||
| Redis | volume `immich_immich_redis_data` (31 594 479 B) | — | — | not in the unit (a queue cache) |
|
||||
|
||||
**What must survive: 102 MB of 1.33 GB (8 %).** The 2026-07-19 measurement (R-49) said the same shape: ~60 % model cache.
|
||||
|
||||
## Two options
|
||||
|
||||
| | A — leave out all three re-fetchable parts | B — leave out only the model cache |
|
||||
|---|---|---|
|
||||
| Off-site size here | ~105 MB (dump + originals + thumbnails + unit metadata) — **−92 %** | ~510 MB — **−62 %** |
|
||||
| What a restore then needs | the models download again (~824 MB, from Immich's model host) before smart search and face recognition work again — the photos, albums and timeline work at once; the database is rebuilt from the logical dump alone into an EMPTY volume (no raw folder to lay under it) | the models download again, as in A; the database comes back as today (volume, then dump) |
|
||||
| The proof it needs | (1) one off-site restore of Immich onto a box with an empty model cache: photos and albums read back, then a smart search answers after the download (time measured); (2) **one off-site restore from the dump alone** into an empty database volume, on this vectorchord image: the extensions and vector indexes come back, the row counts match, Immich starts and searches — today's restore always lays the raw folder first, so this has never been run | only proof (1) |
|
||||
| Risk | the dump-only database restore is the unmeasured part; if the vector extension needs more than the dump gives, a restore would fail where it works today (option A's put-back keeps the app as it was, but the backup would be weaker) | none new: the cache is a cache |
|
||||
| Also | Immich's own `backups/` folder needs a catalog class (`excluded`) — a template change in the `hdd` block | a catalog change: the model-cache volume marked as not captured |
|
||||
|
||||
Not measured today: the model download's time and size on a real line (the 824 MB is the cache as it stands, which holds every
|
||||
model this box used); the off-site bytes after restic's compression and de-duplication (the table is the plain size).
|
||||
|
||||
## Pick: B now, then A's other two parts after proof (2)
|
||||
|
||||
B removes 62 % of the copy with no new risk — the strongest case R-49 named first — and needs only proof (1). The raw database
|
||||
folder and Immich's own backups are another 30 %, but leaving out the raw folder changes HOW the database comes back, and that
|
||||
path has never run for this extension image; it should be a separate step with its own proof, not ride along.
|
||||
|
||||
**If the operator does nothing:** every Immich household keeps sending ~12× its real data off-site each night, against its
|
||||
quota and transfer.
|
||||
@@ -0,0 +1,4 @@
|
||||
# per-box floors 0.336.0 / MinAgent 0.158.1 set 08:51:06Z; image sha256:93cd67d871125877e935a024765075b5a0b7c0e7683e1165976ff7a654fe8d73 (clean clone 93fb251; rc.1 on 9202 first)
|
||||
demo-felhom|0.336.0|2026-10-20 08:54:55
|
||||
demo-hp|0.336.0|2026-10-20 08:54:56
|
||||
tester-1|0.336.0|2026-10-20 08:54:54
|
||||
@@ -0,0 +1,27 @@
|
||||
=== demo-hp (enkisfelhom.hu) 08:53:38
|
||||
containers: 24 running; not healthy/running: traefik Up 4 days;
|
||||
unhealthy: 0
|
||||
2026/10/20 08:51:19 updater.go:855: [INFO] [selfupdate] Post-update startup: update successful (0.335.0 → 0.336.0)
|
||||
allow-list refusals since start: 0
|
||||
2026/10/20 08:51:19 sync.go:142: [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás
|
||||
installed apps (stacks with app.yaml): 12
|
||||
public https://felhom.enkisfelhom.hu/: 302
|
||||
public https://files.enkisfelhom.hu/: 200
|
||||
=== demo-felhom (demo-felhom.eu) 08:53:41
|
||||
containers: 9 running; not healthy/running: traefik Up 4 days;
|
||||
unhealthy: 0
|
||||
2026/10/20 08:51:08 [INFO] [selfupdate] Post-update startup: update successful (0.335.0 → 0.336.0)
|
||||
allow-list refusals since start: 0
|
||||
2026/10/20 08:51:11 [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás
|
||||
installed apps (stacks with app.yaml): 5
|
||||
public https://felhom.demo-felhom.eu/: 302
|
||||
public https://files.demo-felhom.eu/: 200
|
||||
=== tester-1 (enkicsifelhom.hu) 08:53:42
|
||||
containers: 10 running; not healthy/running: traefik Up 4 days;
|
||||
unhealthy: 0
|
||||
2026/10/20 08:51:18 [INFO] [selfupdate] Post-update startup: update successful (0.335.0 → 0.336.0)
|
||||
allow-list refusals since start: 0
|
||||
2026/10/20 08:51:19 [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás
|
||||
installed apps (stacks with app.yaml): 3
|
||||
public https://felhom.enkicsifelhom.hu/: 302
|
||||
public https://files.enkicsifelhom.hu/: 200
|
||||
@@ -0,0 +1,33 @@
|
||||
control NEGATIVE (a stub answering 200 over plain http): convicted, as it must (200 -)
|
||||
== tester-1 (enkicsifelhom.hu): 6 public name(s)
|
||||
OK control POSITIVE http://felhom.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://felhom.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://files.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://files.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://no-such-name-r1033.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://no-such-name-r1033.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://paperless.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://paperless.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://paste.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://paste.enkicsifelhom.hu/r1033-check?q=1
|
||||
OK http://wiki.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://wiki.enkicsifelhom.hu/r1033-check?q=1
|
||||
== demo-hp (enkisfelhom.hu): 14 public name(s)
|
||||
OK http://arcade.enkisfelhom.hu/r1033-check?q=1 -> 301 https://arcade.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://books.enkisfelhom.hu/r1033-check?q=1 -> 301 https://books.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://docs.enkisfelhom.hu/r1033-check?q=1 -> 301 https://docs.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://felhom.enkisfelhom.hu/r1033-check?q=1 -> 301 https://felhom.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://files.enkisfelhom.hu/r1033-check?q=1 -> 301 https://files.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://gist.enkisfelhom.hu/r1033-check?q=1 -> 301 https://gist.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://ha.enkisfelhom.hu/r1033-check?q=1 -> 301 https://ha.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://no-such-name-r1033.enkisfelhom.hu/r1033-check?q=1 -> 301 https://no-such-name-r1033.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://papir.enkisfelhom.hu/r1033-check?q=1 -> 301 https://papir.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://paste.enkisfelhom.hu/r1033-check?q=1 -> 301 https://paste.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://pdf.enkisfelhom.hu/r1033-check?q=1 -> 301 https://pdf.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://plex.enkisfelhom.hu/r1033-check?q=1 -> 301 https://plex.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://travel.enkisfelhom.hu/r1033-check?q=1 -> 301 https://travel.enkisfelhom.hu/r1033-check?q=1
|
||||
OK http://wiki.enkisfelhom.hu/r1033-check?q=1 -> 301 https://wiki.enkisfelhom.hu/r1033-check?q=1
|
||||
== demo-felhom (demo-felhom.eu): 8 public name(s)
|
||||
OK http://felhom.demo-felhom.eu/r1033-check?q=1 -> 301 https://felhom.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://files.demo-felhom.eu/r1033-check?q=1 -> 301 https://files.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://gist.demo-felhom.eu/r1033-check?q=1 -> 301 https://gist.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://no-such-name-r1033.demo-felhom.eu/r1033-check?q=1 -> 301 https://no-such-name-r1033.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://prowlarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://prowlarr.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://radarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://radarr.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://sonarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://sonarr.demo-felhom.eu/r1033-check?q=1
|
||||
OK http://torrent.demo-felhom.eu/r1033-check?q=1 -> 301 https://torrent.demo-felhom.eu/r1033-check?q=1
|
||||
== every public name redirects http -> https
|
||||
@@ -0,0 +1,16 @@
|
||||
== demo-hp
|
||||
dashboard sign-in: 302
|
||||
the Fajlok button goes to: https://files.enkisfelhom.hu/_felhom/sso
|
||||
the pass answer goes to: https://files.enkisfelhom.hu/files/; files cookie set: 1
|
||||
FileBrowser with the files cookie: felhom-household admin: False modify: True
|
||||
FileBrowser without it, a fresh browser: HTTP 401
|
||||
dashboard sign-out: 302
|
||||
after the sign-out, the files cookie sends the browser to: https://felhom.enkisfelhom.hu/__files/open?to=%2Ffiles%2F
|
||||
== tester-1
|
||||
dashboard sign-in: 302
|
||||
the Fajlok button goes to: https://files.enkicsifelhom.hu/_felhom/sso
|
||||
the pass answer goes to: https://files.enkicsifelhom.hu/files/; files cookie set: 1
|
||||
FileBrowser with the files cookie: felhom-household admin: False modify: True
|
||||
FileBrowser without it, a fresh browser: HTTP 401
|
||||
dashboard sign-out: 302
|
||||
after the sign-out, the files cookie sends the browser to: https://felhom.enkicsifelhom.hu/__files/open?to=%2Ffiles%2F
|
||||
@@ -0,0 +1,22 @@
|
||||
2026-10-20T08:54:35Z
|
||||
global floor:
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /configuration?flash=floor_set
|
||||
read back (hub DB with WAL):
|
||||
min_controller_version|0.336.0
|
||||
min_controller_version_declared_min_agent|0.336.0=0.158.1
|
||||
clear the per-box floors:
|
||||
== tester-1
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /customers/tester-1?flash=floor_set
|
||||
== demo-hp
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /customers/demo-hp?flash=floor_set
|
||||
== demo-felhom
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /customers/demo-felhom?flash=floor_set
|
||||
Error: in prepare, no such table: customers
|
||||
per-box floors after the clear (customer_configs):
|
||||
demo-felhom|''|''
|
||||
demo-hp|''|''
|
||||
tester-1|''|''
|
||||
@@ -26,6 +26,18 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-10-20 (night brief part 2, run by day) — hub 0.162.0, agent 0.161.0, installer 1.35.0, the safe undo for a failed off-site restore (full text of each row: `git show bcaa9576:documentation/backlog/OPEN-ITEMS.md`)
|
||||
|
||||
| Row | What | Closed | Evidence |
|
||||
|---|---|---|---|
|
||||
| **R-1001** | **Every hub restart re-mails the operator about a box that is already known to be down.** (P3) | CLOSED 2026-10-20 — **hub 0.162.0 deployed (operator yes) and the deploy itself was the real restart:** Tester-2 (down since 2026-10-04) had been re-mailed on every earlier restart (host_down + two restore_test_stale at 02:15, 09:30, 14:12 on 2026-10-19). After the 06:03 UTC restart: `Host staleness checker initialized: … 1 already alarmed (seeded silently, R-1001)`, `restore-test staleness: Tester-2 … already reported before the restart — not re-sent` for both tiers, 0 new events (id > 6129), and the mailbox (a different channel) holds no Tester-2 host_down / restore_test_stale mail after 14:12 on 2026-10-19 while the daily 03:00 mails are there. | `audits/night2-2026-10-20/P1/1a-hub-deploy.txt` |
|
||||
| **R-1011** | **The Day-0 „Agent" list offers step-bundle packages (`0.156.1-step1`, `0.152.0-step1` …) as agent versions; one has no agent binary, so the hub shows the bundle JSON's sha (`FileSHA256` falls back to the first file) and a vouch would point fresh installs at a package with no binary.** (P3) | CLOSED 2026-10-20 — **hub 0.162.0 deployed:** the Day-0 agent list (GET /configuration with CC's token) offers 0.160.0 … 0.150.0 and no `-step1` package. | `audits/night2-2026-10-20/P1/1a-hub-deploy.txt` |
|
||||
| **R-1167** | **The installer does not word the hub's new 409 („this customer already has a live box").** (P4) | CLOSED 2026-10-20 — **installer 1.35.0 published (operator yes):** tag `installer-v1.35.0` (→ `e1d349f1`), both webpage git-sync pins, the webpage Deployment synced alone; `https://felhom.eu/scripts/felhom-host-install.sh` serves `SCRIPT_VERSION="1.35.0"` with sha256 `f7a196fd…` = the tag's file (before: 1.34.0, `df722ee4…`). | `audits/night2-2026-10-20/P1/1c-installer-publish.txt` |
|
||||
| **R-1070** | **A box with no Cloudflare tunnel gets an ERROR after its host OS update: „NOT healthy … (the tunnel is unknown)”.** (P3) | CLOSED 2026-10-20 — **agent 0.161.0 released and on demo-hp, Tester 1 and demo-felhom** (signed jobs, all committed, 76/76; hub 0.162.0 shows `absent` as „none set up"). The agent's own probe in 9202 (no tunnel) answers `error: no such object: cloudflared` rc 1 — exactly the `TestClassifyTunnel` „absent, docker 29" fixture row; 9201 answers `running`. | `audits/night2-2026-10-20/P1/1b-agent-release.txt` |
|
||||
| **R-1010** | **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.** (P3) | CLOSED 2026-10-20 — **agent 0.161.0 released and on the three test hosts.** Proven by its red-proved tests (`TestStaleLock_R1010_ForcesOnceOnlyWhenTheVolumeIsGone`, `TestDeleteSnapshotForce_R1010`), rerun green on the released commit; a half-removed snapshot on `pve/data` was not made (rule 6). | `audits/night2-2026-10-20/P1/1b-agent-release.txt` |
|
||||
| **R-893** | **After a failed OFF-SITE replay, the rollback pours the NEWER pre-restore copy over the OLDER volume just put back.** (P3) | CLOSED 2026-10-20 — **option A built and released (operator D20 = A): controller 0.336.0 is the floor (08:54 UTC).** Before the stop the live volumes the snapshot will replace are measured and the copy must fit (refused with nothing stopped otherwise); right after the stop they are tarred into `backups/restore-undo/<app>/`; on any failure after a volume or the definition moved they are poured back, a volume the snapshot added is removed, the live definition written back and the app started; a put-back that fails holds and keeps the copy. 11 unit tests, nine mutations red. **Live on 9202** (rc.1): a forced replay failure after the volume was replaced → 36 tables, markers A–D, the backup-only table ABSENT, schema/data/row-count md5 EQUAL to before, Rallly running, no hold, the copy gone; then a normal restore of the same snapshot worked. `07` §6.3 now states it as the design. Follow-up: R-1172. | `audits/night2-2026-10-20/P2/` (unit red-proofs, `live/` the 9202 drill), `P7/` (release) |
|
||||
| **R-1169** | **After a failed off-site restore that is held (`restore_mixed`), the restore page says the database is back as it was and the app's files and other data come from the backup — measured false on both halves.** (P3) | CLOSED 2026-10-20 — **controller 0.336.0:** `err.backup.db_restore_failed_held_mixed` says only what is certain (stopped half-way, the data could not be returned, the app stays stopped, the copy is kept, support helps), HU + EN; the plain rolled-back case with placed files no longer claims „your data is back as it was" (it says the files stay). Pinned by `assertR893Held` / `TestR893A_AFailedPutBackHoldsTheAppAndKeepsTheCopy`. | `audits/night2-2026-10-20/P2/redproof-unit.txt` |
|
||||
|
||||
## 2026-10-19 (evening/night brief) — no stop for a busy host, the scanner on every push, the ArgoCD prune danger gone (full text of each row: `git show f92fa5a8:documentation/backlog/OPEN-ITEMS.md`)
|
||||
|
||||
| Row | What | Closed | Evidence |
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,4 +1,4 @@
|
||||
## v0.162.0 — a hub restart no longer re-mails a known-down box (R-1001); the Day-0 agent list offers only real agent packages (R-1011); a box with no tunnel reads „none set up" (R-1070) (2026-10-19)
|
||||
## v0.162.0 — a hub restart no longer re-mails a known-down box (R-1001); the Day-0 agent list offers only real agent packages (R-1011); a box with no tunnel reads „none set up" (R-1070) (2026-10-19) — DEPLOYED 2026-10-20 06:03 UTC on the operator's yes (morning answers)
|
||||
|
||||
Built, NOT deployed (the night brief of 2026-10-19: the hub is never deployed at night; the deploy is the operator's
|
||||
word in the morning).
|
||||
|
||||
Reference in New Issue
Block a user