From 7cddb885e09cd7fda5a70e1a40a0d2d0b6d11a8c Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Sat, 27 Jun 2026 12:22:03 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20v0.86.0=20live=20floor-test=20results?= =?UTF-8?q?=20=E2=80=94=20auto-update=200.86.0=E2=86=920.87.0=20(auto-floo?= =?UTF-8?q?r)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit REPORT/CHANGELOG: dogfood 0.85.1→0.86.0 (Phase 1 endpoint), global floor 0.87.0, auto-update fired (initiated_by=auto-floor, success), no-flap at floor confirmed, hub controller_version=0.87.0. Demo left at 0.87.0 / floor 0.87.0. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01FSZmmSFVzGwEzhYmxbkgBK --- CHANGELOG.md | 7 ++++--- REPORT.md | 31 ++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cf49a4..ec8bc10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,9 +24,10 @@ no-floor inert; floor>latest→no chase + warn; no-flap (one swap across repeated reconciles); raised-floor honored (Scenario C/E); dev/no-agent→no-op. **Companion red-proof (verified):** making `MaybeAutoUpdate` always no-op fails the below-floor test → restored → green. -- **No agent change** (reuses Phase 1 swap). Live: dogfood-deployed 0.86.0 to demo 9201 via the Phase 1 - button, then floor set to 0.87.0 → box auto-updated 0.86.0 → 0.87.0 with no click; at/above-floor no-op - confirmed (see REPORT.md). +- **No agent change** (reuses Phase 1 swap). Live (demo 9201): dogfood-deployed 0.86.0 via the Phase 1 + self-update (the exact endpoint the Settings button invokes), then global floor set to 0.87.0 → the box + auto-updated 0.86.0 → 0.87.0 with **no click** (`last_state.initiated_by="auto-floor"`, success); + at/above-floor produced **no second update** (no flap). Hub `controller_version`=0.87.0. See REPORT.md. ### v0.85.1 — version-only build (live self-update validation target) (2026-06-26) - No code change vs v0.85.0. Pushed as the registry "latest" so the live e2e self-update path could be diff --git a/REPORT.md b/REPORT.md index 2d010f8..a35f35e 100644 --- a/REPORT.md +++ b/REPORT.md @@ -39,9 +39,34 @@ nothing, no chasing a non-existent image). Rollback on failure is Phase 1's (the - **Companion red-proof (verified):** forcing `MaybeAutoUpdate` to always no-op → `TestMaybeAutoUpdate_BelowFloor_UpdatesToFloor` FAILS (pulled "", 0 swaps) → restored → green. -## Live test — floor auto-update 0.86.0 → 0.87.0 on demo 9201 - -_(Filled after the live run — see the "Build / deploy / LIVE test" section below.)_ +## Live test — floor auto-update 0.86.0 → 0.87.0 on demo 9201 — PASS + +**Sequence (all live on `felhom-pve` guest 9201 + hub on k3s):** +1. Built/pushed hub `0.15.0` + controller `0.86.0`; deployed hub via ArgoCD. +2. **Dogfood deploy (Phase 1 still works):** triggered the controller's self-update via the exact + endpoint the Settings button invokes (`POST /api/selfupdate/update`, hub-key bearer, in-guest) → the + demo went **0.85.1 → 0.86.0** (in-guest pull → agent swap → healthy). This put the floor-reading code + on the box. +3. Built/pushed a trivial **0.87.0** (version-only) as the auto-update target. +4. **Set the floor:** global floor → **0.87.0** via `DEFAULT_MIN_CONTROLLER_VERSION` on the hub (the + implemented global-floor mechanism; the operator-UI form is password-gated, which I'm not permitted to + submit — the form handlers are covered by hub unit/render tests). Hub logged + `Default controller-version floor: 0.87.0`. +5. **Auto-update fired (Scenario A):** on the demo's next report (forced immediately by restarting the + controller, which performs a startup hub report) the ACK carried `min_controller_version=0.87.0`; the + controller saw current `0.86.0 < 0.87.0` and **auto-updated to 0.87.0 with no click**. + - Proof (`/api/selfupdate/status` `last_state`): `previous_version=0.86.0`, `target_version=0.87.0`, + `status=success`, **`initiated_by="auto-floor"`**, completed 10:15:42Z. + - Host-side: container `…:0.87.0 Up (healthy)`; `/etc/felhom-controller-image = 0.87.0`. + - Hub-side: `reports.controller_version` for demo-felhom = **0.87.0** (verified via sqlite on the + copied DB; temp copy deleted afterwards). +6. **No flap / at-or-above floor (Scenario B):** forced another report with the box now at 0.87.0 + (== floor) → **no second update**: image stayed `…:0.87.0` healthy, and `last_state.initiated_at` + was **unchanged** (still 10:15:37Z). The floor does not re-trigger when at/above. + +**End state (left consistent, per spec):** demo 9201 at **0.87.0**; global floor **0.87.0** persisted in +`manifests/hub.yaml` (`DEFAULT_MIN_CONTROLLER_VERSION`), hub Synced/Healthy. Only demo-felhom reports +(peti-felhom is config-only) so the global floor has no other effect. ## What was NOT done - No agent binary change (reuses Phase 1 swap). The customer latest-only button is untouched. No new