REPORT + CONTEXT: v0.270.0 (floor 0.270.0, both demo boxes arrived)
gates / gates (push) Successful in 25s

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:
2026-09-24 17:04:48 +02:00
parent 504eae018b
commit 1495ca43fb
2 changed files with 31 additions and 27 deletions
+8 -1
View File
@@ -7,7 +7,14 @@
> >
> Ask Claude Code: "Please update CONTEXT.md with what we did today" > Ask Claude Code: "Please update CONTEXT.md with what we did today"
Last updated: 2026-09-24 night (v0.269.1 — the whole restore from the second drive, the unhealthy stop, digests) Last updated: 2026-09-24 evening (v0.270.0 — R-679, R-681, R-669, R-674; floor 0.270.0)
> **2026-09-24 evening — v0.270.0, floor 0.270.0.** `UpdatePreflight` refuses `already_current` (R-679).
> `stacks/install_interrupted.go`: `.felhom-install-pending` marker + `RecoverInterruptedInstalls` at start (after the
> deploy-done hook) → compose down, stale pins cleared, `app_deploy_failed`, `.felhom-install-interrupted` → the
> apps page sentence (R-681). The recovery unit captures `stacks.AppliedMetaFile`; a restore calls
> `RecordRestoredAppliedMeta` (R-669). Next: part 7 (the update leg, `09` §6.4.2), R-678, R-680, R-682.
> **2026-09-24 night — v0.269.0 + v0.269.1. Fleet floor 0.269.1 (MinAgent 0.131.0; needs hub v0.123.0).** > **2026-09-24 night — v0.269.0 + v0.269.1. Fleet floor 0.269.1 (MinAgent 0.131.0; needs hub v0.123.0).**
> `backup.RestoreTier2Whole` (`tier2_whole.go`, decision 26): `mergeRestoreFiles` by the four file rules > `backup.RestoreTier2Whole` (`tier2_whole.go`, decision 26): `mergeRestoreFiles` by the four file rules
+23 -26
View File
@@ -1,31 +1,28 @@
# REPORT — controller v0.269.0 + v0.269.1 (2026-09-24 night shift, run in daytime) # REPORT — controller v0.270.0 (2026-09-24 evening, Part D of the R-672 brief)
Full record: `felhom.eu/documentation/audits/DRILL-night-2026-09-24.md` (evidence under `night-2026-09-24/`). Full record: `felhom.eu/documentation/audits/r672-2026-09-24/README.md`. Architecture read: `09` §3/§6.4, `07`.
Architecture read: `09` §3 decisions 11–30, §6.4; `07` (the whole-copy table); `08` §6.2.
## Shipped ## Shipped — floor 0.270.0 (MinAgent 0.131.0), both demo boxes arrived in ~12 s
- **v0.269.0** (`3c6b49b`): the second drive's whole restore for a file app (decision 26, R-661); the same-disk - **R-679:** an Update on an app already at the head → `409 already_current` (hu + en) before anything moves.
check fails closed (R-668); keep-data-only Remove while support is informed (decision 27, R-666); the box stops a - **R-681:** an install cut off by a controller restart is finished through the failure path and reported
crash loop / OOM storm, Start = one more try (decision 28, R-667, threshold decision 29); each step judged by its (`app_deploy_failed`, the apps page sentence, what it started removed, stale pin records cleared).
own `.felhom.yml` (R-664, R-665); R-662 removed; digests rendered + the badge from the tested digest (§6.4 part 6). - **R-669:** the recovery unit keeps the PINNED version's `.felhom.yml`; a restore makes it the applied record.
- **v0.269.1** (`5b1b191`): `CarryDigests` — an installed app keeps its digest until a guarded Update (decision 30). - **R-674:** the ladder log says "AT THE HEAD" for a pin at the head.
Found live in Part B; a second release in the session, on purpose.
- MinAgent 0.131.0 (unchanged). Needs hub v0.123.0. **Floor 0.269.1** set with the declared MinAgent; N100
arrived (~16 s); demo-hp 9201 did not (read-only disks, R-672 — operator).
## Red-proofs (each seen failing, then passing; files in `night-2026-09-24/redproofs/`) ## Red-proofs (each seen failing, then passing; `…/r672-2026-09-24/redproofs/D-*`)
A1 file rules (three mutations: no newer-check → the newer copy overwritten; no keep-beside → the older copy gone; D1 R-679 check removed → "an app at the head was allowed to update"; D2 head branch removed → "the head was called
no bring-back → the missing file not restored), R-668 (fail-open → the removed folder chosen), R-666 (the guard older than the ladder"; D3 restore not resetting applied-meta → "the next undo would judge with the failed step's
removed → data deleted), decision 28 detector (the old clock → never trips) and its skips (a held/updating app probe", and the unit capturing the stack dir's file → "the unit carries the failing step's probe"; D4 recovery a
judged), hub routing, R-664 catalog gate + R-665 (the stack dir's file judged), digests (`B-digests.txt`), and no-op → "an interrupted install was not reported"; D5 page line removed → "the apps page is silent about an
v0.269.1's carry (`B-sync-carry.txt`: "the sync MOVED the running digest"). interrupted install". Full suite green; gates OK; one new parity fixture (`stacks_install_interrupted`), no
existing fixture changed.
## Live (9202, endpoint level — no browser on DooPlex) ## Live on 9202 (endpoint level; no browser on DooPlex)
Whole restore: restored 1 / kept-newer 1 / unchanged 137, 3/3 volumes + 1/1 db, 38 s, account + files read R-679: privatebin at the head → 409 in both languages, no backup, no pull. R-681: mealie killed during its pull →
back; again from a hold naming the second drive; again in chaos rounds 3 (power cut) and 11 (disk + 1 GB). "INTERRUPTED … reporting it", `app_deploy_failed` (dropped — 9202 has no hub), page sentence hu + en, no container
Keep-data-only: 409 hu/en. Unhealthy stop: gokapi trip 1 → Start → trip 2 („support informed"), chaos rounds 1, left; reinstall cleared it; actualbudget killed after its install finished → left alone. R-669: the unit captured
7, 8, 12. Digests: a floating tag's newer tested digest → badge → Update pulled it; on v0.269.1 the sync left the after the sync wrote a bad probe kept the good one; a second-drive restore turned stack 8999 / applied 3000 into
running file alone. Full suite `go test ./...` rc=0 and `controller_gates.py` OK before each commit. 3000 / 3000. R-674: no product path (R-679 refuses that case first) — unit test only.
## Found (rows) ## Changed
R-669, R-670, R-671, R-674, R-675, R-677, R-678, R-679, R-680, R-681, R-682, R-683 (controller); R-676 (watch). A test comment called a same-version Update "the repair path"; R-679 removes that path. Restart is the repair path.