From 88aa65d595c8d673acd7f87fc911b52f25617e95 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sat, 17 Oct 2026 10:01:33 +0200 Subject: [PATCH] v0.325.0: CONTEXT, REPORT Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- CONTEXT.md | 11 ++++++++++- REPORT.md | 47 ++++++++++++++++++++++------------------------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/CONTEXT.md b/CONTEXT.md index 6168358..b6c9b35 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -7,7 +7,16 @@ > > Ask Claude Code: "Please update CONTEXT.md with what we did today" -Last updated: 2026-10-17 (v0.324.0 — the DB password comes back with the data, restic 0.19.1, dashboard hardening) +Last updated: 2026-10-17 (v0.325.0 — burndown 3: limiters, family fingerprints, samba label, path guard, gates in a worktree) + +> **2026-10-17 (day) — v0.325.0 (burndown 3).** R-1111 `reserveAttempt` is the one limiter body (dashboard sign-in, +> share password, escrow re-auth). R-1112 `family.json` stores fingerprints; an old file is converted when the +> controller STARTS (`webServer.OpenFamilyStore` — rc.1 opened it lazily, found live on 9201). R-1113 the household's +> pass reuses its family session (`Store.HouseholdSession`, new one under half-life). R-1109 samba compose label +> `felhom.smb-conf-sha256` (every box with sharing on recreates samba once). R-1110 `TestNoBareDrivePathToPathHelpers`. +> R-1114 `scripts/shared_scripts.py` + `FELHOM_WORKSPACE`. Same day, catalog `5d9450b`: five apps' Redis → RDB +> (R-1096), applied at each app's next start. Known flake filed: a stacks test writes `update-journal.json(.tmp)` into +> the package folder (empty DataDir), and the R-578 walk can trip on it. > **2026-10-17 (night) — v0.324.0 RELEASED to the three test boxes (per-box floors, 21:52 UTC).** R-1106 / R-127 b > (operator decision 1A): `appbackup.DBCredentialVars` + `DBDataVolumes`; `backup/restore_dbcreds.go` (pure diff --git a/REPORT.md b/REPORT.md index 93e743c..ae97fe1 100644 --- a/REPORT.md +++ b/REPORT.md @@ -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.