9202 teardown (drill apps removed, kept items deleted, live catalog); R-695 filed; B5 release proven live
gates / gates (push) Successful in 24s
gates / gates (push) Successful in 24s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -9,6 +9,6 @@ This repo carried:
|
||||
code commit) success; manifest synced by ArgoCD, image `0.125.0` confirmed on the deployment.
|
||||
- **`09`:** decisions 35–36 (operator), 37–39 (CC unattended); §6.4 part 10 as built for docmost.
|
||||
- **`07`:** §6.5 kept data (where it lives, that it is not backed up, who deletes it — D3 open).
|
||||
- **Register:** before 334 rows; opened R-689, R-691, R-693, R-694; opened and closed R-690, R-692; closed R-657;
|
||||
narrowed R-450, R-463, R-469, R-687, R-688, R-691; R-655 measured. After: 337.
|
||||
- **Register:** before 334 rows; opened R-689, R-691, R-693, R-694, R-695; opened and closed R-690, R-692; closed R-657;
|
||||
narrowed R-450, R-463, R-469, R-687, R-688, R-691; R-655 measured. After: 338.
|
||||
- **STATUS** with D3 in the decision section; **CONTEXT**.
|
||||
|
||||
@@ -21,9 +21,10 @@
|
||||
- **The file browser cannot open nextcloud's kept folder.** The files are there and can be loaded or deleted.
|
||||
- **The HP box's restore test tries to test the golden template file and fails every 6 hours.** Not fixed (agent side).
|
||||
- **The memory check always calls docmost "tight".** Its memory grows with its limit. Filed.
|
||||
- **Two quick deletes on the Kept data page can leave an empty folder that keeps coming back.** Seen once on the scratch box; no data involved. Cleared by hand. Filed.
|
||||
- **adventurelog stays on its old version.** I found how to skip its internet download. The move needs a choice.
|
||||
|
||||
**Rows.** 6 opened, 3 closed. The list went from 334 to 337.
|
||||
**Rows.** 7 opened, 3 closed. The list went from 334 to 338.
|
||||
|
||||
**Decision for you — D3: may the box ever delete kept data by itself?**
|
||||
- **A — never; only the household deletes it (I recommend this).** Cost: kept data can fill a drive. The drive-full warning names the kept folders and their sizes, so the household sees what to delete.
|
||||
|
||||
@@ -110,4 +110,4 @@ Cloudflare items to remove by hand; live preview read for demo-hp. F3 (R-655): m
|
||||
## Register
|
||||
|
||||
Before: **334 rows / 674,532 B**. Opened R-689, R-691 (helper), R-693, R-694; opened and closed R-690, R-692; closed
|
||||
R-657; narrowed R-450, R-463, R-469, R-687, R-688, R-691; R-655 measured. After: see the final count at the end.
|
||||
R-657; opened R-695 (teardown finding); narrowed R-450, R-463, R-469, R-687, R-688, R-691; R-655 measured. After: **338 rows**.
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# 9202, 2026-09-25T13:33:09Z: the release of docmost's kept pre-conversion copy
|
||||
2026/09/25 12:30:39 scheduler.go:102: [INFO] [scheduler] Registered periodic job: conversion-copy-release (every 1h0m0s)
|
||||
2026/09/25 12:30:39 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="conversion-copy-release" interval=1h0m0s totalJobs=10
|
||||
2026/09/25 13:30:39 scheduler.go:346: [INFO] [scheduler] Running job: conversion-copy-release
|
||||
2026/09/25 13:30:39 scheduler.go:67: [DEBUG] [scheduler] job conversion-copy-release: execution starting
|
||||
2026/09/25 13:30:39 pgconvert.go:584: [INFO] [stacks] docmost: REMOVED the pre-conversion datadir copy docmost_docmost_postgres_data.pre-update-20260925T111256Z (PostgreSQL 16) — the converted app has a backup proven on 18: Tier 1 (own recovery unit) at 2026-09-25T12:30:39Z
|
||||
2026/09/25 13:30:39 scheduler.go:363: [INFO] [scheduler] Job conversion-copy-release completed (took 162ms)
|
||||
undo copies:
|
||||
0
|
||||
-rw-r--r-- 1 root root 1514 2026-09-25T12:30:39 /mnt/sys_drive/felhom-data/backups/primary/docmost/manifest.json
|
||||
|
||||
/mnt/sys_drive/felhom-data/backups/primary/docmost/db-dumps/:
|
||||
total 624
|
||||
drwxr-xr-x 2 root root 4096 2026-09-25T11:57:00 .
|
||||
drwxr-xr-x 5 root root 4096 2026-09-25T12:30:39 ..
|
||||
-rw-r--r-- 1 root root 156064 2026-09-25T11:57:00 docmost-postgres.sql
|
||||
-rw-r--r-- 1 root root 154903 2026-09-25T11:08:02 pre-restore-20260925T110802Z-docmost-postgres.sql
|
||||
@@ -0,0 +1,61 @@
|
||||
remove docmost -> 200
|
||||
remove nextcloud -> 200
|
||||
kept items before: ['/mnt/felhom-drives/scratch_hdd/appdata/paperless', '/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332', '/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014', '/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm']
|
||||
delete /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332 -> /kept-data?flash=A(z)+Nextcloud+megőrzött+adatai+törölve.
|
||||
delete /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014 -> /kept-data?flash=A(z)+Nextcloud+megőrzött+adatai+törölve.
|
||||
kept items after: ['/mnt/felhom-drives/scratch_hdd/appdata/paperless', '/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm']
|
||||
left on 9202: nextcloud
|
||||
paperless
|
||||
|
||||
# check: 13:35:31
|
||||
ls: cannot access '/mnt/felhom-drives/scratch_hdd/appdata/nextcloud': No such file or directory
|
||||
/mnt/felhom-drives/scratch_hdd/kept:
|
||||
total 12
|
||||
drwxr-xr-x 3 root root 4096 Sep 25 13:35 .
|
||||
drwxr-xr-x 6 root root 4096 Sep 25 11:53 ..
|
||||
drwxr-xr-x 3 root root 4096 Sep 25 13:35 nextcloud
|
||||
du: cannot access '/mnt/felhom-drives/scratch_hdd/appdata/nextcloud': No such file or directory
|
||||
calibre-web documents downloads emby immich jellyfin komga media navidrome nextcloud paperless-ngx plex radarr romm roms sonarr /mnt/felhom-drives/scratch_hdd/kept
|
||||
/mnt/felhom-drives/scratch_hdd/kept/nextcloud
|
||||
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014
|
||||
12K /mnt/felhom-drives/scratch_hdd/kept
|
||||
# filebrowser binds now:
|
||||
/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm rw=false
|
||||
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014 rw=false
|
||||
/mnt/felhom-drives/scratch_hdd/appdata/paperless rw=false
|
||||
started 2026-09-25T13:35:17.412825531Z
|
||||
root 2026-09-25 13:35:17.400875516 +0000 /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014
|
||||
2026/09/25 13:35:17 handlers.go:3542: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping userdata skeleton
|
||||
2026/09/25 13:35:17 handlers.go:3542: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping userdata skeleton
|
||||
2026/09/25 13:35:17 handlers.go:3482: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (5 storage path(s))
|
||||
2026/09/25 13:35:17 handlers.go:3542: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton
|
||||
2026/09/25 13:35:17 handlers.go:3542: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping userdata skeleton
|
||||
2026/09/25 13:35:17 handlers.go:3542: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping userdata skeleton
|
||||
2026/09/25 13:35:17 handlers.go:3542: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping userdata skeleton
|
||||
2026/09/25 13:35:17 handlers.go:3482: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (5 storage path(s))
|
||||
git:
|
||||
branch: main
|
||||
repo_url: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git
|
||||
sync_interval: 15m
|
||||
token: <redacted>
|
||||
username: ""
|
||||
hub:
|
||||
0
|
||||
|
||||
# after the restart's sync: filebrowser kept binds:
|
||||
/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm
|
||||
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014
|
||||
/mnt/felhom-drives/scratch_hdd/appdata/paperless
|
||||
drwxr-xr-x 5 root root 4096 Sep 25 13:39 .
|
||||
drwxr-xr-x 3 root root 4096 Sep 13 20:23 ..
|
||||
drwxr-xr-x 3 root root 4096 Sep 25 13:35 appdata
|
||||
drwxr-xr-x 4 root root 4096 Sep 15 09:16 backups
|
||||
drwxrwsr-x 18 root 1000 4096 Sep 25 12:28 userdata
|
||||
gitea.dooplex.hu/admin/felhom-controller:0.274.0
|
||||
repo_url: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git
|
||||
# 13:39:29 kept dir present? no — restarting the controller once more
|
||||
# filebrowser kept binds now:
|
||||
/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm
|
||||
/mnt/felhom-drives/scratch_hdd/appdata/paperless
|
||||
# kept dir present? no
|
||||
drill reset to 4f19b21 (live main)
|
||||
@@ -0,0 +1,20 @@
|
||||
import re, os, time, urllib.parse
|
||||
import walk as w
|
||||
OUT = open(f"{w.EV}/G/T1-teardown-9202.txt", "w", buffering=1)
|
||||
def say(*a):
|
||||
w.say(*a); OUT.write(" ".join(map(str, a)) + "\n")
|
||||
w.login()
|
||||
for app in ("docmost", "nextcloud"):
|
||||
code = w.remove(app); say(f"remove {app} -> {code}")
|
||||
sess = open(f"{w.SC}/sess{os.getpid()}.txt").read().strip(); csrf = open(f"{w.SC}/csrf{os.getpid()}.txt").read().strip()
|
||||
h = w.page("/kept-data")
|
||||
items = re.findall(r'name="path" value="([^"]+)"', h)
|
||||
say("kept items before:", sorted(set(items)))
|
||||
for p in sorted(set(items)):
|
||||
if "/nextcloud" not in p and "/docmost" not in p:
|
||||
continue # only what THIS session made; the older leftovers stay as they were found
|
||||
r = w.sh(["curl", "-sk", "-D", "-", "-o", "/dev/null", "-H", w.HOSTHDR, "-H", f"Cookie: {sess}", "-X", "POST",
|
||||
"--data-urlencode", f"_csrf={csrf}", "--data-urlencode", f"path={p}", "--data-urlencode", "confirm=Nextcloud", f"{w.BASE}/kept-data/delete"])
|
||||
loc = re.search(r"(?im)^location:\s*(\S+)", r.stdout or ""); say("delete", p, "->", urllib.parse.unquote(loc.group(1) if loc else "?")[:160])
|
||||
say("kept items after:", sorted(set(re.findall(r'name="path" value="([^"]+)"', w.page("/kept-data")))))
|
||||
say("left on 9202:", w.guest("docker ps -a --format '{{.Names}}' | grep -iE 'docmost|nextcloud'; docker volume ls -q | grep -iE 'docmost|nextcloud'; ls /mnt/felhom-drives/scratch_hdd/kept 2>&1; ls /mnt/felhom-drives/scratch_hdd/appdata"))
|
||||
@@ -813,6 +813,7 @@ class (an image `VOLUME` at an unmounted path) is still live — `immich-server`
|
||||
| **R-691** | **[P3-LOW] Kept data (09 §3 decision 36): two gaps of the first build.** (1) **The read-only file-browser view cannot open a folder another user owns with mode 0770** — nextcloud's `appdata/nextcloud` is `www-data` `drwxrwx---` (measured on 9202 2026-09-25), FileBrowser runs as uid 1000, so „Megőrzött adatok" shows the folder and not its files; the files are still listed, sized, loadable and deletable. Fix direction needs a decision (a read-only ACL, or a helper that lists as root) — not a chmod of the household's data. (2) **„Use my kept data" / Load looks only at the own unit (Tier 1) and the second-drive mirror (Tier 2)**; an app whose only database copy is off-site gets "no backup". Controller `43e99d1`. `audits/night-2026-09-26/E/` **-- 2026-09-25 live proof:** (1) confirmed on 9202 — the view mounts nextcloud's kept folders `:ro` but its files are `www-data` 0770. Also seen: the source's name „Megőrzött adatok" is Hungarian on an English box (the file browser's config holds one name). | **OPEN — P3; owner: CC (needs a small decision for (1))** |
|
||||
| **R-693** | **[P3-LOW] The memory watch marks a Node app `memory_tight` at any limit — its heap sizes itself from the limit.** Measured 2026-09-25 on the bench (docmost 0.96.0, harness v4): the app's own memory (`anon`) peaked at **349 MB of 384 MB (90.9 %)**, then, with the limit raised to 512 MB, at **431 MB of 512 MB (80.4 %)** — 0 OOM kills and 0 restarts in both 10-minute watches (~12 000 requests each). So the mark (decision 22's "does not fit the memory") fires for an app that fits, and the gate's remedy (raise the limit) cannot clear it. docmost moved with the limit raised to 512 MB (decision 39). **Needs:** a basis that tells growth-to-fill from pressure (e.g. kills/restarts plus a GC-pressure signal, or a second watch at a higher limit showing the peak scales), or a per-app `memory_scales_with_limit` fact. `audits/night-2026-09-26/C/bench-run1/`, `…/bench-run2/` | **OPEN — P3; owner: CC** |
|
||||
| **R-694** | **[P3-LOW] Loading kept data (and every unit restore) regenerates a withheld login secret — does the household's shown password still work?** Seen 2026-09-25 on 9202 (E5, nextcloud): `generated replacement for [NEXTCLOUD_ADMIN_PASSWORD] — the credential was reset (old value unrecoverable)`. The unit deliberately carries no internet-reachable admin login (D5). For nextcloud the real admin password lives in the loaded DATABASE, so the new env value is likely inert — but if the app page shows the regenerated value as "your password", it is a false one. **Not measured:** what the page shows after a load, per app. `audits/night-2026-09-26/E/E5-5-use.txt` | **OPEN — P3; owner: CC (measure first)** |
|
||||
| **R-695** | **[P3-LOW] Two kept-data Deletes in the same second can leave a self-perpetuating empty kept folder.** Seen 2026-09-25 on 9202 (v0.274.0, teardown): two Deletes at 13:35:16 each started `SyncFileBrowserMounts` in a goroutine; one restarted the file browser with the OLD bind list, Docker recreated the deleted folder `kept/nextcloud/2026-09-25_141014` EMPTY (root, 13:35:17), and the next sync LISTED that empty folder as a kept item and kept binding it — so the bind recreated the folder and the folder kept the bind. Broken by removing the folder and one controller restart. Harm: an empty 0-byte row and a stale empty source in the view; no data. **Fix direction:** single-flight the file-browser sync (the second waits and re-reads), and never list or bind an EMPTY dated kept folder. `audits/night-2026-09-26/G/T1-teardown-9202.txt` | **OPEN — P3; owner: CC** |
|
||||
<!-- DUE-CHECKS-BEGIN — machine-readable. Parsed by scripts/due_checks_gate.py.
|
||||
One row per dated check. The R-number must have a row above. Dates are UTC.
|
||||
Clearing a row means the check was DONE and its result recorded in that R-row —
|
||||
|
||||
Reference in New Issue
Block a user