Campaign 10 Phase B: 27 cycles, 586 invariant checks, 0 violations

Ran the soak on the Phase A rig. Ended on its own deadline — no watchdog halt,
no atom exception, no I11 breach.

I1 28+28 pairs, I2 28+28 pairs, I3 56, I4 56, I5/I6 28 each, I7 28, I10 135,
I11 28. Zero violations. The row counts are themselves the no-silent-skip check:
I3/I4 twice per cycle (both drives), I10 = 5 secret-class fields x 27, REBOOT on
cycles 7/14/21 only.

I7 is the headline: 28 restores, 28 correct discriminators — never stale, never
empty. RTO (Tier 1, rallly, 66 MB): min 38.8s, median 42.0s, p90 42.5s, max
44.3s. That is the S band's lower end ONLY; the 5.5s spread over 28 runs says
fixed work dominates, so nothing extrapolates to M or L. RPO not measured.

Every atom and invariant was proven BY HAND before automation — the runner
asserts nothing that was not first observed live.

Caught a Phase A gap before starting: no app had HDD_PATH, so all data sat on the
system disk and I3 could never have fired. Deployed calibre-web onto adatok
first; otherwise the run would have produced 27 green cycles that tested nothing
cross-drive.

Investigated and DISPROVED a suspected defect (audit 5.2): /api/disks reports
state=attached for a physically absent drive, and intermediary.go:230 really does
compute presence from State=="attached". It is inert — planDriveGates only gates
paths under /mnt/felhom-drives/ and uses BoundUnderParent there, which was
correctly false. The gate fired; the storage page showed "Meghajtó leválasztva".
No R-n minted.

Honest gaps: 6 of ~12 atom families ran. Not run — Tier 3 (structurally
un-isolatable), abort-fs-in-place, kill-agent-mid-backup, hard-reset-mid-write,
reboot-VM, both concurrency atoms, fill-drive-near-full. I8 not checked, I9 not
automated (cited from the tester-gate run, not re-claimed). kill_controller is
NOT mid-backup and reboot_guest never interleaved with a detach. 27 cycles does
not answer the brief's question about drift at the thirty-eighth.

Teardown still OWED, including hub customer c10-soak (disposition: DELETE).
This commit is contained in:
2026-08-01 15:45:13 +02:00
parent 4691aa1a35
commit 69f896d3cd
10 changed files with 1489 additions and 39 deletions
+32 -8
View File
@@ -8,8 +8,8 @@ clobbered — same shared-clone reasoning as `REPORT-iso-release.md`.
## The sentence that matters
**Phase A is complete and every gate passed. Phase B did not run.** The rig is built, fenced and
idle, waiting for a runner that should not be written at 04:00.
**Phase A passed every gate (07-31) and Phase B ran (08-01): 27 cycles, 586 invariant checks, zero
violations, ended on its own deadline with no watchdog halt and no atom exception.**
## What was established
@@ -33,6 +33,23 @@ idle, waiting for a runner that should not be written at 04:00.
- **A4** discriminators seed and read back across all four apps; rallly's over the path
`DATABASE_URL` actually names, not the trusted socket that produced D5's false pass.
## Phase B — the soak
27 cycles, 09:3315:40 CEST, atoms permuted per cycle, every invariant checked every cycle.
- **I1** 28 + 28 pairs, **I2** 28 + 28 pairs, **I3** 56, **I4** 56, **I5/I6** 28 each, **I7** 28,
**I10** 135, **I11** 28 — **0 violations**. Row counts are themselves the no-silent-skip check
(I3/I4 twice per cycle = both drives; I10 = 5 secret-class fields × 27; REBOOT = cycles 7/14/21).
- **I7 is the headline: 28 restores, 28 correct discriminators.** Never stale, never empty.
- **RTO (Tier 1, rallly, 66 MB):** min 38.8 s, **median 42.0 s**, p90 42.5 s, max 44.3 s. **Covers the
S band only, and only its lower end** — the 5.5 s spread over 28 runs says fixed work dominates, so
nothing here extrapolates to M or L. **RPO not measured** (backups were driven on demand).
- Every atom and invariant was **proven by hand before automation**; the runner asserts nothing that
was not first observed live.
- **A Phase A gap was caught before the run:** no app had `HDD_PATH`, so all data sat on the system
disk and I3 could never have fired. calibre-web was deployed onto `adatok` first — otherwise the
soak would have produced 27 green cycles that tested nothing cross-drive.
## Findings
- **R-156 (new)** — **papra's data is neither persisted nor backed up, and it reports healthy.** The
@@ -48,15 +65,22 @@ idle, waiting for a runner that should not be written at 04:00.
## What did not run
Every B1 atom, I1I11 across cycles, RTO/RPO, and A5's budget/watchdog. Phase A was budgeted at ~1 h
and took ~5.5 h — the blind interactive install alone was ~1.5 h. That left the runner, the component
that judges eleven invariants and fires destructive atoms unattended, to be written at 04:00 with ~3 h
of night left. Stopped instead, on the brief's own fence: *a test rig producing false negatives is
worse than no rig.*
**6 of the brief's ~12 atom families ran.** Not run: Tier-3 backup/restore (§3), abort-a-filesystem-
in-place (R-117 Q7), kill-the-agent-mid-backup, hard-reset-the-VM-mid-write, reboot-the-VM, both
concurrency atoms, and fill-a-drive-near-full. **I8** not checked (no Tier 3); **I9** not automated —
it was proven on this same controller 0.188.0 by the tester-gate run hours earlier, which is cited,
not re-claimed.
Two precision notes so atom names don't overclaim: `kill_controller` is **not** "mid-backup" (it lands
at a permuted point, exercising recovery rather than the mid-write race), and `reboot_guest` was
appended after the shuffle so it **never interleaved with a detach**.
**The tail is untested, not clean.** The brief's interest in "the state that quietly drifts on the
thirty-eighth" is not answered by 27 cycles.
## Teardown — OWED, nothing removed
Deliberately intact so Phase B need not repeat Phase A. VM 311, `c10-scratch`, PBS datastore
Still intact: the rig is reusable for the atoms that did not run. VM 311, `c10-scratch`, PBS datastore
`felhom-c10` + user/token, restic subaccount `u629488-sub4`, and **hub customer `c10-soak` (disposition:
DELETE)** are all outstanding, with commands in the audit §9. Named explicitly because R-131 is four
orphaned scratch customers left by exactly this omission.
@@ -1,7 +1,8 @@
# CAMPAIGN 10 — two-storage adversarial soak (2026-07-31 → 08-01)
**Status: Phase A COMPLETE and gated. Phase B NOT STARTED — deliberately, see §8.**
**One new finding: R-156. One structural scope constraint: Tier 3 cannot be isolated (§3).**
**Status: Phase A COMPLETE and gated (2026-07-31). Phase B RUN 2026-08-01 — 27 cycles, 586 invariant
checks, ZERO violations.** **One new finding: R-156. One structural scope constraint: Tier 3 cannot be
isolated (§3). One suspected defect investigated and DISPROVED (§5.2).**
Evidence: `../tests/campaign10-evidence-2026-07-31/``state/phaseA-journal.md` (step-by-step),
`isolation/pbs-denial.txt`, `isolation/restic-denial.txt`, `r156-papra-volume.txt`.
@@ -120,7 +121,7 @@ campaign constraint, not a defect.
| **A2** claim | **PASS** | discriminator flipped `dashboard not yet claimed``authentication required`; hub: `[claim] customer c10-soak CLAIMED its dashboard` |
| **A3** enrol both drives, apps across them | **PASS** | both registered via the real endpoint; backup target healthy; 4 apps healthy |
| **A4** discriminators | **PASS** | all four apps seed and read back the same generation |
| **A5** budget + watchdog | **NOT DONE** | §8 |
| **A5** budget + watchdog | **PASS** (built for Phase B) | disk floor 120 G on `/mnt/nvme-1tb` + VM-liveness watchdog; heartbeat `status.txt` per phase; `journal.tsv` per check. Neither fired: the run ended on its deadline with 871 G free |
**A1 — 1.26.1 cannot auto-install, verified against the bytes** (not inferred from its manifest):
`auto-installer-mode.toml` 0 hits, `answer.toml` 0, `proxmox-auto-install` 0, exactly 2 interactive
@@ -188,6 +189,72 @@ false pass.
---
## 4b. Phase B — the soak (2026-08-01)
**27 cycles, 09:3315:40 CEST, ended on its own deadline. No watchdog halt, no atom exception, no
I11 breach. 586 invariant rows, 0 violations.**
**Every atom and every invariant was proven BY HAND before it was automated** (§4c). That ordering is
the point: a runner written first and trusted after is exactly the rig the brief warns about.
**A gap in Phase A found and closed first.** None of the four apps had `HDD_PATH` — all their data sat
in Docker volumes on the **system** disk, so detaching a data drive was a no-op for apps and **I3 could
never have fired**. A soak run in that state would have produced 27 green cycles that tested nothing
about cross-drive behaviour. **calibre-web** was deployed onto `adatok`
(`/mnt/felhom-drives/adatok/userdata/media/books → /calibre-library`, confirmed from
`docker inspect`) before the run started.
### Atoms, permuted per cycle (seeded RNG, so the order is reproducible)
`backup` · `restore_verify` · `detach_target` · `detach_nontarget` · `kill_controller` ·
`redeploy_app`, plus `reboot_guest` on every 7th cycle.
### Results
| Invariant | Checks | Violations | What was actually asserted |
|---|---|---|---|
| **I1** + pair | 28 + 28 | **0** | target absent ⇒ `backup_target_absent`/**error**; return ⇒ `backup_target_restored`/**info** |
| **I2** + pair | 28 + 28 | **0** | non-target ⇒ **generic** `storage_disconnected`/error → `storage_reconnected`/info |
| **I3** | 56 | **0** | `bound_under_parent=false` while the namespace is unusable, both drives |
| **I4** | 56 | **0** | guest init boot-time identical across every bind repair |
| **I5** | 28 | **0** | healthy ⇒ zero absent events, target reads healthy |
| **I6** | 28 | **0** | healthy carries no degraded message |
| **I7** | 28 | **0** | **every restore returned the discriminator asked for — 28/28** |
| **I10** | 135 | **0** | 4 × `type: secret` present in the unit; 1 × `type: password` **absent**, asserted as absence |
| **I11** | 28 | **0** | no secret value in controller or hub logs |
| BACKUP / REDEPLOY / KILL-CTRL / REBOOT | 56 / 28 / 28 / 3 | **0** | atom outcomes |
The row counts are themselves a check that nothing was silently skipped: I3 and I4 at **56** (twice per
cycle — both drives), I10 at **135** (5 secret-class fields × 27), REBOOT at **3** (cycles 7/14/21).
Counts of 28 rather than 27 include the one-cycle smoke test, which wrote to the same journal and
restarts its numbering at 1 — the totals are right, the cycle *labels* collide.
**A clean invariant is a result**: I1's discrimination, I2's genericity, the pairing of both, I4's
no-restart repair and I7's discriminator held over **27 consecutive cycles** of detach, reattach,
backup, restore, controller kill, app redeploy and three guest reboots. Nothing drifted at iteration 38
because the run stopped at 27 — the tail beyond that is untested, not proven absent.
### Two behaviours worth recording, both observed repeatedly
- **The drive comes back on a different device node and the bind still heals.** `adatok` left as
`/dev/sdb` and returned as `/dev/sdd`; `bound_under_parent` went true again and the contents were
readable, with the guest's init boot-time unchanged. That is R-117's stale-device case, hit on every
detach cycle rather than once.
- **`health_degraded (warning)` accompanies the target-absent event** and clears on return, alongside
the specific `backup_target_*` pair.
## 4c. Primitives proven by hand before automation
| Step | Observed |
|---|---|
| backup | `POST /api/backup/run``Mentés elindítva`, settles in ~2334 s |
| restore | `POST /backup/restore` (form) is **async**; polled on `/api/backup/restore-status`, never `IsRunning()` |
| I7, first proof | seeded A → backup → seeded B → restored A; rallly returned **A** while the other three still read **B** |
| I1 | `backup_target_absent (error) — A rendszermentés meghajtója nem érhető el: Mentes` |
| I2 | `storage_disconnected (error) — Meghajtó váratlanul leválasztva: Adatok` |
| I6 degraded copy | *"A rendszermentés meghajtója nem érhető el — amíg vissza nem csatlakoztatod, a teljes rendszermentés nem készül el."* |
| I10 | rallly `DB_PASSWORD`+`SECRET_PASSWORD`, homebox `HBOX_AUTH_API_KEY_PEPPER`, papra `AUTH_SECRET` present; grafana `GF_SECURITY_ADMIN_PASSWORD` **absent**; unit mode `0600` |
## 5. Findings
### R-156 — papra's data is neither persisted nor backed up, and it reports healthy
@@ -223,55 +290,107 @@ defence is a catalog gate asserting each template's mounted volume is a path the
**Not fixed here** — the fences forbid it, and a fix mid-run would prove a version that did not exist
when the run started.
### 5.2 — Investigated and DISPROVED: `/api/disks` reports `state=attached` for an absent drive
Recorded because the *chase* is the useful artefact, not because anything is broken.
With `adatok` physically removed, `/api/disks` kept reporting `state: "attached"` for it across three
polls (~90 s) — while `/dev/sdb` was gone, `/mnt/adatok` was absent from `/proc/mounts`, and the guest
bind returned `Input/output error`. The other fields were right (`backing_device: ""`,
`guest_attached: false`, `bound_under_parent: false`).
It looked like the R-116/R-117 family, and there is a real consumer:
`internal/web/intermediary.go:230``present[d.MountPath] |= d.State == "attached"`. A presence gate
reading an absent drive as present is precisely I3's failure mode.
**It is inert, and the gate is correct.** `planDriveGates` only gates paths under
`StableParentDir+"/"` (`/mnt/felhom-drives/…`). The registered path is the **stable** one, whose
presence is computed from `d.BoundUnderParent` — observed **false** — not from `State`. The
`State`-derived entry is keyed on the **raw** `/mnt/adatok`, which is not a registered stable path, so
the loop skips it. The observable end-to-end behaviour agrees: the storage page showed
*"Meghajtó leválasztva: Adatok"* with a disconnect timestamp and a reconnect action, i.e. the gate fired.
The stale `state` field comes from the **registry** row surviving in the union after the
storage-observation row drops out (a raw enrolled drive is not a PVE storage), carrying its configured
`MountPath`. **No `R-n` minted** — no consumer is misled, and the R-116 comment's claim that this
"cannot make the gate read an absent drive as PRESENT" held under test.
### Not filed
- **demo-hp SSH key** — already R-129.
- **Tier 3 isolation** — §3; two recorded deliberate positions, not a defect.
- **`/api/disks` `state`** — §5.2, disproved.
---
## 6. RTO/RPO
## 6. RTO/RPO — measured
**No measurements.** They are a byproduct of Phase B restores, which did not run. Nothing is
extrapolated; no band is claimed.
**28 restores, every one returning the correct discriminator.** Wall-clock is measured from the restore
request to **the app serving the correct data** (the canary read back over rallly's real network path),
not to "restore returned".
| Tier | App | Data volume | n | min | median | p90 | max | mean |
|---|---|---|---|---|---|---|---|---|
| **Tier 1 (local)** | rallly (postgres) | **66 MB** volume / 67 MB recovery unit | 28 | 38.8 s | **42.0 s** | 42.5 s | 44.3 s | 42.0 s |
**Which band this covers: the S band only, and only its lower end.** 66 MB is a small app by any
reading, and the spread is tight — 5.5 s between min and max over 28 runs — which says the cost is
dominated by fixed work (stack stop, volume restore, stack start, health wait) rather than by bytes.
**Nothing here licenses an extrapolation to M or L**: the byte-proportional term is precisely what
66 MB fails to exercise. A second point at a much larger volume is needed before any curve is claimed,
and none was taken.
**RPO is NOT measured.** It is a function of backup *frequency*, and the soak drove backups on demand
rather than on the schedule, so the observed intervals say nothing about the product's RPO.
---
## 7. I1I11
## 7. I1I11 across cycles
**Not measured across cycles.** Only the healthy baseline (I5/I6) and the discriminator mechanism (I7)
were established, as Phase A gates. A clean invariant is only a result with a cycle count behind it,
and there is no count to report.
Full table in §4b. **I1, I2 (and both pairs), I3, I4, I5, I6, I7, I10 and I11 held over 27 consecutive
cycles — 586 checks, 0 violations.** No violation was deterministic and none was racy, because there
were none; the honest statement is that the run found no drift **within 27 cycles**, not that none
exists beyond them.
**I8 was not checked** — Tier 3 never ran (§3). **I9 was not automated** — see §8.
---
## 8. What did not run, and why
**Phase B did not start.** Phase A was budgeted at ~1 h by the brief and took ~5.5 h, almost entirely
in places the brief could not have predicted:
Phase A overran badly (~5.5 h against the brief's ~1 h) — 1.26.1 is a public release image with no
auto-install path, so day-0 was a blind screendump-and-`sendkey` walk; the Tier-3 question (§3) had to
be settled before a customer could exist at all, since `dr_tier` is fixed at creation; and a false
start on drive enrolment had to be backed out. **Phase B was therefore deliberately not launched at
04:00** — the brief's own fence, *"a test rig producing false negatives is worse than no rig"* — and
was built and run the next morning instead, where its first cycle could be watched.
- ISO **1.26.1** turned out to be a public release image with no auto-install path, so the install was
a blind screendump-and-`sendkey` walk (~1.5 h) rather than an unattended boot.
- The Tier-3 investigation (§3) had to be settled before a customer could be created at all, because
`dr_tier` is decided at customer-creation time.
- The enrol false start, and the CSRF/session/Bearer probing needed to drive the real endpoints.
**Atom coverage: 6 of the brief's ~12 suggested families.** Stated plainly rather than implied:
That put the runner — the most correctness-sensitive component, the thing that decides destructive
atoms unattended and judges eleven invariants — at ~04:00 with ~3 h of usable night. **I stopped
rather than write it there.** The brief's own fence is the reason: *"A test rig producing false
negatives is worse than no rig."* A soak whose judgements cannot be trusted would not just waste the
night, it would contaminate the register with findings nobody could rely on.
| Atom (brief B1) | Ran |
|---|---|
| back up Tier 1/2 · restore + verify by discriminator · detach/reattach **target** · detach/reattach **non-target** · delete an app and redeploy · reboot the guest | **YES** |
| back up / restore **Tier 3** | **NO** — §3, structurally impossible to isolate |
| abort a filesystem **in place** without the device disappearing (R-117 Q7) | **NO** |
| kill the **agent** mid-backup · **hard-reset the VM** mid-write · reboot the **VM** | **NO** |
| **concurrent** backup+restore · **concurrent** backup+detach | **NO** |
| fill a drive to near-full and continue | **NO** |
**Not run:** every B1 atom; I1I11 across cycles; §B3 RTO/RPO; A5's disk budget, watchdog and
heartbeat (A5 exists to bound Phase B and was not written in isolation from it).
**`kill_controller` is not "mid-backup".** It restarts the controller at a permuted point in the
cycle, so it sometimes lands after a backup and sometimes nowhere near one. It exercises recovery, not
the mid-write race the brief asked for. Recorded because the atom name would otherwise overclaim.
**What is ready.** The rig is built, gated and idle: VM 311 installed and claimed, two drives enrolled
with the backup target healthy, four apps healthy spanning both D5 secret classes, a working
discriminator across all four, an authenticated API path onto the controller, and both isolation
denials captured. The driver library (`c10lib.py`) already implements the parts that took the
longest — the jump-host command path, the authenticated API helper, canary seed/read, and the
red-proofed psql read path. **Phase B needs the atom set, the invariant checks and the watchdog on
top of that, then it can run in daylight where its first cycles can be watched.**
**`reboot_guest` was appended after the shuffle, not permuted into it**, so it always ran last in
cycles 7/14/21 and **never interleaved with a detach**. Reboot-during-detach is untested.
**I8** — not checked; Tier 3 never ran. **I9** (Tier-1/2 restore with the guest's `app.yaml` moved
aside, data read over the app's real network path) — **not automated**. It was proven on this exact
controller 0.188.0 by the tester-gate run hours earlier
(`tester-gate-golden-0.188.0-2026-07-31.md` §5, step 6), and that is cited rather than re-claimed:
this campaign did not execute it.
**The tail is untested, not clean.** 27 cycles is the count; the brief's interest in "the state that
quietly drifts on the thirty-eighth" is not answered by a 27-cycle run.
---
@@ -0,0 +1,141 @@
#!/usr/bin/env python3
"""Campaign 10 — shared driver library. Runs on DooPlex, NOT inside the VM:
the soak's atoms kill the controller, the agent and the VM itself, so anything
running inside would die with the thing it is testing.
Canary model (brief A4): every app carries a marker naming the backup GENERATION
its data came from. Without it, a restore that returns stale or empty data is
indistinguishable from a good one — this arc produced six checks that passed for
the wrong reason.
rallly -> a row in a cc_proof TABLE in postgres, read over the app's real
network path (docker run --network container:rallly ... psql -h
rallly-postgres). NOT 127.0.0.1 inside the postgres container,
which postgres trusts and which produced D5's false pass.
others -> a marker file inside the app's own docker volume (what gets dumped).
"""
import json, os, subprocess, time
HOME = os.path.expanduser("~/.config/campaign10")
VM_IP = "192.168.0.105"
JUMP = "demo-hp"
VMID = "311"
GUEST = "9201"
HOSTPW = json.load(open(os.path.join(HOME, "host-recovery.json")))["password"]
SECRETS = json.load(open(os.path.join(HOME, "app-secrets.json")))
# app -> (container, volume mount dir) for the file-marker apps
FILE_APPS = {
"grafana": ("grafana", "/var/lib/grafana"),
"homebox": ("homebox", "/data"),
"papra": ("papra", "/app/data"),
}
ALL_APPS = ["rallly", "homebox", "grafana", "papra"]
def _run(args, timeout=300):
env = dict(os.environ, SSHPASS=HOSTPW, LC_ALL="C")
try:
p = subprocess.run(args, capture_output=True, text=True, timeout=timeout, env=env)
return p.returncode, p.stdout, p.stderr
except subprocess.TimeoutExpired:
return 124, "", "TIMEOUT"
def box(cmd, timeout=300):
"""Run a command on the campaign PVE host (the VM), via the demo-hp jump."""
return _run(["sshpass", "-e", "ssh", "-o", "StrictHostKeyChecking=no",
"-o", "ConnectTimeout=20", "-J", JUMP, f"root@{VM_IP}",
"LC_ALL=C " + cmd], timeout)
def guest(cmd, timeout=300):
"""Run a command inside guest 9201."""
return box(f"pct exec {GUEST} -- bash -c {shq(cmd)}", timeout)
def hp(cmd, timeout=180):
"""Run a command on demo-hp itself (for qm: reset, stop, disk detach...)."""
return _run(["ssh", "-o", "ConnectTimeout=20", JUMP, "LC_ALL=C " + cmd], timeout)
def shq(s):
return "'" + s.replace("'", "'\\''") + "'"
def api(method, path, body=None, timeout=300):
"""Authenticated controller API call through the on-guest helper."""
if body is None:
rc, out, _ = guest(f"/root/c10api.sh {method} {path} 2>/dev/null", timeout)
return out
import base64
b64 = base64.b64encode(json.dumps(body).encode()).decode()
rc, out, _ = guest(
f"echo {b64} | base64 -d > /tmp/.b && /root/c10api.sh {method} {path} "
f'"$(cat /tmp/.b)" --json; shred -u /tmp/.b 2>/dev/null', timeout)
return out
def jparse(raw):
try:
return json.loads(raw[raw.index("{"):raw.rindex("}") + 1])
except Exception:
return None
# ---------------------------------------------------------------- canaries
def _psql(sql, timeout=180):
"""Read/write rallly's DB over the path DATABASE_URL actually names."""
pw = SECRETS["rallly"]["values"]["DB_PASSWORD"]
url = f"postgresql://rallly:{pw}@rallly-postgres:5432/rallly"
cmd = ("docker run --rm --network container:rallly postgres:16-alpine "
f"psql {shq(url)} -tAc {shq(sql)}")
rc, out, err = guest(cmd, timeout)
return rc, out.strip(), err.strip()
def seed(gen):
"""Write the generation marker into every app. Returns {app: ok}."""
res = {}
_psql("CREATE TABLE IF NOT EXISTS cc_proof (id serial primary key, gen text, at timestamptz default now())")
rc, out, err = _psql(f"INSERT INTO cc_proof (gen) VALUES ('{gen}') RETURNING gen")
res["rallly"] = (gen in out)
for app, (cont, d) in FILE_APPS.items():
# -u 0: papra's volume is root-owned while the container runs as nonroot (R-156),
# so the app itself cannot write there. Seeding as root keeps the canary in the
# volume the BACKUP dumps, which is what I7 needs to observe.
rc, out, err = guest(
f"docker exec -u 0 {cont} sh -c {shq(f'echo {gen} > {d}/cc_proof.txt && cat {d}/cc_proof.txt')}", 180)
res[app] = (gen in out)
return res
def read_canaries():
"""Read each app's marker back. Returns {app: value-or-None}."""
res = {}
rc, out, err = _psql("SELECT gen FROM cc_proof ORDER BY id DESC LIMIT 1")
res["rallly"] = out.strip() or None
for app, (cont, d) in FILE_APPS.items():
rc, out, err = guest(f"docker exec {cont} sh -c {shq(f'cat {d}/cc_proof.txt 2>/dev/null')}", 180)
v = out.strip()
res[app] = v or None
return res
def containers():
rc, out, _ = guest("docker ps --format '{{.Names}}|{{.Status}}'", 120)
d = {}
for line in out.strip().splitlines():
if "|" in line:
n, s = line.split("|", 1)
d[n.strip()] = s.strip()
return d
def guest_init_pid():
"""I4: a stale-device bind must repair WITHOUT the guest restarting."""
rc, out, _ = box(f"pct exec {GUEST} -- cat /proc/1/stat 2>/dev/null", 120)
rc2, boot, _ = box(f"pct exec {GUEST} -- stat -c %Y /proc/1 2>/dev/null", 120)
return boot.strip()
@@ -0,0 +1,333 @@
#!/usr/bin/env python3
"""Campaign 10 — Phase B soak runner. Runs on DooPlex (outside the VM it abuses).
Shape (brief B1): a set of atomic operations composed into cycles in varying order,
with EVERY invariant checked EVERY cycle — drift at iteration 38 is the point.
Every atom and every invariant here was proven BY HAND before automation
(see the audit §5); nothing in this file asserts a behaviour that was not first
observed live.
Writes: journal.tsv (one row per invariant check), runner.log, status.txt (heartbeat).
Halts cleanly on: disk floor breach, VM gone, I11 breach (secret leak).
"""
import json, os, random, subprocess, sys, time, traceback
import c10lib as L
EV = "/mnt/5_hdd/felhom.eu/git/felhom.eu/documentation/tests/campaign10-evidence-2026-07-31"
STATE = os.path.join(EV, "state")
os.makedirs(STATE, exist_ok=True)
JOURNAL = os.path.join(STATE, "journal.tsv")
RUNLOG = os.path.join(STATE, "runner.log")
STATUS = os.path.join(STATE, "status.txt")
APPS = ["rallly", "homebox", "grafana", "papra"] # docker-volume apps
DRIVE_APP = "calibre-web" # binds /mnt/felhom-drives/adatok
TARGET_DISK, TARGET_VOL = "scsi2", "c10-scratch:311/vm-311-disk-3.qcow2" # mentes = backup target
NONTGT_DISK, NONTGT_VOL = "scsi1", "c10-scratch:311/vm-311-disk-2.qcow2" # adatok
FLOOR_GB = 120 # halt if /mnt/nvme-1tb free drops below this
MAX_CYCLES = int(os.environ.get("C10_CYCLES", "40"))
DEADLINE = time.time() + float(os.environ.get("C10_HOURS", "6")) * 3600
CYCLE = 0
VIOL = []
def log(msg):
line = "%s %s" % (time.strftime("%H:%M:%S"), msg)
print(line, flush=True)
with open(RUNLOG, "a") as fh:
fh.write(line + "\n")
def rec(inv, ok, detail=""):
"""One journal row per invariant check. Violations do NOT stop the run (brief B2)."""
with open(JOURNAL, "a") as fh:
fh.write("%d\t%s\t%s\t%s\t%s\n" % (CYCLE, time.strftime("%FT%TZ", time.gmtime()),
inv, "PASS" if ok else "VIOLATION", detail[:400]))
if not ok:
VIOL.append((CYCLE, inv, detail[:300]))
log(" !! %s VIOLATION: %s" % (inv, detail[:220]))
def heartbeat(phase):
with open(STATUS, "w") as fh:
fh.write("cycle=%d\nphase=%s\nutc=%s\nviolations=%d\n"
% (CYCLE, phase, time.strftime("%FT%TZ", time.gmtime()), len(VIOL)))
# ------------------------------------------------------------------ helpers
def hub_events(since="3m"):
"""Hub-side event stream: type + severity, the observable I1/I2 assert on."""
p = subprocess.run(["sudo", "kubectl", "-n", "felhom-system", "logs", "deploy/hub",
"--since=" + since], capture_output=True, text=True, timeout=120)
out = []
for line in p.stdout.splitlines():
if "Event from c10-soak:" in line:
seg = line.split("Event from c10-soak:", 1)[1].strip()
typ = seg.split()[0]
sev = seg.split("(", 1)[1].split(")", 1)[0] if "(" in seg else "?"
out.append((typ, sev, seg))
return out
def target_state():
return (L.jparse(L.api("GET", "/api/storage/backup-target")) or {}).get("data", {}) or {}
def disks():
return ((L.jparse(L.api("GET", "/api/disks")) or {}).get("data", {}) or {}).get("disks", [])
def wait_backup(timeout=900):
t0 = time.time()
while time.time() - t0 < timeout:
d = ((L.jparse(L.api("GET", "/api/backup/status")) or {}).get("data") or {})
if not d.get("running"):
return d
time.sleep(10)
return {"timeout": True}
def wait_restore(timeout=900):
t0 = time.time()
while time.time() - t0 < timeout:
d = ((L.jparse(L.api("GET", "/api/backup/restore-status")) or {}).get("data") or {})
if d and not d.get("running"):
return d
time.sleep(10)
return {"timeout": True}
def settle(seconds=130):
"""Agent tick + host-report + hub event propagation. Measured at ~25-60s; 130 gives margin."""
time.sleep(seconds)
# ------------------------------------------------------------------ atoms
def atom_backup():
L.api("POST", "/api/backup/run", {})
d = wait_backup()
ok = bool(d.get("db_dump", {}).get("success", True)) and not d.get("timeout")
rec("BACKUP", ok, json.dumps(d)[:300])
return ok
def atom_restore_verify():
"""I7 — the whole point: a restore must return the discriminator asked for."""
app = "rallly" # the DB app; its canary is a real DB row
genA = "C10-C%03d-A-%s" % (CYCLE, time.strftime("%H%M%S"))
L.seed(genA)
if not atom_backup():
return
genB = "C10-C%03d-B-%s" % (CYCLE, time.strftime("%H%M%S"))
L.seed(genB) # must NOT survive the restore
snaps = L.jparse(L.api("GET", "/api/backup/snapshots?stack=%s" % app)) or {}
pts = snaps.get("data") or []
if not pts:
rec("I7", False, "no restore points for %s" % app)
return
sid = pts[0].get("short_id")
t0 = time.time()
L.guest('/root/c10api.sh POST /backup/restore "stack_name=%s&snapshot_id=%s" 2>/dev/null' % (app, sid))
d = wait_restore()
rto = time.time() - t0
got = L.read_canaries().get(app)
rec("I7", got == genA,
"app=%s want=%s got=%s snap=%s restore_ok=%s rto=%.1fs"
% (app, genA, got, sid, (d.get("last") or {}).get("ok"), rto))
# RTO/RPO byproduct (brief B3): to app-serving-correct-data, not to "restore returned"
with open(os.path.join(STATE, "rto.tsv"), "a") as fh:
fh.write("%d\t%s\t%s\ttier1\t%.1f\t%s\n" % (CYCLE, time.strftime("%FT%TZ", time.gmtime()),
app, rto, got == genA))
def _detach(disk, vol, label, expect_type, expect_recover):
"""I1/I2 — the absent event must be the RIGHT one, and the pair must match."""
before_boot = L.guest("stat -c %Y /proc/1")[1].strip()
L.hp("qm set 311 --delete %s" % disk)
settle()
evs = hub_events("4m")
absent = [e for e in evs if e[0] in ("backup_target_absent", "storage_disconnected")]
got = absent[-1][0] if absent else None
sev = absent[-1][1] if absent else None
rec("I1" if expect_type == "backup_target_absent" else "I2",
got == expect_type and sev == "error",
"%s absent -> got=%s sev=%s (want %s/error)" % (label, got, sev, expect_type))
# I3: an unusable namespace must not read as bound
for d in disks():
if d.get("guest_path", "") and label in str(d.get("guest_path", "")):
rec("I3", d.get("bound_under_parent") is False,
"%s bound_under_parent=%s while absent" % (label, d.get("bound_under_parent")))
L.hp("qm set 311 --%s %s" % (disk, vol))
settle()
evs2 = hub_events("4m")
back = [e for e in evs2 if e[0] in ("backup_target_restored", "storage_reconnected")]
got2 = back[-1][0] if back else None
sev2 = back[-1][1] if back else None
rec("I1-pair" if expect_type == "backup_target_absent" else "I2-pair",
got2 == expect_recover and sev2 == "info",
"%s return -> got=%s sev=%s (want %s/info)" % (label, got2, sev2, expect_recover))
# I4: the bind repairs WITHOUT the guest restarting
after_boot = L.guest("stat -c %Y /proc/1")[1].strip()
rec("I4", before_boot == after_boot and before_boot != "",
"guest init boot before=%s after=%s (must be equal)" % (before_boot, after_boot))
def atom_detach_target():
_detach(TARGET_DISK, TARGET_VOL, "mentes", "backup_target_absent", "backup_target_restored")
def atom_detach_nontarget():
_detach(NONTGT_DISK, NONTGT_VOL, "adatok", "storage_disconnected", "storage_reconnected")
def atom_reboot_guest():
L.box("pct reboot 9201", timeout=300)
for _ in range(40):
time.sleep(15)
if "felhom-controller" in L.containers():
break
rec("REBOOT", "felhom-controller" in L.containers(), "controller back after guest reboot")
def atom_kill_controller():
L.guest("docker restart felhom-controller >/dev/null 2>&1 &")
time.sleep(45)
rec("KILL-CTRL", "felhom-controller" in L.containers(), "controller recovered after kill")
def atom_redeploy_app():
app = random.choice(["homebox", "grafana"])
L.api("POST", "/api/stacks/%s/remove" % app, {})
time.sleep(20)
sec = L.SECRETS.get(app, {}).get("values", {})
if sec:
L.api("POST", "/api/stacks/%s/deploy" % app, {"values": sec})
for _ in range(20):
time.sleep(15)
if app in L.containers():
break
rec("REDEPLOY", app in L.containers(), "%s redeployed" % app)
# ------------------------------------------------------------------ per-cycle invariants
def check_healthy_baseline():
"""I5/I6 — the over-correction check: healthy must render nothing."""
ts = target_state()
degraded = ts.get("degraded")
evs = [e for e in hub_events("3m") if e[0] in ("backup_target_absent", "storage_disconnected")]
rec("I5", degraded is False and not evs,
"degraded=%s absent_events=%d target=%s" % (degraded, len(evs), ts.get("target")))
if degraded is False:
rec("I6", "message" not in ts or not ts.get("message"),
"healthy state must carry no degraded message; got=%s" % str(ts.get("message"))[:120])
UNIT = "/mnt/sys_drive/felhom-data/backups/primary/%s/compose/app.yaml"
def check_secret_class_travel():
"""I10 — `type: secret` travels to the local unit; `type: password` NEVER does.
Asserted in BOTH directions: the withheld class staying withheld is the half
that silently rots. Key NAMES only; no value is ever read."""
for app, meta in L.SECRETS.items():
classes = meta.get("secret_classes", {})
if not classes:
continue
rc, keys, _ = L.guest("grep -oE '^ *[A-Z_0-9]+:' " + (UNIT % app) +
" 2>/dev/null | tr -d ' :' | tr '\\n' ' '")
present = set(keys.split())
if not present:
rec("I10", False, "%s: recovery unit unreadable/absent" % app)
continue
for ev, c in classes.items():
if c["type"] == "secret":
rec("I10", ev in present, "%s/%s type=secret must travel; in_unit=%s"
% (app, ev, ev in present))
elif c["type"] == "password":
rec("I10", ev not in present, "%s/%s type=password must NEVER travel; in_unit=%s"
% (app, ev, ev in present))
def check_secrets_absent():
"""I11 — no secret value in any log, event or hub payload. Breach STOPS the run."""
vals = [v for a in L.SECRETS.values() for k, v in a.get("values", {}).items()
if k not in ("DOMAIN", "SUBDOMAIN") and v and len(v) > 8]
hay = L.guest("docker logs felhom-controller --since 20m 2>&1 | tail -c 200000")[1]
p = subprocess.run(["sudo", "kubectl", "-n", "felhom-system", "logs", "deploy/hub", "--since=20m"],
capture_output=True, text=True, timeout=120)
hay += p.stdout
leaked = [v[:6] + "..." for v in vals if v in hay]
rec("I11", not leaked, "leaked=%s" % leaked)
return not leaked
def watchdog():
rc, out, _ = L.hp("df --output=avail -BG /mnt/nvme-1tb | tail -1")
try:
free = int(out.strip().rstrip("G"))
except Exception:
free = 9999
rc2, vm, _ = L.hp("qm status 311")
alive = "running" in vm
if free < FLOOR_GB:
log("WATCHDOG: free %dG < floor %dG — halting cleanly" % (free, FLOOR_GB)); return False
if not alive:
log("WATCHDOG: VM 311 not running (%s) — halting cleanly" % vm.strip()); return False
return True
# ------------------------------------------------------------------ main
ATOMS = [atom_backup, atom_restore_verify, atom_detach_target,
atom_detach_nontarget, atom_kill_controller, atom_redeploy_app]
def main():
global CYCLE
log("=== Campaign 10 Phase B start — max %d cycles, deadline %s ==="
% (MAX_CYCLES, time.strftime("%H:%M", time.localtime(DEADLINE))))
if not os.path.exists(JOURNAL):
with open(JOURNAL, "w") as fh:
fh.write("cycle\tutc\tinvariant\tverdict\tdetail\n")
rng = random.Random(20260801)
while CYCLE < MAX_CYCLES and time.time() < DEADLINE:
CYCLE += 1
heartbeat("start")
if not watchdog():
break
order = ATOMS[:]
rng.shuffle(order) # permutation, not a fixed catalogue
# a reboot is expensive; fold it in every 7th cycle only
if CYCLE % 7 == 0:
order.append(atom_reboot_guest)
log("cycle %d: %s" % (CYCLE, " -> ".join(a.__name__.replace("atom_", "") for a in order)))
for a in order:
heartbeat(a.__name__)
try:
a()
except Exception as e:
rec(a.__name__, False, "EXCEPTION %s" % e)
log(" atom %s raised: %s" % (a.__name__, traceback.format_exc().splitlines()[-1]))
heartbeat("invariants")
try:
check_healthy_baseline()
check_secret_class_travel()
if not check_secrets_absent():
log("I11 BREACH — stopping the run immediately per brief B2"); break
except Exception as e:
log("invariant pass raised: %s" % e)
log("cycle %d done — violations so far: %d" % (CYCLE, len(VIOL)))
heartbeat("finished")
log("=== finished after %d cycles, %d violations ===" % (CYCLE, len(VIOL)))
for c, i, d in VIOL:
log(" cycle %d %s: %s" % (c, i, d))
if __name__ == "__main__":
main()
@@ -0,0 +1,92 @@
#!/usr/bin/env python3
"""Campaign 10 — deploy apps through the REAL endpoints.
Mirrors the controller's own generator semantics (internal/stacks/deploy.go:870 generateValue):
password:N -> N random alphanumerics
hex:N -> N random BYTES, hex-encoded (2N chars)
base64key:N-> "base64:" + base64(N random bytes)
static:X -> X
Runs on DooPlex; talks to the guest via ssh -J demo-hp + pct exec + /root/c10api.sh.
Secrets are written to a 0600 manifest, never printed.
"""
import base64, json, os, secrets, string, subprocess, sys
APPS = sys.argv[1:] or ["rallly", "homebox", "grafana", "papra"]
DOMAIN = "c10.felhom.eu"
HOME = os.path.expanduser("~/.config/campaign10")
HOSTPW = json.load(open(os.path.join(HOME, "host-recovery.json")))["password"]
def ssh(cmd, timeout=900):
full = ["sshpass", "-e", "ssh", "-o", "StrictHostKeyChecking=no",
"-o", "ConnectTimeout=25", "-J", "demo-hp", "root@192.168.0.105",
"LC_ALL=C " + cmd]
env = dict(os.environ, SSHPASS=HOSTPW, LC_ALL="C")
return subprocess.run(full, capture_output=True, text=True, timeout=timeout, env=env).stdout
def api(method, path, body=None):
if body is None:
return ssh(f"pct exec 9201 -- /root/c10api.sh {method} {path} 2>/dev/null")
b64 = base64.b64encode(json.dumps(body).encode()).decode()
# body travels base64 so no quoting/locale can mangle a secret
return ssh("pct exec 9201 -- bash -c \"echo %s | base64 -d > /tmp/.b && "
"/root/c10api.sh %s %s \\\"\\$(cat /tmp/.b)\\\" --json; shred -u /tmp/.b\" 2>/dev/null"
% (b64, method, path))
def gen(spec):
kind, _, param = spec.partition(":")
if kind == "password":
al = string.ascii_letters + string.digits
return "".join(secrets.choice(al) for _ in range(int(param)))
if kind == "hex":
return secrets.token_bytes(int(param)).hex()
if kind == "base64key":
return "base64:" + base64.b64encode(secrets.token_bytes(int(param))).decode()
if kind == "static":
return param
raise ValueError("unknown generator %r" % spec)
manifest_path = os.path.join(HOME, "app-secrets.json")
manifest = json.load(open(manifest_path)) if os.path.exists(manifest_path) else {}
for app in APPS:
raw = api("GET", f"/api/stacks/{app}/deploy-fields")
try:
meta = json.loads(raw[raw.index("{"):raw.rindex("}") + 1])["data"]["metadata"]
except Exception as e:
print(f"{app:12s} FIELDS-FAIL {e} :: {raw[:160]!r}")
continue
values, classes = {}, {}
for f in meta.get("deploy_fields", []):
ev, typ, spec, dflt = f["env_var"], f.get("type", ""), f.get("generate", ""), f.get("default", "")
if typ == "domain":
values[ev] = DOMAIN
elif spec:
values[ev] = gen(spec)
elif dflt:
values[ev] = dflt
elif f.get("required"):
print(f"{app:12s} WARN required field {ev} has no default/generator")
if typ in ("secret", "password"):
classes[ev] = {"type": typ, "data_key": bool(f.get("data_key")), "label": f.get("label", "")}
manifest[app] = {"values": values, "secret_classes": classes,
"subdomain": values.get("SUBDOMAIN", ""), "domain": DOMAIN}
out = api("POST", f"/api/stacks/{app}/deploy", {"values": values})
ok = '"ok":true' in out
print(f"{app:12s} deploy -> {'OK' if ok else 'FAIL'} "
f"secret={sum(1 for c in classes.values() if c['type']=='secret')} "
f"password={sum(1 for c in classes.values() if c['type']=='password')} "
f"data_key={sum(1 for c in classes.values() if c['data_key'])}")
if not ok:
print(" ", out.strip()[:300])
with open(manifest_path, "w") as fh:
json.dump(manifest, fh, indent=1)
os.chmod(manifest_path, 0o600)
print("\nsecrets + secret-class map written to", manifest_path, "(0600, not printed)")
@@ -0,0 +1,62 @@
#!/bin/bash
# Campaign 10 — blind console driver for VM 311 on demo-hp.
# snap <label> : screendump the VM console -> PNG on DooPlex (for visual Read)
# key <k> [k...] : sendkey one or more keys (QEMU keynames), 0.25s apart
# type <string> : type an ASCII string as sendkey events
set -uo pipefail
SCRATCH=/tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0d68ad3e-5c39-4852-8e38-9c029dff2562/scratchpad
VM=311
H=demo-hp
mon() { ssh -o ConnectTimeout=10 "$H" "LC_ALL=C qm monitor $VM" <<<"$1" 2>/dev/null | grep -v '^QEMU\|^(qemu)' ; }
snap() {
local label="${1:-x}"
ssh -o ConnectTimeout=10 "$H" "LC_ALL=C qm monitor $VM" <<<"screendump /tmp/c10.ppm" >/dev/null 2>&1
scp -q "$H:/tmp/c10.ppm" "$SCRATCH/c10-$label.ppm" 2>/dev/null || { echo "snap: scp failed"; return 1; }
convert "$SCRATCH/c10-$label.ppm" "$SCRATCH/c10-$label.png" 2>/dev/null || { echo "snap: convert failed"; return 1; }
echo "$SCRATCH/c10-$label.png"
}
key() {
local cmds=""
for k in "$@"; do cmds+="sendkey $k
"; done
ssh -o ConnectTimeout=10 "$H" "LC_ALL=C qm monitor $VM" <<<"$cmds" >/dev/null 2>&1
}
# type: map ASCII -> qemu keynames, including shifted chars
type_str() {
local s="$1" cmds="" c
local -A M=( [' ']='spc' ['-']='minus' ['.']='dot' ['/']='slash' ['=']='equal'
[',']='comma' [';']='semicolon' ["'"]='apostrophe' ['\']='backslash'
['[']='bracket_left' [']']='bracket_right' ['`']='grave_accent' )
local -A SH=( ['_']='minus' ['+']='equal' ['?']='slash' [':']='semicolon' ['"']='apostrophe'
['!']='1' ['@']='2' ['#']='3' ['$']='4' ['%']='5' ['^']='6' ['&']='7'
['*']='8' ['(']='9' [')']='0' ['{']='bracket_left' ['}']='bracket_right'
['|']='backslash' ['~']='grave_accent' ['<']='comma' ['>']='dot' )
for (( i=0; i<${#s}; i++ )); do
c="${s:$i:1}"
if [[ -n "${SH[$c]:-}" ]]; then cmds+="sendkey shift-${SH[$c]}
"
elif [[ -n "${M[$c]:-}" ]]; then cmds+="sendkey ${M[$c]}
"
elif [[ "$c" =~ [A-Z] ]]; then cmds+="sendkey shift-$(tr '[:upper:]' '[:lower:]' <<<"$c")
"
elif [[ "$c" =~ [a-z0-9] ]]; then cmds+="sendkey $c
"
else echo "type_str: unmapped char '$c'" >&2; return 1
fi
done
ssh -o ConnectTimeout=10 "$H" "LC_ALL=C qm monitor $VM" <<<"$cmds" >/dev/null 2>&1
}
case "${1:-}" in
snap) shift; snap "$@" ;;
key) shift; key "$@" ;;
type) shift; type_str "$@" ;;
# typefile: read the string from a file so a secret never lands in argv/ps
typefile) shift; type_str "$(cat "$1")" ;;
mon) shift; mon "$@" ;;
*) echo "usage: vm.sh {snap <label>|key <k>...|type <str>|typefile <path>|mon <cmd>}"; exit 2 ;;
esac
@@ -0,0 +1,587 @@
cycle utc invariant verdict detail
1 2026-08-01T07:20:12Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
1 2026-08-01T07:20:15Z I3 PASS adatok bound_under_parent=False while absent
1 2026-08-01T07:22:27Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
1 2026-08-01T07:22:30Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
1 2026-08-01T07:23:14Z REDEPLOY PASS grafana redeployed
1 2026-08-01T07:23:56Z BACKUP PASS {"db_dump": {"count": 1, "duration": "29.235715924s", "last_run": "2026-08-01T07:23:45.622922949Z", "success": true}, "enabled": true, "running": false}
1 2026-08-01T07:24:48Z BACKUP PASS {"db_dump": {"count": 1, "duration": "34.037544623s", "last_run": "2026-08-01T07:24:42.576575317Z", "success": true}, "enabled": true, "running": false}
1 2026-08-01T07:25:51Z I7 PASS app=rallly want=C10-C001-A-092356 got=C10-C001-A-092356 snap=helyi restore_ok=True rto=42.3s
1 2026-08-01T07:28:07Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
1 2026-08-01T07:28:10Z I3 PASS mentes bound_under_parent=False while absent
1 2026-08-01T07:30:22Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
1 2026-08-01T07:30:25Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
1 2026-08-01T07:31:14Z KILL-CTRL PASS controller recovered after kill
1 2026-08-01T07:31:17Z I5 PASS degraded=False absent_events=0 target=felhom-backup
1 2026-08-01T07:31:17Z I6 PASS healthy state must carry no degraded message; got=None
1 2026-08-01T07:31:19Z I11 PASS leaked=[]
1 2026-08-01T07:35:53Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
1 2026-08-01T07:35:56Z I3 PASS adatok bound_under_parent=False while absent
1 2026-08-01T07:38:09Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
1 2026-08-01T07:38:12Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
1 2026-08-01T07:38:56Z REDEPLOY PASS homebox redeployed
1 2026-08-01T07:39:38Z BACKUP PASS {"db_dump": {"count": 1, "duration": "29.454266341s", "last_run": "2026-08-01T07:39:28.065882881Z", "success": true}, "enabled": true, "running": false}
1 2026-08-01T07:40:31Z BACKUP PASS {"db_dump": {"count": 1, "duration": "32.574200326s", "last_run": "2026-08-01T07:40:23.804874002Z", "success": true}, "enabled": true, "running": false}
1 2026-08-01T07:41:34Z I7 PASS app=rallly want=C10-C001-A-093938 got=C10-C001-A-093938 snap=helyi restore_ok=True rto=41.8s
1 2026-08-01T07:43:49Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
1 2026-08-01T07:43:52Z I3 PASS mentes bound_under_parent=False while absent
1 2026-08-01T07:46:05Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
1 2026-08-01T07:46:07Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
1 2026-08-01T07:46:56Z KILL-CTRL PASS controller recovered after kill
1 2026-08-01T07:46:59Z I5 PASS degraded=False absent_events=0 target=felhom-backup
1 2026-08-01T07:46:59Z I6 PASS healthy state must carry no degraded message; got=None
1 2026-08-01T07:47:01Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
1 2026-08-01T07:47:01Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
1 2026-08-01T07:47:03Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
1 2026-08-01T07:47:05Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
1 2026-08-01T07:47:07Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
1 2026-08-01T07:47:09Z I11 PASS leaked=[]
2 2026-08-01T07:48:01Z KILL-CTRL PASS controller recovered after kill
2 2026-08-01T07:50:16Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
2 2026-08-01T07:50:19Z I3 PASS adatok bound_under_parent=False while absent
2 2026-08-01T07:52:32Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
2 2026-08-01T07:52:35Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
2 2026-08-01T07:53:17Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.724847172s", "last_run": "2026-08-01T07:53:05.968779815Z", "success": true}, "enabled": true, "running": false}
2 2026-08-01T07:54:01Z REDEPLOY PASS grafana redeployed
2 2026-08-01T07:54:54Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.880675052s", "last_run": "2026-08-01T07:54:43.377582192Z", "success": true}, "enabled": true, "running": false}
2 2026-08-01T07:55:56Z I7 PASS app=rallly want=C10-C002-A-095401 got=C10-C002-A-095401 snap=helyi restore_ok=True rto=41.7s
2 2026-08-01T07:58:12Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
2 2026-08-01T07:58:14Z I3 PASS mentes bound_under_parent=False while absent
2 2026-08-01T08:00:27Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
2 2026-08-01T08:00:30Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
2 2026-08-01T08:00:32Z I5 PASS degraded=False absent_events=0 target=felhom-backup
2 2026-08-01T08:00:32Z I6 PASS healthy state must carry no degraded message; got=None
2 2026-08-01T08:00:34Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
2 2026-08-01T08:00:34Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
2 2026-08-01T08:00:36Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
2 2026-08-01T08:00:38Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
2 2026-08-01T08:00:40Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
2 2026-08-01T08:00:42Z I11 PASS leaked=[]
3 2026-08-01T08:03:00Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
3 2026-08-01T08:03:03Z I3 PASS mentes bound_under_parent=False while absent
3 2026-08-01T08:05:15Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
3 2026-08-01T08:05:18Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
3 2026-08-01T08:06:02Z REDEPLOY PASS homebox redeployed
3 2026-08-01T08:06:44Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.249083164s", "last_run": "2026-08-01T08:06:32.499808867Z", "success": true}, "enabled": true, "running": false}
3 2026-08-01T08:09:00Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
3 2026-08-01T08:09:02Z I3 PASS adatok bound_under_parent=False while absent
3 2026-08-01T08:11:15Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
3 2026-08-01T08:11:18Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
3 2026-08-01T08:12:07Z KILL-CTRL PASS controller recovered after kill
3 2026-08-01T08:13:00Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.907036117s", "last_run": "2026-08-01T08:12:49.360548351Z", "success": true}, "enabled": true, "running": false}
3 2026-08-01T08:14:04Z I7 PASS app=rallly want=C10-C003-A-101207 got=C10-C003-A-101207 snap=helyi restore_ok=True rto=44.3s
3 2026-08-01T08:14:07Z I5 PASS degraded=False absent_events=0 target=felhom-backup
3 2026-08-01T08:14:07Z I6 PASS healthy state must carry no degraded message; got=None
3 2026-08-01T08:14:09Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
3 2026-08-01T08:14:09Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
3 2026-08-01T08:14:11Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
3 2026-08-01T08:14:13Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
3 2026-08-01T08:14:15Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
3 2026-08-01T08:14:17Z I11 PASS leaked=[]
4 2026-08-01T08:16:35Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
4 2026-08-01T08:16:38Z I3 PASS adatok bound_under_parent=False while absent
4 2026-08-01T08:18:51Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
4 2026-08-01T08:18:54Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
4 2026-08-01T08:19:35Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.425451162s", "last_run": "2026-08-01T08:19:24.403091262Z", "success": true}, "enabled": true, "running": false}
4 2026-08-01T08:20:20Z REDEPLOY PASS grafana redeployed
4 2026-08-01T08:21:12Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.411530632s", "last_run": "2026-08-01T08:21:00.742317925Z", "success": true}, "enabled": true, "running": false}
4 2026-08-01T08:22:14Z I7 PASS app=rallly want=C10-C004-A-102020 got=C10-C004-A-102020 snap=helyi restore_ok=True rto=42.0s
4 2026-08-01T08:24:30Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
4 2026-08-01T08:24:32Z I3 PASS mentes bound_under_parent=False while absent
4 2026-08-01T08:26:45Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
4 2026-08-01T08:26:48Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
4 2026-08-01T08:27:37Z KILL-CTRL PASS controller recovered after kill
4 2026-08-01T08:27:39Z I5 PASS degraded=False absent_events=0 target=felhom-backup
4 2026-08-01T08:27:39Z I6 PASS healthy state must carry no degraded message; got=None
4 2026-08-01T08:27:41Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
4 2026-08-01T08:27:41Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
4 2026-08-01T08:27:43Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
4 2026-08-01T08:27:46Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
4 2026-08-01T08:27:47Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
4 2026-08-01T08:27:50Z I11 PASS leaked=[]
5 2026-08-01T08:28:36Z REDEPLOY PASS grafana redeployed
5 2026-08-01T08:30:51Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
5 2026-08-01T08:30:54Z I3 PASS adatok bound_under_parent=False while absent
5 2026-08-01T08:33:07Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
5 2026-08-01T08:33:10Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
5 2026-08-01T08:33:59Z KILL-CTRL PASS controller recovered after kill
5 2026-08-01T08:36:15Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
5 2026-08-01T08:36:18Z I3 PASS mentes bound_under_parent=False while absent
5 2026-08-01T08:38:30Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
5 2026-08-01T08:38:33Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
5 2026-08-01T08:39:15Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.537566027s", "last_run": "2026-08-01T08:39:03.884190323Z", "success": true}, "enabled": true, "running": false}
5 2026-08-01T08:40:08Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.819105251s", "last_run": "2026-08-01T08:39:56.870257525Z", "success": true}, "enabled": true, "running": false}
5 2026-08-01T08:41:13Z I7 PASS app=rallly want=C10-C005-A-103915 got=C10-C005-A-103915 snap=helyi restore_ok=True rto=43.0s
5 2026-08-01T08:41:16Z I5 PASS degraded=False absent_events=0 target=felhom-backup
5 2026-08-01T08:41:16Z I6 PASS healthy state must carry no degraded message; got=None
5 2026-08-01T08:41:18Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
5 2026-08-01T08:41:18Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
5 2026-08-01T08:41:20Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
5 2026-08-01T08:41:22Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
5 2026-08-01T08:41:24Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
5 2026-08-01T08:41:26Z I11 PASS leaked=[]
6 2026-08-01T08:42:18Z KILL-CTRL PASS controller recovered after kill
6 2026-08-01T08:43:10Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.890401885s", "last_run": "2026-08-01T08:42:58.392385368Z", "success": true}, "enabled": true, "running": false}
6 2026-08-01T08:44:12Z I7 PASS app=rallly want=C10-C006-A-104218 got=C10-C006-A-104218 snap=helyi restore_ok=True rto=41.6s
6 2026-08-01T08:46:28Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
6 2026-08-01T08:46:30Z I3 PASS mentes bound_under_parent=False while absent
6 2026-08-01T08:48:44Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
6 2026-08-01T08:48:46Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
6 2026-08-01T08:51:02Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
6 2026-08-01T08:51:05Z I3 PASS adatok bound_under_parent=False while absent
6 2026-08-01T08:53:18Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
6 2026-08-01T08:53:20Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
6 2026-08-01T08:54:02Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.101250195s", "last_run": "2026-08-01T08:53:50.441271314Z", "success": true}, "enabled": true, "running": false}
6 2026-08-01T08:54:46Z REDEPLOY PASS grafana redeployed
6 2026-08-01T08:54:49Z I5 PASS degraded=False absent_events=0 target=felhom-backup
6 2026-08-01T08:54:49Z I6 PASS healthy state must carry no degraded message; got=None
6 2026-08-01T08:54:51Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
6 2026-08-01T08:54:51Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
6 2026-08-01T08:54:53Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
6 2026-08-01T08:54:55Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
6 2026-08-01T08:54:57Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
6 2026-08-01T08:54:59Z I11 PASS leaked=[]
7 2026-08-01T08:57:17Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
7 2026-08-01T08:57:20Z I3 PASS adatok bound_under_parent=False while absent
7 2026-08-01T08:59:33Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
7 2026-08-01T08:59:35Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
7 2026-08-01T09:01:50Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
7 2026-08-01T09:01:54Z I3 PASS mentes bound_under_parent=False while absent
7 2026-08-01T09:04:07Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
7 2026-08-01T09:04:09Z I4 PASS guest init boot before=1785531262 after=1785531262 (must be equal)
7 2026-08-01T09:04:58Z KILL-CTRL PASS controller recovered after kill
7 2026-08-01T09:05:43Z REDEPLOY PASS homebox redeployed
7 2026-08-01T09:06:35Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.192784423s", "last_run": "2026-08-01T09:06:24.336193131Z", "success": true}, "enabled": true, "running": false}
7 2026-08-01T09:07:38Z I7 PASS app=rallly want=C10-C007-A-110543 got=C10-C007-A-110543 snap=helyi restore_ok=True rto=42.2s
7 2026-08-01T09:08:21Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.754755491s", "last_run": "2026-08-01T09:08:08.67970607Z", "success": true}, "enabled": true, "running": false}
7 2026-08-01T09:09:00Z REBOOT PASS controller back after guest reboot
7 2026-08-01T09:09:03Z I5 PASS degraded=False absent_events=0 target=felhom-backup
7 2026-08-01T09:09:03Z I6 PASS healthy state must carry no degraded message; got=None
7 2026-08-01T09:09:05Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
7 2026-08-01T09:09:05Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
7 2026-08-01T09:09:07Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
7 2026-08-01T09:09:09Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
7 2026-08-01T09:09:11Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
7 2026-08-01T09:09:13Z I11 PASS leaked=[]
8 2026-08-01T09:09:59Z REDEPLOY PASS homebox redeployed
8 2026-08-01T09:10:48Z KILL-CTRL PASS controller recovered after kill
8 2026-08-01T09:11:41Z BACKUP PASS {"db_dump": {"count": 1, "duration": "29.417683334s", "last_run": "2026-08-01T09:11:30.326680315Z", "success": true}, "enabled": true, "running": false}
8 2026-08-01T09:12:45Z I7 PASS app=rallly want=C10-C008-A-111048 got=C10-C008-A-111048 snap=helyi restore_ok=True rto=42.3s
8 2026-08-01T09:15:01Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
8 2026-08-01T09:15:04Z I3 PASS adatok bound_under_parent=False while absent
8 2026-08-01T09:17:16Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
8 2026-08-01T09:17:19Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
8 2026-08-01T09:19:35Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
8 2026-08-01T09:19:38Z I3 PASS mentes bound_under_parent=False while absent
8 2026-08-01T09:21:51Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
8 2026-08-01T09:21:53Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
8 2026-08-01T09:22:35Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.112766197s", "last_run": "2026-08-01T09:22:23.959739494Z", "success": true}, "enabled": true, "running": false}
8 2026-08-01T09:22:38Z I5 PASS degraded=False absent_events=0 target=felhom-backup
8 2026-08-01T09:22:38Z I6 PASS healthy state must carry no degraded message; got=None
8 2026-08-01T09:22:40Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
8 2026-08-01T09:22:40Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
8 2026-08-01T09:22:42Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
8 2026-08-01T09:22:44Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
8 2026-08-01T09:22:46Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
8 2026-08-01T09:22:48Z I11 PASS leaked=[]
9 2026-08-01T09:23:39Z KILL-CTRL PASS controller recovered after kill
9 2026-08-01T09:24:19Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.120915244s", "last_run": "2026-08-01T09:24:19.437409908Z", "success": true}, "enabled": true, "running": false}
9 2026-08-01T09:25:22Z I7 PASS app=rallly want=C10-C009-A-112339 got=C10-C009-A-112339 snap=helyi restore_ok=True rto=41.9s
9 2026-08-01T09:26:06Z REDEPLOY PASS grafana redeployed
9 2026-08-01T09:28:22Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
9 2026-08-01T09:28:25Z I3 PASS adatok bound_under_parent=False while absent
9 2026-08-01T09:30:38Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
9 2026-08-01T09:30:40Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
9 2026-08-01T09:31:10Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.234736705s", "last_run": "2026-08-01T09:31:09.977587344Z", "success": true}, "enabled": true, "running": false}
9 2026-08-01T09:33:26Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
9 2026-08-01T09:33:29Z I3 PASS mentes bound_under_parent=False while absent
9 2026-08-01T09:35:42Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
9 2026-08-01T09:35:44Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
9 2026-08-01T09:35:47Z I5 PASS degraded=False absent_events=0 target=felhom-backup
9 2026-08-01T09:35:47Z I6 PASS healthy state must carry no degraded message; got=None
9 2026-08-01T09:35:49Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
9 2026-08-01T09:35:49Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
9 2026-08-01T09:35:51Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
9 2026-08-01T09:35:53Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
9 2026-08-01T09:35:55Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
9 2026-08-01T09:35:57Z I11 PASS leaked=[]
10 2026-08-01T09:38:14Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
10 2026-08-01T09:38:17Z I3 PASS adatok bound_under_parent=False while absent
10 2026-08-01T09:40:30Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
10 2026-08-01T09:40:33Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
10 2026-08-01T09:41:17Z REDEPLOY PASS homebox redeployed
10 2026-08-01T09:42:06Z KILL-CTRL PASS controller recovered after kill
10 2026-08-01T09:44:22Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
10 2026-08-01T09:44:25Z I3 PASS mentes bound_under_parent=False while absent
10 2026-08-01T09:46:38Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
10 2026-08-01T09:46:40Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
10 2026-08-01T09:47:21Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.035320075s", "last_run": "2026-08-01T09:47:21.013177918Z", "success": true}, "enabled": true, "running": false}
10 2026-08-01T09:48:24Z I7 PASS app=rallly want=C10-C010-A-114640 got=C10-C010-A-114640 snap=helyi restore_ok=True rto=41.6s
10 2026-08-01T09:48:54Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.198265248s", "last_run": "2026-08-01T09:48:54.018758879Z", "success": true}, "enabled": true, "running": false}
10 2026-08-01T09:48:57Z I5 PASS degraded=False absent_events=0 target=felhom-backup
10 2026-08-01T09:48:57Z I6 PASS healthy state must carry no degraded message; got=None
10 2026-08-01T09:48:59Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
10 2026-08-01T09:48:59Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
10 2026-08-01T09:49:01Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
10 2026-08-01T09:49:03Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
10 2026-08-01T09:49:05Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
10 2026-08-01T09:49:07Z I11 PASS leaked=[]
11 2026-08-01T09:50:02Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.500198373s", "last_run": "2026-08-01T09:49:50.111560186Z", "success": true}, "enabled": true, "running": false}
11 2026-08-01T09:51:05Z I7 PASS app=rallly want=C10-C011-A-114910 got=C10-C011-A-114910 snap=helyi restore_ok=True rto=41.7s
11 2026-08-01T09:53:20Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
11 2026-08-01T09:53:23Z I3 PASS adatok bound_under_parent=False while absent
11 2026-08-01T09:55:35Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
11 2026-08-01T09:55:38Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
11 2026-08-01T09:57:54Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
11 2026-08-01T09:57:57Z I3 PASS mentes bound_under_parent=False while absent
11 2026-08-01T10:00:10Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
11 2026-08-01T10:00:13Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
11 2026-08-01T10:00:55Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.274827764s", "last_run": "2026-08-01T10:00:42.619398629Z", "success": true}, "enabled": true, "running": false}
11 2026-08-01T10:01:38Z REDEPLOY PASS homebox redeployed
11 2026-08-01T10:02:28Z KILL-CTRL PASS controller recovered after kill
11 2026-08-01T10:02:30Z I5 PASS degraded=False absent_events=0 target=felhom-backup
11 2026-08-01T10:02:30Z I6 PASS healthy state must carry no degraded message; got=None
11 2026-08-01T10:02:32Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
11 2026-08-01T10:02:32Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
11 2026-08-01T10:02:34Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
11 2026-08-01T10:02:36Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
11 2026-08-01T10:02:38Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
11 2026-08-01T10:02:40Z I11 PASS leaked=[]
12 2026-08-01T10:03:26Z REDEPLOY PASS homebox redeployed
12 2026-08-01T10:05:42Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
12 2026-08-01T10:05:45Z I3 PASS adatok bound_under_parent=False while absent
12 2026-08-01T10:07:57Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
12 2026-08-01T10:08:00Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
12 2026-08-01T10:08:49Z KILL-CTRL PASS controller recovered after kill
12 2026-08-01T10:11:04Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
12 2026-08-01T10:11:07Z I3 PASS mentes bound_under_parent=False while absent
12 2026-08-01T10:13:20Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
12 2026-08-01T10:13:24Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
12 2026-08-01T10:13:54Z BACKUP PASS {"db_dump": {"count": 1, "duration": "26.82906082s", "last_run": "2026-08-01T10:13:53.343511281Z", "success": true}, "enabled": true, "running": false}
12 2026-08-01T10:14:47Z BACKUP PASS {"db_dump": {"count": 1, "duration": "34.794492507s", "last_run": "2026-08-01T10:14:42.108803281Z", "success": true}, "enabled": true, "running": false}
12 2026-08-01T10:15:50Z I7 PASS app=rallly want=C10-C012-A-121354 got=C10-C012-A-121354 snap=helyi restore_ok=True rto=41.6s
12 2026-08-01T10:15:53Z I5 PASS degraded=False absent_events=0 target=felhom-backup
12 2026-08-01T10:15:53Z I6 PASS healthy state must carry no degraded message; got=None
12 2026-08-01T10:15:54Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
12 2026-08-01T10:15:54Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
12 2026-08-01T10:15:56Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
12 2026-08-01T10:15:58Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
12 2026-08-01T10:16:00Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
12 2026-08-01T10:16:02Z I11 PASS leaked=[]
13 2026-08-01T10:16:54Z KILL-CTRL PASS controller recovered after kill
13 2026-08-01T10:17:38Z REDEPLOY PASS grafana redeployed
13 2026-08-01T10:18:18Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.066037384s", "last_run": "2026-08-01T10:18:18.41231692Z", "success": true}, "enabled": true, "running": false}
13 2026-08-01T10:19:22Z I7 PASS app=rallly want=C10-C013-A-121738 got=C10-C013-A-121738 snap=helyi restore_ok=True rto=42.2s
13 2026-08-01T10:20:03Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.463205132s", "last_run": "2026-08-01T10:19:51.680188929Z", "success": true}, "enabled": true, "running": false}
13 2026-08-01T10:22:19Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
13 2026-08-01T10:22:22Z I3 PASS mentes bound_under_parent=False while absent
13 2026-08-01T10:24:35Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
13 2026-08-01T10:24:37Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
13 2026-08-01T10:26:53Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
13 2026-08-01T10:26:56Z I3 PASS adatok bound_under_parent=False while absent
13 2026-08-01T10:29:09Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
13 2026-08-01T10:29:12Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
13 2026-08-01T10:29:14Z I5 PASS degraded=False absent_events=0 target=felhom-backup
13 2026-08-01T10:29:14Z I6 PASS healthy state must carry no degraded message; got=None
13 2026-08-01T10:29:16Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
13 2026-08-01T10:29:16Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
13 2026-08-01T10:29:18Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
13 2026-08-01T10:29:20Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
13 2026-08-01T10:29:22Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
13 2026-08-01T10:29:25Z I11 PASS leaked=[]
14 2026-08-01T10:29:56Z BACKUP PASS {"db_dump": {"count": 1, "duration": "26.80615982s", "last_run": "2026-08-01T10:29:55.907589946Z", "success": true}, "enabled": true, "running": false}
14 2026-08-01T10:30:50Z BACKUP PASS {"db_dump": {"count": 1, "duration": "33.858181263s", "last_run": "2026-08-01T10:30:43.782817699Z", "success": true}, "enabled": true, "running": false}
14 2026-08-01T10:31:54Z I7 PASS app=rallly want=C10-C014-A-122956 got=C10-C014-A-122956 snap=helyi restore_ok=True rto=42.4s
14 2026-08-01T10:34:09Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
14 2026-08-01T10:34:12Z I3 PASS adatok bound_under_parent=False while absent
14 2026-08-01T10:36:25Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
14 2026-08-01T10:36:28Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
14 2026-08-01T10:37:12Z REDEPLOY PASS grafana redeployed
14 2026-08-01T10:38:01Z KILL-CTRL PASS controller recovered after kill
14 2026-08-01T10:40:17Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
14 2026-08-01T10:40:20Z I3 PASS mentes bound_under_parent=False while absent
14 2026-08-01T10:42:33Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
14 2026-08-01T10:42:36Z I4 PASS guest init boot before=1785575320 after=1785575320 (must be equal)
14 2026-08-01T10:43:14Z REBOOT PASS controller back after guest reboot
14 2026-08-01T10:43:17Z I5 PASS degraded=False absent_events=0 target=felhom-backup
14 2026-08-01T10:43:17Z I6 PASS healthy state must carry no degraded message; got=None
14 2026-08-01T10:43:19Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
14 2026-08-01T10:43:19Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
14 2026-08-01T10:43:21Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
14 2026-08-01T10:43:24Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
14 2026-08-01T10:43:26Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
14 2026-08-01T10:43:28Z I11 PASS leaked=[]
15 2026-08-01T10:45:45Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
15 2026-08-01T10:45:48Z I3 PASS mentes bound_under_parent=False while absent
15 2026-08-01T10:48:01Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
15 2026-08-01T10:48:03Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
15 2026-08-01T10:48:46Z BACKUP PASS {"db_dump": {"count": 1, "duration": "28.270428557s", "last_run": "2026-08-01T10:48:34.163245256Z", "success": true}, "enabled": true, "running": false}
15 2026-08-01T10:49:36Z KILL-CTRL PASS controller recovered after kill
15 2026-08-01T10:50:20Z REDEPLOY PASS homebox redeployed
15 2026-08-01T10:51:01Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.421623567s", "last_run": "2026-08-01T10:51:00.95301014Z", "success": true}, "enabled": true, "running": false}
15 2026-08-01T10:52:04Z I7 PASS app=rallly want=C10-C015-A-125020 got=C10-C015-A-125020 snap=helyi restore_ok=True rto=41.8s
15 2026-08-01T10:54:20Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
15 2026-08-01T10:54:23Z I3 PASS adatok bound_under_parent=False while absent
15 2026-08-01T10:56:36Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
15 2026-08-01T10:56:39Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
15 2026-08-01T10:56:42Z I5 PASS degraded=False absent_events=0 target=felhom-backup
15 2026-08-01T10:56:42Z I6 PASS healthy state must carry no degraded message; got=None
15 2026-08-01T10:56:45Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
15 2026-08-01T10:56:45Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
15 2026-08-01T10:56:47Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
15 2026-08-01T10:56:49Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
15 2026-08-01T10:56:51Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
15 2026-08-01T10:56:54Z I11 PASS leaked=[]
16 2026-08-01T10:57:27Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.683550606s", "last_run": "2026-08-01T10:57:26.606568663Z", "success": true}, "enabled": true, "running": false}
16 2026-08-01T10:59:43Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
16 2026-08-01T10:59:48Z I3 PASS mentes bound_under_parent=False while absent
16 2026-08-01T11:02:02Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
16 2026-08-01T11:02:08Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
16 2026-08-01T11:04:31Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
16 2026-08-01T11:04:40Z I3 PASS adatok bound_under_parent=False while absent
16 2026-08-01T11:06:58Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
16 2026-08-01T11:07:01Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
16 2026-08-01T11:08:29Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.894128293s", "last_run": "2026-08-01T11:08:14.025870917Z", "success": true}, "enabled": true, "running": false}
16 2026-08-01T11:09:59Z I7 PASS app=rallly want=C10-C016-A-130701 got=C10-C016-A-130701 snap=helyi restore_ok=True rto=38.8s
16 2026-08-01T11:10:54Z KILL-CTRL PASS controller recovered after kill
16 2026-08-01T11:11:53Z REDEPLOY PASS grafana redeployed
16 2026-08-01T11:12:03Z I5 PASS degraded=False absent_events=0 target=felhom-backup
16 2026-08-01T11:12:03Z I6 PASS healthy state must carry no degraded message; got=None
16 2026-08-01T11:12:11Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
16 2026-08-01T11:12:11Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
16 2026-08-01T11:12:19Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
16 2026-08-01T11:12:27Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
16 2026-08-01T11:12:36Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
16 2026-08-01T11:12:43Z I11 PASS leaked=[]
17 2026-08-01T11:13:43Z REDEPLOY PASS grafana redeployed
17 2026-08-01T11:16:04Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
17 2026-08-01T11:16:08Z I3 PASS adatok bound_under_parent=False while absent
17 2026-08-01T11:18:21Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
17 2026-08-01T11:18:23Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
17 2026-08-01T11:18:53Z BACKUP PASS {"db_dump": {"count": 1, "duration": "26.838575753s", "last_run": "2026-08-01T11:18:52.693573505Z", "success": true}, "enabled": true, "running": false}
17 2026-08-01T11:19:42Z KILL-CTRL PASS controller recovered after kill
17 2026-08-01T11:20:23Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.317455253s", "last_run": "2026-08-01T11:20:23.002386465Z", "success": true}, "enabled": true, "running": false}
17 2026-08-01T11:21:26Z I7 PASS app=rallly want=C10-C017-A-131942 got=C10-C017-A-131942 snap=helyi restore_ok=True rto=41.5s
17 2026-08-01T11:23:42Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
17 2026-08-01T11:23:45Z I3 PASS mentes bound_under_parent=False while absent
17 2026-08-01T11:25:57Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
17 2026-08-01T11:26:00Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
17 2026-08-01T11:26:02Z I5 PASS degraded=False absent_events=0 target=felhom-backup
17 2026-08-01T11:26:02Z I6 PASS healthy state must carry no degraded message; got=None
17 2026-08-01T11:26:04Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
17 2026-08-01T11:26:04Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
17 2026-08-01T11:26:06Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
17 2026-08-01T11:26:08Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
17 2026-08-01T11:26:10Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
17 2026-08-01T11:26:12Z I11 PASS leaked=[]
18 2026-08-01T11:28:30Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
18 2026-08-01T11:28:33Z I3 PASS mentes bound_under_parent=False while absent
18 2026-08-01T11:30:45Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
18 2026-08-01T11:30:48Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
18 2026-08-01T11:31:38Z KILL-CTRL PASS controller recovered after kill
18 2026-08-01T11:33:53Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
18 2026-08-01T11:33:57Z I3 PASS adatok bound_under_parent=False while absent
18 2026-08-01T11:36:10Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
18 2026-08-01T11:36:12Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
18 2026-08-01T11:36:42Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.287771352s", "last_run": "2026-08-01T11:36:41.854058541Z", "success": true}, "enabled": true, "running": false}
18 2026-08-01T11:37:27Z REDEPLOY PASS grafana redeployed
18 2026-08-01T11:38:08Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.269077889s", "last_run": "2026-08-01T11:38:07.785076049Z", "success": true}, "enabled": true, "running": false}
18 2026-08-01T11:39:12Z I7 PASS app=rallly want=C10-C018-A-133727 got=C10-C018-A-133727 snap=helyi restore_ok=True rto=42.0s
18 2026-08-01T11:39:15Z I5 PASS degraded=False absent_events=0 target=felhom-backup
18 2026-08-01T11:39:15Z I6 PASS healthy state must carry no degraded message; got=None
18 2026-08-01T11:39:17Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
18 2026-08-01T11:39:17Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
18 2026-08-01T11:39:19Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
18 2026-08-01T11:39:21Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
18 2026-08-01T11:39:24Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
18 2026-08-01T11:39:26Z I11 PASS leaked=[]
19 2026-08-01T11:40:18Z KILL-CTRL PASS controller recovered after kill
19 2026-08-01T11:41:02Z REDEPLOY PASS homebox redeployed
19 2026-08-01T11:41:44Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.240196615s", "last_run": "2026-08-01T11:41:43.294094532Z", "success": true}, "enabled": true, "running": false}
19 2026-08-01T11:42:48Z I7 PASS app=rallly want=C10-C019-A-134102 got=C10-C019-A-134102 snap=helyi restore_ok=True rto=42.1s
19 2026-08-01T11:45:03Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
19 2026-08-01T11:45:06Z I3 PASS adatok bound_under_parent=False while absent
19 2026-08-01T11:47:20Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
19 2026-08-01T11:47:22Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
19 2026-08-01T11:49:38Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
19 2026-08-01T11:49:41Z I3 PASS mentes bound_under_parent=False while absent
19 2026-08-01T11:51:54Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
19 2026-08-01T11:51:56Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
19 2026-08-01T11:52:25Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.074516344s", "last_run": "2026-08-01T11:52:25.638816606Z", "success": true}, "enabled": true, "running": false}
19 2026-08-01T11:52:28Z I5 PASS degraded=False absent_events=0 target=felhom-backup
19 2026-08-01T11:52:28Z I6 PASS healthy state must carry no degraded message; got=None
19 2026-08-01T11:52:30Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
19 2026-08-01T11:52:30Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
19 2026-08-01T11:52:32Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
19 2026-08-01T11:52:34Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
19 2026-08-01T11:52:36Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
19 2026-08-01T11:52:39Z I11 PASS leaked=[]
20 2026-08-01T11:53:24Z BACKUP PASS {"db_dump": {"count": 1, "duration": "33.58133879s", "last_run": "2026-08-01T11:53:17.277403988Z", "success": true}, "enabled": true, "running": false}
20 2026-08-01T11:55:40Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
20 2026-08-01T11:55:43Z I3 PASS mentes bound_under_parent=False while absent
20 2026-08-01T11:57:56Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
20 2026-08-01T11:57:58Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
20 2026-08-01T12:00:14Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
20 2026-08-01T12:00:17Z I3 PASS adatok bound_under_parent=False while absent
20 2026-08-01T12:02:30Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
20 2026-08-01T12:02:33Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
20 2026-08-01T12:03:17Z REDEPLOY PASS grafana redeployed
20 2026-08-01T12:03:58Z BACKUP PASS {"db_dump": {"count": 1, "duration": "26.633748751s", "last_run": "2026-08-01T12:03:57.032814639Z", "success": true}, "enabled": true, "running": false}
20 2026-08-01T12:05:02Z I7 PASS app=rallly want=C10-C020-A-140317 got=C10-C020-A-140317 snap=helyi restore_ok=True rto=42.2s
20 2026-08-01T12:05:52Z KILL-CTRL PASS controller recovered after kill
20 2026-08-01T12:05:55Z I5 PASS degraded=False absent_events=0 target=felhom-backup
20 2026-08-01T12:05:55Z I6 PASS healthy state must carry no degraded message; got=None
20 2026-08-01T12:05:57Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
20 2026-08-01T12:05:57Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
20 2026-08-01T12:05:59Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
20 2026-08-01T12:06:01Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
20 2026-08-01T12:06:03Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
20 2026-08-01T12:06:05Z I11 PASS leaked=[]
21 2026-08-01T12:06:37Z BACKUP PASS {"db_dump": {"count": 1, "duration": "26.742931297s", "last_run": "2026-08-01T12:06:36.352784544Z", "success": true}, "enabled": true, "running": false}
21 2026-08-01T12:07:26Z KILL-CTRL PASS controller recovered after kill
21 2026-08-01T12:09:42Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
21 2026-08-01T12:09:45Z I3 PASS adatok bound_under_parent=False while absent
21 2026-08-01T12:11:58Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
21 2026-08-01T12:12:01Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
21 2026-08-01T12:12:45Z REDEPLOY PASS homebox redeployed
21 2026-08-01T12:15:01Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
21 2026-08-01T12:15:04Z I3 PASS mentes bound_under_parent=False while absent
21 2026-08-01T12:17:17Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
21 2026-08-01T12:17:19Z I4 PASS guest init boot before=1785580975 after=1785580975 (must be equal)
21 2026-08-01T12:18:01Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.215452442s", "last_run": "2026-08-01T12:18:01.043730281Z", "success": true}, "enabled": true, "running": false}
21 2026-08-01T12:19:03Z I7 PASS app=rallly want=C10-C021-A-141719 got=C10-C021-A-141719 snap=helyi restore_ok=True rto=41.4s
21 2026-08-01T12:19:43Z REBOOT PASS controller back after guest reboot
21 2026-08-01T12:19:46Z I5 PASS degraded=False absent_events=0 target=felhom-backup
21 2026-08-01T12:19:46Z I6 PASS healthy state must carry no degraded message; got=None
21 2026-08-01T12:19:48Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
21 2026-08-01T12:19:48Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
21 2026-08-01T12:19:50Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
21 2026-08-01T12:19:52Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
21 2026-08-01T12:19:54Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
21 2026-08-01T12:19:56Z I11 PASS leaked=[]
22 2026-08-01T12:20:51Z BACKUP PASS {"db_dump": {"count": 1, "duration": "35.295073244s", "last_run": "2026-08-01T12:20:46.946104153Z", "success": true}, "enabled": true, "running": false}
22 2026-08-01T12:21:54Z I7 PASS app=rallly want=C10-C022-A-141958 got=C10-C022-A-141958 snap=helyi restore_ok=True rto=41.9s
22 2026-08-01T12:22:38Z REDEPLOY PASS homebox redeployed
22 2026-08-01T12:23:20Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.506763469s", "last_run": "2026-08-01T12:23:08.027088655Z", "success": true}, "enabled": true, "running": false}
22 2026-08-01T12:25:35Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
22 2026-08-01T12:25:38Z I3 PASS adatok bound_under_parent=False while absent
22 2026-08-01T12:27:51Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
22 2026-08-01T12:27:54Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
22 2026-08-01T12:28:43Z KILL-CTRL PASS controller recovered after kill
22 2026-08-01T12:30:58Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
22 2026-08-01T12:31:01Z I3 PASS mentes bound_under_parent=False while absent
22 2026-08-01T12:33:14Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
22 2026-08-01T12:33:17Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
22 2026-08-01T12:33:20Z I5 PASS degraded=False absent_events=0 target=felhom-backup
22 2026-08-01T12:33:20Z I6 PASS healthy state must carry no degraded message; got=None
22 2026-08-01T12:33:22Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
22 2026-08-01T12:33:22Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
22 2026-08-01T12:33:24Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
22 2026-08-01T12:33:26Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
22 2026-08-01T12:33:28Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
22 2026-08-01T12:33:30Z I11 PASS leaked=[]
23 2026-08-01T12:34:02Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.296490438s", "last_run": "2026-08-01T12:34:02.179324267Z", "success": true}, "enabled": true, "running": false}
23 2026-08-01T12:36:18Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
23 2026-08-01T12:36:21Z I3 PASS mentes bound_under_parent=False while absent
23 2026-08-01T12:38:34Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
23 2026-08-01T12:38:37Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
23 2026-08-01T12:39:17Z BACKUP PASS {"db_dump": {"count": 1, "duration": "26.836521386s", "last_run": "2026-08-01T12:39:17.164422568Z", "success": true}, "enabled": true, "running": false}
23 2026-08-01T12:40:21Z I7 PASS app=rallly want=C10-C023-A-143837 got=C10-C023-A-143837 snap=helyi restore_ok=True rto=41.9s
23 2026-08-01T12:41:11Z KILL-CTRL PASS controller recovered after kill
23 2026-08-01T12:41:56Z REDEPLOY PASS grafana redeployed
23 2026-08-01T12:44:11Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
23 2026-08-01T12:44:14Z I3 PASS adatok bound_under_parent=False while absent
23 2026-08-01T12:46:27Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
23 2026-08-01T12:46:30Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
23 2026-08-01T12:46:32Z I5 PASS degraded=False absent_events=0 target=felhom-backup
23 2026-08-01T12:46:32Z I6 PASS healthy state must carry no degraded message; got=None
23 2026-08-01T12:46:34Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
23 2026-08-01T12:46:34Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
23 2026-08-01T12:46:36Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
23 2026-08-01T12:46:38Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
23 2026-08-01T12:46:40Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
23 2026-08-01T12:46:43Z I11 PASS leaked=[]
24 2026-08-01T12:47:26Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.434160964s", "last_run": "2026-08-01T12:47:25.920976261Z", "success": true}, "enabled": true, "running": false}
24 2026-08-01T12:48:31Z I7 PASS app=rallly want=C10-C024-A-144645 got=C10-C024-A-144645 snap=helyi restore_ok=True rto=42.5s
24 2026-08-01T12:49:02Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.477758487s", "last_run": "2026-08-01T12:49:00.748171817Z", "success": true}, "enabled": true, "running": false}
24 2026-08-01T12:51:17Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
24 2026-08-01T12:51:20Z I3 PASS mentes bound_under_parent=False while absent
24 2026-08-01T12:53:33Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
24 2026-08-01T12:53:36Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
24 2026-08-01T12:54:25Z KILL-CTRL PASS controller recovered after kill
24 2026-08-01T12:56:40Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
24 2026-08-01T12:56:44Z I3 PASS adatok bound_under_parent=False while absent
24 2026-08-01T12:58:57Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
24 2026-08-01T12:59:00Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
24 2026-08-01T12:59:45Z REDEPLOY PASS grafana redeployed
24 2026-08-01T12:59:47Z I5 PASS degraded=False absent_events=0 target=felhom-backup
24 2026-08-01T12:59:47Z I6 PASS healthy state must carry no degraded message; got=None
24 2026-08-01T12:59:50Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
24 2026-08-01T12:59:50Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
24 2026-08-01T12:59:52Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
24 2026-08-01T12:59:54Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
24 2026-08-01T12:59:56Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
24 2026-08-01T12:59:59Z I11 PASS leaked=[]
25 2026-08-01T13:02:17Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
25 2026-08-01T13:02:20Z I3 PASS adatok bound_under_parent=False while absent
25 2026-08-01T13:04:33Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
25 2026-08-01T13:04:36Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
25 2026-08-01T13:05:26Z KILL-CTRL PASS controller recovered after kill
25 2026-08-01T13:07:41Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
25 2026-08-01T13:07:45Z I3 PASS mentes bound_under_parent=False while absent
25 2026-08-01T13:09:58Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
25 2026-08-01T13:10:00Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
25 2026-08-01T13:10:40Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.129870607s", "last_run": "2026-08-01T13:10:40.81939141Z", "success": true}, "enabled": true, "running": false}
25 2026-08-01T13:11:44Z I7 PASS app=rallly want=C10-C025-A-151000 got=C10-C025-A-151000 snap=helyi restore_ok=True rto=42.0s
25 2026-08-01T13:12:26Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.439198049s", "last_run": "2026-08-01T13:12:14.38822499Z", "success": true}, "enabled": true, "running": false}
25 2026-08-01T13:13:10Z REDEPLOY PASS homebox redeployed
25 2026-08-01T13:13:13Z I5 PASS degraded=False absent_events=0 target=felhom-backup
25 2026-08-01T13:13:13Z I6 PASS healthy state must carry no degraded message; got=None
25 2026-08-01T13:13:15Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
25 2026-08-01T13:13:15Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
25 2026-08-01T13:13:17Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
25 2026-08-01T13:13:19Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
25 2026-08-01T13:13:21Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
25 2026-08-01T13:13:24Z I11 PASS leaked=[]
26 2026-08-01T13:14:10Z REDEPLOY PASS grafana redeployed
26 2026-08-01T13:16:26Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
26 2026-08-01T13:16:29Z I3 PASS adatok bound_under_parent=False while absent
26 2026-08-01T13:18:42Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
26 2026-08-01T13:18:44Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
26 2026-08-01T13:19:25Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.181611353s", "last_run": "2026-08-01T13:19:24.6968582Z", "success": true}, "enabled": true, "running": false}
26 2026-08-01T13:20:31Z I7 PASS app=rallly want=C10-C026-A-151844 got=C10-C026-A-151844 snap=helyi restore_ok=True rto=42.9s
26 2026-08-01T13:21:20Z KILL-CTRL PASS controller recovered after kill
26 2026-08-01T13:23:36Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
26 2026-08-01T13:23:39Z I3 PASS mentes bound_under_parent=False while absent
26 2026-08-01T13:25:52Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
26 2026-08-01T13:25:55Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
26 2026-08-01T13:26:24Z BACKUP PASS {"db_dump": {"count": 1, "duration": "27.266368272s", "last_run": "2026-08-01T13:26:24.55559188Z", "success": true}, "enabled": true, "running": false}
26 2026-08-01T13:26:27Z I5 PASS degraded=False absent_events=0 target=felhom-backup
26 2026-08-01T13:26:27Z I6 PASS healthy state must carry no degraded message; got=None
26 2026-08-01T13:26:29Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
26 2026-08-01T13:26:29Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
26 2026-08-01T13:26:31Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
26 2026-08-01T13:26:33Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
26 2026-08-01T13:26:35Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
26 2026-08-01T13:26:37Z I11 PASS leaked=[]
27 2026-08-01T13:27:22Z BACKUP PASS {"db_dump": {"count": 1, "duration": "34.006310162s", "last_run": "2026-08-01T13:27:15.871339683Z", "success": true}, "enabled": true, "running": false}
27 2026-08-01T13:28:14Z BACKUP PASS {"db_dump": {"count": 1, "duration": "33.534168063s", "last_run": "2026-08-01T13:28:08.289273214Z", "success": true}, "enabled": true, "running": false}
27 2026-08-01T13:29:17Z I7 PASS app=rallly want=C10-C027-A-152722 got=C10-C027-A-152722 snap=helyi restore_ok=True rto=41.8s
27 2026-08-01T13:31:33Z I1 PASS mentes absent -> got=backup_target_absent sev=error (want backup_target_absent/error)
27 2026-08-01T13:31:36Z I3 PASS mentes bound_under_parent=False while absent
27 2026-08-01T13:33:49Z I1-pair PASS mentes return -> got=backup_target_restored sev=info (want backup_target_restored/info)
27 2026-08-01T13:33:52Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
27 2026-08-01T13:34:41Z KILL-CTRL PASS controller recovered after kill
27 2026-08-01T13:36:57Z I2 PASS adatok absent -> got=storage_disconnected sev=error (want storage_disconnected/error)
27 2026-08-01T13:37:00Z I3 PASS adatok bound_under_parent=False while absent
27 2026-08-01T13:39:14Z I2-pair PASS adatok return -> got=storage_reconnected sev=info (want storage_reconnected/info)
27 2026-08-01T13:39:16Z I4 PASS guest init boot before=1785586762 after=1785586762 (must be equal)
27 2026-08-01T13:40:00Z REDEPLOY PASS homebox redeployed
27 2026-08-01T13:40:03Z I5 PASS degraded=False absent_events=0 target=felhom-backup
27 2026-08-01T13:40:03Z I6 PASS healthy state must carry no degraded message; got=None
27 2026-08-01T13:40:04Z I10 PASS rallly/SECRET_PASSWORD type=secret must travel; in_unit=True
27 2026-08-01T13:40:04Z I10 PASS rallly/DB_PASSWORD type=secret must travel; in_unit=True
27 2026-08-01T13:40:07Z I10 PASS homebox/HBOX_AUTH_API_KEY_PEPPER type=secret must travel; in_unit=True
27 2026-08-01T13:40:09Z I10 PASS grafana/GF_SECURITY_ADMIN_PASSWORD type=password must NEVER travel; in_unit=False
27 2026-08-01T13:40:11Z I10 PASS papra/AUTH_SECRET type=secret must travel; in_unit=True
27 2026-08-01T13:40:13Z I11 PASS leaked=[]
Can't render this file because it contains an unexpected character in line 7 and column 37.
@@ -0,0 +1,28 @@
1 2026-08-01T07:25:51Z rallly tier1 42.3 True
1 2026-08-01T07:41:34Z rallly tier1 41.8 True
2 2026-08-01T07:55:56Z rallly tier1 41.7 True
3 2026-08-01T08:14:04Z rallly tier1 44.3 True
4 2026-08-01T08:22:14Z rallly tier1 42.0 True
5 2026-08-01T08:41:13Z rallly tier1 43.0 True
6 2026-08-01T08:44:12Z rallly tier1 41.6 True
7 2026-08-01T09:07:38Z rallly tier1 42.2 True
8 2026-08-01T09:12:45Z rallly tier1 42.3 True
9 2026-08-01T09:25:22Z rallly tier1 41.9 True
10 2026-08-01T09:48:24Z rallly tier1 41.6 True
11 2026-08-01T09:51:05Z rallly tier1 41.7 True
12 2026-08-01T10:15:50Z rallly tier1 41.6 True
13 2026-08-01T10:19:22Z rallly tier1 42.2 True
14 2026-08-01T10:31:54Z rallly tier1 42.4 True
15 2026-08-01T10:52:04Z rallly tier1 41.8 True
16 2026-08-01T11:09:59Z rallly tier1 38.8 True
17 2026-08-01T11:21:26Z rallly tier1 41.5 True
18 2026-08-01T11:39:12Z rallly tier1 42.0 True
19 2026-08-01T11:42:48Z rallly tier1 42.1 True
20 2026-08-01T12:05:02Z rallly tier1 42.2 True
21 2026-08-01T12:19:03Z rallly tier1 41.4 True
22 2026-08-01T12:21:54Z rallly tier1 41.9 True
23 2026-08-01T12:40:21Z rallly tier1 41.9 True
24 2026-08-01T12:48:31Z rallly tier1 42.5 True
25 2026-08-01T13:11:44Z rallly tier1 42.0 True
26 2026-08-01T13:20:31Z rallly tier1 42.9 True
27 2026-08-01T13:29:17Z rallly tier1 41.8 True
1 1 2026-08-01T07:25:51Z rallly tier1 42.3 True
2 1 2026-08-01T07:41:34Z rallly tier1 41.8 True
3 2 2026-08-01T07:55:56Z rallly tier1 41.7 True
4 3 2026-08-01T08:14:04Z rallly tier1 44.3 True
5 4 2026-08-01T08:22:14Z rallly tier1 42.0 True
6 5 2026-08-01T08:41:13Z rallly tier1 43.0 True
7 6 2026-08-01T08:44:12Z rallly tier1 41.6 True
8 7 2026-08-01T09:07:38Z rallly tier1 42.2 True
9 8 2026-08-01T09:12:45Z rallly tier1 42.3 True
10 9 2026-08-01T09:25:22Z rallly tier1 41.9 True
11 10 2026-08-01T09:48:24Z rallly tier1 41.6 True
12 11 2026-08-01T09:51:05Z rallly tier1 41.7 True
13 12 2026-08-01T10:15:50Z rallly tier1 41.6 True
14 13 2026-08-01T10:19:22Z rallly tier1 42.2 True
15 14 2026-08-01T10:31:54Z rallly tier1 42.4 True
16 15 2026-08-01T10:52:04Z rallly tier1 41.8 True
17 16 2026-08-01T11:09:59Z rallly tier1 38.8 True
18 17 2026-08-01T11:21:26Z rallly tier1 41.5 True
19 18 2026-08-01T11:39:12Z rallly tier1 42.0 True
20 19 2026-08-01T11:42:48Z rallly tier1 42.1 True
21 20 2026-08-01T12:05:02Z rallly tier1 42.2 True
22 21 2026-08-01T12:19:03Z rallly tier1 41.4 True
23 22 2026-08-01T12:21:54Z rallly tier1 41.9 True
24 23 2026-08-01T12:40:21Z rallly tier1 41.9 True
25 24 2026-08-01T12:48:31Z rallly tier1 42.5 True
26 25 2026-08-01T13:11:44Z rallly tier1 42.0 True
27 26 2026-08-01T13:20:31Z rallly tier1 42.9 True
28 27 2026-08-01T13:29:17Z rallly tier1 41.8 True
@@ -0,0 +1,60 @@
09:17:54 === Campaign 10 Phase B start — max 1 cycles, deadline 10:17 ===
09:17:56 cycle 1: detach_nontarget -> redeploy_app -> backup -> restore_verify -> detach_target -> kill_controller
09:31:19 cycle 1 done — violations so far: 0
09:31:19 === finished after 1 cycles, 0 violations ===
09:33:35 === Campaign 10 Phase B start — max 40 cycles, deadline 15:33 ===
09:33:37 cycle 1: detach_nontarget -> redeploy_app -> backup -> restore_verify -> detach_target -> kill_controller
09:47:09 cycle 1 done — violations so far: 0
09:47:11 cycle 2: kill_controller -> detach_nontarget -> backup -> redeploy_app -> restore_verify -> detach_target
10:00:42 cycle 2 done — violations so far: 0
10:00:44 cycle 3: detach_target -> redeploy_app -> backup -> detach_nontarget -> kill_controller -> restore_verify
10:14:17 cycle 3 done — violations so far: 0
10:14:19 cycle 4: detach_nontarget -> backup -> redeploy_app -> restore_verify -> detach_target -> kill_controller
10:27:50 cycle 4 done — violations so far: 0
10:27:52 cycle 5: redeploy_app -> detach_nontarget -> kill_controller -> detach_target -> backup -> restore_verify
10:41:26 cycle 5 done — violations so far: 0
10:41:28 cycle 6: kill_controller -> restore_verify -> detach_target -> detach_nontarget -> backup -> redeploy_app
10:54:59 cycle 6 done — violations so far: 0
10:55:01 cycle 7: detach_nontarget -> detach_target -> kill_controller -> redeploy_app -> restore_verify -> backup -> reboot_guest
11:09:13 cycle 7 done — violations so far: 0
11:09:15 cycle 8: redeploy_app -> kill_controller -> restore_verify -> detach_nontarget -> detach_target -> backup
11:22:48 cycle 8 done — violations so far: 0
11:22:50 cycle 9: kill_controller -> restore_verify -> redeploy_app -> detach_nontarget -> backup -> detach_target
11:35:57 cycle 9 done — violations so far: 0
11:35:59 cycle 10: detach_nontarget -> redeploy_app -> kill_controller -> detach_target -> restore_verify -> backup
11:49:07 cycle 10 done — violations so far: 0
11:49:10 cycle 11: restore_verify -> detach_nontarget -> detach_target -> backup -> redeploy_app -> kill_controller
12:02:40 cycle 11 done — violations so far: 0
12:02:43 cycle 12: redeploy_app -> detach_nontarget -> kill_controller -> detach_target -> backup -> restore_verify
12:16:02 cycle 12 done — violations so far: 0
12:16:05 cycle 13: kill_controller -> redeploy_app -> restore_verify -> backup -> detach_target -> detach_nontarget
12:29:25 cycle 13 done — violations so far: 0
12:29:27 cycle 14: backup -> restore_verify -> detach_nontarget -> redeploy_app -> kill_controller -> detach_target -> reboot_guest
12:43:28 cycle 14 done — violations so far: 0
12:43:30 cycle 15: detach_target -> backup -> kill_controller -> redeploy_app -> restore_verify -> detach_nontarget
12:56:54 cycle 15 done — violations so far: 0
12:56:56 cycle 16: backup -> detach_target -> detach_nontarget -> restore_verify -> kill_controller -> redeploy_app
13:12:43 cycle 16 done — violations so far: 0
13:12:49 cycle 17: redeploy_app -> detach_nontarget -> backup -> kill_controller -> restore_verify -> detach_target
13:26:12 cycle 17 done — violations so far: 0
13:26:14 cycle 18: detach_target -> kill_controller -> detach_nontarget -> backup -> redeploy_app -> restore_verify
13:39:26 cycle 18 done — violations so far: 0
13:39:28 cycle 19: kill_controller -> redeploy_app -> restore_verify -> detach_nontarget -> detach_target -> backup
13:52:39 cycle 19 done — violations so far: 0
13:52:41 cycle 20: backup -> detach_target -> detach_nontarget -> redeploy_app -> restore_verify -> kill_controller
14:06:05 cycle 20 done — violations so far: 0
14:06:07 cycle 21: backup -> kill_controller -> detach_nontarget -> redeploy_app -> detach_target -> restore_verify -> reboot_guest
14:19:56 cycle 21 done — violations so far: 0
14:19:58 cycle 22: restore_verify -> redeploy_app -> backup -> detach_nontarget -> kill_controller -> detach_target
14:33:30 cycle 22 done — violations so far: 0
14:33:32 cycle 23: backup -> detach_target -> restore_verify -> kill_controller -> redeploy_app -> detach_nontarget
14:46:43 cycle 23 done — violations so far: 0
14:46:45 cycle 24: restore_verify -> backup -> detach_target -> kill_controller -> detach_nontarget -> redeploy_app
14:59:59 cycle 24 done — violations so far: 0
15:00:01 cycle 25: detach_nontarget -> kill_controller -> detach_target -> restore_verify -> backup -> redeploy_app
15:13:24 cycle 25 done — violations so far: 0
15:13:26 cycle 26: redeploy_app -> detach_nontarget -> restore_verify -> kill_controller -> detach_target -> backup
15:26:37 cycle 26 done — violations so far: 0
15:26:39 cycle 27: backup -> restore_verify -> detach_target -> kill_controller -> detach_nontarget -> redeploy_app
15:40:13 cycle 27 done — violations so far: 0
15:40:13 === finished after 27 cycles, 0 violations ===
@@ -0,0 +1,4 @@
cycle=27
phase=finished
utc=2026-08-01T13:40:13Z
violations=0