From 8845496c0e5ba17ea8e820b5f6fc16969f4b043d Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Mon, 22 Jun 2026 21:30:08 +0200 Subject: [PATCH] =?UTF-8?q?test=20campaign=20#3:=20Phase=203=20concurrency?= =?UTF-8?q?=20storms=20(C1=20mutex,=20C2=20flap+gate,=20C3=20agent-kill=20?= =?UTF-8?q?unquiesce=20=E2=80=94=20all=20PASS)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- TEST-REPORT.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/TEST-REPORT.md b/TEST-REPORT.md index 5b4be1d..8a2b9fa 100644 --- a/TEST-REPORT.md +++ b/TEST-REPORT.md @@ -25,7 +25,13 @@ handles-or-fails-safe, then recovers. Every break carries a timed auto-revert; P | S2 | garbage in uptime-kuma `app.yaml` → rescan | **PASS** | controller stays **healthy** (25/0), logs `[WARN] LoadAppConfig: yaml: … did not find expected key` (not silent, not fatal), other apps unaffected. Restore → `running/deployed`. **Contrast with S1:** per-stack app.yaml corruption is graceful; settings.json is fatal. | | S3 | corrupt quiesce marker (bad JSON) → restart | **PASS (minor finding)** | no panic/crash-loop, controller healthy, **stacks not stranded** (restarts=0). But the unparseable marker is **silently ignored** (no log) **and left in place** (not cleared/quarantined) — a real corrupted-mid-quiesce marker would skip recovery with no signal. | | S4 | symlink `→ /etc` in userdata/appdata → backup | **PASS (security holds)** 🔒 | Tier-2 rsync **preserved the symlink** (`EVIL_ETC -> /etc`), did **not** follow it; **/etc contents did NOT leak** into the backup (no passwd/shadow). No path-escape/exfil. | -## Phase 3 — Concurrency storms — _pending_ +## Phase 3 — Concurrency storms — **PASS** + +| # | Break | Result | Evidence | +|---|---|---|---| +| C1 | deploy + backup + restore + git-sync simultaneously | **PASS** | backup/run + tier2 both single-flighted ("Mentés már folyamatban"); restore mutex'd (302); sync ran independently ("nincs változás"); after settle **no stuck flag** (`running:false`), no deadlock, 25/0 healthy | +| C2 | rapid felhom-usb flap ×5 in ~10s | **PASS** | converged → felhom-usb **MOUNTED**, disconnected mark `None` (not stuck); **0 `permission denied`** during the flap; the v0.75 mountpoint-gate fired **5 clean skips** ("not mounted") in the disconnected windows; 25/0 | +| C3 | kill `felhom-agent` mid-quiesce-backup | **PASS** | quiesce stopped 14 stacks → agent killed → controller `[quiesce] unquiescing (backup start failed): restarting 14 stack(s)` (clean error + defer-unwind, **no stack stranded**); agent restarted → `/api/disks` OK; **idle sockets→8443 = 1** (v0.74 bound holds); recovered 25/0 | ## Phase 4 — Time chaos — _pending_ ## Phase 5 — Network partitions — _pending_ ## Phase 6 — Input/security fuzzing [HIGH SEV] — _pending_