Files
felhom.eu/documentation/audits/evidence-backup-promise-2026-09-16/teardown-e1-controller-debug.json
T
admin c18efc0610
gates / gates (push) Successful in 20s
teardown layer 1, a proper secret-leak check, and the fresh-box proof in both rows
VM 335 purged with its disks; demo-hp's own containers untouched; evidence pulled
off the box before the destroy, with the one thing I could not collect stated (the
agent journal — root SSH is refused on the appliance by design).

The leak check redone properly: six real secret VALUES as needles against all 41
evidence files, planted positive control matched 6/6, committed evidence matched 0.
The earlier „22" was the word „password" in labels — a word count, not a leak check.

R-537 and R-538 now carry the fresh-box proof: the labels on a box where off-site is
on, the refusal that pointed at the off-site route, and five photos returned
byte-identical.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-16 19:51:54 +02:00

2 lines
26 KiB
JSON

{"data":{"entries":[{"timestamp":"2026-09-16T17:42:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:42:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:42:58Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (184ms)","source":""},{"timestamp":"2026-09-16T17:42:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:42:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (554ms)","source":""},{"timestamp":"2026-09-16T17:43:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (526ms)","source":""},{"timestamp":"2026-09-16T17:43:08Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:43:18Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:43:18Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (189ms)","source":""},{"timestamp":"2026-09-16T17:43:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:43:28Z","level":"INFO","message":"[scheduler] Running job: agent-channel-health","source":""},{"timestamp":"2026-09-16T17:43:28Z","level":"INFO","message":"[deadapp] check alive: 200 scans since boot, 1 deployed app(s) evaluated, 0 currently down","source":""},{"timestamp":"2026-09-16T17:43:29Z","level":"DEBUG","message":"[agentapi] GET /storage -\u003e 200 (462ms)","source":""},{"timestamp":"2026-09-16T17:43:29Z","level":"INFO","message":"[scheduler] Job agent-channel-health completed (took 463ms)","source":""},{"timestamp":"2026-09-16T17:43:29Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (540ms)","source":""},{"timestamp":"2026-09-16T17:43:30Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (534ms)","source":""},{"timestamp":"2026-09-16T17:43:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:43:39Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (177ms)","source":""},{"timestamp":"2026-09-16T17:43:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:43:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:43:59Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (187ms)","source":""},{"timestamp":"2026-09-16T17:43:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (553ms)","source":""},{"timestamp":"2026-09-16T17:44:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (544ms)","source":""},{"timestamp":"2026-09-16T17:44:08Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:44:18Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:44:18Z","level":"INFO","message":"Health probes: 1 ok (of 1 probed)","source":""},{"timestamp":"2026-09-16T17:44:19Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (198ms)","source":""},{"timestamp":"2026-09-16T17:44:28Z","level":"INFO","message":"[scheduler] Running job: stack-scan","source":""},{"timestamp":"2026-09-16T17:44:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:44:28Z","level":"INFO","message":"[scheduler] Running job: agent-channel-health","source":""},{"timestamp":"2026-09-16T17:44:28Z","level":"INFO","message":"[stacks] ScanStacks complete: 56 stacks found (1 deployed, 55 available)","source":""},{"timestamp":"2026-09-16T17:44:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:44:28Z","level":"INFO","message":"[scheduler] Job stack-scan completed (took 82ms)","source":""},{"timestamp":"2026-09-16T17:44:29Z","level":"DEBUG","message":"[agentapi] GET /storage -\u003e 200 (499ms)","source":""},{"timestamp":"2026-09-16T17:44:29Z","level":"INFO","message":"[scheduler] Job agent-channel-health completed (took 499ms)","source":""},{"timestamp":"2026-09-16T17:44:29Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (572ms)","source":""},{"timestamp":"2026-09-16T17:44:30Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (566ms)","source":""},{"timestamp":"2026-09-16T17:44:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:44:40Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (190ms)","source":""},{"timestamp":"2026-09-16T17:44:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:44:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:44:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (554ms)","source":""},{"timestamp":"2026-09-16T17:45:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (556ms)","source":""},{"timestamp":"2026-09-16T17:45:00Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (179ms)","source":""},{"timestamp":"2026-09-16T17:45:08Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:45:11Z","level":"WARN","message":"[web] restore refused for nextcloud: unit carries no file leg (1 drive path(s))","source":""},{"timestamp":"2026-09-16T17:45:18Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:45:21Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (198ms)","source":""},{"timestamp":"2026-09-16T17:45:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:45:28Z","level":"INFO","message":"[scheduler] Running job: agent-channel-health","source":""},{"timestamp":"2026-09-16T17:45:29Z","level":"DEBUG","message":"[agentapi] GET /storage -\u003e 200 (466ms)","source":""},{"timestamp":"2026-09-16T17:45:29Z","level":"INFO","message":"[scheduler] Job agent-channel-health completed (took 466ms)","source":""},{"timestamp":"2026-09-16T17:45:29Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (539ms)","source":""},{"timestamp":"2026-09-16T17:45:30Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (532ms)","source":""},{"timestamp":"2026-09-16T17:45:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:45:41Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (183ms)","source":""},{"timestamp":"2026-09-16T17:45:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:45:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:45:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (561ms)","source":""},{"timestamp":"2026-09-16T17:46:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (552ms)","source":""},{"timestamp":"2026-09-16T17:46:01Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (193ms)","source":""},{"timestamp":"2026-09-16T17:46:08Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:46:12Z","level":"INFO","message":"[offbox] restored nextcloud (35f32017, full=true) → /mnt/felhom-drives/adatlemez/backups/offsite-restore/nextcloud","source":""},{"timestamp":"2026-09-16T17:46:12Z","level":"INFO","message":"[web] off-box restore nextcloud completed (full=true, async)","source":""},{"timestamp":"2026-09-16T17:46:18Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:46:22Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (215ms)","source":""},{"timestamp":"2026-09-16T17:46:28Z","level":"INFO","message":"[scheduler] Running job: stack-scan","source":""},{"timestamp":"2026-09-16T17:46:28Z","level":"INFO","message":"[stacks] ScanStacks complete: 56 stacks found (1 deployed, 55 available)","source":""},{"timestamp":"2026-09-16T17:46:28Z","level":"INFO","message":"[scheduler] Running job: agent-channel-health","source":""},{"timestamp":"2026-09-16T17:46:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:46:28Z","level":"INFO","message":"[scheduler] Job stack-scan completed (took 47ms)","source":""},{"timestamp":"2026-09-16T17:46:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:46:29Z","level":"DEBUG","message":"[agentapi] GET /storage -\u003e 200 (462ms)","source":""},{"timestamp":"2026-09-16T17:46:29Z","level":"INFO","message":"[scheduler] Job agent-channel-health completed (took 463ms)","source":""},{"timestamp":"2026-09-16T17:46:29Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (521ms)","source":""},{"timestamp":"2026-09-16T17:46:30Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (547ms)","source":""},{"timestamp":"2026-09-16T17:46:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:46:42Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (177ms)","source":""},{"timestamp":"2026-09-16T17:46:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:46:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:46:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (560ms)","source":""},{"timestamp":"2026-09-16T17:47:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (548ms)","source":""},{"timestamp":"2026-09-16T17:47:02Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (171ms)","source":""},{"timestamp":"2026-09-16T17:47:05Z","level":"INFO","message":"[backup] Discovered 1 databases","source":""},{"timestamp":"2026-09-16T17:47:06Z","level":"INFO","message":"[backup] DB dump: nextcloud-db → pre-restore-20260916T174705Z-nextcloud-mariadb.sql (496.9 KB, 626ms, 131 tables)","source":""},{"timestamp":"2026-09-16T17:47:06Z","level":"INFO","message":"[offbox] nextcloud: pre-restore safety dump written → pre-restore-20260916T174705Z-nextcloud-mariadb.sql (496.9 KB)","source":""},{"timestamp":"2026-09-16T17:47:06Z","level":"INFO","message":"[stacks] Stopping stack: nextcloud","source":""},{"timestamp":"2026-09-16T17:47:06Z","level":"DEBUG","message":"Running: docker compose down (in /opt/docker/stacks/nextcloud)","source":""},{"timestamp":"2026-09-16T17:47:08Z","level":"DEBUG","message":"Command completed: docker compose down (took 1.8s)","source":""},{"timestamp":"2026-09-16T17:47:08Z","level":"INFO","message":"[stacks] Stack nextcloud stopped successfully (took 1.8s)","source":""},{"timestamp":"2026-09-16T17:47:08Z","level":"INFO","message":"[stacks] Status refresh: 3 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:08Z","level":"INFO","message":"[backup] Restoring Docker volume nextcloud_nextcloud_db_data for nextcloud","source":""},{"timestamp":"2026-09-16T17:47:08Z","level":"INFO","message":"[stacks] Status refresh: 3 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:08Z","level":"INFO","message":"[backup] Restoring Docker volume nextcloud_nextcloud_html for nextcloud","source":""},{"timestamp":"2026-09-16T17:47:18Z","level":"INFO","message":"[stacks] Status refresh: 3 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:19Z","level":"INFO","message":"[backup] Restoring Docker volume nextcloud_nextcloud_redis_data for nextcloud","source":""},{"timestamp":"2026-09-16T17:47:19Z","level":"INFO","message":"[backup] Restored 3 Docker volume(s) for nextcloud","source":""},{"timestamp":"2026-09-16T17:47:19Z","level":"INFO","message":"[stacks] Starting stack nextcloud services only: [nextcloud-db]","source":""},{"timestamp":"2026-09-16T17:47:19Z","level":"DEBUG","message":"Running: docker compose up -d nextcloud-db (in /opt/docker/stacks/nextcloud)","source":""},{"timestamp":"2026-09-16T17:47:20Z","level":"DEBUG","message":"Command completed: docker compose up -d nextcloud-db (took 0.5s)","source":""},{"timestamp":"2026-09-16T17:47:20Z","level":"INFO","message":"[stacks] Stack nextcloud services [nextcloud-db] started (took 0.5s)","source":""},{"timestamp":"2026-09-16T17:47:20Z","level":"INFO","message":"[stacks] Status refresh: 4 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:20Z","level":"INFO","message":"[backup] Discovered 1 databases","source":""},{"timestamp":"2026-09-16T17:47:20Z","level":"INFO","message":"[backup] Restore nextcloud: replaying DB dump into nextcloud-db (mariadb)","source":""},{"timestamp":"2026-09-16T17:47:23Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (190ms)","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[sync] Starting catalog sync","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git (branch: main)","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"DEBUG","message":"[sync] Running: git fetch --depth 1 origin main","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[scheduler] Running job: offsite-credential-retry","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[scheduler] Job offsite-credential-retry completed (took 0s)","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[scheduler] Running job: system-health","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[scheduler] Running job: hub-report","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[report] Building system report","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[scheduler] Running job: backup-cache","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[stacks] Status refresh: 4 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[scheduler] Running job: agent-channel-health","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"DEBUG","message":"[sync] Running: git reset --hard origin/main","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[settings] Settings saved","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[backup] Found 2 DB dump files across drives","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[backup] Discovered 1 databases","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[backup] Backup status cache refreshed","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[scheduler] Job backup-cache completed (took 147ms)","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[sync] Catalog sync complete","source":""},{"timestamp":"2026-09-16T17:47:28Z","level":"INFO","message":"[sync] Periodic sync: Sablonok naprakészek — nincs változás","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"INFO","message":"[monitor] Health check: status=ok","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"INFO","message":"[scheduler] Job system-health completed (took 309ms)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"INFO","message":"[monitor] Health check: status=ok","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"DEBUG","message":"[metrics] logscanner: starting log scan for 2 containers (since 15m0s)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"DEBUG","message":"[metrics] logscanner: scanned nextcloud-db: errors=0 warnings=3 issues=3 (took 29ms)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"DEBUG","message":"[metrics] logscanner: scanned felhom-controller: errors=0 warnings=1 issues=1 (took 37ms)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"DEBUG","message":"[metrics] logscanner: log scan completed: 2 containers in 67ms","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"INFO","message":"[report] Hub report pushed successfully (3879 bytes)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"INFO","message":"[settings] Settings saved","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"INFO","message":"[scheduler] Job hub-report completed (took 483ms)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"DEBUG","message":"[agentapi] GET /storage -\u003e 200 (461ms)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"INFO","message":"[scheduler] Job agent-channel-health completed (took 461ms)","source":""},{"timestamp":"2026-09-16T17:47:29Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (516ms)","source":""},{"timestamp":"2026-09-16T17:47:30Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (512ms)","source":""},{"timestamp":"2026-09-16T17:47:31Z","level":"INFO","message":"[backup] Imported DB dump nextcloud-mariadb.sql into nextcloud-db (mariadb)","source":""},{"timestamp":"2026-09-16T17:47:31Z","level":"INFO","message":"[backup] Restore nextcloud: replayed 1 DB dump(s)","source":""},{"timestamp":"2026-09-16T17:47:31Z","level":"INFO","message":"[stacks] Starting stack: nextcloud","source":""},{"timestamp":"2026-09-16T17:47:31Z","level":"DEBUG","message":"Running: docker compose up -d (in /opt/docker/stacks/nextcloud)","source":""},{"timestamp":"2026-09-16T17:47:38Z","level":"DEBUG","message":"Command completed: docker compose up -d (took 6.2s)","source":""},{"timestamp":"2026-09-16T17:47:38Z","level":"INFO","message":"[stacks] Stack nextcloud started successfully (took 6.2s)","source":""},{"timestamp":"2026-09-16T17:47:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:41Z","level":"DEBUG","message":"Running: docker compose ps -a --format table {{.Name}}\t{{.Image}}\t{{.State}}\t{{.Status}} (in /opt/docker/stacks/nextcloud)","source":""},{"timestamp":"2026-09-16T17:47:41Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:41Z","level":"DEBUG","message":"Command completed: docker compose ps -a --format table {{.Name}}\t{{.Image}}\t{{.State}}\t{{.Status}} (took 0.1s)","source":""},{"timestamp":"2026-09-16T17:47:41Z","level":"INFO","message":"[stacks] Stack nextcloud post-start status:","source":""},{"timestamp":"2026-09-16T17:47:41Z","level":"INFO","message":"[stacks] nextcloud nextcloud:34.0.1-apache running Up 3 seconds (health: starting)","source":""},{"timestamp":"2026-09-16T17:47:41Z","level":"INFO","message":"[stacks] nextcloud-db mariadb:11.6 running Up 21 seconds (healthy)","source":""},{"timestamp":"2026-09-16T17:47:41Z","level":"INFO","message":"[stacks] nextcloud-redis redis:7-alpine running Up 9 seconds (healthy)","source":""},{"timestamp":"2026-09-16T17:47:43Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (197ms)","source":""},{"timestamp":"2026-09-16T17:47:46Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:46Z","level":"INFO","message":"[offbox] reconstituted nextcloud from snapshot 35f32017: 5 file(s) placed, 3 volume(s) replayed, 1 DB dump(s) replayed, safety dump=pre-restore-20260916T174705Z-nextcloud-mariadb.sql, skewed=false","source":""},{"timestamp":"2026-09-16T17:47:46Z","level":"INFO","message":"[web] off-box reconstitute nextcloud completed (async): files=5 dbs=1 snapshot=35f32017","source":""},{"timestamp":"2026-09-16T17:47:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:48Z","level":"INFO","message":"Health probes: 1 ok (of 1 probed)","source":""},{"timestamp":"2026-09-16T17:47:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:47:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (568ms)","source":""},{"timestamp":"2026-09-16T17:48:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (546ms)","source":""},{"timestamp":"2026-09-16T17:48:04Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (170ms)","source":""},{"timestamp":"2026-09-16T17:48:08Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:48:18Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:48:24Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (200ms)","source":""},{"timestamp":"2026-09-16T17:48:28Z","level":"INFO","message":"[scheduler] Running job: stack-scan","source":""},{"timestamp":"2026-09-16T17:48:28Z","level":"INFO","message":"[stacks] ScanStacks complete: 56 stacks found (1 deployed, 55 available)","source":""},{"timestamp":"2026-09-16T17:48:28Z","level":"INFO","message":"[scheduler] Running job: agent-channel-health","source":""},{"timestamp":"2026-09-16T17:48:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:48:28Z","level":"INFO","message":"[scheduler] Job stack-scan completed (took 48ms)","source":""},{"timestamp":"2026-09-16T17:48:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:48:29Z","level":"DEBUG","message":"[agentapi] GET /storage -\u003e 200 (474ms)","source":""},{"timestamp":"2026-09-16T17:48:29Z","level":"INFO","message":"[scheduler] Job agent-channel-health completed (took 475ms)","source":""},{"timestamp":"2026-09-16T17:48:29Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (530ms)","source":""},{"timestamp":"2026-09-16T17:48:30Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (523ms)","source":""},{"timestamp":"2026-09-16T17:48:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:48:44Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (179ms)","source":""},{"timestamp":"2026-09-16T17:48:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:48:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:48:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (554ms)","source":""},{"timestamp":"2026-09-16T17:49:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (555ms)","source":""},{"timestamp":"2026-09-16T17:49:05Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (188ms)","source":""},{"timestamp":"2026-09-16T17:49:08Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:49:18Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:49:25Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (189ms)","source":""},{"timestamp":"2026-09-16T17:49:28Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:49:28Z","level":"INFO","message":"[scheduler] Running job: agent-channel-health","source":""},{"timestamp":"2026-09-16T17:49:29Z","level":"DEBUG","message":"[agentapi] GET /storage -\u003e 200 (484ms)","source":""},{"timestamp":"2026-09-16T17:49:29Z","level":"INFO","message":"[scheduler] Job agent-channel-health completed (took 484ms)","source":""},{"timestamp":"2026-09-16T17:49:29Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (567ms)","source":""},{"timestamp":"2026-09-16T17:49:30Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (535ms)","source":""},{"timestamp":"2026-09-16T17:49:38Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:49:45Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (184ms)","source":""},{"timestamp":"2026-09-16T17:49:48Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:49:58Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""},{"timestamp":"2026-09-16T17:49:59Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (533ms)","source":""},{"timestamp":"2026-09-16T17:50:00Z","level":"DEBUG","message":"[agentapi] GET /disks -\u003e 200 (550ms)","source":""},{"timestamp":"2026-09-16T17:50:06Z","level":"DEBUG","message":"[agentapi] GET /disks/candidates -\u003e 200 (190ms)","source":""},{"timestamp":"2026-09-16T17:50:08Z","level":"INFO","message":"[stacks] Status refresh: 6 containers across 56 stacks","source":""}],"total":2827},"ok":true}