From 1ee6dbe184f9319d0554f86efc9ce9a28496e207 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Mon, 28 Sep 2026 11:51:52 +0200 Subject: [PATCH] REPORT: v0.277.0 Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- REPORT.md | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/REPORT.md b/REPORT.md index e9bddca..b3f8a61 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,23 +1,32 @@ -# REPORT — v0.276.0: a restore and a drive move keep the app's records (2026-09-27) +# REPORT — 2026-09-28: v0.277.0 — kept data also loads from the off-site copy (R-691 (2)) -Follow-up to the version-travel brief (v0.275.0). Architecture: `07-backup-architecture.md` §6.6. Evidence: -`felhom.eu/documentation/audits/records-carried-2026-09-27/`. +Architecture read first: `felhom.eu/documentation/architecture/07-backup-architecture.md` §6.5 (kept data), §6.6 (which +version a restore brings back); `06-offsite-connectivity.md` (what the off-site copy holds per app). -**Not done, or changed:** R-691 (2) (Load from the off-site copy) NOT built — a new restore path on household data with no -box CC may prove it on; R-700 NOT proven live (no Tier-0 guest has two drives); R-697's carry not exercised by a real -restore (it would spoil the night's release proof on 9202). +## What changed -**Baseline:** `main` `54bb4da`, v0.275.0, floor 0.275.0. **Commit:** `820e8ef`. **Released:** image `0.276.0`; floor 0.276.0 -(MinAgent 0.131.0); both demo boxes on 0.276.0 within 10 s; 9202 by hand. +- `backup.KeptBestCopy`: the newest usable LOCAL copy (own unit, second drive) or the OFF-SITE copy when it is newer or + the only one (a tie goes local). One `snapshots --json`, bounded 20 s; the kept list asks once per page. +- The install choice and the kept list name the copy and its date (`kept.choice.use.desc_from`, `kept.backup.offsite`). +- `backup.LoadKeptOffsite`: download the unit ALONE (the proof's `restoreUnitReadOnly`, proof scratch) → judge (this + drive, holds data, data version RECORDED — `07` §6.6, else refused; mixed/mismatched refused by `unitVersionCheck`) → + `prepare` (a dated folder's files move back) → the one unit restore → scratch removed BEFORE the outcome is reported. -- **R-697:** `PersistUnitRedeployConfig` now carries the life records from the `app.yaml` it replaces - (`carryLifeRecords`, `internal/stacks/life_records.go`); `earlier_conversion_copies` keeps a superseded copy's record and - `ReleaseConversionCopies` releases every kept copy by the same rule (`releaseOneConversionCopy`). -- **R-700 (new):** `doFlipRedeploy` persisted through that same fresh write and dropped the pin; now `persistDriveFlip` - (load-then-save, `HDD_PATH` only) + `upFromAppConfig` (the tail shared with `RedeployFromEnv`). +## Tests and red-proofs (`felhom.eu/documentation/audits/kept-offsite-2026-09-28/redproofs/`) -**Tests:** `internal/stacks/r700_records_carried_test.go` (4). Full suite `go build/vet/test ./...` rc=0; controller gates OK. -**Red-proofs** RP1–RP4 (`redproofs/`), each seen failing with the wrong value, tree restored. +| test | red-proof | failed with | +|---|---|---| +| `TestR691_OffsiteCopyIsOfferedWhenItIsTheOnlyOrNewest` + `TestR691_InstallChoiceNamesTheOffsiteCopy` | RP1: `KeptBestCopy` = `KeptDBCopy` (0.276.0) | `ok=false`; `use_offered=false use_off="There is no backup…"` | +| `TestR691_OffsiteLoadRefusalsLeaveTheKeptFilesAlone` | RP2: the `data`-block refusal removed | "the load reported success" | +| `TestR691_OffsiteLoadDownloadsJudgesThenRestores` | RP3 (seen in the first draft): scratch removed in a `defer` | "the downloaded copy was left behind" | -**Live:** 9202 paperless-ngx keeps its `conversion_copy` record and volume across the upgrade (`R/R3`). The night check -(the release on a real 18 dump, through the rewritten loop) is in `N/`. +`go build/vet/test ./...` green; `controller_gates.py` all OK (go-parity needed the 4 new keys listed). + +## Live + +- 9202 (endpoint level, the calls the pages make): Tier 1 route unchanged — the choice named „saját mentés, + 2026-09-28 10:06"; "use" loaded 3/3 volumes + 1/1 database; the seeded nextcloud user and file read back. + Tier 2 not runnable live (9202 has one drive). 9202 has no off-site target, so the off-site path is not asked there. +- Floor 0.276.0 → **0.277.0** (MinAgent 0.131.0) at 08:11Z; both demo boxes on 0.277.0, healthy, within a minute. +- **Not yet proven live: the off-site route.** A throwaway nextcloud on demo-hp 9201 joined the off-site copy; its first + snapshot is tonight's (Part E of the brief, morning of 2026-09-29).