REPORT: correct a STALE deployment section — v0.175.0 IS deployed on both boxes
The section read 'NOT deployed'. True when written (17:56 CEST), stale 26 min later when I deployed (18:22 CEST) and did not update it. REPORT.md is defined as 'overwrite with the most recent state', so an artifact this project validates against was left asserting the opposite of reality. Precision matters on the apparent contradiction: a 17:01 quiesce log 'before' a 17:56 commit is a TIMEZONE artifact (controller logs UTC, git commits CEST), not evidence of a false claim. In one clock: REPORT 17:56 -> deploy 18:22 -> quiesce 19:01. Consistent. That host=CEST/controller=UTC mismatch is a recorded project trap and caught me once earlier the same day. Also records the live multi-tier quiesce evidence and what remains unproven.
This commit is contained in:
@@ -90,16 +90,59 @@ red commit elsewhere in this arc).
|
||||
- **Overrun defer** — dropping the `break` fails with
|
||||
`the second tier MUST NOT start while the first is still running; started=[local felhom-pbs]`.
|
||||
|
||||
## 8. NOT live-validated — and NOT deployed
|
||||
## 8. Deployment — DEPLOYED 2026-07-26 18:22 CEST (this section was stale; corrected)
|
||||
|
||||
The controller change is **unit-proven only**. Both production controllers still run **v0.173.0**;
|
||||
this release was deliberately not deployed, because the multi-tier path only engages against an agent
|
||||
that serves `/backup/tiers`, and the agent rollout was still mid-flight (demo-hp's first offsite
|
||||
backup in progress). Specifically unproven live:
|
||||
**Live on both boxes:** `felhom-controller:0.175.0`, healthy.
|
||||
|
||||
1. A real both-due night with exactly one stop/start pair observed on a box.
|
||||
2. The degrade path against a genuinely old agent in production.
|
||||
3. The overrun defer firing on a real long-running offsite backup.
|
||||
### The correction, and why the record disagreed with itself
|
||||
|
||||
Deploying is the natural next step once demo-hp's first offsite backup lands and the agent rollout
|
||||
is settled.
|
||||
This section previously read *"NOT live-validated — and NOT deployed"*. That was **true when
|
||||
written** and went **stale 26 minutes later**:
|
||||
|
||||
| CEST | event |
|
||||
|---|---|
|
||||
| 17:56:10 | this REPORT committed (`f5e1064`) — "not deployed", accurate at that moment |
|
||||
| 18:22:56 | controller **0.175.0 deployed** to both boxes (container `StartedAt` 16:22:56 **UTC**) |
|
||||
| 19:01:39 | the multi-tier quiesce cycle ran (controller log line `17:01:39` — **UTC**) |
|
||||
|
||||
**The defect is mine and it is real:** `REPORT.md` is defined as "overwrite with the most recent
|
||||
state", and I deployed without updating it. An artifact this project validates against was left
|
||||
asserting the opposite of reality for the rest of the session.
|
||||
|
||||
**One thing to be precise about, because it nearly became a second wrong conclusion:** the apparent
|
||||
*contradiction* — a 17:01 quiesce log "before" a 17:56 commit — is a **timezone artifact, not
|
||||
evidence of a false claim**. The controller logs **UTC**; git commit timestamps here are **CEST**.
|
||||
Converted to one clock the ordering is consistent and unremarkable: REPORT 17:56 → deploy 18:22 →
|
||||
quiesce 19:01. That host=CEST / controller=UTC mismatch is already recorded as a project trap and it
|
||||
caught me once earlier the same day.
|
||||
|
||||
So: a stale artifact (real, mine) — not a claim contradicted by its own evidence.
|
||||
|
||||
## 9. Live validation
|
||||
|
||||
**The multi-tier quiesce ran on demo-hp**, driven through the real UI endpoint
|
||||
(`POST /api/guest-backup/trigger`, session auth + CSRF — the exact call "Mentés most" makes):
|
||||
|
||||
```
|
||||
17:01:39Z manual backup requested — quiescing now
|
||||
17:01:39Z backup due on 2 tier(s) — quiescing 1 stack(s): [paperless-ngx] <- ONE stop
|
||||
17:01:46Z tier local: backup job ... started
|
||||
17:02:56Z tier local: ... done — next tier may start (app still quiesced) <- app stays DOWN
|
||||
17:02:56Z tier felhom-pbs: backup job backup-9201-felhom-pbs-... started
|
||||
17:03:06Z tier felhom-pbs: ... snapshotted — resuming app early (8B.2)
|
||||
17:03:06Z unquiescing (snapshotted (early resume, last tier)): restarting 1 stack(s) <- ONE start
|
||||
```
|
||||
|
||||
**Exactly one stop/start pair with both backups inside it** — the assertion that matters, since
|
||||
"both backups ran" would also pass against an implementation that quiesces twice. Tier order
|
||||
local-first/PBS-last as designed; the app stayed quiesced *through* the non-last tier, preserving
|
||||
app-consistency on the DR tier; it resumed at the **last** tier's snapshot rather than its upload.
|
||||
**Total app downtime 1m27s for both tiers**, and paperless came back healthy.
|
||||
|
||||
## 10. Still NOT live-validated
|
||||
|
||||
1. A **scheduled** both-due night (this was the manual `TriggerNow` path; the scheduled path shares
|
||||
`quiesceAndPollTiers` but has not been observed firing on its own).
|
||||
2. The **degrade path** against a genuinely pre-R-82 agent in production — both boxes now run an
|
||||
agent that serves `/backup/tiers`, so the fallback has not been exercised live.
|
||||
3. The **overrun defer** firing on a real long-running offsite backup.
|
||||
|
||||
Reference in New Issue
Block a user