docs: rulings 7 and 8 shipped and proven live (R-470/R-472/R-475 CLOSED); R-477..R-480 opened
gates / gates (push) Successful in 21s
gates / gates (push) Successful in 21s
Hub v0.112.0 serves a floor above the golden with a declared MinAgent;
controller v0.239.0 reached both demo boxes by that floor in 14 s and 15 s
and updates on any backup tier. 09 §3 decisions 7 and 8, §6/§6.1; 07 §6
line; capability map row; STATUS items 15/16 done and the cadence line
corrected; CONTEXT; register: R-470/R-472/R-475 compressed to CLOSED-ITEMS
(full text at 2f5d3af), R-477..R-480 opened, R-474 reproduced a third
time. OPEN-ITEMS 431689 -> 432156 bytes, CLOSED-ITEMS 118051 -> 120598.
Evidence: documentation/audits/rulings-r472-r475-2026-09-13/.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
=== hub 0.112.0 deploy — 2026-09-13T14:50:54Z ===
|
||||
sync=Synced health=Healthy revision=2f5d3af6f9f48f5508614e1b90c0ec098c881e5f op=Succeeded
|
||||
image=gitea.dooplex.hu/admin/felhom-hub:0.112.0
|
||||
hub-687c88ccf8-lc54n 1/1 Running 0 88s 10.42.0.53 dooplex <none> <none>
|
||||
--- hub log since start ---
|
||||
2026/09/13 16:49:28 [INFO] felhom-hub 0.112.0 starting
|
||||
2026/09/13 16:49:28 [INFO] Database opened at /data/hub.db
|
||||
2026/09/13 16:49:28 [INFO] Default controller-version floor: 0.120.0
|
||||
2026/09/13 16:49:28 [INFO] Template fetcher started (every 1h)
|
||||
2026/09/13 16:49:30 [INFO] Asset seed: all 210 files up-to-date
|
||||
2026/09/13 16:49:30 [INFO] Asset manifest built: 211 files
|
||||
2026/09/13 16:49:30 [INFO] App-email relay enabled (limit 30/min/customer, From domains [felhom.eu])
|
||||
2026/09/13 16:49:30 [INFO] Gitea artifact browser enabled (Day-0 version dropdowns) via http://gitea.gitea-system.svc.cluster.local:3000
|
||||
2026/09/13 16:49:30 [INFO] Offsite provisioning enabled (pool_box=611714, location=fsn1)
|
||||
2026/09/13 16:49:30 [INFO] Offsite pool-box checker initialized: box=611714 fill warn=80% crit=90%, oversub warn=2.00x, unreachable after 3 consecutive failed reads, refresh 15m0s
|
||||
2026/09/13 16:49:30 [INFO] Registry version checker started (every 6h)
|
||||
2026/09/13 16:49:30 [INFO] WG peer-sync enabled (endpoint 167.233.158.164:22, user felhom-peersync)
|
||||
2026/09/13 16:49:30 [INFO] PBS DR tenantsync enabled (endpoint 167.233.158.164:22, user felhom-peersync; WG-registration auto-provision hook armed)
|
||||
2026/09/13 16:49:30 [INFO] PBS-DR box checker initialized: fill warn=80% crit=90%, unreachable after 3 consecutive failed reads, refresh 15m0s
|
||||
2026/09/13 16:49:30 [INFO] agent-plane poke enabled (endpoint 167.233.158.164:22, user felhom-peersync; web + api admin seams armed)
|
||||
2026/09/13 16:49:30 [INFO] PBS-DR self-heal reconciler started (interval 5m)
|
||||
2026/09/13 16:49:30 [INFO] offsite credential self-heal reconciler started (interval 5m, debounce 2 reports)
|
||||
2026/09/13 16:49:43 [INFO] Pruned 59 old report rows
|
||||
2026/09/13 16:49:44 [INFO] Pruned 21 old event rows
|
||||
2026/09/13 16:49:45 [INFO] Pruned 763 old app telemetry rows
|
||||
2026/09/13 16:49:45 [INFO] Pruned 3 stale app issues
|
||||
2026/09/13 16:49:45 [INFO] prune: next run at 2026-09-14 04:30 CEST (in 11h40m14s)
|
||||
2026/09/13 16:49:45 [INFO] Staleness checker initialized: 2 ok, 0 stale, 1 down
|
||||
2026/09/13 16:49:45 [INFO] Host staleness checker initialized: 2 ok, 0 stale, 0 down (stale/down left unseeded → first Check emits)
|
||||
2026/09/13 16:49:45 [INFO] Host capability checker initialized: 2 ok, 0 degraded (degraded left unseeded → first Check emits)
|
||||
2026/09/13 16:49:45 [INFO] Host leaf checker initialized: 2 host fingerprint(s) seeded
|
||||
2026/09/13 16:49:45 [INFO] Host disk checker initialized: warn=90% crit=95%, 2 ok seeded, 0 already-breached left unseeded (first Check emits)
|
||||
2026/09/13 16:49:45 [INFO] Storage fill checker initialized: warn=90% crit=95%, 5 ok seeded, 0 already-breached left unseeded, 2 root-backed excluded
|
||||
2026/09/13 16:49:45 [INFO] Host mgmt-plane checker initialized: 0 host heal-state(s) seeded
|
||||
2026/09/13 16:49:45 [INFO] Host OOB checker initialized: 0 host(s) seeded degraded
|
||||
2026/09/13 16:49:45 [INFO] Offsite checker initialized: fill warn=90% crit=95%, stale after 48h0m0s, 3 ok-seeded
|
||||
2026/09/13 16:49:45 [INFO] deadline-check: next run at 2026-09-14 05:00 CEST (in 12h10m14s)
|
||||
2026/09/13 16:49:45 [INFO] Listening on :8080
|
||||
2026/09/13 16:50:03 [INFO] DR-recipe app-half stored for customer demo-felhom (v1)
|
||||
2026/09/13 16:50:03 [INFO] Received report from demo-felhom (3268 bytes)
|
||||
2026/09/13 16:50:03 [INFO] managed floor SERVED for demo-felhom: floor 0.236.0, agent requirement "0.129.0" from manifest (golden 0.236.0)
|
||||
2026/09/13 16:50:04 [INFO] DR-recipe app-half stored for customer demo-hp (v1)
|
||||
2026/09/13 16:50:04 [INFO] Received report from demo-hp (8019 bytes)
|
||||
2026/09/13 16:50:04 [INFO] managed floor SERVED for demo-hp: floor 0.236.0, agent requirement "0.129.0" from manifest (golden 0.236.0)
|
||||
2026/09/13 16:50:50 [INFO] Offsite pool-box refreshed: 0.3% full (2.7 GB of 1.00 TB), Σ shared quota 150 GB, oversub 0.15x
|
||||
@@ -0,0 +1,17 @@
|
||||
=== baseline — 2026-09-13T15:18:28Z ===
|
||||
hub image: gitea.dooplex.hu/admin/felhom-hub:0.112.0
|
||||
DB floor: "0.236.0" declared field: name="min_agent" value=""
|
||||
demo-hp (ssh hp) 9201: gitea.dooplex.hu/admin/felhom-controller:0.238.1 Up 5 hours (healthy)
|
||||
demo-felhom (felhom-pve-lan) 9201: gitea.dooplex.hu/admin/felhom-controller:0.238.1 Up 5 hours (healthy)
|
||||
VMID Status Lock Name
|
||||
9201 running demo-felhom
|
||||
|
||||
=== NEGATIVE CONTROL: floor 0.239.0 WITHOUT min_agent — 2026-09-13T15:18:34Z ===
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /configuration?flash=floor_needs_min_agent
|
||||
DB floor after: "0.236.0" declared field after: name="min_agent" value=""
|
||||
--- hub log, the refusal ---
|
||||
2026/09/13 17:18:34 [WARN] floor 0.239.0 refused: it is above the vouched golden 0.236.0 and no MinAgent was declared (R-472)
|
||||
--- the rendered flash (ASCII fragment + control) ---
|
||||
1
|
||||
0
|
||||
@@ -0,0 +1,54 @@
|
||||
=== DECLARED FLOOR: 0.239.0 with min_agent 0.129.0 ===
|
||||
T0 POST at 2026-09-13T15:19:12Z
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /configuration?flash=floor_set
|
||||
DB floor + declared: id="global-floor-input" name="min_controller_version" value="0.239.0" | name="min_agent" value="0.129.0" placeholder="MinAgent from |
|
||||
demo-hp on 0.239.0 at 2026-09-13T15:19:26Z (+14s): gitea.dooplex.hu/admin/felhom-controller:0.239.0 Up 5 seconds (healthy)
|
||||
demo-felhom on 0.239.0 at 2026-09-13T15:19:27Z (+15s): gitea.dooplex.hu/admin/felhom-controller:0.239.0 Up 8 seconds (healthy)
|
||||
--- hub log since T0 (managed floor) ---
|
||||
2026/09/13 17:19:12 [INFO] Global controller-version floor set to "0.239.0" (declared MinAgent "0.129.0")
|
||||
2026/09/13 17:19:14 [INFO] managed floor SERVED for demo-felhom: floor 0.239.0, agent requirement "0.129.0" from declared (golden 0.236.0)
|
||||
2026/09/13 17:19:15 [INFO] managed floor SERVED for demo-hp: floor 0.239.0, agent requirement "0.129.0" from declared (golden 0.236.0)
|
||||
|
||||
--- demo-hp: controller log (SetFloor / self-update / version) ---
|
||||
2026/09/13 15:19:22 updater.go:96: [DEBUG] [selfupdate] VerifyStartup: checking update state in /opt/docker/felhom-controller/data
|
||||
2026/09/13 15:19:22 updater.go:96: [DEBUG] [selfupdate] VerifyStartup: pending update found — target=0.239.0 previous=0.238.1
|
||||
2026/09/13 15:19:22 updater.go:809: [INFO] [selfupdate] Post-update startup: update successful (0.238.1 → 0.239.0)
|
||||
2026/09/13 15:19:22 main.go:655: [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
|
||||
2026/09/13 15:19:22 offsiteapply.go:151: [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
|
||||
2026/09/13 15:19:22 scheduler.go:102: [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
|
||||
2026/09/13 15:19:22 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="selfupdate-check" interval=6h0m0s totalJobs=18
|
||||
2026/09/13 15:19:23 client.go:67: [DEBUG] [agentapi] agent version seen: 0.130.0 (was "")
|
||||
2026/09/13 15:19:27 builder.go:40: [DEBUG] [report] BuildReport: starting — version=0.239.0, storagePaths=1
|
||||
2026/09/13 15:19:28 updater.go:96: [DEBUG] [selfupdate] SetFloor: floor "" → "0.239.0"
|
||||
2026/09/13 15:19:28 updater.go:96: [DEBUG] [selfupdate] maybeAutoUpdate: current 0.239.0 >= floor 0.239.0 — no action
|
||||
2026/09/13 15:19:32 offsiteapply.go:151: [INFO] [offsite-apply] settle-gate: GO — at/above floor 0.239.0 (we are 0.239.0), no managed update running
|
||||
|
||||
--- demo-hp: bootstrap service journal ---
|
||||
Sep 13 15:19:20 demo-hp systemd[1]: felhom-controller-bootstrap.service: Deactivated successfully.
|
||||
Sep 13 15:19:20 demo-hp systemd[1]: Stopped felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
Sep 13 15:19:20 demo-hp systemd[1]: Stopping felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 15:19:20 demo-hp systemd[1]: Starting felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 15:19:21 demo-hp felhom-controller-bootstrap.sh[1829428]: [ctrl-bootstrap] deploying gitea.dooplex.hu/admin/felhom-controller:0.239.0 from /etc/felhom-bootstrap/bootstrap.json (hostname=demo-hp)
|
||||
Sep 13 15:19:21 demo-hp felhom-controller-bootstrap.sh[1829480]: d27aeecc7f869b5836ee7a6c2c566213df05fce8f0f97a1f6beca99661680e16
|
||||
Sep 13 15:19:21 demo-hp felhom-controller-bootstrap.sh[1829428]: [ctrl-bootstrap] controller started
|
||||
Sep 13 15:19:21 demo-hp systemd[1]: Finished felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
|
||||
--- demo-felhom: controller log (SetFloor / self-update / version) ---
|
||||
2026/09/13 15:19:20 [INFO] [selfupdate] Post-update startup: update successful (0.238.1 → 0.239.0)
|
||||
2026/09/13 15:19:20 [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
|
||||
2026/09/13 15:19:20 [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
|
||||
2026/09/13 15:19:20 [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
|
||||
2026/09/13 15:19:30 [INFO] [offsite-apply] settle-gate: GO — at/above floor 0.239.0 (we are 0.239.0), no managed update running
|
||||
|
||||
--- demo-felhom: bootstrap service journal ---
|
||||
Sep 13 15:19:19 demo-felhom systemd[1]: felhom-controller-bootstrap.service: Deactivated successfully.
|
||||
Sep 13 15:19:19 demo-felhom systemd[1]: Stopped felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
Sep 13 15:19:19 demo-felhom systemd[1]: Stopping felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 15:19:19 demo-felhom systemd[1]: Starting felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 15:19:19 demo-felhom felhom-controller-bootstrap.sh[3492140]: [ctrl-bootstrap] deploying gitea.dooplex.hu/admin/felhom-controller:0.239.0 from /etc/felhom-bootstrap/bootstrap.json (hostname=demo-felhom)
|
||||
Sep 13 15:19:19 demo-felhom felhom-controller-bootstrap.sh[3492189]: 30f28bf3afa5f7b665ef62ca3ae5df0b23a1610eb74385a834382e3eaf6b7805
|
||||
Sep 13 15:19:19 demo-felhom felhom-controller-bootstrap.sh[3492140]: [ctrl-bootstrap] controller started
|
||||
Sep 13 15:19:19 demo-felhom systemd[1]: Finished felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
|
||||
SUMMARY T0=2026-09-13T15:19:12Z {'demo-hp': ('2026-09-13T15:19:26Z', 14), 'demo-felhom': ('2026-09-13T15:19:27Z', 15)} not done: []
|
||||
@@ -0,0 +1,58 @@
|
||||
=== Scenario K — no unit on ANY tier, a backup can be taken — 2026-09-13T15:25:41Z, controller 0.239.0 ===
|
||||
Fixture: throwaway actualbudget (deployed 15:24:21Z, Tier 2 switched off per app). A fresh deploy gets its
|
||||
Tier-1 unit within seconds (attempt 04a), so the unit is REMOVED here to make 'no unit anywhere' true.
|
||||
--- BEFORE removal (helper fixed: every tier location) ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/actualbudget:
|
||||
2026-09-13T15:24:22.6041945430 1017 manifest.json
|
||||
2026-09-13T15:24:22.6041945430 291 compose/app.yaml
|
||||
2026-09-13T15:24:22.6041945430 2259 compose/.felhom.yml
|
||||
2026-09-13T15:24:22.6041945430 1412 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/actualbudget: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/actualbudget: ABSENT
|
||||
app_backup record (off-site per-app pref): {'enabled': False, 'cross_drive': {'enabled': False, 'method': 'rsync', 'destination_path': '', 'schedule': 'daily', 'user_disabled': True}}
|
||||
--- remove the throwaway's own recovery unit, then POST the update with NO request in between ---
|
||||
removed
|
||||
ls: cannot access '/mnt/sys_drive/felhom-data/backups/primary/actualbudget': No such file or directory
|
||||
--- POST /api/stacks/actualbudget/update at 2026-09-13T15:25:45Z ---
|
||||
HTTP 202
|
||||
{"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"}
|
||||
end (2026-09-13T15:26:10Z, +24s): state=running updating=False phase=done err='' hold=''
|
||||
--- the controller, verbatim ---
|
||||
2026/09/13 15:25:45 update.go:336: [INFO] [stacks] update actualbudget: accepted — guarded update started
|
||||
2026/09/13 15:25:45 update.go:763: [INFO] [stacks] update actualbudget: phase checking
|
||||
2026/09/13 15:25:45 update_guard.go:173: [DEBUG] [backup] update precondition for actualbudget: no Tier-2 copy (nincs másodlagos fájlmásolat ehhez az alkalmazáshoz)
|
||||
2026/09/13 15:26:00 update.go:452: [INFO] [stacks] update actualbudget: no copy younger than 24h0m0s on any tier (found: none) — backing up first
|
||||
2026/09/13 15:26:00 update.go:763: [INFO] [stacks] update actualbudget: phase backing-up
|
||||
2026/09/13 15:26:00 update_guard.go:287: [INFO] [backup] update pre-backup for actualbudget: starting (DB dump → volume dump → unit capture → Tier 2)
|
||||
2026/09/13 15:26:00 manager.go:1199: [DEBUG] [stacks] StopStack actualbudget: current state=running deployed=true containers=1
|
||||
2026/09/13 15:26:01 manager.go:1117: [DEBUG] [stacks] StartStack actualbudget: current state=stopped deployed=true
|
||||
2026/09/13 15:26:01 manager.go:1127: [DEBUG] [stacks] StartStack actualbudget: prepared 8 env vars for compose
|
||||
2026/09/13 15:26:02 installed.go:397: [DEBUG] [stacks] installed-images actualbudget: unchanged (1 service(s)) — app.yaml not rewritten
|
||||
2026/09/13 15:26:02 update_guard.go:337: [INFO] [backup] update pre-backup for actualbudget: volume dump OK
|
||||
2026/09/13 15:26:02 update_guard.go:343: [INFO] [backup] update pre-backup for actualbudget: recovery unit captured (0 database dump(s))
|
||||
2026/09/13 15:26:02 tier2.go:293: [INFO] [backup] Tier 2 for actualbudget skipped — disabled by customer
|
||||
2026/09/13 15:26:02 update_guard.go:352: [INFO] [backup] update pre-backup for actualbudget: complete in 1.423s
|
||||
2026/09/13 15:26:02 update_guard.go:173: [DEBUG] [backup] update precondition for actualbudget: no Tier-2 copy (nincs másodlagos fájlmásolat ehhez az alkalmazáshoz)
|
||||
2026/09/13 15:26:02 update.go:467: [INFO] [stacks] update actualbudget: precondition met after the backup — Tier 1 (own recovery unit) copy from 2026-09-13T15:26:02Z
|
||||
2026/09/13 15:26:02 update.go:763: [INFO] [stacks] update actualbudget: phase safety-dump
|
||||
2026/09/13 15:26:02 update_guard.go:403: [INFO] [backup] update safety dump for actualbudget: the app has no database — nothing to copy (no-op)
|
||||
2026/09/13 15:26:02 update.go:482: [INFO] [stacks] update actualbudget: safety dump done (0 file(s)) []
|
||||
2026/09/13 15:26:02 update.go:763: [INFO] [stacks] update actualbudget: phase pinning
|
||||
2026/09/13 15:26:02 pin.go:362: [INFO] [stacks] update actualbudget: pin advanced to the catalog's current definition (actualbudget=actualbudget/actual-server:26.7.0)
|
||||
2026/09/13 15:26:02 update.go:763: [INFO] [stacks] update actualbudget: phase pulling
|
||||
2026/09/13 15:26:03 update.go:763: [INFO] [stacks] update actualbudget: phase starting
|
||||
2026/09/13 15:26:03 update.go:763: [INFO] [stacks] update actualbudget: phase verifying
|
||||
2026/09/13 15:26:08 healthprobe.go:153: [DEBUG] Health probe actualbudget: HTTP GET :5006/ → 200 (4ms)
|
||||
2026/09/13 15:26:08 update.go:558: [INFO] [stacks] update actualbudget: healthy after 5s (the app's health check passed)
|
||||
2026/09/13 15:26:08 installed.go:397: [DEBUG] [stacks] installed-images actualbudget: unchanged (1 service(s)) — app.yaml not rewritten
|
||||
2026/09/13 15:26:08 update.go:564: [INFO] [stacks] update actualbudget: DONE in 23s
|
||||
--- AFTER: every tier location ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/actualbudget:
|
||||
2026-09-13T15:26:02.2202745980 1059 manifest.json
|
||||
2026-09-13T15:26:02.2194343050 291 compose/app.yaml
|
||||
2026-09-13T15:26:02.2194343050 2259 compose/.felhom.yml
|
||||
2026-09-13T15:26:02.2194343050 1412 compose/docker-compose.yml
|
||||
2026-09-13T15:26:01.5313724220 74240 volume-dumps/actualbudget_actualbudget_data.tar
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/actualbudget: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/actualbudget: ABSENT
|
||||
=== K done 2026-09-13T15:26:12Z ===
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
=== Scenario K — no unit anywhere, a backup can be taken — 2026-09-13T15:24:19Z, controller 0.239.0 ===
|
||||
--- BEFORE: every tier's location ---
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
app_backup record: None
|
||||
--- deploy actualbudget (throwaway) at 2026-09-13T15:24:21Z ---
|
||||
HTTP 202
|
||||
{"ok":true,"message":"Telepítés elindítva – az állapot a kártyán követhető"}
|
||||
after deploy (2026-09-13T15:24:47Z): state=running updating=False phase=None err='' hold=''
|
||||
--- Tier 2 OFF for actualbudget via POST /stacks/actualbudget/backup (form, enabled absent) at 2026-09-13T15:24:47Z ---
|
||||
HTTP/2 303
|
||||
location: /stacks/actualbudget/backup?flash=A+2.+ment%C3%A9s+be%C3%A1ll%C3%ADt%C3%A1sa+elmentve.
|
||||
|
||||
--- IMMEDIATELY BEFORE the update: still no unit? ---
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
--- POST /api/stacks/actualbudget/update at 2026-09-13T15:24:48Z ---
|
||||
HTTP 202
|
||||
{"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"}
|
||||
+ 0s phase safety-dump
|
||||
+ 3s phase done
|
||||
end (2026-09-13T15:24:51Z, +3s): state=running updating=False phase=done err='' hold=''
|
||||
--- the controller, verbatim (update + pre-backup + tier choice) ---
|
||||
2026/09/13 15:24:48 update.go:336: [INFO] [stacks] update actualbudget: accepted — guarded update started
|
||||
2026/09/13 15:24:48 update.go:763: [INFO] [stacks] update actualbudget: phase checking
|
||||
2026/09/13 15:24:48 update_guard.go:173: [DEBUG] [backup] update precondition for actualbudget: no Tier-2 copy (nincs másodlagos fájlmásolat ehhez az alkalmazáshoz)
|
||||
2026/09/13 15:24:48 update.go:450: [INFO] [stacks] update actualbudget: precondition met — Tier 1 (own recovery unit) copy from 2026-09-13T15:24:22Z (0s old, limit 24h0m0s)
|
||||
2026/09/13 15:24:48 update.go:763: [INFO] [stacks] update actualbudget: phase safety-dump
|
||||
2026/09/13 15:24:48 update_guard.go:403: [INFO] [backup] update safety dump for actualbudget: the app has no database — nothing to copy (no-op)
|
||||
2026/09/13 15:24:48 update.go:482: [INFO] [stacks] update actualbudget: safety dump done (0 file(s)) []
|
||||
2026/09/13 15:24:48 update.go:763: [INFO] [stacks] update actualbudget: phase pinning
|
||||
2026/09/13 15:24:48 pin.go:362: [INFO] [stacks] update actualbudget: pin advanced to the catalog's current definition (actualbudget=actualbudget/actual-server:26.7.0)
|
||||
2026/09/13 15:24:48 update.go:763: [INFO] [stacks] update actualbudget: phase pulling
|
||||
2026/09/13 15:24:50 update.go:763: [INFO] [stacks] update actualbudget: phase starting
|
||||
2026/09/13 15:24:50 update.go:763: [INFO] [stacks] update actualbudget: phase verifying
|
||||
2026/09/13 15:24:50 healthprobe.go:153: [DEBUG] Health probe actualbudget: HTTP GET :5006/ → 200 (3ms)
|
||||
2026/09/13 15:24:50 update.go:558: [INFO] [stacks] update actualbudget: healthy after 0s (the app's health check passed)
|
||||
2026/09/13 15:24:50 installed.go:397: [DEBUG] [stacks] installed-images actualbudget: unchanged (1 service(s)) — app.yaml not rewritten
|
||||
2026/09/13 15:24:50 update.go:564: [INFO] [stacks] update actualbudget: DONE in 2s
|
||||
--- AFTER: the unit the backup-first made ---
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
:
|
||||
2026-07-04T09:05:00.0000000000 132 .profile
|
||||
2026-08-18T10:54:08.4964149220 0 .bash_history
|
||||
2026-08-21T21:09:27.0884871020 2777 settings.json.drill-backup
|
||||
2026-07-04T09:05:00.0000000000 607 .bashrc
|
||||
--- the card ---
|
||||
state=running updating=False phase=done err='' hold=''
|
||||
=== K done 2026-09-13T15:24:54Z ===
|
||||
@@ -0,0 +1,52 @@
|
||||
=== Scenario H — gokapi, only its own recovery unit (Tier 1) — 2026-09-13T15:30:45Z, controller 0.239.0 ===
|
||||
--- BEFORE: every tier location (a unit left from 06:59Z, R-474); Tier 2 already switched off per app ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T06:59:17.4202088100 1014 manifest.json
|
||||
2026-09-13T06:59:17.4202088100 394 compose/app.yaml
|
||||
2026-09-13T06:59:17.4202088100 2497 compose/.felhom.yml
|
||||
2026-09-13T06:59:17.4202088100 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
--- deploy gokapi (throwaway; GOKAPI_PASSWORD generated here, never printed or stored) at 2026-09-13T15:30:46Z ---
|
||||
HTTP 202
|
||||
{"ok":true,"message":"Telepítés elindítva – az állapot a kártyán követhető"}
|
||||
after deploy (2026-09-13T15:31:07Z): state=running updating=False phase=None err='' hold=''
|
||||
app_backup record: {'enabled': False, 'cross_drive': {'enabled': False, 'method': 'rsync', 'destination_path': '', 'schedule': 'daily', 'user_disabled': True}}
|
||||
--- IMMEDIATELY BEFORE the update ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T06:59:17.4202088100 1014 manifest.json
|
||||
2026-09-13T06:59:17.4202088100 394 compose/app.yaml
|
||||
2026-09-13T06:59:17.4202088100 2497 compose/.felhom.yml
|
||||
2026-09-13T06:59:17.4202088100 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
--- POST /api/stacks/gokapi/update at 2026-09-13T15:31:09Z ---
|
||||
HTTP 202
|
||||
{"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"}
|
||||
+ 0s phase safety-dump
|
||||
+ 3s phase done
|
||||
end (2026-09-13T15:31:13Z, +3s): state=running updating=False phase=done err='' hold=''
|
||||
--- the controller, verbatim ---
|
||||
2026/09/13 15:31:10 update.go:336: [INFO] [stacks] update gokapi: accepted — guarded update started
|
||||
2026/09/13 15:31:10 update.go:763: [INFO] [stacks] update gokapi: phase checking
|
||||
2026/09/13 15:31:10 update_guard.go:173: [DEBUG] [backup] update precondition for gokapi: no Tier-2 copy (nincs másodlagos fájlmásolat ehhez az alkalmazáshoz)
|
||||
2026/09/13 15:31:10 update.go:450: [INFO] [stacks] update gokapi: precondition met — Tier 1 (own recovery unit) copy from 2026-09-13T06:59:17Z (8h32m0s old, limit 24h0m0s)
|
||||
2026/09/13 15:31:10 update.go:763: [INFO] [stacks] update gokapi: phase safety-dump
|
||||
2026/09/13 15:31:10 update.go:482: [INFO] [stacks] update gokapi: safety dump done (0 file(s)) []
|
||||
2026/09/13 15:31:10 update.go:763: [INFO] [stacks] update gokapi: phase pinning
|
||||
2026/09/13 15:31:10 pin.go:362: [INFO] [stacks] update gokapi: pin advanced to the catalog's current definition (gokapi=f0rc3/gokapi:v1.9.6)
|
||||
2026/09/13 15:31:10 update.go:763: [INFO] [stacks] update gokapi: phase pulling
|
||||
2026/09/13 15:31:11 update.go:763: [INFO] [stacks] update gokapi: phase starting
|
||||
2026/09/13 15:31:11 update.go:763: [INFO] [stacks] update gokapi: phase verifying
|
||||
2026/09/13 15:31:11 update.go:558: [INFO] [stacks] update gokapi: healthy after 0s (the app's health check passed)
|
||||
2026/09/13 15:31:11 update.go:564: [INFO] [stacks] update gokapi: DONE in 2s
|
||||
--- AFTER ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T06:59:17.4202088100 1014 manifest.json
|
||||
2026-09-13T06:59:17.4202088100 394 compose/app.yaml
|
||||
2026-09-13T06:59:17.4202088100 2497 compose/.felhom.yml
|
||||
2026-09-13T06:59:17.4202088100 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
f0rc3/gokapi:v1.9.6 Up 29 seconds (healthy)
|
||||
=== H done 2026-09-13T15:31:16Z ===
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
=== Scenario H — gokapi, only its own recovery unit (Tier 1) — 2026-09-13T15:26:36Z, controller 0.239.0 ===
|
||||
--- BEFORE: every tier location (a unit left from 06:59Z, R-474) ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T06:59:17.4202088100 1014 manifest.json
|
||||
2026-09-13T06:59:17.4202088100 394 compose/app.yaml
|
||||
2026-09-13T06:59:17.4202088100 2497 compose/.felhom.yml
|
||||
2026-09-13T06:59:17.4202088100 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
--- deploy gokapi (throwaway) at 2026-09-13T15:26:37Z ---
|
||||
HTTP 400
|
||||
{"ok":false,"error":"a(z) \"Admin jelszó\" mező kitöltése kötelező — használja a Generálás gombot vagy írjon be egy jelszót"}
|
||||
after deploy (2026-09-13T15:29:59Z): state=not_deployed updating=False phase=None err='' hold=''
|
||||
--- Tier 2 OFF for gokapi via POST /stacks/gokapi/backup (form, enabled absent) at 2026-09-13T15:29:59Z ---
|
||||
HTTP/2 303
|
||||
location: /stacks/gokapi/backup?flash=A+2.+ment%C3%A9s+be%C3%A1ll%C3%ADt%C3%A1sa+elmentve.
|
||||
|
||||
app_backup record: {'enabled': False, 'cross_drive': {'enabled': False, 'method': 'rsync', 'destination_path': '', 'schedule': 'daily', 'user_disabled': True}}
|
||||
--- IMMEDIATELY BEFORE the update ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T06:59:17.4202088100 1014 manifest.json
|
||||
2026-09-13T06:59:17.4202088100 394 compose/app.yaml
|
||||
2026-09-13T06:59:17.4202088100 2497 compose/.felhom.yml
|
||||
2026-09-13T06:59:17.4202088100 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
--- POST /api/stacks/gokapi/update at 2026-09-13T15:30:02Z ---
|
||||
HTTP 409
|
||||
{"ok":false,"error":"Az alkalmazás nincs telepítve, ezért nem frissíthető."}
|
||||
end (2026-09-13T15:30:05Z, +3s): state=not_deployed updating=False phase=None err='' hold=''
|
||||
--- the controller, verbatim ---
|
||||
2026/09/13 15:30:02 update.go:217: [ERROR] [stacks] update gokapi REFUSED (not_deployed): not deployed
|
||||
--- AFTER ---
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T06:59:17.4202088100 1014 manifest.json
|
||||
2026-09-13T06:59:17.4202088100 394 compose/app.yaml
|
||||
2026-09-13T06:59:17.4202088100 2497 compose/.felhom.yml
|
||||
2026-09-13T06:59:17.4202088100 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
|
||||
=== H done 2026-09-13T15:30:08Z ===
|
||||
@@ -0,0 +1,10 @@
|
||||
=== F setup — wait for the capture sweep to rewrite gokapi's Tier-1 unit for THIS install — 2026-09-13T15:31:51Z ===
|
||||
manifest mtime now: 2026-09-13 15:34:22.637661403 +0000 (+151s)
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T15:34:22.6376614030 1014 manifest.json
|
||||
2026-09-13T15:34:22.6376614030 393 compose/app.yaml
|
||||
2026-09-13T15:34:22.6366613900 2497 compose/.felhom.yml
|
||||
2026-09-13T15:34:22.6366613900 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
SUBDOMAIN: gokapih5
|
||||
@@ -0,0 +1,38 @@
|
||||
=== Scenario F-shape on Tier 1 — gokapi's new version never comes up — 2026-09-13T15:34:50Z, controller 0.239.0 ===
|
||||
Fixture: a BOX-LOCAL edit of gokapi's catalog-cache template (image -> alpine:3.20, which exits at once),
|
||||
put back as soon as the job is past the pin. No catalog commit.
|
||||
16: image: alpine:3.20
|
||||
--- POST /api/stacks/gokapi/update at 2026-09-13T15:34:51Z ---
|
||||
HTTP 202
|
||||
{"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"}
|
||||
+ 0s phase safety-dump
|
||||
+ 3s phase verifying
|
||||
[fixture] template put back at 2026-09-13T15:34:55Z: 1
|
||||
+305s phase failed
|
||||
end (2026-09-13T15:39:57Z, +305s): state=stopped updating=False phase=failed err='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.' hold='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.'
|
||||
--- the hold sentence (Python string checks, no shell grep) ---
|
||||
A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.
|
||||
names 'saját meghajtó': True | control 'második meghajtó': False | control 'távoli mentés': False
|
||||
--- a held app refuses start ---
|
||||
HTTP 409
|
||||
{"ok":false,"error":"A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34."}
|
||||
--- the controller, verbatim ---
|
||||
2026/09/13 15:34:51 update.go:336: [INFO] [stacks] update gokapi: accepted — guarded update started
|
||||
2026/09/13 15:34:51 update.go:763: [INFO] [stacks] update gokapi: phase checking
|
||||
2026/09/13 15:34:51 update_guard.go:173: [DEBUG] [backup] update precondition for gokapi: no Tier-2 copy (nincs másodlagos fájlmásolat ehhez az alkalmazáshoz)
|
||||
2026/09/13 15:34:51 update.go:450: [INFO] [stacks] update gokapi: precondition met — Tier 1 (own recovery unit) copy from 2026-09-13T15:34:22Z (0s old, limit 24h0m0s)
|
||||
2026/09/13 15:34:51 update.go:763: [INFO] [stacks] update gokapi: phase safety-dump
|
||||
2026/09/13 15:34:52 update_guard.go:403: [INFO] [backup] update safety dump for gokapi: the app has no database — nothing to copy (no-op)
|
||||
2026/09/13 15:34:52 update.go:482: [INFO] [stacks] update gokapi: safety dump done (0 file(s)) []
|
||||
2026/09/13 15:34:52 update.go:763: [INFO] [stacks] update gokapi: phase pinning
|
||||
2026/09/13 15:34:52 pin.go:362: [INFO] [stacks] update gokapi: pin advanced to the catalog's current definition (gokapi=alpine:3.20)
|
||||
2026/09/13 15:34:52 update.go:763: [INFO] [stacks] update gokapi: phase pulling
|
||||
2026/09/13 15:34:54 update.go:763: [INFO] [stacks] update gokapi: phase starting
|
||||
2026/09/13 15:34:54 update.go:763: [INFO] [stacks] update gokapi: phase verifying
|
||||
2026/09/13 15:39:56 update.go:569: [ERROR] [stacks] update gokapi FAILED after the new version was started: not healthy: not healthy within 5m0s (last: state restarting) — stopping and HOLDING the app; the pin stays on the new version (its migration may have run)
|
||||
2026/09/13 15:39:56 update_guard.go:468: [WARN] [backup] gokapi is HELD STOPPED after a failed update (restore point: tier 1 "saját meghajtó", 2026-09-13T15:34:22Z)
|
||||
--- the hold record ---
|
||||
{'stack': 'gokapi', 'at': '2026-09-13T15:39:56Z', 'reason': 'update_failed', 'copy_date': '2026-09-13T15:34:22Z', 'copy_tier': 1}
|
||||
--- the template after the fixture ---
|
||||
16: image: f0rc3/gokapi:v1.9.6
|
||||
=== F done 2026-09-13T15:40:00Z ===
|
||||
@@ -0,0 +1,56 @@
|
||||
=== The restore walk — from „helyi” through the restore page — 2026-09-13T15:40:16Z ===
|
||||
--- BEFORE: state=stopped updating=False phase=failed err='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.' hold='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.'
|
||||
--- POST /backup/restore (form: stack_name=gokapi, snapshot_id=helyi — what the restore page submits) at 2026-09-13T15:40:16Z ---
|
||||
HTTP/2 302
|
||||
location: /backups/restore?flash=Vissza%C3%A1ll%C3%ADt%C3%A1s+elindult+%E2%80%94+az+%C3%A1llapot+itt+friss%C3%BCl.
|
||||
|
||||
--- restore-status at the end ---
|
||||
{
|
||||
"_raw": "404 page not found"
|
||||
}
|
||||
--- the app after the restore ---
|
||||
state=starting updating=False phase=failed err='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.' hold='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.'
|
||||
f0rc3/gokapi:v1.9.6 Up 4 seconds (health: starting)
|
||||
pinned: {'gokapi': 'f0rc3/gokapi:v1.9.6'} | installed: None
|
||||
--- the hold store ---
|
||||
{'stack': 'gokapi', 'at': '2026-09-13T15:39:56Z', 'reason': 'update_failed', 'copy_date': '2026-09-13T15:34:22Z', 'copy_tier': 1}
|
||||
--- the controller, verbatim ---
|
||||
2026/09/13 15:40:16 auth.go:134: [DEBUG] [web] auth: valid session for POST /backup/restore
|
||||
2026/09/13 15:40:16 server.go:393: [DEBUG] [web] ServeHTTP: POST /backup/restore from 172.18.0.3:33564
|
||||
2026/09/13 15:40:16 handlers.go:1480: [DEBUG] [web] backupRestoreHandler: stack=gokapi snapshot=helyi from 172.18.0.3:33564
|
||||
2026/09/13 15:40:16 handlers.go:1506: [WARN] [web] Restore requested (async): stack=gokapi, snapshot=helyi from 172.18.0.3:33564
|
||||
2026/09/13 15:40:16 restore_unit.go:313: [INFO] [backup] Restoring gokapi from recovery unit /mnt/sys_drive/felhom-data/backups/primary/gokapi: images=1, secrets recovered=1/1, data_keys=0
|
||||
2026/09/13 15:40:16 manager.go:1199: [DEBUG] [stacks] StopStack gokapi: current state=stopped deployed=true containers=0
|
||||
2026/09/13 15:40:16 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/restore-status
|
||||
2026/09/13 15:40:16 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/restore-status from 172.18.0.3:33564
|
||||
2026/09/13 15:40:16 server.go:640: [WARN] [web] 404 Not Found: GET /backup/restore-status
|
||||
2026/09/13 15:40:16 pin.go:93: [INFO] [stacks] pin gokapi: gokapi=f0rc3/gokapi:v1.9.6
|
||||
2026/09/13 15:40:16 manager.go:1117: [DEBUG] [stacks] StartStack gokapi: current state=stopped deployed=true
|
||||
2026/09/13 15:40:16 manager.go:1127: [DEBUG] [stacks] StartStack gokapi: prepared 9 env vars for compose
|
||||
2026/09/13 15:40:16 installed.go:408: [INFO] [stacks] installed-images gokapi: recorded 1 service(s) (gokapi=f0rc3/gokapi:v1.9.6 (sha256:ae9094a0ead8…))
|
||||
2026/09/13 15:40:19 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/restore-status
|
||||
2026/09/13 15:40:19 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/restore-status from 172.18.0.3:33564
|
||||
2026/09/13 15:40:19 server.go:640: [WARN] [web] 404 Not Found: GET /backup/restore-status
|
||||
2026/09/13 15:40:19 restore.go:212: [DEBUG] [backup] Post-restore health check: gokapi not yet running, waiting...
|
||||
=== restore walk done 2026-09-13T15:40:22Z ===
|
||||
|
||||
=== SECOND READ — the first read above stopped after 3 s: it polled /backup/restore-status, which is 404,
|
||||
=== so it saw the restore still running. This is the finished state — 2026-09-13T15:40:44Z ===
|
||||
GET /api/backup/restore-status -> HTTP 200 {"ok":true,"data":{"running":false,"op":"restore","stack":"gokapi","started_at":"2026-09-13T15:40:16.222440489Z","last":{"op":"restore","stack":"gokapi","ok":true,"message":"A(z) gokapi: a beállítások visszaálltak — az alkalmazás újraindult. FIGYELEM: ez a mentés csak a beállításokat tartalmazta, adatot nem. Az alkalmazás adatai NEM álltak vissza ebből a mentésből.","finished_at":"2026-09-13T15:40:24.982262899Z"},"last_recent":true}}
|
||||
GET /backups/restore-status -> HTTP 404 404 page not found
|
||||
GET /api/restore-status -> HTTP 404 {"ok":false,"error":"endpoint not found"}
|
||||
--- the app ---
|
||||
state=running updating=False phase=failed err='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.' hold=''
|
||||
f0rc3/gokapi:v1.9.6 Up 29 seconds (healthy)
|
||||
pinned: {'gokapi': 'f0rc3/gokapi:v1.9.6'}
|
||||
--- the hold store ---
|
||||
None
|
||||
--- a start is no longer refused (the app is running; restart as the probe) ---
|
||||
--- the controller, verbatim, restore end ---
|
||||
2026/09/13 15:40:19 restore.go:212: [DEBUG] [backup] Post-restore health check: gokapi not yet running, waiting...
|
||||
2026/09/13 15:40:24 restore.go:207: [DEBUG] [backup] Post-restore health check: gokapi is running
|
||||
2026/09/13 15:40:24 restore_unit.go:391: [INFO] [backup] Restore-from-unit completed: gokapi — 0 volume(s) of 0 listed, 0 database(s) of 0 listed
|
||||
2026/09/13 15:40:24 settings.go:1656: [INFO] [settings] restore hold CLEARED for gokapi
|
||||
2026/09/13 15:40:24 update_guard.go:517: [INFO] [backup] gokapi: restore completed — the update hold (set 2026-09-13T15:39:56Z) is CLEARED
|
||||
2026/09/13 15:40:24 handlers.go:1518: [INFO] [web] Restore completed (async): stack=gokapi in 8.759734524s (volumes 0/0, dbs 0/0)
|
||||
=== second read done 2026-09-13T15:40:48Z ===
|
||||
@@ -0,0 +1,4 @@
|
||||
=== The card AFTER a successful restore — 2026-09-13T15:42:12Z ===
|
||||
API: state=running updating=False phase=failed err='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.' hold=''
|
||||
GET /stacks (145958 bytes, read 15:41Z): 'leállítva marad' inside gokapi card region: True | control, actualbudget card: False
|
||||
FINDING: the hold is cleared and the app runs, but update_phase=failed + update_error stay, so the card still says the app is stopped.
|
||||
@@ -0,0 +1,83 @@
|
||||
=== Teardown — three layers — 2026-09-13T15:42:12Z ===
|
||||
--- layer 1: the two throwaway apps, through the product's own removal ---
|
||||
gokapi HTTP 200 {"ok":true,"message":"Stack gokapi stop completed"}
|
||||
gokapi HTTP 200 {"ok":true,"data":{"removed":"gokapi","volumes_removed":null,"hdd_paths_removed":[],"hdd_paths_preserved":[],"hdd_note":"Az alkalmazás nem tárolt saját adatot külső meghajtón, így ott nem volt mit törölni."},"message":"Stack gokapi removed"}
|
||||
actualbudget HTTP 200 {"ok":true,"message":"Stack actualbudget stop completed"}
|
||||
actualbudget HTTP 200 {"ok":true,"data":{"removed":"actualbudget","volumes_removed":null,"hdd_paths_removed":[],"hdd_paths_preserved":[],"hdd_note":"Az alkalmazás nem tárolt saját adatot külső meghajtón, így ott nem volt mit törölni."},"message":"Stack actualbudget removed"}
|
||||
gokapi -> state=not_deployed updating=False phase=failed err='A(z) gokapi frissítése 2026-09-13 17:39-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 17:34.' hold=''
|
||||
no containers
|
||||
/mnt/sys_drive/felhom-data/backups/primary/gokapi:
|
||||
2026-09-13T15:34:22.6376614030 1014 manifest.json
|
||||
2026-09-13T15:34:22.6376614030 393 compose/app.yaml
|
||||
2026-09-13T15:34:22.6366613900 2497 compose/.felhom.yml
|
||||
2026-09-13T15:34:22.6366613900 2993 compose/docker-compose.yml
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/gokapi: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/gokapi: ABSENT
|
||||
actualbudget -> state=not_deployed updating=False phase=done err='' hold=''
|
||||
no containers
|
||||
/mnt/sys_drive/felhom-data/backups/primary/actualbudget:
|
||||
2026-09-13T15:26:02.2202745980 1059 manifest.json
|
||||
2026-09-13T15:26:02.2194343050 291 compose/app.yaml
|
||||
2026-09-13T15:26:02.2194343050 2259 compose/.felhom.yml
|
||||
2026-09-13T15:26:02.2194343050 1412 compose/docker-compose.yml
|
||||
2026-09-13T15:26:01.5313724220 74240 volume-dumps/actualbudget_actualbudget_data.tar
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/actualbudget: ABSENT
|
||||
/mnt/felhom-drives/hdd_1/backups/secondary/actualbudget: ABSENT
|
||||
app_backup prefs left: {'gokapi': {'enabled': False}, 'actualbudget': {'enabled': False}}
|
||||
holds: None
|
||||
--- layer 2: the box-local fixture ---
|
||||
ls: cannot access '/root/gokapi-compose.orig': No such file or directory
|
||||
16: image: f0rc3/gokapi:v1.9.6
|
||||
--- layer 3: fleet + hub, left as the release state (floor 0.239.0 with declared MinAgent 0.129.0 is the CORRECT floor now) ---
|
||||
hp gitea.dooplex.hu/admin/felhom-controller:0.239.0 Up 23 minutes (healthy)
|
||||
felhom-pve-lan gitea.dooplex.hu/admin/felhom-controller:0.239.0 Up 23 minutes (healthy)
|
||||
standing apps:
|
||||
2026/09/13 16:50:03 [INFO] managed floor SERVED for demo-felhom: floor 0.236.0, agent requirement "0.129.0" from manifest (golden 0.236.0)
|
||||
2026/09/13 16:50:04 [INFO] managed floor SERVED for demo-hp: floor 0.236.0, agent requirement "0.129.0" from manifest (golden 0.236.0)
|
||||
2026/09/13 17:19:14 [INFO] managed floor SERVED for demo-felhom: floor 0.239.0, agent requirement "0.129.0" from declared (golden 0.236.0)
|
||||
2026/09/13 17:19:15 [INFO] managed floor SERVED for demo-hp: floor 0.239.0, agent requirement "0.129.0" from declared (golden 0.236.0)
|
||||
|
||||
=== teardown done 2026-09-13T15:42:28Z ===
|
||||
|
||||
=== CORRECTION — the 'standing apps:' line above printed EMPTY because of a quoting slip in the teardown script (the tr argument). Re-read with a plain command — 2026-09-13T15:43:01Z ===
|
||||
bentopdf Up 11 hours (healthy)
|
||||
bookstack Up 11 hours (healthy)
|
||||
bookstack-db Up 8 hours (healthy)
|
||||
calibre-web Up 11 hours (healthy)
|
||||
cloudflared Up 11 days
|
||||
docmost Up 11 hours (healthy)
|
||||
docmost-postgres Up 11 hours (healthy)
|
||||
docmost-redis Up 11 hours (healthy)
|
||||
felhom-controller Up 23 minutes (healthy)
|
||||
filebrowser Up 11 days (healthy)
|
||||
kimai Up 11 hours (healthy)
|
||||
kimai-db Up 11 hours (healthy)
|
||||
opengist Up 11 hours (healthy)
|
||||
privatebin Up 11 hours (healthy)
|
||||
romm Up 11 hours (healthy)
|
||||
romm-db Up 11 hours (healthy)
|
||||
romm-redis Up 11 hours (healthy)
|
||||
traefik Up 11 days
|
||||
|
||||
=== CORRECTION 2 — the list above is MISSING paperless-ngx: the filter 'grep -v perl' (meant for a perl locale warning) also drops every line containing 'paperless'. Re-read filtering only the warning text — 2026-09-13T15:46:05Z ===
|
||||
bentopdf Up 11 hours (healthy)
|
||||
bookstack Up 11 hours (healthy)
|
||||
bookstack-db Up 8 hours (healthy)
|
||||
calibre-web Up 11 hours (healthy)
|
||||
cloudflared Up 11 days
|
||||
docmost Up 11 hours (healthy)
|
||||
docmost-postgres Up 11 hours (healthy)
|
||||
docmost-redis Up 11 hours (healthy)
|
||||
felhom-controller Up 26 minutes (healthy)
|
||||
filebrowser Up 11 days (healthy)
|
||||
kimai Up 11 hours (healthy)
|
||||
kimai-db Up 11 hours (healthy)
|
||||
opengist Up 11 hours (healthy)
|
||||
paperless-postgres Up 11 hours (healthy)
|
||||
paperless-redis Up 11 hours (healthy)
|
||||
paperless-webserver Up 11 hours (healthy)
|
||||
privatebin Up 11 hours (healthy)
|
||||
romm Up 11 hours (healthy)
|
||||
romm-db Up 11 hours (healthy)
|
||||
romm-redis Up 11 hours (healthy)
|
||||
traefik Up 11 days
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
F...
|
||||
======================================================================
|
||||
FAIL: test_decoy_body_mention_is_not_the_line (__main__.MinAgentHeaderGateTest.test_decoy_body_mention_is_not_the_line)
|
||||
R-421: the word in prose, a code span, or a non-bold form is the LABEL without the FACT.
|
||||
----------------------------------------------------------------------
|
||||
Traceback (most recent call last):
|
||||
File "/mnt/5_hdd/felhom.eu/git/felhom-controller/controller/scripts/test_minagent_header_gate.py", line 49, in test_decoy_body_mention_is_not_the_line
|
||||
self.assertEqual(rc, 1, out)
|
||||
~~~~~~~~~~~~~~~~^^^^^^^^^^^^
|
||||
AssertionError: 0 != 1 : minagent header gate OK — v0.239.0 declares MinAgent 0.129.0
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 4 tests in 0.124s
|
||||
|
||||
FAILED (failures=1)
|
||||
mutated-rc=1
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
MUTATION in /mnt/5_hdd/felhom.eu/git/felhom-controller/controller/internal/stacks/update.go:
|
||||
- if _, found, seen := g.RestorePoints(context.Background(), name, nil); !found {
|
||||
+ if _, _, seen := g.RestorePoints(context.Background(), name, nil); true {
|
||||
|
||||
=== RUN TestR475_L_AnExistingCopyStillCarriesAnAppThatCannotBeBackedUp
|
||||
update_tiers_test.go:118: a fresh off-site copy must carry the update even when no backup can be taken now, got "A(z) nextcloud nem frissíthető, mert nincs olyan biztonsági mentése, amelyből vissza lehetne állítani, és most új mentés sem készíthető róla. Ellenőrizd a Mentések oldalon, hogy az alkalmazás meghajtója elérhető-e — utána a frissítés elindítható."
|
||||
--- FAIL: TestR475_L_AnExistingCopyStillCarriesAnAppThatCannotBeBackedUp (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.006s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,23 @@
|
||||
MUTATION in /mnt/5_hdd/felhom.eu/git/felhom-controller/controller/internal/stacks/update.go:
|
||||
- return !p.ProvenAt.IsZero() && now.Sub(p.ProvenAt) <= maxAge
|
||||
+ return !p.ProvenAt.IsZero() && (p.Tier != UpdateTierSecondDrive || now.Sub(p.ProvenAt) <= maxAge)
|
||||
|
||||
=== RUN TestR475_M_TheAgeRuleAppliesToTheChosenTier
|
||||
=== RUN TestR475_M_TheAgeRuleAppliesToTheChosenTier/control:_a_stale_second-drive_copy_is_backed_up_first
|
||||
=== RUN TestR475_M_TheAgeRuleAppliesToTheChosenTier/a_stale_own_unit_is_backed_up_first
|
||||
update_tiers_test.go:150: backed up first = false, want true (calls [CanBackUp RestorePoints SafetyDump HoldAfterFailedUpdate])
|
||||
update_tiers_test.go:156: the chosen copy is 30h0m0s old — past the age limit
|
||||
=== RUN TestR475_M_TheAgeRuleAppliesToTheChosenTier/a_stale_off-site_copy_is_backed_up_first
|
||||
update_tiers_test.go:150: backed up first = false, want true (calls [CanBackUp RestorePoints SafetyDump HoldAfterFailedUpdate])
|
||||
update_tiers_test.go:153: the chosen copy is tier 3, want 1 (hold {Tier:3 ProvenAt:2026-09-12 04:00:00 +0000 UTC}, err "HELD-SENTENCE")
|
||||
update_tiers_test.go:156: the chosen copy is 30h0m0s old — past the age limit
|
||||
=== RUN TestR475_M_TheAgeRuleAppliesToTheChosenTier/a_stale_second_drive_does_not_block_a_fresh_own_unit
|
||||
--- FAIL: TestR475_M_TheAgeRuleAppliesToTheChosenTier (0.02s)
|
||||
--- PASS: TestR475_M_TheAgeRuleAppliesToTheChosenTier/control:_a_stale_second-drive_copy_is_backed_up_first (0.01s)
|
||||
--- FAIL: TestR475_M_TheAgeRuleAppliesToTheChosenTier/a_stale_own_unit_is_backed_up_first (0.01s)
|
||||
--- FAIL: TestR475_M_TheAgeRuleAppliesToTheChosenTier/a_stale_off-site_copy_is_backed_up_first (0.01s)
|
||||
--- PASS: TestR475_M_TheAgeRuleAppliesToTheChosenTier/a_stale_second_drive_does_not_block_a_fresh_own_unit (0.01s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.032s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,19 @@
|
||||
MUTATION in /mnt/5_hdd/felhom.eu/git/felhom-controller/controller/internal/backup/offbox_reconstitute.go:
|
||||
- m.clearUpdateHoldAfterRestore(stack)
|
||||
+ _ = stack
|
||||
|
||||
=== RUN TestR475_OffsiteRestoreClearsAnUpdateHold
|
||||
[INFO] [settings] No settings.json found, using defaults
|
||||
[INFO] [settings] Settings saved
|
||||
[INFO] [settings] Added storage path: /tmp/TestR475_OffsiteRestoreClearsAnUpdateHold1546124815/001
|
||||
[INFO] [settings] Settings saved
|
||||
[WARN] [settings] restore hold SET for immich — the app stays stopped until it is cleared
|
||||
[INFO] [settings] Settings saved
|
||||
[WARN] [backup] immich is HELD STOPPED after a failed update (restore point: tier 3 "távoli mentés", 2026-09-13T11:00:00Z)
|
||||
[INFO] [offbox] reconstituted immich from snapshot snap1: 3 file(s) placed, 0 volume(s) replayed, 0 DB dump(s) replayed, safety dump=., skewed=false
|
||||
update_tiers_test.go:315: a successful off-site restore is the route back the hold names — the hold must be lifted
|
||||
--- FAIL: TestR475_OffsiteRestoreClearsAnUpdateHold (3.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 3.008s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,12 @@
|
||||
MUTATION in /mnt/5_hdd/felhom.eu/git/felhom-controller/controller/internal/backup/update_guard.go:
|
||||
- os.Chtimes(RecoveryUnitManifestPath(nsRoot, stackName), now, now)
|
||||
+ os.Chtimes(RecoveryUnitManifestPath(nsRoot, stackName+".absent"), now, now)
|
||||
|
||||
=== RUN TestR475_PreBackupTail_Tier2FailureIsAWarnAndTheOwnUnitIsFresh
|
||||
update_tiers_test.go:241: the own unit must read as proven NOW (mtime 2026-09-12 11:08:10.733138645 +0200 CEST, now 2026-09-13 17:08:10.733144378 +0200 CEST m=+0.001178047)
|
||||
update_tiers_test.go:249: a successful Tier-2 copy must not WARN; log = "[WARN] [backup] update pre-backup for gokapi: could not mark the recovery unit as proven current (chtimes /tmp/TestR475_PreBackupTail_Tier2FailureIsAWarnAndTheOwnUnitIsFresh2878992753/001/backups/primary/gokapi.absent/manifest.json: no such file or directory) — its own-unit copy may read older than it is\n"
|
||||
--- FAIL: TestR475_PreBackupTail_Tier2FailureIsAWarnAndTheOwnUnitIsFresh (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.005s
|
||||
FAIL
|
||||
exit=1
|
||||
Reference in New Issue
Block a user