v0.325.0: CONTEXT, REPORT

Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-17 10:01:33 +02:00
parent 6ed223886d
commit 88aa65d595
2 changed files with 32 additions and 26 deletions
+22 -25
View File
@@ -1,37 +1,34 @@
# REPORT — v0.324.0: the database password comes back with the data; restic 0.19.1; hardening; three fixes (2026-10-17)
# REPORT — v0.325.0: two more limiters reserve first; family sessions as fingerprints; samba renames apply; path guard widened; gates in a worktree (2026-10-17)
Night brief 2026-10-16 → 17 (operator decisions 1A, 2A). Full report in plain words: felhom.eu `REPORT-night-2026-10-17.md`.
Evidence: felhom.eu `documentation/audits/night-restore-2026-10-17/`.
Burndown 3 (Parts 2–5). Full report in plain words: felhom.eu `REPORT-burndown-3-2026-10-17.md`. Evidence: felhom.eu
`documentation/audits/burndown-3-2026-10-17/`.
## 1. What changed
- **R-1106 / R-127 (b) / R-926:** a restore puts back the database password the data was saved with
(`internal/backup/restore_dbcreds.go`, `restore_unit.go`, `offbox_reconstitute.go`; `internal/appbackup/dbservices.go`;
`stacks.SetStackSecretValues`). Refusal `err.backup.restore_no_db_password` (HU/EN). Design: felhom.eu `07` §7.4.
- **R-1107:** restic 0.19.1 (Dockerfile ARGs; fixtures `internal/backup/testdata/restic/{0.14.0,0.18.1,0.19.1}`).
- **R-1108** (samba), **R-1065** (Plex claim → wiring), **R-1017** (guard + `userdataKept` fix).
- **R-983** (six items) and **R-976** (two items): `internal/web` auth, family gate, setup gate, claim; templates.
- **R-1111:** `reserveAttempt` (auth.go) — the share password and the escrow re-auth count a try before the compare.
- **R-1112:** `family.Fingerprint`; `family.json` holds `fp`; old files converted at load; the store opens at start.
- **R-1113:** `Store.HouseholdSession` — one household family session, renewed under half-life.
- **R-1109:** samba compose label `felhom.smb-conf-sha256`.
- **R-1110:** `TestNoBareDrivePathToPathHelpers`; `GetStackBackupData(nsRoot)`; `appDetailsForPath` through `NamespaceRootFor`.
- **R-1114:** `scripts/shared_scripts.py`; the runner passes `FELHOM_WORKSPACE`.
## 2. Tests (each red-proved)
`TestR1106_*` (backup 7, stacks 1; six mutations + one), `TestR1105_*` over three versions, `TestSambaPassword_*`,
`TestPlexClaim_TriggersMediaWiring`, `TestNoBareDrivePathToUserdataDir`, `TestRemoveStack_R800_UserdataKeptOnSystemDrive`,
`TestR983_*`, `TestR976_*`. Full suite green; `controller_gates.py --fast` green. 135 i18n fixtures re-captured, 22 unchanged.
`TestR1111_*` (2), `TestR1112_*` (4) + `TestFamily_OldFileThatCannotBeRewrittenIsAnError`, `TestR1113_*`,
`TestRenderSambaCompose_ConfigHashLabel`, `TestSambaReconcile_SamePathRenameChangesCompose`,
`TestNoBareDrivePathToPathHelpers`, `test_shared_scripts.py`. Full suite green; `controller_gates.py --fast` green in the
clone and in a worktree. No page changed: every i18n fixture byte-identical.
## 3. Live
## 3. Live (demo-hp 9201, the dashboard's own posts)
demo-hp 9201 on rc.1: off-site, on-box, refusal and kept-data restore paths with Rallly and Grimmory; restic three-way
on the real store; headless Chrome through the public address. Released to Tester 1, demo-hp, demo-felhom by per-box
floors (21:52 UTC), box walk green; the night's off-site runs `backup OK` on all three (02:15–02:18 UTC); **global floor
0.324.0 / MinAgent 0.158.1 at 02:46 UTC**, read back from the hub DB and page; per-box floors cleared.
rc.1: samba — share added, renamed (delete + add on the same folder), a second share on the same folder; each read and
written with `smbclient` from 9202, the old name refused; the label equals the smb.conf hash at every step. rc.1 also
showed the lazy family-store open (old `family.json` unchanged) → fixed in rc.2: at start „2 session(s) … rewritten as
fingerprints", file keys `exp, fp, gen, member`. Headless Chrome ×3 through the public address: sign in, `DENY`, POST
sign-out, MeTube through the family gate; household sessions stayed 2 (no growth).
## 4. Observations
1. A share renamed at the same path is never applied to a running samba. FILED: R-1109
2. Two sibling path helpers are called with drive-named arguments, unguarded. FILED: R-1110
3. The share-password and escrow limiters count a try after the password check. FILED: R-1111
4. Family sessions are stored raw, not as a fingerprint. FILED: R-1112
5. Each `/__family/start` pass with a household session creates a new family session. FILED: R-1113
6. `controller_gates.py` cannot pass in a worktree outside `git/`. FILED: R-1114
7. Grimmory's on-box restore after its books were removed refused. NOT-A-FINDING: by design (R-479); its route is „use my kept data", proven.
8. The launcher logs 404s for SVG app logos. NOT-A-FINDING: it falls back to the PNG; the same assets were in 0.322.0.
1. A stacks test writes `update-journal.json(.tmp)` into its package folder; the R-578 source walk can trip on it. FILED (see felhom.eu report)
2. The escrow re-auth answers a wrong password in Hungarian only. FILED (see felhom.eu report)
3. Through the dashboard a rename was already applied before R-1109 (delete and add each change the compose); the label covers a controller update that changes smb.conf alone. NOT-A-FINDING: recorded in the row's close.