v0.325.0: CONTEXT, REPORT
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
+10
-1
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user