From 1be7aa87dc26cf42a82c7d78844450db39dec381 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Wed, 28 Oct 2026 18:23:33 +0100 Subject: [PATCH] Big steps close-out: Wanderer, Termix, Homepage, Seerr live (bench + box + undo); R-1335/R-1311/R-1320/R-1317 closed, R-1338 opened, R-1334 VERIFY (0 refused in two dry runs, no login); 09 decision 279 + [DESIGN] path rule; STATUS, CONTEXT, evidence --- CONTEXT.md | 15 + REPORT-dockerhub-bigsteps-2026-10-28.md | 162 ++ STATUS.md | 4 +- .../architecture/09-update-architecture.md | 20 + .../homepage/bench/MV-homepage.log | 114 ++ .../evidence/MV-homepage/abort-states.json | 8 + .../evidence/MV-homepage/compose-final.log | 7 + .../evidence/MV-homepage/engine-state.json | 1 + .../MV-homepage/files-after-detail.json | 1 + .../evidence/MV-homepage/files-after.json | 1 + .../MV-homepage/files-before-detail.json | 1 + .../evidence/MV-homepage/files-before.json | 1 + .../evidence/MV-homepage/memory-samples.json | 762 +++++++ .../evidence/MV-homepage/migration-lines.txt | 0 .../bench/evidence/MV-homepage/run.log | 58 + .../bench/evidence/MV-homepage/to-full.log | 9 + .../bench/evidence/MV-homepage/to-states.json | 8 + .../bench/evidence/MV-homepage/verdict.json | 56 + .../homepage/box/box-verdict-homepage.json | 231 +++ .../homepage/box/walk.txt | 25 + .../homepage/undo/run.txt | 24 + .../homepage/undo/undo-proof-homepage.json | 144 ++ .../repoint-9202-live.txt | 16 + .../bench-try1-jellyfin-503/MV-seerr.log | 35 + .../evidence/MV-seerr/compose-final.log | 24 + .../evidence/MV-seerr/run.log | 7 + .../evidence/MV-seerr/verdict.json | 28 + .../seerr/bench/MV-seerr.log | 115 ++ .../bench/evidence/MV-seerr/abort-states.json | 8 + .../bench/evidence/MV-seerr/compose-final.log | 17 + .../bench/evidence/MV-seerr/engine-state.json | 1 + .../evidence/MV-seerr/files-after-detail.json | 1 + .../bench/evidence/MV-seerr/files-after.json | 1 + .../MV-seerr/files-before-detail.json | 1 + .../bench/evidence/MV-seerr/files-before.json | 1 + .../evidence/MV-seerr/memory-samples.json | 762 +++++++ .../evidence/MV-seerr/migration-lines.txt | 6 + .../seerr/bench/evidence/MV-seerr/run.log | 59 + .../seerr/bench/evidence/MV-seerr/to-full.log | 20 + .../bench/evidence/MV-seerr/to-states.json | 8 + .../bench/evidence/MV-seerr/verdict.json | 56 + .../seerr/box/box-verdict-seerr.json | 225 ++ .../seerr/box/walk.txt | 24 + .../seerr/definition/.felhom.yml | 188 ++ .../seerr/definition/docker-compose.yml | 55 + .../seerr/undo/run.txt | 28 + .../seerr/undo/undo-proof-seerr.json | 170 ++ .../termix-26105/bench/MV-termix.log | 114 ++ .../evidence/MV-termix/abort-states.json | 8 + .../evidence/MV-termix/compose-final.log | 296 +++ .../evidence/MV-termix/engine-state.json | 1 + .../MV-termix/files-after-detail.json | 1 + .../bench/evidence/MV-termix/files-after.json | 1 + .../MV-termix/files-before-detail.json | 1 + .../evidence/MV-termix/files-before.json | 1 + .../evidence/MV-termix/memory-samples.json | 762 +++++++ .../evidence/MV-termix/migration-lines.txt | 2 + .../bench/evidence/MV-termix/run.log | 58 + .../bench/evidence/MV-termix/to-full.log | 51 + .../bench/evidence/MV-termix/to-states.json | 8 + .../bench/evidence/MV-termix/verdict.json | 56 + .../termix-26105/box/box-verdict-termix.json | 220 ++ .../termix-26105/box/walk.txt | 24 + .../termix-26105/undo/run.txt | 24 + .../termix-26105/undo/undo-proof-termix.json | 175 ++ .../termix-292/bench/MV-termix.log | 114 ++ .../evidence/MV-termix/abort-states.json | 8 + .../evidence/MV-termix/compose-final.log | 29 + .../evidence/MV-termix/engine-state.json | 1 + .../MV-termix/files-after-detail.json | 1 + .../bench/evidence/MV-termix/files-after.json | 1 + .../MV-termix/files-before-detail.json | 1 + .../evidence/MV-termix/files-before.json | 1 + .../evidence/MV-termix/memory-samples.json | 762 +++++++ .../evidence/MV-termix/migration-lines.txt | 6 + .../bench/evidence/MV-termix/run.log | 58 + .../bench/evidence/MV-termix/to-full.log | 328 +++ .../bench/evidence/MV-termix/to-states.json | 8 + .../bench/evidence/MV-termix/verdict.json | 56 + .../termix-292/box/box-verdict-termix.json | 222 ++ .../termix-292/box/walk.txt | 24 + .../termix-292/undo-try1-probe-passed/run.txt | 22 + .../undo-proof-termix.json | 164 ++ .../termix-292/undo/run.txt | 25 + .../termix-292/undo/undo-proof-termix.json | 184 ++ .../_run-2.8.0-try1-no-gate-cookie.txt | 13 + .../_try2-forged-only-run-2.8.0.txt | 13 + .../_try2-forged-only-run-26.10.5.txt | 16 + .../_try2-forged-only-xff-2.8.0.json | 24 + .../_try2-forged-only-xff-26.10.5.json | 24 + .../_try3-route-dropped-run-2.9.2.txt | 13 + .../_try3-route-dropped-xff-2.9.2.json | 24 + .../termix-xff/_xff-2.8.0-try1.json | 24 + .../termix-xff/run-2.8.0.txt | 14 + .../termix-xff/run-2.9.2.txt | 14 + .../termix-xff/run-26.10.5.txt | 13 + .../termix-xff/xff-2.8.0.json | 24 + .../termix-xff/xff-2.9.2.json | 24 + .../termix-xff/xff-26.10.5.json | 24 + .../termix_xff.py | 40 + .../termix_xff_install.py | 31 + .../undo_proof2.py | 132 ++ .../bench-run2-meili256/MV-wanderer.log | 145 ++ .../evidence/MV-wanderer/abort-states.json | 20 + .../evidence/MV-wanderer/compose-final.log | 913 +++++++++ .../evidence/MV-wanderer/engine-state.json | 1 + .../MV-wanderer/files-after-detail.json | 1 + .../evidence/MV-wanderer/files-after.json | 1 + .../MV-wanderer/files-before-detail.json | 1 + .../evidence/MV-wanderer/files-before.json | 1 + .../evidence/MV-wanderer/memory-samples.json | 1802 +++++++++++++++++ .../evidence/MV-wanderer/migration-lines.txt | 0 .../evidence/MV-wanderer/run.log | 59 + .../evidence/MV-wanderer/to-full.log | 165 ++ .../evidence/MV-wanderer/to-states.json | 20 + .../evidence/MV-wanderer/verdict.json | 86 + .../bench-try1-no-actor/MV-wanderer.log | 39 + .../evidence/MV-wanderer/compose-final.log | 98 + .../evidence/MV-wanderer/run.log | 7 + .../evidence/MV-wanderer/verdict.json | 32 + .../wanderer/bench/MV-wanderer.log | 145 ++ .../evidence/MV-wanderer/abort-states.json | 20 + .../evidence/MV-wanderer/compose-final.log | 913 +++++++++ .../evidence/MV-wanderer/engine-state.json | 1 + .../MV-wanderer/files-after-detail.json | 1 + .../evidence/MV-wanderer/files-after.json | 1 + .../MV-wanderer/files-before-detail.json | 1 + .../evidence/MV-wanderer/files-before.json | 1 + .../evidence/MV-wanderer/memory-samples.json | 1802 +++++++++++++++++ .../evidence/MV-wanderer/migration-lines.txt | 0 .../bench/evidence/MV-wanderer/run.log | 59 + .../bench/evidence/MV-wanderer/to-full.log | 161 ++ .../bench/evidence/MV-wanderer/to-states.json | 20 + .../bench/evidence/MV-wanderer/verdict.json | 86 + .../wanderer/box/box-verdict-wanderer.json | 289 +++ .../wanderer/box/walk.txt | 25 + .../wanderer/undo/run.txt | 25 + .../wanderer/undo/undo-proof-wanderer.json | 200 ++ documentation/backlog/CLOSED-ITEMS.md | 9 + documentation/backlog/OPEN-ITEMS.md | 15 +- documentation/backlog/STATUS-HISTORY.md | 8 + 141 files changed, 14955 insertions(+), 11 deletions(-) create mode 100644 REPORT-dockerhub-bigsteps-2026-10-28.md create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/MV-homepage.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/abort-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/engine-state.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/memory-samples.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/migration-lines.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-full.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/box-verdict-homepage.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/walk.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/run.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/undo-proof-homepage.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/repoint-9202-live.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/MV-seerr.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/MV-seerr.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/abort-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/engine-state.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/memory-samples.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/migration-lines.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-full.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/box-verdict-seerr.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/walk.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/.felhom.yml create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/docker-compose.yml create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/run.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/undo-proof-seerr.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/MV-termix.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/abort-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/engine-state.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/memory-samples.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/migration-lines.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-full.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/box-verdict-termix.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/walk.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/run.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/undo-proof-termix.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/MV-termix.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/abort-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/engine-state.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/memory-samples.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/migration-lines.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-full.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/box-verdict-termix.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/walk.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/run.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/undo-proof-termix.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/run.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/undo-proof-termix.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_run-2.8.0-try1-no-gate-cookie.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-2.8.0.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-26.10.5.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-2.8.0.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-26.10.5.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-run-2.9.2.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-xff-2.9.2.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_xff-2.8.0-try1.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.8.0.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.9.2.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-26.10.5.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.8.0.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.9.2.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-26.10.5.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff.py create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff_install.py create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/undo_proof2.py create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/MV-wanderer.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/abort-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/engine-state.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/memory-samples.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/migration-lines.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-full.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/MV-wanderer.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/MV-wanderer.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/abort-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/compose-final.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/engine-state.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before-detail.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/memory-samples.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/migration-lines.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/run.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-full.log create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-states.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/verdict.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/box-verdict-wanderer.json create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/walk.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/run.txt create mode 100644 documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/undo-proof-wanderer.json diff --git a/CONTEXT.md b/CONTEXT.md index 1f1bd71c..ed50099d 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -16,6 +16,21 @@ > and holds nothing of its own; this file does hold its own content, namely the standing rulings below. +> **2026-10-28 (afternoon, attended at the STOPs) — Docker Hub stops refusing the watch; the four big steps.** R-1334: +> measured first — the 429s were the BURST (211 tag-list requests in ~2 min from six workers), not the count; `fe677bae` +> spaces Docker Hub requests (1/s), retries a 429 (Retry-After; NOT CHECKED after the 4th try) and caches tag lists 24 h +> per registry path on the runner (two runners = two caches); `8644450d` retries a registry 429 in the image reader. Dry +> runs 2458/2459: 0 refused — **no Docker Hub login needed** (the operator's key was not asked for). Big steps, each a +> NORMAL ladder step (`09` §3 [DESIGN] of today: no pin move without a step, also when no box runs the app), each with +> bench + box 9202 + the UNDO proven on 9202 (`audits/dockerhub-bigsteps-2026-10-28/undo_proof2.py`, probe on port 1): +> Wanderer v0.21.2 `1825247` (PocketBase internal, no `SUBDOMAIN_DB`, inbound federation off — no +> `POCKETBASE_PROXY_SECRET`; Meilisearch 384M, still `memory_tight` → R-1338; offered again, D59 ended, decision 279); +> Termix 2.8.0 → 2.9.2 `e0b9594` → 26.10.5 `589c957` (two pushes: `check-test-record-move` judges the whole push range +> as ONE move); Homepage v2.7.0 `1a254d4` (fixture reads its first-start config). New tools: `box_walk.py +> --to-definition`, fixtures Wanderer/Homepage/Seerr (Seerr brings a throwaway Jellyfin, `felhom-drill-jellyfin`). +> Termix X-Forwarded-For on 9202: the 6th wrong login is 429 on 2.8.0, 2.9.2 and 26.10.5 from the LAN (traefik +> replaces the header) and through the tunnel's address with Cloudflare's appended real address. + > **2026-10-28 (day, attended at the STOPs) — HTTP2Shell lane batches; the runtime cache fills itself in CI.** **Operator:** > D61 = keep RomM offered (`09` §3 decision 277; the first RomM with Node ≥ 24.22.1 is a lane step). **Decided by CC (the > brief's choice):** zstd in CI by a hash-pinned `zstandard` 0.25.0 wheel, not `zstd` in the runner image (decision 278) — diff --git a/REPORT-dockerhub-bigsteps-2026-10-28.md b/REPORT-dockerhub-bigsteps-2026-10-28.md new file mode 100644 index 00000000..e5ca66bb --- /dev/null +++ b/REPORT-dockerhub-bigsteps-2026-10-28.md @@ -0,0 +1,162 @@ +# REPORT — 2026-10-28 (from midday, attended at the STOPs): the watch and Docker Hub; the four big security updates + +Architecture read: `08-alarm-ladder.md` §11 (the watch); `09-update-architecture.md` §3 (decisions 255, 274, 275) and +§6.4 (the ladder); the catalog's `CLAUDE.md` (the test record) and its move gates. + +## In plain words + +1. **Why Docker Hub refused the watch:** speed, not volume. The night run asked 211 times in about 2 minutes from six + workers and got 15 refusals. Now the requests are spaced, and a refusal is retried. **No Docker Hub login was needed.** +2. **One CI night with 0 refusals:** not yet. Two daytime test runs had 0 refusals. Tonight's 03:40 run is the check + (R-1334 stays open until then). +3. **The four apps — all live, each a normal ladder step** (bench + box + undo proven): + - Wanderer v0.21.2 + - Termix 26.10.5 (two steps: 2.8.0 → 2.9.2 → 26.10.5) + - Homepage v2.7.0 + - Seerr v3.5.1 (a definition step: new image name, new start command) +4. **Wanderer is offered again: yes** (your word; D59 ended). Federation from other servers stays off (your word). +5. **What you do:** nothing today. Tomorrow morning I check that the night run had 0 Docker Hub refusals and then + close R-1334. + +## Decisions (yours, at the STOPs) + +- **Pushed, one STOP each:** Wanderer, Termix, Homepage, Seerr. +- **Wanderer offered again**, and **its inbound federation stays off** (`09` §3 decision 279). +- **The Docker Hub key was not asked for.** The fix without a login measured clean. + +## Part 1 — R-1334 (evidence: `documentation/audits/dockerhub-bigsteps-2026-10-28/part1/`) + +**The cause, measured.** Docker Hub's tag-list API (`hub.docker.com`) refused requests that came in a burst: + +| Run | Requests | Time | Refused | +|---|---|---|---| +| Night 2446 | 211 | ~2 min | 15 | +| Dry 2450 | 224 | ~3.5 min | 0 | + +No scheduled job on DooPlex calls Docker Hub at that hour (k3s cron jobs and CI schedules, read only: Renovate runs +on Saturdays; the others are Longhorn backups and Postgres dumps). Other traffic from the same address was not measured. + +**The fix.** +- `fe677bae`: + - Docker Hub requests are spaced: one per second across the workers. + - A 429 is retried after its `Retry-After`. The image is NOT CHECKED only after the 4th try. + - Tag lists are kept for 24 hours per registry path, on the CI runner. Two names of one image fetch once. + - Test W14: 7 checks, red first. +- `8644450d`: the image reader also retries a registry 429. ghcr.io had refused two blob reads when two dry runs came + 15 minutes apart. Its retry checks were red first. + +**Measured after.** Dry runs 2458 and 2459: +- 0 Docker Hub 429s and 0 retries. 210 requests over about 7 minutes. +- The only NOT CHECKED images are 6 private DooPlex ones (by design) and `minio/minio:latest`, which Docker Hub no + longer serves (noted on R-1328 for the homelab session). +- The two CI runners each keep their own tag cache. So the cache helps a re-run on the same runner. The spacing is + what fixes the night. + +## Part 2 — the four big steps (evidence: `documentation/audits/dockerhub-bigsteps-2026-10-28//`) + +**The path, by the rules.** No box runs any of the four apps (checked on all three boxes and on 9202). There is still +no pin move without a step: the catalog's test record and its move gates require it. `09` did not say so, so it now +has a `[DESIGN]` note. So each app is a normal ladder step. In every case below the undo was proven on 9202: the new +version, with its checks broken on purpose, ended `undone`, and the data read back on the old version. + +### Wanderer v0.20.0 → v0.21.2 — catalog `1825247` + +- **Template, changed at v0.20.0 first:** + - PocketBase is internal (no public address, no database-subdomain question at install). Upstream says the db must + not be reachable from outside. + - The sign-up lock now also covers `PUT /api/v1/user`. v0.20.0 already had that route, and the old lock missed it. + - No `POCKETBASE_PROXY_SECRET`, so inbound federation is rejected. There is no federation switch, and this is the + only way to close it. +- **Fixture:** a user and a private list. +- **Proof:** + - Bench: `proven`. + - Box 9202: update in 78 s. + - Undo: back to v0.20.0 in 28 s. +- **Memory:** Meilisearch fills whatever limit it gets: 256 → 384 MB, still 88.8 %. That is filed as R-1338. + +### Termix 2.8.0 → 2.9.2 → 26.10.5 — catalog `e0b9594`, `589c957` + +- **Two pushes**, because 2.9 must start once before 26.x. +- **Fixture:** the existing one. +- **Proof, per hop:** bench, box and undo all proven. +- **D58, measured on 9202.** Seven wrong logins, each with a different forged `X-Forwarded-For`: + - **From the LAN:** Traefik replaces the header. The 6th try got HTTP 429 on 2.8.0, 2.9.2 and 26.10.5. + - **Through the tunnel's own address** (a test container at cloudflared's address, with the chain Cloudflare + delivers): the 6th try got 429 on all three. + - So the bypass was not reachable on our boxes, before the update either. 26.10.5 adds the app's own guard + (`trust proxy: loopback`). +- **A loopback-only login route in 26.10.5:** off in our image. `NODE_ENV=production`, and nginx sets `X-Real-IP` on + every request. + +### Homepage v1.13.2 → v2.7.0 — catalog `1a254d4` + +- **Fixture:** a new one. It reads the dashboard's own services and bookmarks (written at first start) and plants + nothing. +- **Proof:** bench, box and undo all proven. The family gate still answers 302. + +### Seerr: Jellyseerr 2.7.3 → Seerr v3.5.1 — catalog `9ef06a7` + +- **A definition step:** + - The new image, plus `init: true`. + - The container starts as root only to hand `/app/config` to UID 1000. Then it runs Seerr as `node` (smoke-tested + first). +- **Fixture:** a new one. It brings a throwaway Jellyfin for Seerr's first sign-in and stores an application title. +- **Proof:** + - Bench: `proven`. Its bare abort loses the seed on the converted data, as Jellyfin did yesterday. + - Box 9202: `proven`. + - Undo: Seerr ran its migration, failed its check, and the box's undo copy brought the data back. + +**Tools added in the catalog.** +- `box_walk.py --to-definition`, with 8 checks in `test_box_walk_drill_move.py`. +- The Wanderer, Homepage and Seerr fixtures. +- The bench's Wanderer override was removed, because the template does it now. +- The undo tool: `audits/dockerhub-bigsteps-2026-10-28/undo_proof2.py`. Its broken probe now uses port 1, because a + single-page app answers 200 on any path. + +## Commits and CI (all green by hash) + +| Repo | Commit | What | CI job | +|---|---|---|---| +| felhom.eu | `fe677bae` | Docker Hub spacing, retry, tag cache | gates 2457; dry runs 2458 and 2459 | +| felhom.eu | `8644450d`, `3c0a33c1` | image-reader retry; evidence | 2460 | +| catalog | `1825247` | Wanderer | 2461 | +| catalog | `e0b9594` | Termix hop 1 | 2462 | +| catalog | `589c957` | Termix hop 2 | 2463 | +| catalog | `1a254d4` | Homepage | 2464 | +| catalog | `9ef06a7` | Seerr | 2467 | +| felhom.eu | this close-out | docs, register, evidence | in the final check | + +## Register — 229 before, 226 after + +| Opened (1) | Closed (4) | +|---|---| +| R-1338 — Meilisearch memory | R-1335 — Wanderer | +| | R-1311 — Termix | +| | R-1320 — Homepage | +| | R-1317 — Seerr | + +R-1334 is VERIFY; it closes after tonight. R-1328 has a note added (minio). + +## Observations + +| Observation | Result | +|---|---| +| Meilisearch fills its memory limit | FILED: R-1338 | +| `minio/minio:latest` gives 401 on Docker Hub | FILED: noted on R-1328 (the homelab list) | +| Three security-review notices: „image downgrade" in the drill | NOT-A-FINDING: the drill is the test copy and must stand at FROM before a walk; the live catalog is at the new versions | +| The update accepts a container whose Docker check is still „starting" | NOT-A-FINDING: by design the declared probe decides (`09` §3); the undo tool now breaks the probe on port 1 | +| `test-record-move` judges a whole push as one move, so two hops refused together | NOT-A-FINDING: the rule works as built; Termix went out as two pushes | +| The `memory_tight` mark needs a raised limit and a new measurement | NOT-A-FINDING: the gate did its job; done for Wanderer | +| The Termix header test, first try: no gate cookie, and the shell expanded `$x` too early | NOT-A-FINDING: my test tool; fixed and re-run, and every try is kept | +| The Termix header test with a forged-only chain skipped the limit on every version | NOT-A-FINDING: Cloudflare always appends the real address; with the real chain every version locks | +| Termix 2.9.2's route dropped for a while right after the first install (502, then 404) | NOT-A-FINDING: the test now waits for health; 2.9.2 is only a stop on the way to 26.10.5 | +| Termix 26.10.5's loopback auto-login route | NOT-A-FINDING: off in production, and nginx sets `X-Real-IP` | +| Secret scan of the evidence found `"password": "wrong-"` | NOT-A-FINDING: the deliberately wrong test password, a code literal | + +## Teardown + +- **Machine:** 9202 is on the LIVE catalog (`repoint-9202-live.txt`, cache `9ef06a7`). It runs only its standing apps. + Every test app was removed through the product. The throwaway Jellyfin containers were removed on the bench and + on 9202. +- **Bench:** 9401 is stopped, with 0 containers. +- **Host and hub:** nothing provisioned, no change. diff --git a/STATUS.md b/STATUS.md index abbf41d9..7c91ff2d 100644 --- a/STATUS.md +++ b/STATUS.md @@ -2,7 +2,7 @@ **Ready for Tester 2? Yes — tell the friend go (hand-over list: `documentation/pilot/TESTER2-handover.md`).** -**Updated 2026-10-28 (day).** On your yes, tested security steps are live for 10 apps (Home Assistant, Immich, AdventureLog, Ghost, MeTube, Zipline, Karakeep, Tandoor, Papra, Dawarich); Wanderer is hidden. The nightly watch now reads the runtime inside every image in CI by itself. Tonight demo-hp takes the Home Assistant and AdventureLog steps; no box runs the other eight apps. +**Updated 2026-10-28 (evening).** On your yes, the four big updates are live with their undo tested: Wanderer v0.21.2 (offered again, D59 ended; federation from other servers stays off), Termix 26.10.5 (D58 ended), Homepage v2.7.0 and Seerr v3.5.1. Docker Hub no longer refuses the security watch in test runs, with no login; tonight's run is the check. ## What works - **The Plex attack (10-17 → 10-23) did not reach Felhom's secrets** (R-1241). @@ -23,7 +23,7 @@ - DooPlex: something sets the shared checkout to „bare" (R-935). ## What we work on -- Apps still waiting for the HTTP2Shell fix: 10 — Homepage, Termix, Wanderer and Seerr need a big step; ActualBudget, cal.com, Calibre-Web, Paperless, RomM and SparkyFitness have no fixed release yet. +- Apps still waiting for the HTTP2Shell fix: 6 — ActualBudget, cal.com, Calibre-Web, Paperless, RomM and SparkyFitness have no fixed release yet. - Dated checks, run by CC. 2026-10-30: D35, website and installer to Cloudflare, starts (R-1228, ruled yes). ## Waiting on you — decide diff --git a/documentation/architecture/09-update-architecture.md b/documentation/architecture/09-update-architecture.md index a43287fa..63e803af 100644 --- a/documentation/architecture/09-update-architecture.md +++ b/documentation/architecture/09-update-architecture.md @@ -1153,6 +1153,26 @@ its length, and both fixes cost something the household would notice — operato major gets automated by accident). Why A: the brief („a normal step if it counts as a main version in our ladder rules, else the lane") and the one-comparator rule; the box walk + soak is the guard either way. +### 2026-10-28 (afternoon, attended) — the four big steps; D59 ends; Wanderer's inbound federation stays off + +279. **D59 ends: Wanderer is offered again** after its big step v0.20.0 → v0.21.2 went live (catalog `1825247`), and + **its inbound federation stays OFF** — the template sets no `POCKETBASE_PROXY_SECRET`, so v0.21 rejects every + inbound ActivityPub delivery (fail closed, upstream's docs). Options: off (a family instance takes nothing from + strangers' servers; the route GHSA-fprh abused stays shut) or on (a generated shared secret; other servers deliver + follows, comments, updates). *Operator, 2026-10-28, at the Wanderer STOP; CC's pick both times.* + +**[DESIGN] A pin move needs its step — also when no box runs the app (2026-10-28, stated here because the brief asked +for „the rule for a pin change when no box runs the old version" and this document did not say it).** The rule lives in +the catalog: `app-catalog-felhom.eu/CLAUDE.md` („An `image:` move needs its TEST RECORD") and its gates — +`check-test-record.py` (the newest ladder entry IS the compose) and `check-test-record-move.py` (a moved ref must add a +proven entry). There is no exception for an app no box runs: the writer (`upgrade-test.py --write-ladder`) refuses +unless the bench AND the box walk say `proven`, so every big step is a normal ladder step. A big step's UNDO is proven +on 9202 as well (the 2026-10-27 Jellyfin method, generalised in `audits/dockerhub-bigsteps-2026-10-28/undo_proof2.py`): +TO with failing checks must end `undone` and the seed must read back on FROM. **The broken probe must fail on any app:** +a single-page app answers 200 on every path, so a „no such path" probe passed and Termix's update ended `done`; the +tool now probes port 1. `test-record-move` also refuses a `memory_tight` step whose range does not raise the limit — +Wanderer's Meilisearch went 256 → 384 MB and was measured again (it sizes itself to its limit: 88.8 %). + ### 2026-10-28 (day, attended) — RomM kept; the runtime cache fills itself in CI 277. **D61 = keep RomM offered** (R-1330) while no RomM release carries Node ≥ 24.22.1; the first one that does is taken diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/MV-homepage.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/MV-homepage.log new file mode 100644 index 00000000..f1ec5e17 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/MV-homepage.log @@ -0,0 +1,114 @@ +[13:22:12] scratch drive folders cleared before FROM (R-656): none existed +[13:22:12] MV-homepage: deploying homepage at FROM {'homepage': 'ghcr.io/gethomepage/homepage:v1.13.2'} +[13:23:07] FROM settled=True in 30.9s :: {"homepage": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:23:07] fixture: the BOX walk's own (Homepage), through upgrade_boxport +[13:23:07] homepage: first-start config read: services=['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'] bookmarks=['Developer', 'Developer/Github', 'Entertainment', 'Entertainment/YouTube', 'Social', 'Social/Reddit'] +[13:23:07] homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +[13:23:07] C1 (seed reads back BEFORE): True +[13:23:07] MV-homepage: swapping to TO {'homepage': 'ghcr.io/gethomepage/homepage:v2.7.0'} +[13:23:25] TO up -d rc=0 +[13:23:56] TO settled=True in 30.9s :: {"homepage": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:23:56] migration lines observed: 0 +[13:23:56] homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +[13:23:56] RESULT (seed reads back AFTER): True +[13:23:57] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[13:24:12] + 15s homepage=154M/256M peak=171M kills=0 rs=0 reqs=280 +[13:24:27] + 30s homepage=156M/256M peak=199M kills=0 rs=0 reqs=562 +[13:24:42] + 45s homepage=155M/256M peak=199M kills=0 rs=0 reqs=844 +[13:24:57] + 60s homepage=162M/256M peak=199M kills=0 rs=0 reqs=1127 +[13:25:12] + 76s homepage=160M/256M peak=199M kills=0 rs=0 reqs=1409 +[13:25:27] + 91s homepage=160M/256M peak=199M kills=0 rs=0 reqs=1692 +[13:25:43] + 106s homepage=161M/256M peak=199M kills=0 rs=0 reqs=1972 +[13:25:58] + 121s homepage=161M/256M peak=199M kills=0 rs=0 reqs=2256 +[13:26:13] + 136s homepage=160M/256M peak=199M kills=0 rs=0 reqs=2539 +[13:26:28] + 151s homepage=162M/256M peak=199M kills=0 rs=0 reqs=2822 +[13:26:43] + 166s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3102 +[13:26:58] + 182s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3386 +[13:27:13] + 197s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3670 +[13:27:28] + 212s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3954 +[13:27:44] + 227s homepage=161M/256M peak=199M kills=0 rs=0 reqs=4235 +[13:27:59] + 242s homepage=162M/256M peak=199M kills=0 rs=0 reqs=4519 +[13:28:14] + 257s homepage=162M/256M peak=199M kills=0 rs=0 reqs=4802 +[13:28:29] + 272s homepage=162M/256M peak=199M kills=0 rs=0 reqs=5085 +[13:28:44] + 288s homepage=163M/256M peak=199M kills=0 rs=0 reqs=5366 +[13:28:59] + 303s homepage=163M/256M peak=199M kills=0 rs=0 reqs=5651 +[13:29:14] + 318s homepage=163M/256M peak=199M kills=0 rs=0 reqs=5932 +[13:29:30] + 333s homepage=162M/256M peak=199M kills=0 rs=0 reqs=6216 +[13:29:45] + 348s homepage=162M/256M peak=199M kills=0 rs=0 reqs=6498 +[13:30:00] + 363s homepage=163M/256M peak=199M kills=0 rs=0 reqs=6782 +[13:30:15] + 378s homepage=162M/256M peak=199M kills=0 rs=0 reqs=7064 +[13:30:30] + 393s homepage=164M/256M peak=199M kills=0 rs=0 reqs=7348 +[13:30:45] + 408s homepage=163M/256M peak=199M kills=0 rs=0 reqs=7633 +[13:31:00] + 424s homepage=163M/256M peak=199M kills=0 rs=0 reqs=7917 +[13:31:15] + 439s homepage=163M/256M peak=199M kills=0 rs=0 reqs=8202 +[13:31:31] + 454s homepage=163M/256M peak=199M kills=0 rs=0 reqs=8486 +[13:31:46] + 469s homepage=163M/256M peak=199M kills=0 rs=0 reqs=8769 +[13:32:01] + 484s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9054 +[13:32:16] + 499s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9339 +[13:32:31] + 514s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9623 +[13:32:46] + 530s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9907 +[13:33:01] + 545s homepage=162M/256M peak=199M kills=0 rs=0 reqs=10191 +[13:33:17] + 560s homepage=163M/256M peak=199M kills=0 rs=0 reqs=10475 +[13:33:32] + 575s homepage=165M/256M peak=199M kills=0 rs=0 reqs=10759 +[13:33:47] + 590s homepage=163M/256M peak=199M kills=0 rs=0 reqs=11044 +[13:34:02] + 605s homepage=163M/256M peak=199M kills=0 rs=0 reqs=11328 +[13:34:02] memory watch: killed=False tight=[] requests=11329 codes={'200': 11329} +[13:34:02] MV-homepage: ABORT — putting the FROM images back +[13:34:34] homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +[13:34:34] ABORT: app came back in 30.9s; data present=True +{ + "harness_version": 5, + "edge": "MV-homepage", + "app": "homepage", + "note": "night 2026-09-23 within-a-major move: homepage=ghcr.io/gethomepage/homepage:v2.7.0", + "from": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "to": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.6, + "requested_s": 600, + "requests": 11329, + "codes": { + "200": 11329 + }, + "first_kill": null, + "containers": { + "homepage": { + "limit": 268435456, + "peak": 208699392, + "peak_pct": 0.777, + "anon_peak_sampled": 161771520, + "anon_peak_pct": 0.603, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 30.9, + "measured_at": "2026-10-28T13:34:34Z", + "evidence": "evidence/MV-homepage", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 741.8 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/abort-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/abort-states.json new file mode 100644 index 00000000..a7a4679b --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/abort-states.json @@ -0,0 +1,8 @@ +{ + "homepage": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/compose-final.log new file mode 100644 index 00000000..5e9bf4c6 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/compose-final.log @@ -0,0 +1,7 @@ +homepage | Skipping ownership changes for /app/config +homepage | Skipping ownership changes for /app/config/logs +homepage | /app/.next already owned by correct UID/GID or running as root, skipping chown +homepage | ▲ Next.js 16.2.6 +homepage | - Local: http://[::1]:3000 +homepage | - Network: http://[::]:3000 +homepage | ✓ Ready in 0ms diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/engine-state.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/memory-samples.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/memory-samples.json new file mode 100644 index 00000000..e6c192d4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/memory-samples.json @@ -0,0 +1,762 @@ +[ + { + "t": 15.1, + "containers": { + "homepage": { + "limit": 268435456, + "current": 161652736, + "peak": 179814400, + "anon": 150859776, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 280 + }, + { + "t": 30.3, + "containers": { + "homepage": { + "limit": 268435456, + "current": 163991552, + "peak": 208699392, + "anon": 152416256, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 562 + }, + { + "t": 45.4, + "containers": { + "homepage": { + "limit": 268435456, + "current": 163385344, + "peak": 208699392, + "anon": 152231936, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 844 + }, + { + "t": 60.5, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169988096, + "peak": 208699392, + "anon": 158003200, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1127 + }, + { + "t": 75.6, + "containers": { + "homepage": { + "limit": 268435456, + "current": 168656896, + "peak": 208699392, + "anon": 157360128, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1409 + }, + { + "t": 90.8, + "containers": { + "homepage": { + "limit": 268435456, + "current": 168165376, + "peak": 208699392, + "anon": 156856320, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1692 + }, + { + "t": 105.9, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169406464, + "peak": 208699392, + "anon": 158060544, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1972 + }, + { + "t": 121.0, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169168896, + "peak": 208699392, + "anon": 157667328, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2256 + }, + { + "t": 136.2, + "containers": { + "homepage": { + "limit": 268435456, + "current": 168607744, + "peak": 208699392, + "anon": 157224960, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2539 + }, + { + "t": 151.3, + "containers": { + "homepage": { + "limit": 268435456, + "current": 170373120, + "peak": 208699392, + "anon": 158826496, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2822 + }, + { + "t": 166.4, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169033728, + "peak": 208699392, + "anon": 157913088, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3102 + }, + { + "t": 181.6, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169242624, + "peak": 208699392, + "anon": 157732864, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3386 + }, + { + "t": 196.7, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169426944, + "peak": 208699392, + "anon": 157798400, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3670 + }, + { + "t": 211.8, + "containers": { + "homepage": { + "limit": 268435456, + "current": 168857600, + "peak": 208699392, + "anon": 157683712, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3954 + }, + { + "t": 227.0, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169488384, + "peak": 208699392, + "anon": 157790208, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4235 + }, + { + "t": 242.1, + "containers": { + "homepage": { + "limit": 268435456, + "current": 170385408, + "peak": 208699392, + "anon": 158494720, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4519 + }, + { + "t": 257.2, + "containers": { + "homepage": { + "limit": 268435456, + "current": 169967616, + "peak": 208699392, + "anon": 158564352, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4802 + }, + { + "t": 272.4, + "containers": { + "homepage": { + "limit": 268435456, + "current": 170127360, + "peak": 208699392, + "anon": 159055872, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5085 + }, + { + "t": 287.5, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171749376, + "peak": 208699392, + "anon": 160464896, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5366 + }, + { + "t": 302.6, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171405312, + "peak": 208699392, + "anon": 159744000, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5651 + }, + { + "t": 317.7, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171618304, + "peak": 208699392, + "anon": 160129024, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5932 + }, + { + "t": 332.9, + "containers": { + "homepage": { + "limit": 268435456, + "current": 170696704, + "peak": 208699392, + "anon": 159551488, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6216 + }, + { + "t": 348.0, + "containers": { + "homepage": { + "limit": 268435456, + "current": 170672128, + "peak": 208699392, + "anon": 159531008, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6498 + }, + { + "t": 363.1, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171352064, + "peak": 208699392, + "anon": 160030720, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6782 + }, + { + "t": 378.3, + "containers": { + "homepage": { + "limit": 268435456, + "current": 170725376, + "peak": 208699392, + "anon": 159576064, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7064 + }, + { + "t": 393.4, + "containers": { + "homepage": { + "limit": 268435456, + "current": 172216320, + "peak": 208699392, + "anon": 160309248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7348 + }, + { + "t": 408.5, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171229184, + "peak": 208699392, + "anon": 159686656, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7633 + }, + { + "t": 423.7, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171028480, + "peak": 208699392, + "anon": 159797248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7917 + }, + { + "t": 438.8, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171425792, + "peak": 208699392, + "anon": 159899648, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8202 + }, + { + "t": 454.0, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171757568, + "peak": 208699392, + "anon": 159948800, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8486 + }, + { + "t": 469.1, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171950080, + "peak": 208699392, + "anon": 160251904, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8769 + }, + { + "t": 484.2, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171294720, + "peak": 208699392, + "anon": 160100352, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9054 + }, + { + "t": 499.4, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171728896, + "peak": 208699392, + "anon": 159932416, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9339 + }, + { + "t": 514.5, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171315200, + "peak": 208699392, + "anon": 160292864, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9623 + }, + { + "t": 529.7, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171278336, + "peak": 208699392, + "anon": 160030720, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9907 + }, + { + "t": 544.8, + "containers": { + "homepage": { + "limit": 268435456, + "current": 170803200, + "peak": 208699392, + "anon": 159604736, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10191 + }, + { + "t": 559.9, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171347968, + "peak": 208699392, + "anon": 159899648, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10475 + }, + { + "t": 575.0, + "containers": { + "homepage": { + "limit": 268435456, + "current": 173502464, + "peak": 208699392, + "anon": 161771520, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10759 + }, + { + "t": 590.2, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171962368, + "peak": 208699392, + "anon": 160731136, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11044 + }, + { + "t": 605.3, + "containers": { + "homepage": { + "limit": 268435456, + "current": 171524096, + "peak": 208699392, + "anon": 160374784, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11328 + } +] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/migration-lines.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/run.log new file mode 100644 index 00000000..16957757 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/run.log @@ -0,0 +1,58 @@ +[13:22:12] scratch drive folders cleared before FROM (R-656): none existed +[13:22:12] MV-homepage: deploying homepage at FROM {'homepage': 'ghcr.io/gethomepage/homepage:v1.13.2'} +[13:23:07] FROM settled=True in 30.9s :: {"homepage": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:23:07] fixture: the BOX walk's own (Homepage), through upgrade_boxport +[13:23:07] homepage: first-start config read: services=['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'] bookmarks=['Developer', 'Developer/Github', 'Entertainment', 'Entertainment/YouTube', 'Social', 'Social/Reddit'] +[13:23:07] homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +[13:23:07] C1 (seed reads back BEFORE): True +[13:23:07] MV-homepage: swapping to TO {'homepage': 'ghcr.io/gethomepage/homepage:v2.7.0'} +[13:23:25] TO up -d rc=0 +[13:23:56] TO settled=True in 30.9s :: {"homepage": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:23:56] migration lines observed: 0 +[13:23:56] homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +[13:23:56] RESULT (seed reads back AFTER): True +[13:23:57] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[13:24:12] + 15s homepage=154M/256M peak=171M kills=0 rs=0 reqs=280 +[13:24:27] + 30s homepage=156M/256M peak=199M kills=0 rs=0 reqs=562 +[13:24:42] + 45s homepage=155M/256M peak=199M kills=0 rs=0 reqs=844 +[13:24:57] + 60s homepage=162M/256M peak=199M kills=0 rs=0 reqs=1127 +[13:25:12] + 76s homepage=160M/256M peak=199M kills=0 rs=0 reqs=1409 +[13:25:27] + 91s homepage=160M/256M peak=199M kills=0 rs=0 reqs=1692 +[13:25:43] + 106s homepage=161M/256M peak=199M kills=0 rs=0 reqs=1972 +[13:25:58] + 121s homepage=161M/256M peak=199M kills=0 rs=0 reqs=2256 +[13:26:13] + 136s homepage=160M/256M peak=199M kills=0 rs=0 reqs=2539 +[13:26:28] + 151s homepage=162M/256M peak=199M kills=0 rs=0 reqs=2822 +[13:26:43] + 166s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3102 +[13:26:58] + 182s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3386 +[13:27:13] + 197s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3670 +[13:27:28] + 212s homepage=161M/256M peak=199M kills=0 rs=0 reqs=3954 +[13:27:44] + 227s homepage=161M/256M peak=199M kills=0 rs=0 reqs=4235 +[13:27:59] + 242s homepage=162M/256M peak=199M kills=0 rs=0 reqs=4519 +[13:28:14] + 257s homepage=162M/256M peak=199M kills=0 rs=0 reqs=4802 +[13:28:29] + 272s homepage=162M/256M peak=199M kills=0 rs=0 reqs=5085 +[13:28:44] + 288s homepage=163M/256M peak=199M kills=0 rs=0 reqs=5366 +[13:28:59] + 303s homepage=163M/256M peak=199M kills=0 rs=0 reqs=5651 +[13:29:14] + 318s homepage=163M/256M peak=199M kills=0 rs=0 reqs=5932 +[13:29:30] + 333s homepage=162M/256M peak=199M kills=0 rs=0 reqs=6216 +[13:29:45] + 348s homepage=162M/256M peak=199M kills=0 rs=0 reqs=6498 +[13:30:00] + 363s homepage=163M/256M peak=199M kills=0 rs=0 reqs=6782 +[13:30:15] + 378s homepage=162M/256M peak=199M kills=0 rs=0 reqs=7064 +[13:30:30] + 393s homepage=164M/256M peak=199M kills=0 rs=0 reqs=7348 +[13:30:45] + 408s homepage=163M/256M peak=199M kills=0 rs=0 reqs=7633 +[13:31:00] + 424s homepage=163M/256M peak=199M kills=0 rs=0 reqs=7917 +[13:31:15] + 439s homepage=163M/256M peak=199M kills=0 rs=0 reqs=8202 +[13:31:31] + 454s homepage=163M/256M peak=199M kills=0 rs=0 reqs=8486 +[13:31:46] + 469s homepage=163M/256M peak=199M kills=0 rs=0 reqs=8769 +[13:32:01] + 484s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9054 +[13:32:16] + 499s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9339 +[13:32:31] + 514s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9623 +[13:32:46] + 530s homepage=163M/256M peak=199M kills=0 rs=0 reqs=9907 +[13:33:01] + 545s homepage=162M/256M peak=199M kills=0 rs=0 reqs=10191 +[13:33:17] + 560s homepage=163M/256M peak=199M kills=0 rs=0 reqs=10475 +[13:33:32] + 575s homepage=165M/256M peak=199M kills=0 rs=0 reqs=10759 +[13:33:47] + 590s homepage=163M/256M peak=199M kills=0 rs=0 reqs=11044 +[13:34:02] + 605s homepage=163M/256M peak=199M kills=0 rs=0 reqs=11328 +[13:34:02] memory watch: killed=False tight=[] requests=11329 codes={'200': 11329} +[13:34:02] MV-homepage: ABORT — putting the FROM images back +[13:34:34] homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +[13:34:34] ABORT: app came back in 30.9s; data present=True \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-full.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-full.log new file mode 100644 index 00000000..099eb818 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-full.log @@ -0,0 +1,9 @@ +homepage | Skipping ownership changes for /app/config +homepage | Skipping ownership changes for /app/config/logs +homepage | /app/.next already owned by correct UID/GID or running as root, skipping chown +homepage | ▲ Next.js 16.4.1 +homepage | - Local: http://[::1]:3000 +homepage | - Network: http://[::]:3000 +homepage | ✓ Ready in 0ms +homepage | ✓ Running next.config took 2ms +homepage | [2026-10-28T13:23:55.893Z] info: widgets.yaml was copied to the config folder diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-states.json new file mode 100644 index 00000000..a7a4679b --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/to-states.json @@ -0,0 +1,8 @@ +{ + "homepage": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/verdict.json new file mode 100644 index 00000000..b42f5e5e --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/bench/evidence/MV-homepage/verdict.json @@ -0,0 +1,56 @@ +{ + "harness_version": 5, + "edge": "MV-homepage", + "app": "homepage", + "note": "night 2026-09-23 within-a-major move: homepage=ghcr.io/gethomepage/homepage:v2.7.0", + "from": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "to": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.6, + "requested_s": 600, + "requests": 11329, + "codes": { + "200": 11329 + }, + "first_kill": null, + "containers": { + "homepage": { + "limit": 268435456, + "peak": 208699392, + "peak_pct": 0.777, + "anon_peak_sampled": 161771520, + "anon_peak_pct": 0.603, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 30.9, + "measured_at": "2026-10-28T13:34:34Z", + "evidence": "evidence/MV-homepage", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 741.8 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/box-verdict-homepage.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/box-verdict-homepage.json new file mode 100644 index 00000000..e91295a7 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/box-verdict-homepage.json @@ -0,0 +1,231 @@ +{ + "app": "homepage", + "walk": "security", + "box_walk_version": 1, + "verdict": "proven", + "venue": "box 9202 (drill catalog), the guarded Update", + "from": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "to": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "observables_before": { + "pinned_images": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "installed_images": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "catalog_images": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "live_compose_image_lines": [ + "image: ghcr.io/gethomepage/homepage:v1.13.2" + ], + "docker_inspect": [ + "homepage ghcr.io/gethomepage/homepage:v1.13.2 running=true restarts=0" + ] + }, + "setup_gate_before": { + "browser": { + "status": "302", + "redirect": "https://felhom.enkisfelhom.hu/__family/start?…" + }, + "script": { + "status": "401", + "redirect": null + } + }, + "seed": "read_back", + "drill_commit": "05ffd16393f5", + "sync_waited_s": 4.5, + "badge_before": { + "hu": [ + { + "title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.", + "text": "Frissítés elérhető — ma" + } + ], + "en": [ + { + "title": "A newer version of this app is available. Select the Update button to start it.", + "text": "Update available — today" + } + ] + }, + "measured_at": "2026-10-28T14:06:00Z", + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztonsági mentés készül a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 2.1, + "phase": "safety-dump", + "label": "Adatbázis pillanatkép…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 3.1, + "phase": "pulling", + "label": "Új verzió letöltése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 15.4, + "phase": "copying", + "label": "Az adatok másolása a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 21.5, + "phase": "starting", + "label": "Indítás az új verzióval…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 22.6, + "phase": "verifying", + "label": "Működés ellenőrzése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 32.8, + "phase": "done", + "label": "Frissítve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 32.8, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "observables_after": { + "pinned_images": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "installed_images": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "catalog_images": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "live_compose_image_lines": [ + "image: ghcr.io/gethomepage/homepage:v2.7.0" + ], + "docker_inspect": [ + "homepage ghcr.io/gethomepage/homepage:v2.7.0 running=true restarts=0" + ] + }, + "badge_after": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "state_after": "running", + "hold_after": null, + "to_digests": { + "homepage": "sha256:19c5c09184458a41b7b5915e71463a39f36cd33540f41bdbed008791b8182d5f" + }, + "four_observables": { + "pinned": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "installed": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "catalog": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "live_compose": [ + "ghcr.io/gethomepage/homepage:v2.7.0" + ] + }, + "seed_read_after": true, + "setup_gate_after": { + "browser": { + "status": "302", + "redirect": "https://felhom.enkisfelhom.hu/__family/start?…" + }, + "script": { + "status": "401", + "redirect": null + } + }, + "memory": { + "soak_s": 600, + "interval_s": 10, + "samples": 60, + "containers": { + "homepage": { + "samples": 60, + "anon_peak_bytes": 113119232, + "limit_bytes": 268435456, + "anon_peak_pct": 42.1, + "cgroup_peak_pct": 47.1, + "oom_kill_delta": 0, + "oom_killed_flag": false, + "restarts_delta": 0, + "running_all_samples": true, + "cgroup": "/sys/fs/cgroup/system.slice/docker-08d02265b7bf6977d598cb090c27333644e839e6f3afc81cf33231564b86826d.scope" + } + }, + "oom_kills": 0, + "restarts": 0, + "peak_pct": 42.1 + }, + "why": "the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back", + "log": [ + "15:05:02 [5] the box's drill mirror now at 4834d9dce", + "15:05:06 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}", + "15:05:41 [1] deployed, controller state=running, pinned={'homepage': 'ghcr.io/gethomepage/homepage:v1.13.2'}", + "15:05:42 family gate: home is family-gated — passed as the household (cookie set)", + "15:05:45 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__family/start?…'}, 'script': {'status': '401', 'redirect': None}}", + "15:05:45 homepage: first-start config read: services=['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'] bookmarks=['Developer', 'Developer/Github', 'Entertainment', 'Entertainment/YouTube', 'Social', 'Social/Reddit']", + "15:05:45 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'])", + "15:05:46 [5] drill commit 05ffd16393f5: homepage ghcr.io/gethomepage/homepage:v1.13.2 -> ghcr.io/gethomepage/homepage:v2.7.0 (push rc=0)", + "15:05:55 [5] the box's drill mirror now at 05ffd1639", + "15:06:00 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "15:06:00 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None", + "15:06:02 + 2.1s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None", + "15:06:03 + 3.1s phase=pulling label=Új verzió letöltése… err=None hold=None", + "15:06:15 + 15.4s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None", + "15:06:21 + 21.5s phase=starting label=Indítás az új verzióval… err=None hold=None", + "15:06:22 + 22.6s phase=verifying label=Működés ellenőrzése… err=None hold=None", + "15:06:33 + 32.8s phase=done label=Frissítve err=None hold=None", + "15:06:51 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'])", + "15:06:51 [7] memory soak 600 s …", + "15:16:57 [7] soak: peak 42.1% of the limit (anon), kills 0, restarts 0" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/walk.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/walk.txt new file mode 100644 index 00000000..8ff87333 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/box/walk.txt @@ -0,0 +1,25 @@ +15:05:02 [5] the box's drill mirror now at 4834d9dce +15:05:06 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +15:05:41 [1] deployed, controller state=running, pinned={'homepage': 'ghcr.io/gethomepage/homepage:v1.13.2'} +15:05:42 family gate: home is family-gated — passed as the household (cookie set) +15:05:45 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__family/start?…'}, 'script': {'status': '401', 'redirect': None}} +15:05:45 homepage: first-start config read: services=['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'] bookmarks=['Developer', 'Developer/Github', 'Entertainment', 'Entertainment/YouTube', 'Social', 'Social/Reddit'] +15:05:45 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +15:05:46 [5] drill commit 05ffd16393f5: homepage ghcr.io/gethomepage/homepage:v1.13.2 -> ghcr.io/gethomepage/homepage:v2.7.0 (push rc=0) +15:05:55 [5] the box's drill mirror now at 05ffd1639 +15:06:00 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +15:06:00 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +15:06:02 + 2.1s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +15:06:03 + 3.1s phase=pulling label=Új verzió letöltése… err=None hold=None +15:06:15 + 15.4s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +15:06:21 + 21.5s phase=starting label=Indítás az új verzióval… err=None hold=None +15:06:22 + 22.6s phase=verifying label=Működés ellenőrzése… err=None hold=None +15:06:33 + 32.8s phase=done label=Frissítve err=None hold=None +15:06:51 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +15:06:51 [7] memory soak 600 s … +15:16:57 [7] soak: peak 42.1% of the limit (anon), kills 0, restarts 0 +15:16:57 [9] verdict proven -> /tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/p2/box/homepage/verdict.json +15:16:57 RESULT proven — the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back +15:16:57 [X] stop -> 200 {'ok': True, 'message': 'Stack homepage stop completed'} +15:17:29 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'homepage', 'volumes_removed': ['homepage_homepage_config'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'A +15:17:38 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/run.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/run.txt new file mode 100644 index 00000000..49b329d9 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/run.txt @@ -0,0 +1,24 @@ +16:06:23 [5] the box's drill mirror now at c1b7f241d +16:06:28 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +16:06:58 [1] deployed, controller state=running, pinned={'homepage': 'ghcr.io/gethomepage/homepage:v1.13.2'} +16:06:58 family gate: home is family-gated — passed as the household (cookie set) +16:06:58 homepage: first-start config read: services=['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'] bookmarks=['Developer', 'Developer/Github', 'Entertainment', 'Entertainment/YouTube', 'Social', 'Social/Reddit'] +16:06:58 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +16:06:59 drill commit c6c4b528c5ab: homepage TO with failing checks +16:07:08 [5] the box's drill mirror now at c6c4b528c +16:07:13 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +16:07:13 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +16:07:16 + 3.1s phase=pulling label=Új verzió letöltése… err=None hold=None +16:07:36 + 22.6s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +16:07:43 + 29.8s phase=starting label=Indítás az új verzióval… err=None hold=None +16:07:44 + 30.8s phase=verifying label=Működés ellenőrzése… err=None hold=None +16:12:46 + 333.1s phase=undoing label=Visszaállítás az előző változatra… err=None hold=None +16:12:59 + 345.5s phase=undone label=Visszaállítva az előző változatra err=None hold=None +16:13:28 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service']) +16:13:28 RESULT proven — TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back +16:13:29 [X] stop -> 200 {'ok': True, 'message': 'Stack homepage stop completed'} +16:14:01 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'homepage', 'volumes_removed': ['homepage_homepage_config'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'A +16:14:09 [X] after remove: deployed=False leftovers='' +16:14:19 [5] the box's drill mirror now at f574f6fef +16:14:19 drill revert c6c4b528c5ab: rc=0 +16:14:19 drill templates/homepage equal to before: True diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/undo-proof-homepage.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/undo-proof-homepage.json new file mode 100644 index 00000000..067009ab --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/homepage/undo/undo-proof-homepage.json @@ -0,0 +1,144 @@ +{ + "app": "homepage", + "from": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "to": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "started": "2026-10-28T15:06:14Z", + "drill_head_before": "c1b7f241da1dfef40579011f9d032dcafbbf29c4", + "failing_compose_main_healthcheck": [ + "test: [\"CMD\", \"false\"]" + ], + "failing_probe": true, + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 3.1, + "phase": "pulling", + "label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 22.6, + "phase": "copying", + "label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 29.8, + "phase": "starting", + "label": "Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 30.8, + "phase": "verifying", + "label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 333.1, + "phase": "undoing", + "label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 345.5, + "phase": "undone", + "label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 345.5, + "final_phase": "undone", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "to_log_while_verifying": [ + "ghcr.io/gethomepage/homepage:v2.7.0", + "Skipping ownership changes for /app/config", + "Skipping ownership changes for /app/config/logs", + "/app/.next already owned by correct UID/GID or running as root, skipping chown", + "\u25b2 Next.js 16.4.1", + "- Local: http://[::1]:3000", + "- Network: http://[::]:3000", + "\u2713 Ready in 0ms", + "\u2713 Running next.config took 3ms" + ], + "observables_after": { + "pinned_images": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "installed_images": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "catalog_images": { + "homepage": "ghcr.io/gethomepage/homepage:v2.7.0" + }, + "live_compose_image_lines": [ + "image: ghcr.io/gethomepage/homepage:v1.13.2" + ], + "docker_inspect": [ + "homepage ghcr.io/gethomepage/homepage:v1.13.2 running=true restarts=0" + ] + }, + "running_images_after": { + "homepage": "ghcr.io/gethomepage/homepage:v1.13.2" + }, + "seed_after_undo": true, + "verdict": "proven", + "why": "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "drill_head_after": "f574f6fef47182eaa13b330a2b69c7ad8dfdfa18", + "drill_tree_equal_to_before": true, + "log": [ + "16:06:23 [5] the box's drill mirror now at c1b7f241d", + "16:06:28 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "16:06:58 [1] deployed, controller state=running, pinned={'homepage': 'ghcr.io/gethomepage/homepage:v1.13.2'}", + "16:06:58 family gate: home is family-gated \u2014 passed as the household (cookie set)", + "16:06:58 homepage: first-start config read: services=['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'] bookmarks=['Developer', 'Developer/Github', 'Entertainment', 'Entertainment/YouTube', 'Social', 'Social/Reddit']", + "16:06:58 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'])", + "16:06:59 drill commit c6c4b528c5ab: homepage TO with failing checks", + "16:07:08 [5] the box's drill mirror now at c6c4b528c", + "16:07:13 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "16:07:13 + 0.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "16:07:16 + 3.1s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None", + "16:07:36 + 22.6s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "16:07:43 + 29.8s phase=starting label=Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026 err=None hold=None", + "16:07:44 + 30.8s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None", + "16:12:46 + 333.1s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None", + "16:12:59 + 345.5s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None", + "16:13:28 homepage: the same services and bookmarks after: True (['My First Group', 'My First Group/My First Service', 'My Second Group', 'My Second Group/My Second Service', 'My Third Group', 'My Third Group/My Third Service'])", + "16:13:28 RESULT proven \u2014 TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "16:13:29 [X] stop -> 200 {'ok': True, 'message': 'Stack homepage stop completed'}", + "16:14:01 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'homepage', 'volumes_removed': ['homepage_homepage_config'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'A", + "16:14:09 [X] after remove: deployed=False leftovers=''", + "16:14:19 [5] the box's drill mirror now at f574f6fef", + "16:14:19 drill revert c6c4b528c5ab: rc=0", + "16:14:19 drill templates/homepage equal to before: True" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/repoint-9202-live.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/repoint-9202-live.txt new file mode 100644 index 00000000..53afc376 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/repoint-9202-live.txt @@ -0,0 +1,16 @@ +RESTORED-IDENTICAL +26: repo_url: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git + +2026/10/28 17:21:37 sync.go:535: [INFO] [sync] Updated wanderer/.felhom.yml +2026/10/28 17:21:37 sync.go:535: [INFO] [sync] Updated zipline/docker-compose.yml +2026/10/28 17:21:37 sync.go:535: [INFO] [sync] Updated zipline/.felhom.yml +2026/10/28 17:21:37 sync.go:261: [INFO] [sync] catalog moved dff3cb84fcea -> 9ef06a7a891f (0 new, 14 stack dir(s) changed) +2026/10/28 17:21:38 sync.go:299: [INFO] [sync] Catalog sync complete +2026/10/28 17:21:38 sync.go:142: [INFO] [sync] Initial sync: Sablonok frissítve — frissítve: adventurelog, dawarich, ghost, home-assistant, homepage, immich, karakeep, metube, papra, seerr, tandoo + +26: repo_url: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git +-rw------- 1 root root 1994 Oct 22 14:47 /var/lib/docker/volumes/felhom-controller-data/_data/controller.yaml.pre-release1026-drill +mirror main dff3cb84fc +cache HEAD 9ef06a7 +https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git + diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/MV-seerr.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/MV-seerr.log new file mode 100644 index 00000000..a4f23144 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/MV-seerr.log @@ -0,0 +1,35 @@ +[15:23:46] scratch drive folders cleared before FROM (R-656): none existed +[15:23:46] MV-seerr: deploying seerr at FROM {'seerr': 'fallenbagel/jellyseerr:2.7.3'} +[15:24:17] FROM settled=True in 30.9s :: {"seerr": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:24:17] fixture: the BOX walk's own (Seerr), through upgrade_boxport +[15:24:22] seerr: throwaway Jellyfin on traefik-public: user=503 complete=503 +[15:24:22] seerr: first sign-in through Jellyfin http=500 cookie=False +[15:24:22] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. +{ + "harness_version": 5, + "edge": "MV-seerr", + "app": "seerr", + "note": "definition step to seerr-v3", + "from": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "to": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route", + "engine_state_after": null, + "memory": null, + "marks": [], + "bench_overrides": null, + "duration_s": 35.8, + "measured_at": "2026-10-28T15:24:22Z", + "evidence": "evidence/MV-seerr", + "scratch_cleared": [], + "total_s": 35.8 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/compose-final.log new file mode 100644 index 00000000..3a426008 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/compose-final.log @@ -0,0 +1,24 @@ +seerr | +seerr | > jellyseerr@2.7.3 start /app +seerr | > NODE_ENV=production node dist/index.js +seerr | +seerr | 2026-10-28T15:23:50.009Z [info]: Commit Tag: $GIT_SHA +seerr | 2026-10-28T15:23:50.602Z [info]: Starting Jellyseerr version 2.7.3 +seerr | 2026-10-28T15:23:51.718Z [info][Notifications]: Registered notification agents +seerr | 2026-10-28T15:23:51.725Z [info][Server]: Skipping starting the scheduled jobs as we have no Plex/Jellyfin/Emby servers setup yet +seerr | 2026-10-28T15:23:51.731Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":1,"enabled":true,"isBuiltIn":true,"order":0}} +seerr | 2026-10-28T15:23:51.752Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":2,"enabled":true,"isBuiltIn":true,"order":1}} +seerr | 2026-10-28T15:23:51.759Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":3,"enabled":true,"isBuiltIn":true,"order":2}} +seerr | 2026-10-28T15:23:51.766Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":4,"enabled":true,"isBuiltIn":true,"order":3}} +seerr | 2026-10-28T15:23:51.773Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":5,"enabled":true,"isBuiltIn":true,"order":4}} +seerr | 2026-10-28T15:23:51.784Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":6,"enabled":true,"isBuiltIn":true,"order":5}} +seerr | 2026-10-28T15:23:51.790Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":7,"enabled":true,"isBuiltIn":true,"order":6}} +seerr | 2026-10-28T15:23:51.796Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":8,"enabled":true,"isBuiltIn":true,"order":7}} +seerr | 2026-10-28T15:23:51.803Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":9,"enabled":true,"isBuiltIn":true,"order":8}} +seerr | 2026-10-28T15:23:51.810Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":10,"enabled":true,"isBuiltIn":true,"order":9}} +seerr | 2026-10-28T15:23:51.816Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":11,"enabled":true,"isBuiltIn":true,"order":10}} +seerr | 2026-10-28T15:23:51.822Z [info][Discover Slider]: Creating built-in discovery slider {"slider":{"type":12,"enabled":true,"isBuiltIn":true,"order":11}} +seerr | 2026-10-28T15:23:52.024Z [info][Server]: Server ready on port 5055 +seerr | 2026-10-28T15:24:22.415Z [debug][Jellyfin API]: Failed to authenticate with headers {"error":"Service Unavailable","ip":"172.18.0.1"} +seerr | 2026-10-28T15:24:22.424Z [error][Jellyfin API]: Something went wrong while authenticating with the Jellyfin server: Request failed with status code 503 {"error":503,"ip":"172.18.0.1"} +seerr | 2026-10-28T15:24:22.424Z [error][Auth]: diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/run.log new file mode 100644 index 00000000..a5ebc9b8 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/run.log @@ -0,0 +1,7 @@ +[15:23:46] scratch drive folders cleared before FROM (R-656): none existed +[15:23:46] MV-seerr: deploying seerr at FROM {'seerr': 'fallenbagel/jellyseerr:2.7.3'} +[15:24:17] FROM settled=True in 30.9s :: {"seerr": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:24:17] fixture: the BOX walk's own (Seerr), through upgrade_boxport +[15:24:22] seerr: throwaway Jellyfin on traefik-public: user=503 complete=503 +[15:24:22] seerr: first sign-in through Jellyfin http=500 cookie=False +[15:24:22] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/verdict.json new file mode 100644 index 00000000..ff97d679 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench-try1-jellyfin-503/evidence/MV-seerr/verdict.json @@ -0,0 +1,28 @@ +{ + "harness_version": 5, + "edge": "MV-seerr", + "app": "seerr", + "note": "definition step to seerr-v3", + "from": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "to": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route", + "engine_state_after": null, + "memory": null, + "marks": [], + "bench_overrides": null, + "duration_s": 35.8, + "measured_at": "2026-10-28T15:24:22Z", + "evidence": "evidence/MV-seerr", + "scratch_cleared": [], + "total_s": 35.8 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/MV-seerr.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/MV-seerr.log new file mode 100644 index 00000000..a9747410 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/MV-seerr.log @@ -0,0 +1,115 @@ +[15:24:47] scratch drive folders cleared before FROM (R-656): none existed +[15:24:47] MV-seerr: deploying seerr at FROM {'seerr': 'fallenbagel/jellyseerr:2.7.3'} +[15:25:18] FROM settled=True in 30.8s :: {"seerr": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:25:18] fixture: the BOX walk's own (Seerr), through upgrade_boxport +[15:25:30] seerr: throwaway Jellyfin on traefik-public: user=204 complete=204 +[15:25:31] seerr: admin drilld5609dd3 signed in through Jellyfin; application title stored http=200 +[15:25:32] seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +[15:25:32] C1 (seed reads back BEFORE): True +[15:25:32] MV-seerr: swapping to TO {'seerr': 'ghcr.io/seerr-team/seerr:v3.5.1'} +[15:25:33] TO up -d rc=0 +[15:26:04] TO settled=True in 31.0s :: {"seerr": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:26:04] migration lines observed: 6 +[15:26:05] seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +[15:26:05] RESULT (seed reads back AFTER): True +[15:26:05] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:5055 +[15:26:21] + 15s seerr=207M/384M peak=209M kills=0 rs=0 reqs=285 +[15:26:36] + 30s seerr=208M/384M peak=209M kills=0 rs=0 reqs=572 +[15:26:51] + 45s seerr=208M/384M peak=211M kills=0 rs=0 reqs=860 +[15:27:06] + 60s seerr=208M/384M peak=211M kills=0 rs=0 reqs=1145 +[15:27:21] + 76s seerr=208M/384M peak=211M kills=0 rs=0 reqs=1435 +[15:27:36] + 91s seerr=207M/384M peak=211M kills=0 rs=0 reqs=1721 +[15:27:51] + 106s seerr=207M/384M peak=212M kills=0 rs=0 reqs=2010 +[15:28:06] + 121s seerr=208M/384M peak=212M kills=0 rs=0 reqs=2300 +[15:28:22] + 136s seerr=207M/384M peak=212M kills=0 rs=0 reqs=2589 +[15:28:37] + 151s seerr=207M/384M peak=212M kills=0 rs=0 reqs=2877 +[15:28:52] + 166s seerr=208M/384M peak=217M kills=0 rs=0 reqs=3165 +[15:29:07] + 182s seerr=210M/384M peak=217M kills=0 rs=0 reqs=3457 +[15:29:22] + 197s seerr=210M/384M peak=217M kills=0 rs=0 reqs=3745 +[15:29:37] + 212s seerr=209M/384M peak=217M kills=0 rs=0 reqs=4033 +[15:29:52] + 227s seerr=209M/384M peak=217M kills=0 rs=0 reqs=4325 +[15:30:07] + 242s seerr=215M/384M peak=220M kills=0 rs=0 reqs=4603 +[15:30:23] + 257s seerr=221M/384M peak=225M kills=0 rs=0 reqs=4892 +[15:30:38] + 272s seerr=223M/384M peak=225M kills=0 rs=0 reqs=5183 +[15:30:53] + 287s seerr=222M/384M peak=228M kills=0 rs=0 reqs=5471 +[15:31:08] + 302s seerr=223M/384M peak=228M kills=0 rs=0 reqs=5763 +[15:31:23] + 318s seerr=223M/384M peak=229M kills=0 rs=0 reqs=6051 +[15:31:38] + 333s seerr=223M/384M peak=229M kills=0 rs=0 reqs=6339 +[15:31:53] + 348s seerr=223M/384M peak=229M kills=0 rs=0 reqs=6631 +[15:32:08] + 363s seerr=222M/384M peak=229M kills=0 rs=0 reqs=6919 +[15:32:24] + 378s seerr=223M/384M peak=229M kills=0 rs=0 reqs=7210 +[15:32:39] + 393s seerr=222M/384M peak=229M kills=0 rs=0 reqs=7499 +[15:32:54] + 408s seerr=223M/384M peak=229M kills=0 rs=0 reqs=7787 +[15:33:09] + 424s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8079 +[15:33:24] + 439s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8367 +[15:33:39] + 454s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8656 +[15:33:54] + 469s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8947 +[15:34:09] + 484s seerr=223M/384M peak=229M kills=0 rs=0 reqs=9235 +[15:34:25] + 499s seerr=223M/384M peak=229M kills=0 rs=0 reqs=9527 +[15:34:40] + 514s seerr=223M/384M peak=229M kills=0 rs=0 reqs=9815 +[15:34:55] + 529s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10104 +[15:35:10] + 545s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10395 +[15:35:25] + 560s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10685 +[15:35:40] + 575s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10975 +[15:35:55] + 590s seerr=223M/384M peak=229M kills=0 rs=0 reqs=11265 +[15:36:11] + 605s seerr=223M/384M peak=229M kills=0 rs=0 reqs=11555 +[15:36:11] memory watch: killed=False tight=[] requests=11555 codes={'307': 11555} +[15:36:11] MV-seerr: ABORT — putting the FROM images back +[15:36:43] seerr: the title read back True; sign-in http=500 (wrong password refused: http 500) ok=False +[15:36:43] ABORT: app came back in 30.9s; data present=False +{ + "harness_version": 5, + "edge": "MV-seerr", + "app": "seerr", + "note": "definition step to seerr-v3", + "from": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "to": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kseerr | 2026-10-28T15:25:39.146Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0001_migrate_hostname.js'...", + "abort": "starts-data-gone", + "abort_detail": "the app started but the seeded data was gone", + "engine_state_after": null, + "memory": { + "soak_s": 605.3, + "requested_s": 600, + "requests": 11555, + "codes": { + "307": 11555 + }, + "first_kill": null, + "containers": { + "seerr": { + "limit": 402653184, + "peak": 240267264, + "peak_pct": 0.597, + "anon_peak_sampled": 206442496, + "anon_peak_pct": 0.513, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 31.0, + "measured_at": "2026-10-28T15:36:43Z", + "evidence": "evidence/MV-seerr", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 716.0 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/abort-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/abort-states.json new file mode 100644 index 00000000..e61340f4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/abort-states.json @@ -0,0 +1,8 @@ +{ + "seerr": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/compose-final.log new file mode 100644 index 00000000..b0e97255 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/compose-final.log @@ -0,0 +1,17 @@ +seerr | +seerr | > jellyseerr@2.7.3 start /app +seerr | > NODE_ENV=production node dist/index.js +seerr | +seerr | 2026-10-28T15:36:14.807Z [info]: Commit Tag: $GIT_SHA +seerr | 2026-10-28T15:36:15.338Z [info]: Starting Jellyseerr version 2.7.3 +seerr | 2026-10-28T15:36:16.170Z [debug][Settings Migrator]: Checking migration '0001_migrate_hostname.js'... +seerr | 2026-10-28T15:36:16.173Z [debug][Settings Migrator]: Checking migration '0002_migrate_apitokens.js'... +seerr | 2026-10-28T15:36:16.176Z [debug][Settings Migrator]: Checking migration '0003_emby_media_server_type.js'... +seerr | 2026-10-28T15:36:16.178Z [debug][Settings Migrator]: Checking migration '0004_migrate_region_setting.js'... +seerr | 2026-10-28T15:36:16.179Z [debug][Settings Migrator]: Checking migration '0005_migrate_network_settings.js'... +seerr | 2026-10-28T15:36:16.180Z [debug][Settings Migrator]: Checking migration '0006_remove_lunasea.js'... +seerr | 2026-10-28T15:36:16.186Z [info][Notifications]: Registered notification agents +seerr | 2026-10-28T15:36:16.233Z [info][Jobs]: Scheduled jobs loaded +seerr | 2026-10-28T15:36:16.411Z [info][Server]: Server ready on port 5055 +seerr | 2026-10-28T15:36:43.306Z [error][Auth]: SQLITE_ERROR: no such column: User_settings.discordId +seerr | 2026-10-28T15:36:43.346Z [error][Auth]: SQLITE_ERROR: no such column: User_settings.discordId diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/engine-state.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/memory-samples.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/memory-samples.json new file mode 100644 index 00000000..4b119179 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/memory-samples.json @@ -0,0 +1,762 @@ +[ + { + "t": 15.1, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218066944, + "peak": 219787264, + "anon": 194387968, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 285 + }, + { + "t": 30.3, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218734592, + "peak": 219881472, + "anon": 194379776, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 572 + }, + { + "t": 45.4, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218189824, + "peak": 221515776, + "anon": 194027520, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 860 + }, + { + "t": 60.5, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218800128, + "peak": 221761536, + "anon": 194486272, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1145 + }, + { + "t": 75.6, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218316800, + "peak": 221761536, + "anon": 194056192, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1435 + }, + { + "t": 90.8, + "containers": { + "seerr": { + "limit": 402653184, + "current": 217550848, + "peak": 222285824, + "anon": 194109440, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1721 + }, + { + "t": 105.9, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218071040, + "peak": 222932992, + "anon": 194211840, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2010 + }, + { + "t": 121.0, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218202112, + "peak": 222932992, + "anon": 194326528, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2300 + }, + { + "t": 136.2, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218058752, + "peak": 222932992, + "anon": 194510848, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2589 + }, + { + "t": 151.3, + "containers": { + "seerr": { + "limit": 402653184, + "current": 217653248, + "peak": 222932992, + "anon": 194613248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2877 + }, + { + "t": 166.4, + "containers": { + "seerr": { + "limit": 402653184, + "current": 218628096, + "peak": 227950592, + "anon": 195092480, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3165 + }, + { + "t": 181.5, + "containers": { + "seerr": { + "limit": 402653184, + "current": 220233728, + "peak": 227950592, + "anon": 195674112, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3457 + }, + { + "t": 196.6, + "containers": { + "seerr": { + "limit": 402653184, + "current": 220606464, + "peak": 227950592, + "anon": 195592192, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3745 + }, + { + "t": 211.8, + "containers": { + "seerr": { + "limit": 402653184, + "current": 219820032, + "peak": 227950592, + "anon": 195751936, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4033 + }, + { + "t": 226.9, + "containers": { + "seerr": { + "limit": 402653184, + "current": 220160000, + "peak": 227950592, + "anon": 195829760, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4325 + }, + { + "t": 242.0, + "containers": { + "seerr": { + "limit": 402653184, + "current": 226287616, + "peak": 230899712, + "anon": 200019968, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4603 + }, + { + "t": 257.1, + "containers": { + "seerr": { + "limit": 402653184, + "current": 231821312, + "peak": 236445696, + "anon": 204804096, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4892 + }, + { + "t": 272.3, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234160128, + "peak": 236445696, + "anon": 205254656, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5183 + }, + { + "t": 287.4, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233672704, + "peak": 239206400, + "anon": 205099008, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5471 + }, + { + "t": 302.5, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234659840, + "peak": 239206400, + "anon": 205484032, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5763 + }, + { + "t": 317.6, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234852352, + "peak": 240267264, + "anon": 206442496, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6051 + }, + { + "t": 332.8, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234242048, + "peak": 240267264, + "anon": 205271040, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6339 + }, + { + "t": 347.9, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234409984, + "peak": 240267264, + "anon": 205357056, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6631 + }, + { + "t": 363.0, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233758720, + "peak": 240267264, + "anon": 205361152, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6919 + }, + { + "t": 378.1, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234557440, + "peak": 240267264, + "anon": 205385728, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7210 + }, + { + "t": 393.3, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233463808, + "peak": 240267264, + "anon": 205189120, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7499 + }, + { + "t": 408.4, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233975808, + "peak": 240267264, + "anon": 205185024, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7787 + }, + { + "t": 423.5, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234721280, + "peak": 240267264, + "anon": 205381632, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8079 + }, + { + "t": 438.6, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234045440, + "peak": 240267264, + "anon": 205336576, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8367 + }, + { + "t": 453.8, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234254336, + "peak": 240267264, + "anon": 205303808, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8656 + }, + { + "t": 468.9, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233943040, + "peak": 240267264, + "anon": 205479936, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8947 + }, + { + "t": 484.0, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234426368, + "peak": 240267264, + "anon": 205561856, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9235 + }, + { + "t": 499.2, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233865216, + "peak": 240267264, + "anon": 205283328, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9527 + }, + { + "t": 514.3, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233902080, + "peak": 240267264, + "anon": 205365248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9815 + }, + { + "t": 529.4, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234385408, + "peak": 240267264, + "anon": 205262848, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10104 + }, + { + "t": 544.6, + "containers": { + "seerr": { + "limit": 402653184, + "current": 233947136, + "peak": 240267264, + "anon": 205352960, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10395 + }, + { + "t": 559.7, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234487808, + "peak": 240267264, + "anon": 205418496, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10685 + }, + { + "t": 574.8, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234237952, + "peak": 240267264, + "anon": 205307904, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10975 + }, + { + "t": 590.0, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234426368, + "peak": 240267264, + "anon": 205385728, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11265 + }, + { + "t": 605.1, + "containers": { + "seerr": { + "limit": 402653184, + "current": 234315776, + "peak": 240267264, + "anon": 205606912, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11555 + } +] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/migration-lines.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/migration-lines.txt new file mode 100644 index 00000000..554ed256 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/migration-lines.txt @@ -0,0 +1,6 @@ +seerr | 2026-10-28T15:25:39.146Z [debug][Settings Migrator]: Checking migration '0001_migrate_hostname.js'... +seerr | 2026-10-28T15:25:39.150Z [debug][Settings Migrator]: Checking migration '0002_migrate_apitokens.js'... +seerr | 2026-10-28T15:25:39.153Z [debug][Settings Migrator]: Checking migration '0003_emby_media_server_type.js'... +seerr | 2026-10-28T15:25:39.155Z [debug][Settings Migrator]: Checking migration '0004_migrate_region_setting.js'... +seerr | 2026-10-28T15:25:39.157Z [debug][Settings Migrator]: Checking migration '0005_migrate_network_settings.js'... +seerr | 2026-10-28T15:25:39.159Z [debug][Settings Migrator]: Checking migration '0006_remove_lunasea.js'... \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/run.log new file mode 100644 index 00000000..340602dd --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/run.log @@ -0,0 +1,59 @@ +[15:24:47] scratch drive folders cleared before FROM (R-656): none existed +[15:24:47] MV-seerr: deploying seerr at FROM {'seerr': 'fallenbagel/jellyseerr:2.7.3'} +[15:25:18] FROM settled=True in 30.8s :: {"seerr": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:25:18] fixture: the BOX walk's own (Seerr), through upgrade_boxport +[15:25:30] seerr: throwaway Jellyfin on traefik-public: user=204 complete=204 +[15:25:31] seerr: admin drilld5609dd3 signed in through Jellyfin; application title stored http=200 +[15:25:32] seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +[15:25:32] C1 (seed reads back BEFORE): True +[15:25:32] MV-seerr: swapping to TO {'seerr': 'ghcr.io/seerr-team/seerr:v3.5.1'} +[15:25:33] TO up -d rc=0 +[15:26:04] TO settled=True in 31.0s :: {"seerr": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[15:26:04] migration lines observed: 6 +[15:26:05] seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +[15:26:05] RESULT (seed reads back AFTER): True +[15:26:05] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:5055 +[15:26:21] + 15s seerr=207M/384M peak=209M kills=0 rs=0 reqs=285 +[15:26:36] + 30s seerr=208M/384M peak=209M kills=0 rs=0 reqs=572 +[15:26:51] + 45s seerr=208M/384M peak=211M kills=0 rs=0 reqs=860 +[15:27:06] + 60s seerr=208M/384M peak=211M kills=0 rs=0 reqs=1145 +[15:27:21] + 76s seerr=208M/384M peak=211M kills=0 rs=0 reqs=1435 +[15:27:36] + 91s seerr=207M/384M peak=211M kills=0 rs=0 reqs=1721 +[15:27:51] + 106s seerr=207M/384M peak=212M kills=0 rs=0 reqs=2010 +[15:28:06] + 121s seerr=208M/384M peak=212M kills=0 rs=0 reqs=2300 +[15:28:22] + 136s seerr=207M/384M peak=212M kills=0 rs=0 reqs=2589 +[15:28:37] + 151s seerr=207M/384M peak=212M kills=0 rs=0 reqs=2877 +[15:28:52] + 166s seerr=208M/384M peak=217M kills=0 rs=0 reqs=3165 +[15:29:07] + 182s seerr=210M/384M peak=217M kills=0 rs=0 reqs=3457 +[15:29:22] + 197s seerr=210M/384M peak=217M kills=0 rs=0 reqs=3745 +[15:29:37] + 212s seerr=209M/384M peak=217M kills=0 rs=0 reqs=4033 +[15:29:52] + 227s seerr=209M/384M peak=217M kills=0 rs=0 reqs=4325 +[15:30:07] + 242s seerr=215M/384M peak=220M kills=0 rs=0 reqs=4603 +[15:30:23] + 257s seerr=221M/384M peak=225M kills=0 rs=0 reqs=4892 +[15:30:38] + 272s seerr=223M/384M peak=225M kills=0 rs=0 reqs=5183 +[15:30:53] + 287s seerr=222M/384M peak=228M kills=0 rs=0 reqs=5471 +[15:31:08] + 302s seerr=223M/384M peak=228M kills=0 rs=0 reqs=5763 +[15:31:23] + 318s seerr=223M/384M peak=229M kills=0 rs=0 reqs=6051 +[15:31:38] + 333s seerr=223M/384M peak=229M kills=0 rs=0 reqs=6339 +[15:31:53] + 348s seerr=223M/384M peak=229M kills=0 rs=0 reqs=6631 +[15:32:08] + 363s seerr=222M/384M peak=229M kills=0 rs=0 reqs=6919 +[15:32:24] + 378s seerr=223M/384M peak=229M kills=0 rs=0 reqs=7210 +[15:32:39] + 393s seerr=222M/384M peak=229M kills=0 rs=0 reqs=7499 +[15:32:54] + 408s seerr=223M/384M peak=229M kills=0 rs=0 reqs=7787 +[15:33:09] + 424s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8079 +[15:33:24] + 439s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8367 +[15:33:39] + 454s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8656 +[15:33:54] + 469s seerr=223M/384M peak=229M kills=0 rs=0 reqs=8947 +[15:34:09] + 484s seerr=223M/384M peak=229M kills=0 rs=0 reqs=9235 +[15:34:25] + 499s seerr=223M/384M peak=229M kills=0 rs=0 reqs=9527 +[15:34:40] + 514s seerr=223M/384M peak=229M kills=0 rs=0 reqs=9815 +[15:34:55] + 529s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10104 +[15:35:10] + 545s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10395 +[15:35:25] + 560s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10685 +[15:35:40] + 575s seerr=223M/384M peak=229M kills=0 rs=0 reqs=10975 +[15:35:55] + 590s seerr=223M/384M peak=229M kills=0 rs=0 reqs=11265 +[15:36:11] + 605s seerr=223M/384M peak=229M kills=0 rs=0 reqs=11555 +[15:36:11] memory watch: killed=False tight=[] requests=11555 codes={'307': 11555} +[15:36:11] MV-seerr: ABORT — putting the FROM images back +[15:36:43] seerr: the title read back True; sign-in http=500 (wrong password refused: http 500) ok=False +[15:36:43] ABORT: app came back in 30.9s; data present=False \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-full.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-full.log new file mode 100644 index 00000000..9ecd439c --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-full.log @@ -0,0 +1,20 @@ +seerr | +seerr | > seerr@3.5.1 start +seerr | > NODE_ENV=production node dist/index.js +seerr | +seerr | 2026-10-28T15:25:34.950Z [info]: Commit Tag: 564bfb08b54caa374bddaf820abfd226e5e69151 +seerr | 2026-10-28T15:25:36.823Z [info]: Starting Seerr version 3.5.1 +seerr | 2026-10-28T15:25:39.146Z [debug][Settings Migrator]: Checking migration '0001_migrate_hostname.js'... +seerr | 2026-10-28T15:25:39.150Z [debug][Settings Migrator]: Checking migration '0002_migrate_apitokens.js'... +seerr | 2026-10-28T15:25:39.153Z [debug][Settings Migrator]: Checking migration '0003_emby_media_server_type.js'... +seerr | 2026-10-28T15:25:39.155Z [debug][Settings Migrator]: Checking migration '0004_migrate_region_setting.js'... +seerr | 2026-10-28T15:25:39.157Z [debug][Settings Migrator]: Checking migration '0005_migrate_network_settings.js'... +seerr | 2026-10-28T15:25:39.159Z [debug][Settings Migrator]: Checking migration '0006_remove_lunasea.js'... +seerr | 2026-10-28T15:25:39.160Z [debug][Settings Migrator]: Checking migration '0007_migrate_arr_tags.js'... +seerr | 2026-10-28T15:25:39.176Z [debug][Settings Migrator]: Migration '0007_migrate_arr_tags.js' has been applied. +seerr | 2026-10-28T15:25:39.177Z [debug][Settings Migrator]: Checking migration '0008_migrate_blacklist_to_blocklist.js'... +seerr | 2026-10-28T15:25:39.178Z [debug][Settings Migrator]: Migration '0008_migrate_blacklist_to_blocklist.js' has been applied. +seerr | 2026-10-28T15:25:39.191Z [info][Notifications]: Registered notification agents +seerr | 2026-10-28T15:25:39.228Z [info][Jobs]: Scheduled jobs loaded +seerr | 2026-10-28T15:25:39.315Z [info][Server]: Server ready on port 5055 +seerr | 2026-10-28T15:26:00.021Z [debug][Jobs]: Starting scheduled job: Download Sync diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-states.json new file mode 100644 index 00000000..e61340f4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/to-states.json @@ -0,0 +1,8 @@ +{ + "seerr": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/verdict.json new file mode 100644 index 00000000..6eb838d2 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/bench/evidence/MV-seerr/verdict.json @@ -0,0 +1,56 @@ +{ + "harness_version": 5, + "edge": "MV-seerr", + "app": "seerr", + "note": "definition step to seerr-v3", + "from": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "to": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Kseerr | 2026-10-28T15:25:39.146Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0001_migrate_hostname.js'...", + "abort": "starts-data-gone", + "abort_detail": "the app started but the seeded data was gone", + "engine_state_after": null, + "memory": { + "soak_s": 605.3, + "requested_s": 600, + "requests": 11555, + "codes": { + "307": 11555 + }, + "first_kill": null, + "containers": { + "seerr": { + "limit": 402653184, + "peak": 240267264, + "peak_pct": 0.597, + "anon_peak_sampled": 206442496, + "anon_peak_pct": 0.513, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 31.0, + "measured_at": "2026-10-28T15:36:43Z", + "evidence": "evidence/MV-seerr", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 716.0 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/box-verdict-seerr.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/box-verdict-seerr.json new file mode 100644 index 00000000..05f6ac5c --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/box-verdict-seerr.json @@ -0,0 +1,225 @@ +{ + "app": "seerr", + "walk": "security", + "box_walk_version": 1, + "verdict": "proven", + "venue": "box 9202 (drill catalog), the guarded Update", + "from": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "to": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "observables_before": { + "pinned_images": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "installed_images": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "catalog_images": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "live_compose_image_lines": [ + "image: fallenbagel/jellyseerr:2.7.3" + ], + "docker_inspect": [ + "seerr fallenbagel/jellyseerr:2.7.3 running=true restarts=0" + ] + }, + "setup_gate_before": { + "browser": { + "status": "302", + "redirect": "https://felhom.enkisfelhom.hu/__gate/start?…" + }, + "script": { + "status": "401", + "redirect": null + } + }, + "seed": "read_back", + "to_definition": "/tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/defs/seerr-v3", + "drill_commit": "5632a0eeeb45", + "sync_waited_s": 4.5, + "badge_before": { + "hu": [ + { + "title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.", + "text": "Frissítés elérhető — ma" + } + ], + "en": [ + { + "title": "A newer version of this app is available. Select the Update button to start it.", + "text": "Update available — today" + } + ] + }, + "measured_at": "2026-10-28T15:34:20Z", + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztonsági mentés készül a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 2.1, + "phase": "safety-dump", + "label": "Adatbázis pillanatkép…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 3.1, + "phase": "pulling", + "label": "Új verzió letöltése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 52.3, + "phase": "copying", + "label": "Az adatok másolása a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 62.5, + "phase": "verifying", + "label": "Működés ellenőrzése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 78.0, + "phase": "done", + "label": "Frissítve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 78.0, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "observables_after": { + "pinned_images": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "installed_images": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "catalog_images": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "live_compose_image_lines": [ + "image: ghcr.io/seerr-team/seerr:v3.5.1" + ], + "docker_inspect": [ + "seerr ghcr.io/seerr-team/seerr:v3.5.1 running=true restarts=0" + ] + }, + "badge_after": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "state_after": "running", + "hold_after": null, + "to_digests": { + "seerr": "sha256:d8fab675b55ad293ded98fd71efcfd46054cbad9746534ae1cc4794a88c0b3be" + }, + "four_observables": { + "pinned": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "installed": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "catalog": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "live_compose": [ + "ghcr.io/seerr-team/seerr:v3.5.1" + ] + }, + "seed_read_after": true, + "setup_gate_after": { + "browser": { + "status": "302", + "redirect": "https://felhom.enkisfelhom.hu/__gate/start?…" + }, + "script": { + "status": "401", + "redirect": null + } + }, + "memory": { + "soak_s": 600, + "interval_s": 10, + "samples": 60, + "containers": { + "seerr": { + "samples": 60, + "anon_peak_bytes": 174673920, + "limit_bytes": 402653184, + "anon_peak_pct": 43.4, + "cgroup_peak_pct": 52.8, + "oom_kill_delta": 0, + "oom_killed_flag": false, + "restarts_delta": 0, + "running_all_samples": true, + "cgroup": "/sys/fs/cgroup/system.slice/docker-824256c63a7fb4236dcd70f4e725bbd2c7414724a9c2e91a920cef5b3cf6aa1d.scope" + } + }, + "oom_kills": 0, + "restarts": 0, + "peak_pct": 43.4 + }, + "why": "the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back", + "log": [ + "16:26:30 [5] the box's drill mirror now at f574f6fef", + "16:26:34 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}", + "16:28:00 [1] deployed, controller state=running, pinned={'seerr': 'fallenbagel/jellyseerr:2.7.3'}", + "16:28:00 gate: seerr is gated — passed as the household (cookie set)", + "16:33:03 app never answered on seerr/ (last rc=0 code=307)", + "16:33:06 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__gate/start?…'}, 'script': {'status': '401', 'redirect': None}}", + "16:34:04 seerr: throwaway Jellyfin on traefik-public: user=204 complete=204", + "16:34:05 seerr: admin drilla4afc57d signed in through Jellyfin; application title stored http=200", + "16:34:06 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True", + "16:34:07 [5] drill commit 5632a0eeeb45: seerr -> the definition in /tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/defs/seerr-v3 (push rc=0)", + "16:34:15 [5] the box's drill mirror now at 5632a0eee", + "16:34:20 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "16:34:20 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None", + "16:34:22 + 2.1s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None", + "16:34:23 + 3.1s phase=pulling label=Új verzió letöltése… err=None hold=None", + "16:35:13 + 52.3s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None", + "16:35:23 + 62.5s phase=verifying label=Működés ellenőrzése… err=None hold=None", + "16:35:38 + 78.0s phase=done label=Frissítve err=None hold=None", + "16:35:57 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True", + "16:35:57 [7] memory soak 600 s …", + "16:46:03 [7] soak: peak 43.4% of the limit (anon), kills 0, restarts 0" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/walk.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/walk.txt new file mode 100644 index 00000000..023e2342 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/box/walk.txt @@ -0,0 +1,24 @@ +16:26:30 [5] the box's drill mirror now at f574f6fef +16:26:34 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +16:28:00 [1] deployed, controller state=running, pinned={'seerr': 'fallenbagel/jellyseerr:2.7.3'} +16:28:00 gate: seerr is gated — passed as the household (cookie set) +16:33:03 app never answered on seerr/ (last rc=0 code=307) +16:33:06 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__gate/start?…'}, 'script': {'status': '401', 'redirect': None}} +16:34:04 seerr: throwaway Jellyfin on traefik-public: user=204 complete=204 +16:34:05 seerr: admin drilla4afc57d signed in through Jellyfin; application title stored http=200 +16:34:06 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +16:34:07 [5] drill commit 5632a0eeeb45: seerr -> the definition in /tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/defs/seerr-v3 (push rc=0) +16:34:15 [5] the box's drill mirror now at 5632a0eee +16:34:20 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +16:34:20 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +16:34:22 + 2.1s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +16:34:23 + 3.1s phase=pulling label=Új verzió letöltése… err=None hold=None +16:35:13 + 52.3s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +16:35:23 + 62.5s phase=verifying label=Működés ellenőrzése… err=None hold=None +16:35:38 + 78.0s phase=done label=Frissítve err=None hold=None +16:35:57 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +16:35:57 [7] memory soak 600 s … +16:46:03 [7] soak: peak 43.4% of the limit (anon), kills 0, restarts 0 +16:46:03 [9] verdict proven -> /tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/p2/box/seerr/verdict.json +16:46:03 RESULT proven — the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back +16:46:03 [X] stop -> 200 {'ok': True, 'message': 'Stack seerr stop completed'} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/.felhom.yml b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/.felhom.yml new file mode 100644 index 00000000..0a91530e --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/.felhom.yml @@ -0,0 +1,188 @@ +# ============================================================================= +# .felhom.yml - App metadata for felhom-controller +# ============================================================================= + +# --- Display info (shown on dashboard) --- +display_name: "Jellyseerr" +description: "Média igénylés kezelő Jellyfin/Plex integrációval" +category: "media-automation" +subdomain: "requests" +slug: "seerr" +# catalog_since: the date THIS repo last changed this app's pinned images. Any commit that +# changes an image: line must set this to the same day (see CLAUDE.md). +catalog_since: "2026-07-18" + +# --- Resource hints (displayed on deploy screen) --- +resources: + mem_request: "200M" + mem_limit: "384M" + pi_compatible: true + needs_hdd: false + +# --- Deploy fields (first deployment only) --- +deploy_fields: + - env_var: DOMAIN + label: "Domain" + type: domain + description: "A szerver domain neve" + locked_after_deploy: true + + - env_var: SUBDOMAIN + label: "Aldomain" + type: subdomain + default: "requests" + required: true + locked_after_deploy: true + description: "Az alkalmazás aldomainje" + +# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) --- +# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done. +setup_gate: true + +# --- App info (info page content) --- +app_info: + tagline: "Film és sorozat igénylő a háztartás tagjai számára" + docs_url: "https://docs.overseerr.dev/" + + use_cases: + - 'Családtagok filmeket és sorozatokat igényelhetnek egyszerűen' + - 'Automatikus letöltés Sonarr/Radarr integrációval' + - 'Elérhető tartalmak böngészése szép felületen' + - 'Igénylések állapotának követése' + - 'Felhasználói kvóták és jogosultságok kezelése' + + first_steps: + - 'Nyisd meg a requests.DOMAIN címet a böngészőben' + - 'Kövesd a beállítás varázslót' + - 'Csatlakoztasd a Jellyfin vagy Plex szerveredet' + - 'Csatlakoztasd a Sonarr és Radarr példányokat' + - 'Hívd meg a családtagokat' + + prerequisites: + - 'Jellyfin vagy Plex szerver szükséges' + - 'Sonarr és/vagy Radarr szükséges az automatikus letöltéshez' + guide: + checked_version: "2.7.3" + sections: + - title: "Film vagy sorozat kérése" + intro: "Bármelyik családtag kérhet filmet vagy sorozatot, a Jellyseerr pedig továbbadja a Radarrnak vagy a Sonarrnak." + steps: + - "Írd be a címet a felső „Search Movies & TV” (keresés) mezőbe." + - "Nyisd meg a találatot, és kattints a „Request” (kérés) gombra." + - "Sorozatnál jelöld be a kívánt évadokat." + - "Erősítsd meg a kérést az ablak alján lévő gombbal." + - title: "Kérések jóváhagyása" + intro: "A családtag kérése addig vár, amíg jóvá nem hagyod." + steps: + - "Nyisd meg a bal oldali menüben a „Requests” (kérések) oldalt." + - "A várakozó kérés mellett „Pending” (függőben) áll." + - "Kattints az „Approve” (jóváhagyás) gombra, és a kérés a Radarrhoz vagy a Sonarrhoz kerül. A „Decline” (elutasítás) elveti." + - title: "Kérés jóváhagyás nélkül" + intro: "Akiben megbízol, annak a kérését nem kell külön jóváhagynod." + steps: + - "Nyisd meg a „Users” (felhasználók) oldalt, és a családtag sorában kattints az „Edit” (szerkesztés) gombra." + - "Nyisd meg a „Permissions” (jogosultságok) lapot, és jelöld be az „Auto-Approve” (automatikus jóváhagyás) jelölőt." + - "Kattints a „Save Changes” (változások mentése) gombra." + - title: "Hiba jelzése egy filmnél" + intro: "Ha egy film rossz hanggal vagy felirat nélkül érkezett, a családtag jelezheti neked." + steps: + - "Nyisd meg a filmet, és kattints a figyelmeztető jelre („Report an Issue”, hiba jelzése)." + - "Válaszd ki, mi a gond, például „Audio” (hang) vagy „Subtitle” (felirat), és írd le röviden." + - "Kattints a „Submit Issue” (beküldés) gombra." + - "A beküldött jelzéseket az „Issues” (hibák) oldalon látod." + faq: + - q: "Jóváhagytam, de nem töltődik le. Miért?" + a: "A doboz a Sonarrban és a Radarrban minden meghajtóhoz címkét adott (például hdd-1), és csak a címkézett tétel kap letöltőt. A Jellyseerr „Settings” (beállítások) „Services” (szolgáltatások) oldalán a Radarrnál és a Sonarrnál a „Root Folder” (gyökérmappa) és a „Tags” (címkék) ugyanannak a meghajtónak a mappáját és címkéjét válassza." + - q: "Mit írjak be a Radarr és a Sonarr címéhez?" + a: "A „Hostname or IP Address” (cím) mezőbe radarr, a „Port” mezőbe 7878 kerül; a Sonarrnál sonarr és 8989. Az API kulcsot a Radarr és a Sonarr saját beállításaiban találod." + - q: "Mit jelent az „Available” állapot?" + a: "A film vagy a sorozat letöltődött, és a Jellyfinben vagy a Plexben nézheted." + - q: "Lehet magyar a felület?" + a: "Igen. A „Settings” (beállítások) „General” (általános) lapján a „Display Language” (megjelenítési nyelv) mezőben válaszd a magyart, majd kattints a „Save Changes” (változások mentése) gombra." + - q: "Mit kérhetek?" + a: "Csak olyan tartalmat, amihez jogod van, például szabad licencű filmeket. Hogy honnan jön a letöltés, azt a Prowlarrban te döntöd el." + +# --- Controller-side health probe --- +healthcheck: + checks: + - type: api + port: 5055 + path: "/api/v1/status" + expect: + status: 200 + +# --- English copy (localisation slice 5, R-560) -------------------------------------------- +# The Hungarian above is UNCHANGED. A box on English reads this block field by field; a missing +# field shows the Hungarian one; a controller older than 0.257.0 ignores the block entirely. +i18n: + en: + description: 'Media requests, wired into Jellyfin/Plex' + app_info: + tagline: 'The household asks for a film or a series here' + use_cases: + - 'The household can ask for films and series without fuss' + - 'Sonarr/Radarr fetch them on their own' + - 'Browse what is already there, on a good-looking page' + - 'Follow what has happened to a request' + - 'Per-person quotas and permissions' + first_steps: + - 'Open requests.DOMAIN in your browser' + - 'Follow the setup wizard' + - 'Connect your Jellyfin or Plex server' + - 'Connect your Sonarr and Radarr' + - 'Invite the household' + prerequisites: + - 'A Jellyfin or Plex server is needed' + - 'Sonarr and/or Radarr is needed for the downloading' + guide: + sections: + - title: "Ask for a film or a series" + intro: "Anyone in the family can ask for a film or a series, and Jellyseerr hands it to Radarr or Sonarr." + steps: + - "Type the title into the „Search Movies & TV” box at the top." + - "Open the result and select „Request”." + - "For a series, tick the seasons you want." + - "Confirm the request with the button at the bottom of the window." + - title: "Approve requests" + intro: "A family member's request waits until you approve it." + steps: + - "Open the „Requests” page in the menu on the left." + - "A waiting request says „Pending”." + - "Select „Approve”, and the request goes to Radarr or Sonarr. „Decline” drops it." + - title: "Requests without approval" + intro: "For someone you trust, you do not have to approve each request." + steps: + - "Open the „Users” page and select „Edit” in the family member's row." + - "Open the „Permissions” tab and tick „Auto-Approve”." + - "Select „Save Changes”." + - title: "Report a problem with a film" + intro: "If a film came with the wrong audio or without subtitles, a family member can tell you." + steps: + - "Open the film and select the warning sign („Report an Issue”)." + - "Choose what is wrong, for example „Audio” or „Subtitle”, and describe it briefly." + - "Select „Submit Issue”." + - "You see the reports on the „Issues” page." + faq: + - q: "I approved it, but it does not download. Why?" + a: "The box gave Sonarr and Radarr a tag for every drive (for example hdd-1), and only a tagged item gets a download client. On the „Services” page of Jellyseerr's „Settings”, make „Root Folder” and „Tags” for Radarr and Sonarr name the folder and the tag of the same drive." + - q: "What do I enter as the address of Radarr and Sonarr?" + a: "In „Hostname or IP Address” enter radarr, and in „Port” 7878; for Sonarr, sonarr and 8989. You find the API key in Radarr's and Sonarr's own settings." + - q: "What does „Available” mean?" + a: "The film or series has downloaded, and you can watch it in Jellyfin or Plex." + - q: "Can the interface be in Hungarian?" + a: "Yes. On the „General” tab of „Settings”, choose Hungarian in „Display Language”, then select „Save Changes”." + - q: "What may I ask for?" + a: "Only content you have the right to, for example films under a free licence. Where the download comes from is your choice in Prowlarr." + deploy_fields: + - env_var: DOMAIN + label: 'Domain' + description: 'The server domain name' + - env_var: SUBDOMAIN + label: 'Subdomain' + description: 'The subdomain this app answers on' + +# --- Security watch (felhom.eu R-1303): where each image's security notices are published --- +# One line per image in docker-compose.yml; the grammar is in NEW-APP-CHECKLIST.md (1.10). +upstream: + fallenbagel/jellyseerr: "github:seerr-team/seerr" + ghcr.io/seerr-team/seerr: "github:seerr-team/seerr" diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/docker-compose.yml b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/docker-compose.yml new file mode 100644 index 00000000..7355e8b3 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/definition/docker-compose.yml @@ -0,0 +1,55 @@ +# Jellyseerr - Média igénylés kezelő Jellyfin/Plex integrációval +# Domain: ${SUBDOMAIN}.${DOMAIN} +# Database: None (file-based) +# RAM: ~100M (mem_limit: 384M) | Pi-compatible: Yes +# +# Environment variables: +# DOMAIN - Your domain (e.g., demo-felhom.eu) + +services: + seerr: + # Seerr v3 (2026-10-28, felhom.eu R-1317): Jellyseerr and Overseerr merged into `ghcr.io/seerr-team/seerr`. v3 runs as + # `node` (UID 1000) and needs /app/config owned by it; a Jellyseerr volume is owned by root. So the container STARTS + # as root only to hand /app/config to 1000, then runs Seerr as `node` through busybox `su` (no root process stays; + # measured on the bench: root PID 1 is docker-init, Seerr is `node`). `init: true` is upstream's own requirement + # (the image has no init). Seerr migrates Jellyseerr's settings and database by itself on the first start. + image: ghcr.io/seerr-team/seerr:v3.5.1 + container_name: seerr + restart: unless-stopped + init: true + user: "0:0" + entrypoint: ["/bin/sh", "-c", "chown -R 1000:1000 /app/config && exec su node -s /bin/sh -c 'exec docker-entrypoint.sh npm start'"] + environment: + - TZ=Europe/Budapest + volumes: + - seerr_config:/app/config + networks: + - traefik-public + deploy: + resources: + limits: + memory: 384M + healthcheck: + test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:5055/api/v1/status"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 30s + labels: + - "traefik.enable=true" + - "traefik.http.routers.seerr.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)" + # R-753: this app reads the LEFTMOST X-Forwarded-For entry, which a stranger writes once traefik keeps the + # tunnel's chain — so its chain is removed here (it then reads traefik's X-Real-Ip or peer; never forgeable). + - "traefik.http.middlewares.seerr-xff.headers.customrequestheaders.X-Forwarded-For=" + - "traefik.http.routers.seerr.middlewares=seerr-xff" + - "traefik.http.routers.seerr.entrypoints=websecure" + - "traefik.http.routers.seerr.tls=true" + - "traefik.http.routers.seerr.tls.certresolver=letsencrypt" + - "traefik.http.services.seerr.loadbalancer.server.port=5055" + +volumes: + seerr_config: + +networks: + traefik-public: + external: true diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/run.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/run.txt new file mode 100644 index 00000000..0b49de6d --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/run.txt @@ -0,0 +1,28 @@ +16:46:18 [X] stop -> 200 {'ok': True, 'message': 'Stack seerr stop completed'} +16:46:50 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'seerr', 'volumes_removed': [], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt saját +16:46:59 [X] after remove: deployed=False leftovers='' +16:47:07 [5] the box's drill mirror now at 3884d373a +16:47:12 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +16:48:27 [1] deployed, controller state=running, pinned={'seerr': 'fallenbagel/jellyseerr:2.7.3'} +16:48:27 gate: seerr is gated — passed as the household (cookie set) +16:48:49 seerr: throwaway Jellyfin on traefik-public: user=204 complete=204 +16:48:50 seerr: admin drilld31a3e56 signed in through Jellyfin; application title stored http=200 +16:48:51 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +16:48:52 drill commit 19cbcb22db30: seerr TO with failing checks +16:49:00 [5] the box's drill mirror now at 19cbcb22d +16:49:05 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +16:49:05 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +16:49:07 + 2.1s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +16:49:08 + 3.1s phase=pulling label=Új verzió letöltése… err=None hold=None +16:49:56 + 51.2s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +16:50:03 + 58.4s phase=verifying label=Működés ellenőrzése… err=None hold=None +16:55:06 + 361.7s phase=undoing label=Visszaállítás az előző változatra… err=None hold=None +16:55:19 + 374.0s phase=undone label=Visszaállítva az előző változatra err=None hold=None +16:55:41 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True +16:55:41 RESULT proven — TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back +16:55:42 [X] stop -> 200 {'ok': True, 'message': 'Stack seerr stop completed'} +16:56:14 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'seerr', 'volumes_removed': ['seerr_seerr_config'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalma +16:56:22 [X] after remove: deployed=False leftovers='' +16:56:32 [5] the box's drill mirror now at dff3cb84fc +16:56:32 drill revert 19cbcb22db30: rc=0 +16:56:32 drill templates/seerr equal to before: True diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/undo-proof-seerr.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/undo-proof-seerr.json new file mode 100644 index 00000000..98af43e5 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/seerr/undo/undo-proof-seerr.json @@ -0,0 +1,170 @@ +{ + "app": "seerr", + "from": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "to": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "started": "2026-10-28T15:46:18Z", + "drill_head_before": "3884d373adc45b72d5e6e4271765ea68251d5d67", + "failing_compose_main_healthcheck": [ + "test: [\"CMD\", \"false\"]" + ], + "failing_probe": true, + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 2.1, + "phase": "safety-dump", + "label": "Adatb\u00e1zis pillanatk\u00e9p\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 3.1, + "phase": "pulling", + "label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 51.2, + "phase": "copying", + "label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 58.4, + "phase": "verifying", + "label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 361.7, + "phase": "undoing", + "label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 374.0, + "phase": "undone", + "label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 374.0, + "final_phase": "undone", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "to_log_while_verifying": [ + "ghcr.io/seerr-team/seerr:v3.5.1", + "", + "> seerr@3.5.1 start", + "> NODE_ENV=production node dist/index.js", + "", + "2026-10-28T15:50:04.487Z [\u001b[32minfo\u001b[39m]: Commit Tag: 564bfb08b54caa374bddaf820abfd226e5e69151 ", + "2026-10-28T15:50:06.230Z [\u001b[32minfo\u001b[39m]: Starting Seerr version 3.5.1 ", + "2026-10-28T15:50:08.578Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0001_migrate_hostname.js'... ", + "2026-10-28T15:50:08.582Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0002_migrate_apitokens.js'... ", + "2026-10-28T15:50:08.584Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0003_emby_media_server_type.js'... ", + "2026-10-28T15:50:08.586Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0004_migrate_region_setting.js'... ", + "2026-10-28T15:50:08.587Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0005_migrate_network_settings.js'... ", + "2026-10-28T15:50:08.589Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0006_remove_lunasea.js'... ", + "2026-10-28T15:50:08.590Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0007_migrate_arr_tags.js'... ", + "2026-10-28T15:50:08.608Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Migration '0007_migrate_arr_tags.js' has been applied. ", + "2026-10-28T15:50:08.609Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Checking migration '0008_migrate_blacklist_to_blocklist.js'... ", + "2026-10-28T15:50:08.610Z [\u001b[34mdebug\u001b[39m][Settings Migrator]: Migration '0008_migrate_blacklist_to_blocklist.js' has been applied. ", + "2026-10-28T15:50:08.620Z [\u001b[32minfo\u001b[39m][Notifications]: Registered notification agents ", + "2026-10-28T15:50:08.659Z [\u001b[32minfo\u001b[39m][Jobs]: Scheduled jobs loaded ", + "2026-10-28T15:50:08.752Z [\u001b[32minfo\u001b[39m][Server]: Server ready on port 5055 ", + "2026-10-28T15:51:00.027Z [\u001b[34mdebug\u001b[39m][Jobs]: Starting scheduled job: Download Sync ", + "2026-10-28T15:52:00.025Z [\u001b[34mdebug\u001b[39m][Jobs]: Starting scheduled job: Download Sync ", + "2026-10-28T15:53:00.026Z [\u001b[34mdebug\u001b[39m][Jobs]: Starting scheduled job: Download Sync ", + "2026-10-28T15:54:00.028Z [\u001b[34mdebug\u001b[39m][Jobs]: Starting scheduled job: Download Sync ", + "2026-10-28T15:55:00.024Z [\u001b[34mdebug\u001b[39m][Jobs]: Starting scheduled job: Download Sync ", + "2026-10-28T15:55:00.031Z [\u001b[32minfo\u001b[39m][Jobs]: Starting scheduled job: Jellyfin Recently Added Scan ", + "2026-10-28T15:55:00.032Z [\u001b[32minfo\u001b[39m][Jellyfin Sync]: Scan starting {\"sessionId\":\"0a058d41-505e-4598-9a2e-06a61e572a9f\"}", + "2026-10-28T15:55:00.042Z [\u001b[32minfo\u001b[39m][Anime-List Sync]: Downloading latest mapping file ", + "2026-10-28T15:55:00.202Z [\u001b[32minfo\u001b[39m][Anime-List Sync]: Loading mapping file ", + "2026-10-28T15:55:00.608Z [\u001b[32minfo\u001b[39m][Anime-List Sync]: Loaded 10782 AniDB items from mapping file ", + "2026-10-28T15:55:00.609Z [\u001b[32minfo\u001b[39m][Jellyfin Sync]: Recently Added Scan Complete" + ], + "observables_after": { + "pinned_images": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "installed_images": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "catalog_images": { + "seerr": "ghcr.io/seerr-team/seerr:v3.5.1" + }, + "live_compose_image_lines": [ + "image: fallenbagel/jellyseerr:2.7.3" + ], + "docker_inspect": [ + "seerr fallenbagel/jellyseerr:2.7.3 running=true restarts=0" + ] + }, + "running_images_after": { + "seerr": "fallenbagel/jellyseerr:2.7.3" + }, + "seed_after_undo": true, + "verdict": "proven", + "why": "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "drill_head_after": "dff3cb84fcea54dcf4ac9dbb282660d1907873ab", + "drill_tree_equal_to_before": true, + "log": [ + "16:46:18 [X] stop -> 200 {'ok': True, 'message': 'Stack seerr stop completed'}", + "16:46:50 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'seerr', 'volumes_removed': [], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmaz\u00e1s nem t\u00e1rolt saj\u00e1t", + "16:46:59 [X] after remove: deployed=False leftovers=''", + "16:47:07 [5] the box's drill mirror now at 3884d373a", + "16:47:12 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "16:48:27 [1] deployed, controller state=running, pinned={'seerr': 'fallenbagel/jellyseerr:2.7.3'}", + "16:48:27 gate: seerr is gated \u2014 passed as the household (cookie set)", + "16:48:49 seerr: throwaway Jellyfin on traefik-public: user=204 complete=204", + "16:48:50 seerr: admin drilld31a3e56 signed in through Jellyfin; application title stored http=200", + "16:48:51 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True", + "16:48:52 drill commit 19cbcb22db30: seerr TO with failing checks", + "16:49:00 [5] the box's drill mirror now at 19cbcb22d", + "16:49:05 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "16:49:05 + 0.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "16:49:07 + 2.1s phase=safety-dump label=Adatb\u00e1zis pillanatk\u00e9p\u2026 err=None hold=None", + "16:49:08 + 3.1s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None", + "16:49:56 + 51.2s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "16:50:03 + 58.4s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None", + "16:55:06 + 361.7s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None", + "16:55:19 + 374.0s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None", + "16:55:41 seerr: the title read back True; sign-in http=200 (wrong password refused: http 401) ok=True", + "16:55:41 RESULT proven \u2014 TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "16:55:42 [X] stop -> 200 {'ok': True, 'message': 'Stack seerr stop completed'}", + "16:56:14 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'seerr', 'volumes_removed': ['seerr_seerr_config'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalma", + "16:56:22 [X] after remove: deployed=False leftovers=''", + "16:56:32 [5] the box's drill mirror now at dff3cb84fc", + "16:56:32 drill revert 19cbcb22db30: rc=0", + "16:56:32 drill templates/seerr equal to before: True" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/MV-termix.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/MV-termix.log new file mode 100644 index 00000000..51439a4a --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/MV-termix.log @@ -0,0 +1,114 @@ +[13:07:28] scratch drive folders cleared before FROM (R-656): none existed +[13:07:28] MV-termix: deploying termix at FROM {'termix': 'ghcr.io/lukegus/termix:2.9.2'} +[13:08:36] FROM settled=True in 68.0s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:08:36] fixture: the BOX walk's own (Termix), through upgrade_boxport +[13:08:36] termix: seeded user drill1380c770 via /users/create +[13:08:36] termix: readback found=True (http 200, control refused as it must) +[13:08:36] C1 (seed reads back BEFORE): True +[13:08:37] MV-termix: swapping to TO {'termix': 'ghcr.io/lukegus/termix:26.10.5'} +[13:09:07] TO up -d rc=0 +[13:09:38] TO settled=True in 30.9s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:09:38] migration lines observed: 2 +[13:09:38] termix: readback found=True (http 200, control refused as it must) +[13:09:38] RESULT (seed reads back AFTER): True +[13:09:38] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8080 +[13:09:54] + 15s termix=226M/256M peak=256M kills=0 rs=0 reqs=301 +[13:10:09] + 30s termix=234M/256M peak=256M kills=0 rs=0 reqs=601 +[13:10:24] + 45s termix=232M/256M peak=256M kills=0 rs=0 reqs=901 +[13:10:39] + 60s termix=232M/256M peak=256M kills=0 rs=0 reqs=1202 +[13:10:54] + 76s termix=233M/256M peak=256M kills=0 rs=0 reqs=1504 +[13:11:09] + 91s termix=233M/256M peak=256M kills=0 rs=0 reqs=1805 +[13:11:24] + 106s termix=233M/256M peak=256M kills=0 rs=0 reqs=2105 +[13:11:39] + 121s termix=232M/256M peak=256M kills=0 rs=0 reqs=2405 +[13:11:55] + 136s termix=243M/256M peak=256M kills=0 rs=0 reqs=2705 +[13:12:10] + 151s termix=236M/256M peak=256M kills=0 rs=0 reqs=3006 +[13:12:25] + 166s termix=236M/256M peak=256M kills=0 rs=0 reqs=3306 +[13:12:40] + 182s termix=236M/256M peak=256M kills=0 rs=0 reqs=3606 +[13:12:55] + 197s termix=252M/256M peak=256M kills=0 rs=0 reqs=3906 +[13:13:10] + 212s termix=252M/256M peak=256M kills=0 rs=0 reqs=4206 +[13:13:25] + 227s termix=253M/256M peak=256M kills=0 rs=0 reqs=4509 +[13:13:40] + 242s termix=253M/256M peak=256M kills=0 rs=0 reqs=4810 +[13:13:56] + 257s termix=252M/256M peak=256M kills=0 rs=0 reqs=5110 +[13:14:11] + 272s termix=252M/256M peak=256M kills=0 rs=0 reqs=5410 +[13:14:26] + 287s termix=252M/256M peak=256M kills=0 rs=0 reqs=5710 +[13:14:41] + 302s termix=250M/256M peak=256M kills=0 rs=0 reqs=6010 +[13:14:56] + 318s termix=251M/256M peak=256M kills=0 rs=0 reqs=6312 +[13:15:11] + 333s termix=251M/256M peak=256M kills=0 rs=0 reqs=6614 +[13:15:26] + 348s termix=252M/256M peak=256M kills=0 rs=0 reqs=6914 +[13:15:42] + 363s termix=252M/256M peak=256M kills=0 rs=0 reqs=7214 +[13:15:57] + 378s termix=252M/256M peak=256M kills=0 rs=0 reqs=7515 +[13:16:12] + 393s termix=252M/256M peak=256M kills=0 rs=0 reqs=7816 +[13:16:27] + 408s termix=252M/256M peak=256M kills=0 rs=0 reqs=8116 +[13:16:42] + 424s termix=253M/256M peak=256M kills=0 rs=0 reqs=8418 +[13:16:57] + 439s termix=253M/256M peak=256M kills=0 rs=0 reqs=8718 +[13:17:12] + 454s termix=253M/256M peak=256M kills=0 rs=0 reqs=9020 +[13:17:27] + 469s termix=253M/256M peak=256M kills=0 rs=0 reqs=9320 +[13:17:43] + 484s termix=253M/256M peak=256M kills=0 rs=0 reqs=9620 +[13:17:58] + 499s termix=253M/256M peak=256M kills=0 rs=0 reqs=9920 +[13:18:13] + 514s termix=253M/256M peak=256M kills=0 rs=0 reqs=10220 +[13:18:28] + 530s termix=253M/256M peak=256M kills=0 rs=0 reqs=10520 +[13:18:43] + 545s termix=253M/256M peak=256M kills=0 rs=0 reqs=10821 +[13:18:58] + 560s termix=254M/256M peak=256M kills=0 rs=0 reqs=11124 +[13:19:13] + 575s termix=253M/256M peak=256M kills=0 rs=0 reqs=11424 +[13:19:28] + 590s termix=253M/256M peak=256M kills=0 rs=0 reqs=11724 +[13:19:44] + 605s termix=253M/256M peak=256M kills=0 rs=0 reqs=12024 +[13:19:44] memory watch: killed=False tight=[] requests=12024 codes={'200': 12024} +[13:19:44] MV-termix: ABORT — putting the FROM images back +[13:20:16] termix: readback found=True (http 200, control refused as it must) +[13:20:16] ABORT: app came back in 30.9s; data present=True +{ + "harness_version": 5, + "edge": "MV-termix", + "app": "termix", + "note": "night 2026-09-23 within-a-major move: termix=ghcr.io/lukegus/termix:26.10.5", + "from": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Ktermix | [2:09:31 PM] [SUCCESS] [\ud83d\uddc4\ufe0f] Schema migration completed [op:schema_migration]", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.4, + "requested_s": 600, + "requests": 12024, + "codes": { + "200": 12024 + }, + "first_kill": null, + "containers": { + "termix": { + "limit": 268435456, + "peak": 268439552, + "peak_pct": 1.0, + "anon_peak_sampled": 141152256, + "anon_peak_pct": 0.526, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 30.9, + "measured_at": "2026-10-28T13:20:16Z", + "evidence": "evidence/MV-termix", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 768.3 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/abort-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/abort-states.json new file mode 100644 index 00000000..6a39e4b3 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/abort-states.json @@ -0,0 +1,8 @@ +{ + "termix": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/compose-final.log new file mode 100644 index 00000000..36b7edb3 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/compose-final.log @@ -0,0 +1,296 @@ +termix | Setting up user permissions (PUID: 1000, PGID: 1000)... +termix | usermod: no changes +termix | User node is now UID: 1000, GID: 1000 +termix | Loading persisted SSL settings from /app/data/.env +termix | Configuring web UI to run on port: 8080 +termix | SSL disabled - using HTTP-only configuration (default) +termix | Data directory is writable +termix | Starting nginx... +termix | Starting backend services... +termix | [2:20:01 PM] [INFO] [🚀] Termix backend initialization started [op:backend_init_start] +termix | [2:20:01 PM] [INFO] [📦] Termix Backend starting - Version: 2.9.2 [op:startup] +termix | [2:20:02 PM] [INFO] [🚀] SSL not enabled - skipping certificate generation [op:ssl_disabled_default] +termix | [2:20:02 PM] [SUCCESS] [🚀] SSL setup completed [op:backend_init_ssl] +termix | [2:20:02 PM] [INFO] [🗄️] Initializing SQLite database [op:db_init] +termix | [2:20:02 PM] [INFO] [🗄️] Performance indexes ready in 0ms [op:performance_index_create] +termix | [2:20:02 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [2:20:02 PM] [SUCCESS] [🚀] Database initialized (sqlite) [op:backend_init_db] +termix | [2:20:02 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] +termix | [2:20:03 PM] [INFO] [🗄️] Removed routine plugin audit entries [op:audit_noise_cleanup] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin acme-ssl@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin ai@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin alerts@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin automations@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin docker@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin file-manager@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin fleets@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin homepage@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin host-metrics@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin ldap@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin network-topology@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin opkssh@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin proxmox@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin remote-desktop@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin secret-sources@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin serial@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin session-recording@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin session-sharing@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin snippets@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin ssh-terminal@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin sso@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin step-ca@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin tailscale@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin telemetry@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin termix-identity@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin tmux-monitor@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin totp@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin tunnels@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin vault@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin wake-on-lan@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin warpgate@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin web-endpoint@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin webauthn@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [INFO] [🧩] Loaded plugin workspaces@1.0.0 [op:plugin_load] +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory acme-ssl.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory ai.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory automations.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory fleets.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory homepage.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory ldap.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory network-topology.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory opkssh.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory proxmox.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory secret-sources.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory session-recording.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory session-sharing.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory step-ca.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory tailscale.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory termix-identity.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory tmux-monitor.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory vault.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory wake-on-lan.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory warpgate.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [ERROR] [🧩] Skipping plugin directory web-endpoint.tmxplug in /app/data/plugins [op:plugin_load] +termix | Error: signature check failed: this build trusts no signing keys +termix | at PluginLoader.loadArtifact (file:///app/dist/backend/backend/plugins/loader.js:211:23) +termix | at async PluginLoader.loadAll (file:///app/dist/backend/backend/plugins/loader.js:163:40) +termix | at async initializePlugins (file:///app/dist/backend/backend/plugins/index.js:166:20) +termix | at async file:///app/dist/backend/backend/starter.js:209:28 +termix | [2:20:03 PM] [INFO] [🧩] Revoked ai capability "events:core": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked ai capability "process:spawn": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked ai capability "users:read": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked alerts capability "db:core-refs": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked file-manager capability "desktop:local": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked homepage capability "hosts:activity-provide": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked host-metrics capability "notify:send": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked remote-desktop capability "desktop:local": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked snippets capability "credentials:read": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked ssh-terminal capability "desktop:local": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked tunnels capability "desktop:local": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:03 PM] [INFO] [🧩] Revoked tunnels capability "secrets:own": the manifest no longer declares it [op:plugin_grants] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/acme-ssl [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin acme-ssl [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/workspaces [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Workspaces routes mounted at /plugin-api/workspaces [op:plugin:workspaces] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin workspaces [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/network-topology [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Network Topology routes mounted at /plugin-api/network-topology [op:plugin:network-topology] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin network-topology [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/snippets [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Snippets routes mounted at /plugin-api/snippets [op:plugin:snippets] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin snippets [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/fleets [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Fleets routes mounted at /plugin-api/fleets [op:plugin:fleets] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin fleets [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Plugin ssh-terminal optional service "tmux.sessions" is not available [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Plugin ssh-terminal optional service "sessions.sharing" is not available [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Plugin ssh-terminal optional service "recordings.writer" is not available [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin ssh-terminal serves /plugin-ws/ssh-terminal/terminal without core authentication [op:plugin_ws_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-ws/ssh-terminal/terminal [op:plugin_ws_mount] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/ssh-terminal [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] SSH terminal mounted at /plugin-ws/ssh-terminal/terminal [op:plugin:ssh-terminal] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin ssh-terminal [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/tunnels [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-ws/tunnels/c2s/stream [op:plugin_ws_mount] +termix | [2:20:04 PM] [INFO] [🧩] Tunnel routes mounted at /plugin-api/tunnels [op:plugin:tunnels] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin tunnels [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/docker [op:plugin_http_mount] +termix | [2:20:04 PM] [WARN] [🧩] Plugin docker serves /plugin-ws/docker/console without core authentication [op:plugin_ws_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-ws/docker/console [op:plugin_ws_mount] +termix | [2:20:04 PM] [INFO] [🧩] Docker mounted at /plugin-api/docker and /plugin-ws/docker/console [op:plugin:docker] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin docker [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/host-metrics [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Host Metrics mounted at /plugin-api/host-metrics [op:plugin:host-metrics] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin host-metrics [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/wake-on-lan [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Wake-on-LAN routes mounted at /plugin-api/wake-on-lan [op:plugin:wake-on-lan] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin wake-on-lan [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin automations serves 1 route(s) without authentication: /webhook/:token [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/automations [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin automations [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/homepage [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Homepage routes mounted at /plugin-api/homepage [op:plugin:homepage] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin homepage [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/ai [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] AI assistant routes mounted at /plugin-api/ai [op:plugin:ai] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin ai [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/alerts [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin alerts [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/file-manager [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] File manager mounted at /plugin-api/file-manager [op:plugin:file-manager] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin file-manager [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/ldap [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin ldap [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin opkssh serves 5 route(s) without authentication: /chooser/:requestId, /chooser/:requestId/*, /callback, /callback/:requestId, /callback/:requestId/* [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/opkssh [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin opkssh [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/proxmox [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Proxmox routes mounted at /plugin-api/proxmox [op:plugin:proxmox] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin proxmox [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/session-recording [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Session Recording routes mounted at /plugin-api/session-recording [op:plugin:session-recording] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin session-recording [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/remote-desktop [op:plugin_http_mount] +termix | [2:20:04 PM] [WARN] [🧩] Plugin remote-desktop serves /plugin-ws/remote-desktop/display without core authentication [op:plugin_ws_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted raw upgrade /plugin-ws/remote-desktop/display [op:plugin_ws_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin remote-desktop [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/secret-sources [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Secret sources routes mounted at /plugin-api/secret-sources [op:plugin:secret-sources] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin secret-sources [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-ws/serial/console [op:plugin_ws_mount] +termix | [2:20:04 PM] [INFO] [🧩] Serial console mounted at /plugin-ws/serial/console [op:plugin:serial] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin serial [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin session-sharing serves 2 route(s) without authentication: /resolve/:linkToken, /guest/:token [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/session-sharing [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Session sharing mounted at /plugin-api/session-sharing [op:plugin:session-sharing] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin session-sharing [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin sso serves 4 route(s) without authentication: /start, /callback, /backchannel-logout, /config [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/sso [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin sso [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin step-ca serves 1 route(s) without authentication: /callback [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/step-ca [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin step-ca [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/tailscale [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Tailscale routes mounted at /plugin-api/tailscale [op:plugin:tailscale] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin tailscale [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/telemetry [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin telemetry [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin termix-identity serves 2 route(s) without authentication: /u/:handle, /u/:handle/:algo [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/termix-identity [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin termix-identity [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/tmux-monitor [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Tmux Monitor routes mounted at /plugin-api/tmux-monitor [op:plugin:tmux-monitor] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin tmux-monitor [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/totp [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin totp [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin vault serves 1 route(s) without authentication: /oidc/callback [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/vault [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin vault [op:plugin_activate] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin warpgate [op:plugin_activate] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/web-endpoint [op:plugin_http_mount] +termix | [2:20:04 PM] [INFO] [🧩] Web Endpoint routes mounted at /plugin-api/web-endpoint [op:plugin:web-endpoint] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin web-endpoint [op:plugin_activate] +termix | [2:20:04 PM] [WARN] [🧩] Plugin webauthn serves 1 route(s) without authentication: /authenticate/options [op:plugin_http_public] +termix | [2:20:04 PM] [INFO] [🧩] Mounted /plugin-api/webauthn [op:plugin_http_mount] +termix | [2:20:04 PM] [SUCCESS] [🧩] Activated plugin webauthn [op:plugin_activate] +termix | [2:20:05 PM] [INFO] [🚀] Loaded 34 plugin(s) [op:plugin_init] +termix | [2:20:05 PM] [SUCCESS] [🚀] Termix backend started successfully [op:backend_init_complete,duration:3278ms] +termix | [2:20:16 PM] [INFO] [🔐] User login request received [op:user_login_request] +termix | [2:20:16 PM] [SUCCESS] [🔐] User login successful [op:user_login_complete,user:erOsjw18K2uJv32xZpt9m] +termix | [2:20:16 PM] [INFO] [🔐] User login request received [op:user_login_request] +termix | [2:20:16 PM] [WARN] [🔐] Login failed: user not found [op:user_login] diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/engine-state.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/memory-samples.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/memory-samples.json new file mode 100644 index 00000000..8fe6f020 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/memory-samples.json @@ -0,0 +1,762 @@ +[ + { + "t": 15.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 237457408, + "peak": 268439552, + "anon": 141119488, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 301 + }, + { + "t": 30.3, + "containers": { + "termix": { + "limit": 268435456, + "current": 245866496, + "peak": 268439552, + "anon": 141152256, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 601 + }, + { + "t": 45.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 243888128, + "peak": 268439552, + "anon": 139042816, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 901 + }, + { + "t": 60.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 244166656, + "peak": 268439552, + "anon": 139042816, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1202 + }, + { + "t": 75.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 244748288, + "peak": 268439552, + "anon": 139042816, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1504 + }, + { + "t": 90.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 244330496, + "peak": 268439552, + "anon": 139042816, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1805 + }, + { + "t": 105.9, + "containers": { + "termix": { + "limit": 268435456, + "current": 244559872, + "peak": 268439552, + "anon": 139042816, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2105 + }, + { + "t": 121.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 244215808, + "peak": 268439552, + "anon": 139051008, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2405 + }, + { + "t": 136.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 255594496, + "peak": 268439552, + "anon": 139558912, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2705 + }, + { + "t": 151.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 247951360, + "peak": 268439552, + "anon": 132026368, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3006 + }, + { + "t": 166.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 247816192, + "peak": 268439552, + "anon": 132055040, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3306 + }, + { + "t": 181.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 248016896, + "peak": 268439552, + "anon": 132444160, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3606 + }, + { + "t": 196.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 264421376, + "peak": 268439552, + "anon": 137977856, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3906 + }, + { + "t": 211.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 264630272, + "peak": 268439552, + "anon": 137981952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4206 + }, + { + "t": 226.9, + "containers": { + "termix": { + "limit": 268435456, + "current": 265302016, + "peak": 268439552, + "anon": 137981952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4509 + }, + { + "t": 242.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 265375744, + "peak": 268439552, + "anon": 137981952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4810 + }, + { + "t": 257.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 265146368, + "peak": 268439552, + "anon": 137981952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5110 + }, + { + "t": 272.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 264978432, + "peak": 268439552, + "anon": 137994240, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5410 + }, + { + "t": 287.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 265023488, + "peak": 268439552, + "anon": 137994240, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5710 + }, + { + "t": 302.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 262983680, + "peak": 268439552, + "anon": 136015872, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6010 + }, + { + "t": 317.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 264159232, + "peak": 268439552, + "anon": 136269824, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6312 + }, + { + "t": 332.8, + "containers": { + "termix": { + "limit": 268435456, + "current": 263876608, + "peak": 268439552, + "anon": 136634368, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6614 + }, + { + "t": 347.9, + "containers": { + "termix": { + "limit": 268435456, + "current": 264839168, + "peak": 268439552, + "anon": 137089024, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6914 + }, + { + "t": 363.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 264441856, + "peak": 268439552, + "anon": 137097216, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7214 + }, + { + "t": 378.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 264998912, + "peak": 268439552, + "anon": 137101312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7515 + }, + { + "t": 393.3, + "containers": { + "termix": { + "limit": 268435456, + "current": 264732672, + "peak": 268439552, + "anon": 137109504, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7816 + }, + { + "t": 408.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 264605696, + "peak": 268439552, + "anon": 137113600, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8116 + }, + { + "t": 423.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 265306112, + "peak": 268439552, + "anon": 137748480, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8418 + }, + { + "t": 438.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 265609216, + "peak": 268439552, + "anon": 137752576, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8718 + }, + { + "t": 453.9, + "containers": { + "termix": { + "limit": 268435456, + "current": 265965568, + "peak": 268439552, + "anon": 137752576, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9020 + }, + { + "t": 469.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 265478144, + "peak": 268439552, + "anon": 137756672, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9320 + }, + { + "t": 484.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 265314304, + "peak": 268439552, + "anon": 137760768, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9620 + }, + { + "t": 499.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 265371648, + "peak": 268439552, + "anon": 137773056, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9920 + }, + { + "t": 514.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 265445376, + "peak": 268439552, + "anon": 137773056, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10220 + }, + { + "t": 529.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 265736192, + "peak": 268439552, + "anon": 137789440, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10520 + }, + { + "t": 544.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 266149888, + "peak": 268439552, + "anon": 137830400, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10821 + }, + { + "t": 559.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 266727424, + "peak": 268439552, + "anon": 137854976, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11124 + }, + { + "t": 574.8, + "containers": { + "termix": { + "limit": 268435456, + "current": 266268672, + "peak": 268439552, + "anon": 137859072, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11424 + }, + { + "t": 590.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 265801728, + "peak": 268439552, + "anon": 137863168, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11724 + }, + { + "t": 605.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 266174464, + "peak": 268439552, + "anon": 137871360, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 12024 + } +] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/migration-lines.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/migration-lines.txt new file mode 100644 index 00000000..dfb2ca32 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/migration-lines.txt @@ -0,0 +1,2 @@ +termix | [2:09:31 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [2:09:31 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/run.log new file mode 100644 index 00000000..ab0f8535 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/run.log @@ -0,0 +1,58 @@ +[13:07:28] scratch drive folders cleared before FROM (R-656): none existed +[13:07:28] MV-termix: deploying termix at FROM {'termix': 'ghcr.io/lukegus/termix:2.9.2'} +[13:08:36] FROM settled=True in 68.0s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:08:36] fixture: the BOX walk's own (Termix), through upgrade_boxport +[13:08:36] termix: seeded user drill1380c770 via /users/create +[13:08:36] termix: readback found=True (http 200, control refused as it must) +[13:08:36] C1 (seed reads back BEFORE): True +[13:08:37] MV-termix: swapping to TO {'termix': 'ghcr.io/lukegus/termix:26.10.5'} +[13:09:07] TO up -d rc=0 +[13:09:38] TO settled=True in 30.9s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[13:09:38] migration lines observed: 2 +[13:09:38] termix: readback found=True (http 200, control refused as it must) +[13:09:38] RESULT (seed reads back AFTER): True +[13:09:38] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8080 +[13:09:54] + 15s termix=226M/256M peak=256M kills=0 rs=0 reqs=301 +[13:10:09] + 30s termix=234M/256M peak=256M kills=0 rs=0 reqs=601 +[13:10:24] + 45s termix=232M/256M peak=256M kills=0 rs=0 reqs=901 +[13:10:39] + 60s termix=232M/256M peak=256M kills=0 rs=0 reqs=1202 +[13:10:54] + 76s termix=233M/256M peak=256M kills=0 rs=0 reqs=1504 +[13:11:09] + 91s termix=233M/256M peak=256M kills=0 rs=0 reqs=1805 +[13:11:24] + 106s termix=233M/256M peak=256M kills=0 rs=0 reqs=2105 +[13:11:39] + 121s termix=232M/256M peak=256M kills=0 rs=0 reqs=2405 +[13:11:55] + 136s termix=243M/256M peak=256M kills=0 rs=0 reqs=2705 +[13:12:10] + 151s termix=236M/256M peak=256M kills=0 rs=0 reqs=3006 +[13:12:25] + 166s termix=236M/256M peak=256M kills=0 rs=0 reqs=3306 +[13:12:40] + 182s termix=236M/256M peak=256M kills=0 rs=0 reqs=3606 +[13:12:55] + 197s termix=252M/256M peak=256M kills=0 rs=0 reqs=3906 +[13:13:10] + 212s termix=252M/256M peak=256M kills=0 rs=0 reqs=4206 +[13:13:25] + 227s termix=253M/256M peak=256M kills=0 rs=0 reqs=4509 +[13:13:40] + 242s termix=253M/256M peak=256M kills=0 rs=0 reqs=4810 +[13:13:56] + 257s termix=252M/256M peak=256M kills=0 rs=0 reqs=5110 +[13:14:11] + 272s termix=252M/256M peak=256M kills=0 rs=0 reqs=5410 +[13:14:26] + 287s termix=252M/256M peak=256M kills=0 rs=0 reqs=5710 +[13:14:41] + 302s termix=250M/256M peak=256M kills=0 rs=0 reqs=6010 +[13:14:56] + 318s termix=251M/256M peak=256M kills=0 rs=0 reqs=6312 +[13:15:11] + 333s termix=251M/256M peak=256M kills=0 rs=0 reqs=6614 +[13:15:26] + 348s termix=252M/256M peak=256M kills=0 rs=0 reqs=6914 +[13:15:42] + 363s termix=252M/256M peak=256M kills=0 rs=0 reqs=7214 +[13:15:57] + 378s termix=252M/256M peak=256M kills=0 rs=0 reqs=7515 +[13:16:12] + 393s termix=252M/256M peak=256M kills=0 rs=0 reqs=7816 +[13:16:27] + 408s termix=252M/256M peak=256M kills=0 rs=0 reqs=8116 +[13:16:42] + 424s termix=253M/256M peak=256M kills=0 rs=0 reqs=8418 +[13:16:57] + 439s termix=253M/256M peak=256M kills=0 rs=0 reqs=8718 +[13:17:12] + 454s termix=253M/256M peak=256M kills=0 rs=0 reqs=9020 +[13:17:27] + 469s termix=253M/256M peak=256M kills=0 rs=0 reqs=9320 +[13:17:43] + 484s termix=253M/256M peak=256M kills=0 rs=0 reqs=9620 +[13:17:58] + 499s termix=253M/256M peak=256M kills=0 rs=0 reqs=9920 +[13:18:13] + 514s termix=253M/256M peak=256M kills=0 rs=0 reqs=10220 +[13:18:28] + 530s termix=253M/256M peak=256M kills=0 rs=0 reqs=10520 +[13:18:43] + 545s termix=253M/256M peak=256M kills=0 rs=0 reqs=10821 +[13:18:58] + 560s termix=254M/256M peak=256M kills=0 rs=0 reqs=11124 +[13:19:13] + 575s termix=253M/256M peak=256M kills=0 rs=0 reqs=11424 +[13:19:28] + 590s termix=253M/256M peak=256M kills=0 rs=0 reqs=11724 +[13:19:44] + 605s termix=253M/256M peak=256M kills=0 rs=0 reqs=12024 +[13:19:44] memory watch: killed=False tight=[] requests=12024 codes={'200': 12024} +[13:19:44] MV-termix: ABORT — putting the FROM images back +[13:20:16] termix: readback found=True (http 200, control refused as it must) +[13:20:16] ABORT: app came back in 30.9s; data present=True \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-full.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-full.log new file mode 100644 index 00000000..ec0ec51c --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-full.log @@ -0,0 +1,51 @@ +termix | Setting up user permissions (PUID: 1000, PGID: 1000)... +termix | usermod: no changes +termix | User node is now UID: 1000, GID: 1000 +termix | Loading persisted SSL settings from /app/data/.env +termix | Configuring web UI to run on port: 8080 +termix | SSL disabled - using HTTP-only configuration (default) +termix | Data directory is writable +termix | Starting nginx... +termix | Starting backend services... +termix | [2:09:30 PM] [INFO] [🚀] Termix backend initialization started [op:backend_init_start] +termix | [2:09:30 PM] [INFO] [📦] Termix Backend starting - Version: 26.10.5 [op:startup] +termix | [2:09:31 PM] [INFO] [🚀] SSL not enabled - skipping certificate generation [op:ssl_disabled_default] +termix | [2:09:31 PM] [SUCCESS] [🚀] SSL setup completed [op:backend_init_ssl] +termix | [2:09:31 PM] [INFO] [🗄️] Initializing SQLite database [op:db_init] +termix | [2:09:31 PM] [INFO] [🗄️] Performance indexes ready in 0ms [op:performance_index_create] +termix | [2:09:31 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [2:09:31 PM] [SUCCESS] [🚀] Database initialized (sqlite) [op:backend_init_db] +termix | [2:09:31 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] +termix | [2:09:31 PM] [INFO] [🗄️] Removed routine plugin audit entries [op:audit_noise_cleanup] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin alerts@1.1.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin classic-layout@1.0.2 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin classic-themes@1.0.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin credential-tools@1.0.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin docker@1.2.1 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin file-manager@1.1.1 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin host-metrics@1.2.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin host-status@1.0.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin import-export@1.0.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin remote-desktop@1.2.1 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin serial@1.0.2 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin snippets@1.1.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin ssh-terminal@1.1.1 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin sso@1.0.4 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin sync@1.0.1 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin telemetry@1.0.2 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin totp@1.0.2 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin tunnels@1.2.1 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin webauthn@1.1.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Loaded plugin workspaces@1.1.0 [op:plugin_load] +termix | [2:09:32 PM] [INFO] [🧩] Registered bundled plugin classic-layout [op:plugin_seed] +termix | [2:09:32 PM] [INFO] [🧩] Registered bundled plugin classic-themes [op:plugin_seed] +termix | [2:09:32 PM] [INFO] [🧩] Registered bundled plugin credential-tools [op:plugin_seed] +termix | [2:09:32 PM] [INFO] [🧩] Registered bundled plugin host-status [op:plugin_seed] +termix | [2:09:32 PM] [INFO] [🧩] Registered bundled plugin import-export [op:plugin_seed] +termix | [2:09:32 PM] [INFO] [🧩] Registered bundled plugin sync [op:plugin_seed] +termix | [2:09:34 PM] [INFO] [🧩] Loaded plugin acme-ssl@1.1.0 [op:plugin_load] +termix | [2:09:34 PM] [INFO] [🧩] Restored acme-ssl@1.1.0 from the registry [op:plugin_restore_missing] +termix | [2:09:37 PM] [INFO] [🧩] Loaded plugin ai@1.3.0 [op:plugin_load] +termix | [2:09:37 PM] [INFO] [🧩] Restored ai@1.3.0 from the registry [op:plugin_restore_missing] +termix | [2:09:37 PM] [INFO] [🧩] Loaded plugin automations@1.2.0 [op:plugin_load] +termix | [2:09:37 PM] [INFO] [🧩] Restored automations@1.2.0 from the registry [op:plugin_restore_missing] diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-states.json new file mode 100644 index 00000000..6a39e4b3 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/to-states.json @@ -0,0 +1,8 @@ +{ + "termix": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/verdict.json new file mode 100644 index 00000000..15e90d34 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/bench/evidence/MV-termix/verdict.json @@ -0,0 +1,56 @@ +{ + "harness_version": 5, + "edge": "MV-termix", + "app": "termix", + "note": "night 2026-09-23 within-a-major move: termix=ghcr.io/lukegus/termix:26.10.5", + "from": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Ktermix | [2:09:31 PM] [SUCCESS] [\ud83d\uddc4\ufe0f] Schema migration completed [op:schema_migration]", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.4, + "requested_s": 600, + "requests": 12024, + "codes": { + "200": 12024 + }, + "first_kill": null, + "containers": { + "termix": { + "limit": 268435456, + "peak": 268439552, + "peak_pct": 1.0, + "anon_peak_sampled": 141152256, + "anon_peak_pct": 0.526, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 30.9, + "measured_at": "2026-10-28T13:20:16Z", + "evidence": "evidence/MV-termix", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 768.3 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/box-verdict-termix.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/box-verdict-termix.json new file mode 100644 index 00000000..690a9689 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/box-verdict-termix.json @@ -0,0 +1,220 @@ +{ + "app": "termix", + "walk": "security", + "box_walk_version": 1, + "verdict": "proven", + "venue": "box 9202 (drill catalog), the guarded Update", + "from": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "observables_before": { + "pinned_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "installed_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "catalog_images": null, + "live_compose_image_lines": [ + "image: ghcr.io/lukegus/termix:2.9.2" + ], + "docker_inspect": [ + "termix ghcr.io/lukegus/termix:2.9.2 running=true restarts=0" + ] + }, + "setup_gate_before": { + "browser": { + "status": "302", + "redirect": "https://felhom.enkisfelhom.hu/__gate/start?…" + }, + "script": { + "status": "401", + "redirect": null + } + }, + "seed": "read_back", + "drill_commit": "69b61c69d26e", + "sync_waited_s": 4.5, + "badge_before": { + "hu": [ + { + "title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.", + "text": "Frissítés elérhető — ma" + } + ], + "en": [ + { + "title": "A newer version of this app is available. Select the Update button to start it.", + "text": "Update available — today" + } + ] + }, + "measured_at": "2026-10-28T13:28:48Z", + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztonsági mentés készül a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 12.3, + "phase": "safety-dump", + "label": "Adatbázis pillanatkép…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 13.3, + "phase": "pulling", + "label": "Új verzió letöltése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 33.8, + "phase": "copying", + "label": "Az adatok másolása a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 51.2, + "phase": "verifying", + "label": "Működés ellenőrzése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 71.7, + "phase": "done", + "label": "Frissítve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 71.7, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "observables_after": { + "pinned_images": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "installed_images": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "catalog_images": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "live_compose_image_lines": [ + "image: ghcr.io/lukegus/termix:26.10.5" + ], + "docker_inspect": [ + "termix ghcr.io/lukegus/termix:26.10.5 running=true restarts=0" + ] + }, + "badge_after": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "state_after": "running", + "hold_after": null, + "to_digests": { + "termix": "sha256:28a627c1e2a568ea8c2d3fd83861675fdd3d8327a09f5a245c399b4864ad5ceb" + }, + "four_observables": { + "pinned": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "installed": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "catalog": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "live_compose": [ + "ghcr.io/lukegus/termix:26.10.5" + ] + }, + "seed_read_after": true, + "setup_gate_after": { + "browser": { + "status": "200", + "redirect": null + }, + "script": { + "status": "200", + "redirect": null + } + }, + "memory": { + "soak_s": 600, + "interval_s": 10, + "samples": 60, + "containers": { + "termix": { + "samples": 60, + "anon_peak_bytes": 134029312, + "limit_bytes": 268435456, + "anon_peak_pct": 49.9, + "cgroup_peak_pct": 100.1, + "oom_kill_delta": 0, + "oom_killed_flag": false, + "restarts_delta": 0, + "running_all_samples": true, + "cgroup": "/sys/fs/cgroup/system.slice/docker-745345c6011321862f4c497f00f96fe49ea15f1482c5d664f1dc55a330a564d9.scope" + } + }, + "oom_kills": 0, + "restarts": 0, + "peak_pct": 49.9 + }, + "why": "the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back", + "log": [ + "14:27:24 [5] the box's drill mirror now at a19ffb289", + "14:27:29 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}", + "14:28:29 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.9.2'}", + "14:28:29 gate: termix is gated — passed as the household (cookie set)", + "14:28:33 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__gate/start?…'}, 'script': {'status': '401', 'redirect': None}}", + "14:28:33 termix: seeded user drill3fc6d6b3 via /users/create", + "14:28:33 termix: readback found=True (http 200, control refused as it must)", + "14:28:34 [5] drill commit 69b61c69d26e: termix ghcr.io/lukegus/termix:2.9.2 -> ghcr.io/lukegus/termix:26.10.5 (push rc=0)", + "14:28:43 [5] the box's drill mirror now at 69b61c69d", + "14:28:48 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "14:28:48 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None", + "14:29:00 + 12.3s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None", + "14:29:01 + 13.3s phase=pulling label=Új verzió letöltése… err=None hold=None", + "14:29:22 + 33.8s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None", + "14:29:39 + 51.2s phase=verifying label=Működés ellenőrzése… err=None hold=None", + "14:30:00 + 71.7s phase=done label=Frissítve err=None hold=None", + "14:30:18 termix: readback found=True (http 200, control refused as it must)", + "14:30:18 [7] memory soak 600 s …", + "14:40:24 [7] soak: peak 49.9% of the limit (anon), kills 0, restarts 0" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/walk.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/walk.txt new file mode 100644 index 00000000..b66df1b3 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/box/walk.txt @@ -0,0 +1,24 @@ +14:27:24 [5] the box's drill mirror now at a19ffb289 +14:27:29 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:28:29 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.9.2'} +14:28:29 gate: termix is gated — passed as the household (cookie set) +14:28:33 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__gate/start?…'}, 'script': {'status': '401', 'redirect': None}} +14:28:33 termix: seeded user drill3fc6d6b3 via /users/create +14:28:33 termix: readback found=True (http 200, control refused as it must) +14:28:34 [5] drill commit 69b61c69d26e: termix ghcr.io/lukegus/termix:2.9.2 -> ghcr.io/lukegus/termix:26.10.5 (push rc=0) +14:28:43 [5] the box's drill mirror now at 69b61c69d +14:28:48 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:28:48 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +14:29:00 + 12.3s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +14:29:01 + 13.3s phase=pulling label=Új verzió letöltése… err=None hold=None +14:29:22 + 33.8s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +14:29:39 + 51.2s phase=verifying label=Működés ellenőrzése… err=None hold=None +14:30:00 + 71.7s phase=done label=Frissítve err=None hold=None +14:30:18 termix: readback found=True (http 200, control refused as it must) +14:30:18 [7] memory soak 600 s … +14:40:24 [7] soak: peak 49.9% of the limit (anon), kills 0, restarts 0 +14:40:24 [9] verdict proven -> /tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/p2/box/termix-26105/verdict.json +14:40:24 RESULT proven — the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back +14:40:24 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:40:56 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:41:05 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/run.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/run.txt new file mode 100644 index 00000000..a0280c2c --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/run.txt @@ -0,0 +1,24 @@ +14:55:05 [5] the box's drill mirror now at 7011ef316 +14:55:10 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:56:20 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.9.2'} +14:56:20 gate: termix is gated — passed as the household (cookie set) +14:56:21 termix: seeded user drill5eec15db via /users/create +14:56:21 termix: readback found=True (http 200, control refused as it must) +14:56:22 drill commit 9e086d4dad4f: termix TO with failing checks +14:56:31 [5] the box's drill mirror now at 9e086d4da +14:56:36 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:56:36 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +14:56:50 + 13.3s phase=pulling label=Új verzió letöltése… err=None hold=None +14:57:21 + 45.1s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +14:57:35 + 58.4s phase=starting label=Indítás az új verzióval… err=None hold=None +14:57:36 + 59.4s phase=verifying label=Működés ellenőrzése… err=None hold=None +15:02:38 + 361.7s phase=undoing label=Visszaállítás az előző változatra… err=None hold=None +15:03:06 + 389.4s phase=undone label=Visszaállítva az előző változatra err=None hold=None +15:03:34 termix: readback found=True (http 200, control refused as it must) +15:03:34 RESULT proven — TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back +15:03:34 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +15:04:06 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +15:04:15 [X] after remove: deployed=False leftovers='' +15:04:24 [5] the box's drill mirror now at 4834d9dce +15:04:24 drill revert 9e086d4dad4f: rc=0 +15:04:24 drill templates/termix equal to before: True diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/undo-proof-termix.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/undo-proof-termix.json new file mode 100644 index 00000000..2d44ebf1 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-26105/undo/undo-proof-termix.json @@ -0,0 +1,175 @@ +{ + "app": "termix", + "from": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "started": "2026-10-28T13:54:56Z", + "drill_head_before": "7011ef31674f7efa8c524cb3a0cfc32827e57d9c", + "failing_compose_main_healthcheck": [ + "test: [\"CMD\", \"false\"]" + ], + "failing_probe": true, + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 13.3, + "phase": "pulling", + "label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 45.1, + "phase": "copying", + "label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 58.4, + "phase": "starting", + "label": "Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 59.4, + "phase": "verifying", + "label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 361.7, + "phase": "undoing", + "label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 389.4, + "phase": "undone", + "label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 389.4, + "final_phase": "undone", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "to_log_while_verifying": [ + "[2:58:05 PM] [SUCCESS] [\ud83e\udde9] Activated plugin ai [op:plugin_activate]", + "[2:58:05 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/ldap [op:plugin_http_mount]", + "[2:58:05 PM] [SUCCESS] [\ud83e\udde9] Activated plugin ldap [op:plugin_activate]", + "[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin opkssh serves 5 route(s) without authentication: /chooser/:requestId, /chooser/:requestId/*, /callback, /callback/:requestId, /callback/:requestId/* [op:plugin_http_public]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/opkssh [op:plugin_http_mount]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin opkssh [op:plugin_activate]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin proxmox: 0002_mysql_indexes [op:plugin_migrate]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/proxmox [op:plugin_http_mount]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Proxmox routes mounted at /plugin-api/proxmox [op:plugin:proxmox]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin proxmox [op:plugin_activate]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/secret-sources [op:plugin_http_mount]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Secret sources routes mounted at /plugin-api/secret-sources [op:plugin:secret-sources]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin secret-sources [op:plugin_activate]", + "[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin session-sharing serves 2 route(s) without authentication: /resolve/:linkToken, /guest/:token [op:plugin_http_public]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/session-sharing [op:plugin_http_mount]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Session sharing mounted at /plugin-api/session-sharing [op:plugin:session-sharing]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin session-sharing [op:plugin_activate]", + "[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin step-ca serves 1 route(s) without authentication: /callback [op:plugin_http_public]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/step-ca [op:plugin_http_mount]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin step-ca [op:plugin_activate]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tailscale [op:plugin_http_mount]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Tailscale routes mounted at /plugin-api/tailscale [op:plugin:tailscale]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tailscale [op:plugin_activate]", + "[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin termix-identity serves 2 route(s) without authentication: /u/:handle, /u/:handle/:algo [op:plugin_http_public]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/termix-identity [op:plugin_http_mount]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin termix-identity [op:plugin_activate]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tmux-monitor [op:plugin_http_mount]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Tmux Monitor routes mounted at /plugin-api/tmux-monitor [op:plugin:tmux-monitor]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tmux-monitor [op:plugin_activate]", + "[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin vault serves 1 route(s) without authentication: /oidc/callback [op:plugin_http_public]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/vault [op:plugin_http_mount]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin vault [op:plugin_activate]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin warpgate [op:plugin_activate]", + "[2:58:06 PM] [WARN] [\ud83e\udde9] Plugin web-endpoint serves 1 route(s) without authentication: /p/:token/* [op:plugin_http_public]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/web-endpoint [op:plugin_http_mount]", + "[2:58:06 PM] [INFO] [\ud83e\udde9] Web Endpoint routes mounted at /plugin-api/web-endpoint [op:plugin:web-endpoint]", + "[2:58:06 PM] [SUCCESS] [\ud83e\udde9] Activated plugin web-endpoint [op:plugin_activate]", + "[2:58:06 PM] [INFO] [\ud83d\ude80] Loaded 40 plugin(s) [op:plugin_init]", + "[2:58:06 PM] [SUCCESS] [\ud83d\ude80] Termix backend started successfully [op:backend_init_complete,duration:18712ms]", + "[3:01:05 PM] [INFO] [\ud83e\udde9] Sent daily usage statistics [op:plugin:telemetry]" + ], + "observables_after": { + "pinned_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "installed_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "catalog_images": { + "termix": "ghcr.io/lukegus/termix:26.10.5" + }, + "live_compose_image_lines": [ + "image: ghcr.io/lukegus/termix:2.9.2" + ], + "docker_inspect": [ + "termix ghcr.io/lukegus/termix:2.9.2 running=true restarts=0" + ] + }, + "running_images_after": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "seed_after_undo": true, + "verdict": "proven", + "why": "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "drill_head_after": "4834d9dceb7ef88702562cae12d05e96938b0d30", + "drill_tree_equal_to_before": true, + "log": [ + "14:55:05 [5] the box's drill mirror now at 7011ef316", + "14:55:10 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "14:56:20 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.9.2'}", + "14:56:20 gate: termix is gated \u2014 passed as the household (cookie set)", + "14:56:21 termix: seeded user drill5eec15db via /users/create", + "14:56:21 termix: readback found=True (http 200, control refused as it must)", + "14:56:22 drill commit 9e086d4dad4f: termix TO with failing checks", + "14:56:31 [5] the box's drill mirror now at 9e086d4da", + "14:56:36 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "14:56:36 + 0.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "14:56:50 + 13.3s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None", + "14:57:21 + 45.1s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "14:57:35 + 58.4s phase=starting label=Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026 err=None hold=None", + "14:57:36 + 59.4s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None", + "15:02:38 + 361.7s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None", + "15:03:06 + 389.4s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None", + "15:03:34 termix: readback found=True (http 200, control refused as it must)", + "15:03:34 RESULT proven \u2014 TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "15:03:34 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'}", + "15:04:06 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm", + "15:04:15 [X] after remove: deployed=False leftovers=''", + "15:04:24 [5] the box's drill mirror now at 4834d9dce", + "15:04:24 drill revert 9e086d4dad4f: rc=0", + "15:04:24 drill templates/termix equal to before: True" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/MV-termix.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/MV-termix.log new file mode 100644 index 00000000..7e2f1760 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/MV-termix.log @@ -0,0 +1,114 @@ +[12:19:56] scratch drive folders cleared before FROM (R-656): none existed +[12:19:56] MV-termix: deploying termix at FROM {'termix': 'ghcr.io/lukegus/termix:2.8.0'} +[12:20:54] FROM settled=True in 30.9s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:20:54] fixture: the BOX walk's own (Termix), through upgrade_boxport +[12:20:54] termix: seeded user drillad5146d6 via /users/create +[12:20:54] termix: readback found=True (http 200, control refused as it must) +[12:20:54] C1 (seed reads back BEFORE): True +[12:20:54] MV-termix: swapping to TO {'termix': 'ghcr.io/lukegus/termix:2.9.2'} +[12:21:22] TO up -d rc=0 +[12:22:19] TO settled=True in 56.9s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:22:19] migration lines observed: 6 +[12:22:20] termix: readback found=True (http 200, control refused as it must) +[12:22:20] RESULT (seed reads back AFTER): True +[12:22:20] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8080 +[12:22:35] + 15s termix=162M/256M peak=173M kills=0 rs=0 reqs=304 +[12:22:50] + 30s termix=157M/256M peak=173M kills=0 rs=0 reqs=604 +[12:23:05] + 45s termix=158M/256M peak=173M kills=0 rs=0 reqs=904 +[12:23:20] + 60s termix=156M/256M peak=173M kills=0 rs=0 reqs=1204 +[12:23:36] + 76s termix=157M/256M peak=173M kills=0 rs=0 reqs=1504 +[12:23:51] + 91s termix=157M/256M peak=173M kills=0 rs=0 reqs=1804 +[12:24:06] + 106s termix=150M/256M peak=173M kills=0 rs=0 reqs=2104 +[12:24:21] + 121s termix=150M/256M peak=173M kills=0 rs=0 reqs=2404 +[12:24:36] + 136s termix=151M/256M peak=173M kills=0 rs=0 reqs=2708 +[12:24:51] + 151s termix=151M/256M peak=173M kills=0 rs=0 reqs=3008 +[12:25:06] + 166s termix=152M/256M peak=173M kills=0 rs=0 reqs=3308 +[12:25:21] + 182s termix=153M/256M peak=173M kills=0 rs=0 reqs=3608 +[12:25:37] + 197s termix=151M/256M peak=173M kills=0 rs=0 reqs=3908 +[12:25:52] + 212s termix=151M/256M peak=173M kills=0 rs=0 reqs=4208 +[12:26:07] + 227s termix=151M/256M peak=173M kills=0 rs=0 reqs=4509 +[12:26:22] + 242s termix=151M/256M peak=173M kills=0 rs=0 reqs=4810 +[12:26:37] + 257s termix=152M/256M peak=173M kills=0 rs=0 reqs=5110 +[12:26:52] + 272s termix=151M/256M peak=173M kills=0 rs=0 reqs=5412 +[12:27:07] + 287s termix=151M/256M peak=173M kills=0 rs=0 reqs=5712 +[12:27:22] + 303s termix=150M/256M peak=173M kills=0 rs=0 reqs=6013 +[12:27:38] + 318s termix=151M/256M peak=173M kills=0 rs=0 reqs=6314 +[12:27:53] + 333s termix=153M/256M peak=173M kills=0 rs=0 reqs=6614 +[12:28:08] + 348s termix=152M/256M peak=173M kills=0 rs=0 reqs=6914 +[12:28:23] + 363s termix=153M/256M peak=173M kills=0 rs=0 reqs=7217 +[12:28:38] + 378s termix=154M/256M peak=173M kills=0 rs=0 reqs=7518 +[12:28:53] + 393s termix=153M/256M peak=173M kills=0 rs=0 reqs=7818 +[12:29:08] + 408s termix=153M/256M peak=173M kills=0 rs=0 reqs=8118 +[12:29:23] + 424s termix=153M/256M peak=173M kills=0 rs=0 reqs=8418 +[12:29:39] + 439s termix=153M/256M peak=173M kills=0 rs=0 reqs=8718 +[12:29:54] + 454s termix=153M/256M peak=173M kills=0 rs=0 reqs=9018 +[12:30:09] + 469s termix=152M/256M peak=173M kills=0 rs=0 reqs=9318 +[12:30:24] + 484s termix=153M/256M peak=173M kills=0 rs=0 reqs=9618 +[12:30:39] + 499s termix=153M/256M peak=173M kills=0 rs=0 reqs=9918 +[12:30:54] + 514s termix=153M/256M peak=173M kills=0 rs=0 reqs=10218 +[12:31:09] + 530s termix=153M/256M peak=173M kills=0 rs=0 reqs=10518 +[12:31:24] + 545s termix=153M/256M peak=173M kills=0 rs=0 reqs=10818 +[12:31:40] + 560s termix=153M/256M peak=173M kills=0 rs=0 reqs=11118 +[12:31:55] + 575s termix=154M/256M peak=173M kills=0 rs=0 reqs=11422 +[12:32:10] + 590s termix=154M/256M peak=173M kills=0 rs=0 reqs=11722 +[12:32:25] + 605s termix=153M/256M peak=173M kills=0 rs=0 reqs=12022 +[12:32:25] memory watch: killed=False tight=[] requests=12022 codes={'200': 12022} +[12:32:25] MV-termix: ABORT — putting the FROM images back +[12:32:57] termix: readback found=True (http 200, control refused as it must) +[12:32:57] ABORT: app came back in 30.9s; data present=True +{ + "harness_version": 5, + "edge": "MV-termix", + "app": "termix", + "note": "night 2026-09-23 within-a-major move: termix=ghcr.io/lukegus/termix:2.9.2", + "from": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Ktermix | [1:21:40 PM] [INFO] [\ud83d\uddc4\ufe0f] Database layer pre-upgrade backup created [op:database_layer_preupgrade_backup_created]", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.4, + "requested_s": 600, + "requests": 12022, + "codes": { + "200": 12022 + }, + "first_kill": null, + "containers": { + "termix": { + "limit": 268435456, + "peak": 181923840, + "peak_pct": 0.678, + "anon_peak_sampled": 117604352, + "anon_peak_pct": 0.438, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 56.9, + "measured_at": "2026-10-28T12:32:57Z", + "evidence": "evidence/MV-termix", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 781.3 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/abort-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/abort-states.json new file mode 100644 index 00000000..6a39e4b3 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/abort-states.json @@ -0,0 +1,8 @@ +{ + "termix": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/compose-final.log new file mode 100644 index 00000000..5778e186 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/compose-final.log @@ -0,0 +1,29 @@ +termix | Setting up user permissions (PUID: 1000, PGID: 1000)... +termix | usermod: no changes +termix | User node is now UID: 1000, GID: 1000 +termix | Loading persisted SSL settings from /app/data/.env +termix | Configuring web UI to run on port: 8080 +termix | SSL disabled - using HTTP-only configuration (default) +termix | Data directory is writable +termix | OPKSSH directory is writable +termix | OPKSSH binary directory found at /app/data/opkssh +termix | Starting nginx... +termix | Starting backend services... +termix | [1:32:31 PM] [INFO] [🚀] Termix backend initialization started [op:backend_init_start] +termix | [1:32:31 PM] [INFO] [📦] Termix Backend starting - Version: 2.8.0 [op:startup] +termix | [1:32:31 PM] [INFO] [🗄️] Database layer pre-upgrade backup created [op:database_layer_preupgrade_backup_created] +termix | [1:32:31 PM] [INFO] [🚀] SSL not enabled - skipping certificate generation [op:ssl_disabled_default] +termix | [1:32:31 PM] [SUCCESS] [🚀] SSL setup completed [op:backend_init_ssl] +termix | [1:32:31 PM] [INFO] [🗄️] Initializing SQLite database [op:db_init] +termix | [1:32:31 PM] [INFO] [🗄️] Performance indexes ready in 1ms [op:performance_index_create] +termix | [1:32:31 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [1:32:31 PM] [SUCCESS] [🚀] Database initialized (sqlite) [op:backend_init_db] +termix | [1:32:31 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] +termix | [1:32:33 PM] [INFO] [🚀] Guacamole server initialized [op:guac_init] +termix | [1:32:33 PM] [SUCCESS] [🚀] Termix backend started successfully [op:backend_init_complete,duration:1748ms] +termix | [1:32:33 PM] [INFO] [📈] Sent daily usage heartbeat [op:analytics_heartbeat_sent] +termix | [1:32:35 PM] [INFO] [📡] Found 0 autostart hosts and 0 total hosts for endpointHost resolution +termix | [1:32:57 PM] [INFO] [🔐] User login request received [op:user_login_request] +termix | [1:32:57 PM] [SUCCESS] [🔐] User login successful [op:user_login_complete,user:5Fs4CJ1YTMxvQG_-KFAzU,session:FwnE-SnTqgSKAYg0iQpww] +termix | [1:32:57 PM] [INFO] [🔐] User login request received [op:user_login_request] +termix | [1:32:57 PM] [WARN] [🔐] Login failed: user not found [op:user_login] diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/engine-state.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/memory-samples.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/memory-samples.json new file mode 100644 index 00000000..2296bb6c --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/memory-samples.json @@ -0,0 +1,762 @@ +[ + { + "t": 15.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 170094592, + "peak": 181923840, + "anon": 117604352, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 304 + }, + { + "t": 30.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 165572608, + "peak": 181923840, + "anon": 113020928, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 604 + }, + { + "t": 45.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 165994496, + "peak": 181923840, + "anon": 113205248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 904 + }, + { + "t": 60.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 164257792, + "peak": 181923840, + "anon": 112222208, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1204 + }, + { + "t": 75.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 164651008, + "peak": 181923840, + "anon": 112345088, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1504 + }, + { + "t": 90.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 165478400, + "peak": 181923840, + "anon": 112672768, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1804 + }, + { + "t": 105.9, + "containers": { + "termix": { + "limit": 268435456, + "current": 157818880, + "peak": 181923840, + "anon": 105185280, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2104 + }, + { + "t": 121.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 158027776, + "peak": 181923840, + "anon": 105877504, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2404 + }, + { + "t": 136.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 158887936, + "peak": 181923840, + "anon": 106237952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2708 + }, + { + "t": 151.3, + "containers": { + "termix": { + "limit": 268435456, + "current": 158810112, + "peak": 181923840, + "anon": 105660416, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3008 + }, + { + "t": 166.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 159948800, + "peak": 181923840, + "anon": 107597824, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3308 + }, + { + "t": 181.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 160612352, + "peak": 181923840, + "anon": 107995136, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3608 + }, + { + "t": 196.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 159170560, + "peak": 181923840, + "anon": 107048960, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3908 + }, + { + "t": 211.8, + "containers": { + "termix": { + "limit": 268435456, + "current": 158351360, + "peak": 181923840, + "anon": 105943040, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4208 + }, + { + "t": 226.9, + "containers": { + "termix": { + "limit": 268435456, + "current": 158720000, + "peak": 181923840, + "anon": 106274816, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4509 + }, + { + "t": 242.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 159330304, + "peak": 181923840, + "anon": 106606592, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4810 + }, + { + "t": 257.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 159465472, + "peak": 181923840, + "anon": 106946560, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5110 + }, + { + "t": 272.3, + "containers": { + "termix": { + "limit": 268435456, + "current": 159092736, + "peak": 181923840, + "anon": 106385408, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5412 + }, + { + "t": 287.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 159031296, + "peak": 181923840, + "anon": 106729472, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5712 + }, + { + "t": 302.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 158273536, + "peak": 181923840, + "anon": 106184704, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6013 + }, + { + "t": 317.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 159199232, + "peak": 181923840, + "anon": 106508288, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6314 + }, + { + "t": 332.8, + "containers": { + "termix": { + "limit": 268435456, + "current": 160768000, + "peak": 181923840, + "anon": 108290048, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6614 + }, + { + "t": 348.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 159772672, + "peak": 181923840, + "anon": 107606016, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6914 + }, + { + "t": 363.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 160948224, + "peak": 181923840, + "anon": 107913216, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7217 + }, + { + "t": 378.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 161591296, + "peak": 181923840, + "anon": 108240896, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7518 + }, + { + "t": 393.4, + "containers": { + "termix": { + "limit": 268435456, + "current": 160481280, + "peak": 181923840, + "anon": 107638784, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7818 + }, + { + "t": 408.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 160911360, + "peak": 181923840, + "anon": 107950080, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8118 + }, + { + "t": 423.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 161333248, + "peak": 181923840, + "anon": 108285952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8418 + }, + { + "t": 438.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 160444416, + "peak": 181923840, + "anon": 107593728, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8718 + }, + { + "t": 453.8, + "containers": { + "termix": { + "limit": 268435456, + "current": 160923648, + "peak": 181923840, + "anon": 108023808, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9018 + }, + { + "t": 469.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 160178176, + "peak": 181923840, + "anon": 107536384, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9318 + }, + { + "t": 484.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 160813056, + "peak": 181923840, + "anon": 107839488, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9618 + }, + { + "t": 499.2, + "containers": { + "termix": { + "limit": 268435456, + "current": 161468416, + "peak": 181923840, + "anon": 108163072, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9918 + }, + { + "t": 514.3, + "containers": { + "termix": { + "limit": 268435456, + "current": 160518144, + "peak": 181923840, + "anon": 107642880, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10218 + }, + { + "t": 529.5, + "containers": { + "termix": { + "limit": 268435456, + "current": 161099776, + "peak": 181923840, + "anon": 107945984, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10518 + }, + { + "t": 544.6, + "containers": { + "termix": { + "limit": 268435456, + "current": 161296384, + "peak": 181923840, + "anon": 108273664, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 10818 + }, + { + "t": 559.7, + "containers": { + "termix": { + "limit": 268435456, + "current": 160882688, + "peak": 181923840, + "anon": 107589632, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11118 + }, + { + "t": 574.8, + "containers": { + "termix": { + "limit": 268435456, + "current": 162177024, + "peak": 181923840, + "anon": 108048384, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11422 + }, + { + "t": 590.0, + "containers": { + "termix": { + "limit": 268435456, + "current": 161759232, + "peak": 181923840, + "anon": 108388352, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 11722 + }, + { + "t": 605.1, + "containers": { + "termix": { + "limit": 268435456, + "current": 161034240, + "peak": 181923840, + "anon": 107679744, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 12022 + } +] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/migration-lines.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/migration-lines.txt new file mode 100644 index 00000000..7fe8a920 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/migration-lines.txt @@ -0,0 +1,6 @@ +termix | [1:21:40 PM] [INFO] [🗄️] Database layer pre-upgrade backup created [op:database_layer_preupgrade_backup_created] +termix | [1:21:40 PM] [INFO] [🗄️] Relaxed plugin_permission_grants.granted_by to allow bundled grants [op:schema_migration] +termix | [1:21:40 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [1:21:40 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] +termix | [1:21:44 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [1:21:44 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/run.log new file mode 100644 index 00000000..f32fcbe6 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/run.log @@ -0,0 +1,58 @@ +[12:19:56] scratch drive folders cleared before FROM (R-656): none existed +[12:19:56] MV-termix: deploying termix at FROM {'termix': 'ghcr.io/lukegus/termix:2.8.0'} +[12:20:54] FROM settled=True in 30.9s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:20:54] fixture: the BOX walk's own (Termix), through upgrade_boxport +[12:20:54] termix: seeded user drillad5146d6 via /users/create +[12:20:54] termix: readback found=True (http 200, control refused as it must) +[12:20:54] C1 (seed reads back BEFORE): True +[12:20:54] MV-termix: swapping to TO {'termix': 'ghcr.io/lukegus/termix:2.9.2'} +[12:21:22] TO up -d rc=0 +[12:22:19] TO settled=True in 56.9s :: {"termix": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:22:19] migration lines observed: 6 +[12:22:20] termix: readback found=True (http 200, control refused as it must) +[12:22:20] RESULT (seed reads back AFTER): True +[12:22:20] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:8080 +[12:22:35] + 15s termix=162M/256M peak=173M kills=0 rs=0 reqs=304 +[12:22:50] + 30s termix=157M/256M peak=173M kills=0 rs=0 reqs=604 +[12:23:05] + 45s termix=158M/256M peak=173M kills=0 rs=0 reqs=904 +[12:23:20] + 60s termix=156M/256M peak=173M kills=0 rs=0 reqs=1204 +[12:23:36] + 76s termix=157M/256M peak=173M kills=0 rs=0 reqs=1504 +[12:23:51] + 91s termix=157M/256M peak=173M kills=0 rs=0 reqs=1804 +[12:24:06] + 106s termix=150M/256M peak=173M kills=0 rs=0 reqs=2104 +[12:24:21] + 121s termix=150M/256M peak=173M kills=0 rs=0 reqs=2404 +[12:24:36] + 136s termix=151M/256M peak=173M kills=0 rs=0 reqs=2708 +[12:24:51] + 151s termix=151M/256M peak=173M kills=0 rs=0 reqs=3008 +[12:25:06] + 166s termix=152M/256M peak=173M kills=0 rs=0 reqs=3308 +[12:25:21] + 182s termix=153M/256M peak=173M kills=0 rs=0 reqs=3608 +[12:25:37] + 197s termix=151M/256M peak=173M kills=0 rs=0 reqs=3908 +[12:25:52] + 212s termix=151M/256M peak=173M kills=0 rs=0 reqs=4208 +[12:26:07] + 227s termix=151M/256M peak=173M kills=0 rs=0 reqs=4509 +[12:26:22] + 242s termix=151M/256M peak=173M kills=0 rs=0 reqs=4810 +[12:26:37] + 257s termix=152M/256M peak=173M kills=0 rs=0 reqs=5110 +[12:26:52] + 272s termix=151M/256M peak=173M kills=0 rs=0 reqs=5412 +[12:27:07] + 287s termix=151M/256M peak=173M kills=0 rs=0 reqs=5712 +[12:27:22] + 303s termix=150M/256M peak=173M kills=0 rs=0 reqs=6013 +[12:27:38] + 318s termix=151M/256M peak=173M kills=0 rs=0 reqs=6314 +[12:27:53] + 333s termix=153M/256M peak=173M kills=0 rs=0 reqs=6614 +[12:28:08] + 348s termix=152M/256M peak=173M kills=0 rs=0 reqs=6914 +[12:28:23] + 363s termix=153M/256M peak=173M kills=0 rs=0 reqs=7217 +[12:28:38] + 378s termix=154M/256M peak=173M kills=0 rs=0 reqs=7518 +[12:28:53] + 393s termix=153M/256M peak=173M kills=0 rs=0 reqs=7818 +[12:29:08] + 408s termix=153M/256M peak=173M kills=0 rs=0 reqs=8118 +[12:29:23] + 424s termix=153M/256M peak=173M kills=0 rs=0 reqs=8418 +[12:29:39] + 439s termix=153M/256M peak=173M kills=0 rs=0 reqs=8718 +[12:29:54] + 454s termix=153M/256M peak=173M kills=0 rs=0 reqs=9018 +[12:30:09] + 469s termix=152M/256M peak=173M kills=0 rs=0 reqs=9318 +[12:30:24] + 484s termix=153M/256M peak=173M kills=0 rs=0 reqs=9618 +[12:30:39] + 499s termix=153M/256M peak=173M kills=0 rs=0 reqs=9918 +[12:30:54] + 514s termix=153M/256M peak=173M kills=0 rs=0 reqs=10218 +[12:31:09] + 530s termix=153M/256M peak=173M kills=0 rs=0 reqs=10518 +[12:31:24] + 545s termix=153M/256M peak=173M kills=0 rs=0 reqs=10818 +[12:31:40] + 560s termix=153M/256M peak=173M kills=0 rs=0 reqs=11118 +[12:31:55] + 575s termix=154M/256M peak=173M kills=0 rs=0 reqs=11422 +[12:32:10] + 590s termix=154M/256M peak=173M kills=0 rs=0 reqs=11722 +[12:32:25] + 605s termix=153M/256M peak=173M kills=0 rs=0 reqs=12022 +[12:32:25] memory watch: killed=False tight=[] requests=12022 codes={'200': 12022} +[12:32:25] MV-termix: ABORT — putting the FROM images back +[12:32:57] termix: readback found=True (http 200, control refused as it must) +[12:32:57] ABORT: app came back in 30.9s; data present=True \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-full.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-full.log new file mode 100644 index 00000000..2d025566 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-full.log @@ -0,0 +1,328 @@ +termix | Setting up user permissions (PUID: 1000, PGID: 1000)... +termix | usermod: no changes +termix | User node is now UID: 1000, GID: 1000 +termix | Loading persisted SSL settings from /app/data/.env +termix | Configuring web UI to run on port: 8080 +termix | SSL disabled - using HTTP-only configuration (default) +termix | Data directory is writable +termix | Starting nginx... +termix | Starting backend services... +termix | [1:21:39 PM] [INFO] [🚀] Termix backend initialization started [op:backend_init_start] +termix | [1:21:39 PM] [INFO] [📦] Termix Backend starting - Version: 2.9.2 [op:startup] +termix | [1:21:40 PM] [INFO] [🗄️] Database layer pre-upgrade backup created [op:database_layer_preupgrade_backup_created] +termix | [1:21:40 PM] [INFO] [🚀] SSL not enabled - skipping certificate generation [op:ssl_disabled_default] +termix | [1:21:40 PM] [SUCCESS] [🚀] SSL setup completed [op:backend_init_ssl] +termix | [1:21:40 PM] [INFO] [🗄️] Initializing SQLite database [op:db_init] +termix | [1:21:40 PM] [INFO] [🗄️] Relaxed plugin_permission_grants.granted_by to allow bundled grants [op:schema_migration] +termix | [1:21:40 PM] [INFO] [🗄️] Performance indexes ready in 0ms [op:performance_index_create] +termix | [1:21:40 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [1:21:40 PM] [SUCCESS] [🚀] Database initialized (sqlite) [op:backend_init_db] +termix | [1:21:40 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] +termix | [1:21:41 PM] [INFO] [🗄️] Recorded 3 permission(s) already held by a role [op:prime_known_permissions] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin acme-ssl@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin ai@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin alerts@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin automations@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin docker@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin file-manager@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin fleets@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin homepage@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin host-metrics@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin ldap@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin network-topology@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin opkssh@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin proxmox@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin remote-desktop@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin secret-sources@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin serial@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin session-recording@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin session-sharing@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin snippets@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin ssh-terminal@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin sso@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin step-ca@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin tailscale@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin telemetry@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin termix-identity@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin tmux-monitor@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin totp@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin tunnels@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin vault@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin wake-on-lan@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin warpgate@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin web-endpoint@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin webauthn@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Loaded plugin workspaces@1.0.0 [op:plugin_load] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin acme-ssl [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin ai [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin alerts [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin automations [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin docker [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin file-manager [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin fleets [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin homepage [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin host-metrics [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin ldap [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin network-topology [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin opkssh [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin proxmox [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin remote-desktop [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin secret-sources [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin serial [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin session-recording [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin session-sharing [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin snippets [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin ssh-terminal [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin sso [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin step-ca [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin tailscale [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin telemetry [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin termix-identity [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin tmux-monitor [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin totp [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin tunnels [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin vault [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin wake-on-lan [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin warpgate [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin web-endpoint [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin webauthn [op:plugin_seed] +termix | [1:21:41 PM] [INFO] [🧩] Registered bundled plugin workspaces [op:plugin_seed] +termix | Setting up user permissions (PUID: 1000, PGID: 1000)... +termix | usermod: no changes +termix | User node is now UID: 1000, GID: 1000 +termix | Loading persisted SSL settings from /app/data/.env +termix | Configuring web UI to run on port: 8080 +termix | SSL disabled - using HTTP-only configuration (default) +termix | Data directory is writable +termix | Starting nginx... +termix | Starting backend services... +termix | [1:21:43 PM] [INFO] [🚀] Termix backend initialization started [op:backend_init_start] +termix | [1:21:43 PM] [INFO] [📦] Termix Backend starting - Version: 2.9.2 [op:startup] +termix | [1:21:44 PM] [INFO] [🚀] SSL not enabled - skipping certificate generation [op:ssl_disabled_default] +termix | [1:21:44 PM] [SUCCESS] [🚀] SSL setup completed [op:backend_init_ssl] +termix | [1:21:44 PM] [INFO] [🗄️] Initializing SQLite database [op:db_init] +termix | [1:21:44 PM] [INFO] [🗄️] Performance indexes ready in 0ms [op:performance_index_create] +termix | [1:21:44 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [1:21:44 PM] [SUCCESS] [🚀] Database initialized (sqlite) [op:backend_init_db] +termix | [1:21:44 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin acme-ssl@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin ai@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin alerts@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin automations@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin docker@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin file-manager@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin fleets@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin homepage@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin host-metrics@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin ldap@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin network-topology@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin opkssh@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin proxmox@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin remote-desktop@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin secret-sources@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin serial@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin session-recording@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin session-sharing@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin snippets@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin ssh-terminal@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin sso@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin step-ca@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin tailscale@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin telemetry@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin termix-identity@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin tmux-monitor@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin totp@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin tunnels@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin vault@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin wake-on-lan@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin warpgate@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin web-endpoint@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin webauthn@1.0.0 [op:plugin_load] +termix | [1:21:45 PM] [INFO] [🧩] Loaded plugin workspaces@1.0.0 [op:plugin_load] +termix | Setting up user permissions (PUID: 1000, PGID: 1000)... +termix | usermod: no changes +termix | User node is now UID: 1000, GID: 1000 +termix | Loading persisted SSL settings from /app/data/.env +termix | Configuring web UI to run on port: 8080 +termix | SSL disabled - using HTTP-only configuration (default) +termix | Data directory is writable +termix | Starting nginx... +termix | Starting backend services... +termix | [1:21:48 PM] [INFO] [🚀] Termix backend initialization started [op:backend_init_start] +termix | [1:21:48 PM] [INFO] [📦] Termix Backend starting - Version: 2.9.2 [op:startup] +termix | [1:21:49 PM] [INFO] [🚀] SSL not enabled - skipping certificate generation [op:ssl_disabled_default] +termix | [1:21:49 PM] [SUCCESS] [🚀] SSL setup completed [op:backend_init_ssl] +termix | [1:21:49 PM] [INFO] [🗄️] Initializing SQLite database [op:db_init] +termix | [1:21:49 PM] [INFO] [🗄️] Performance indexes ready in 0ms [op:performance_index_create] +termix | [1:21:49 PM] [SUCCESS] [🗄️] Schema migration completed [op:schema_migration] +termix | [1:21:49 PM] [SUCCESS] [🚀] Database initialized (sqlite) [op:backend_init_db] +termix | [1:21:49 PM] [INFO] [🗄️] User key migration pass finished [op:dek_migration_boot] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin acme-ssl@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin ai@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin alerts@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin automations@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin docker@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin file-manager@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin fleets@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin homepage@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin host-metrics@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin ldap@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin network-topology@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin opkssh@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin proxmox@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin remote-desktop@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin secret-sources@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin serial@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin session-recording@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin session-sharing@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin snippets@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin ssh-terminal@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin sso@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin step-ca@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin tailscale@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin telemetry@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin termix-identity@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin tmux-monitor@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin totp@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin tunnels@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin vault@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin wake-on-lan@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin warpgate@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin web-endpoint@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin webauthn@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Loaded plugin workspaces@1.0.0 [op:plugin_load] +termix | [1:21:50 PM] [INFO] [🧩] Mounted /plugin-api/acme-ssl [op:plugin_http_mount] +termix | [1:21:50 PM] [SUCCESS] [🧩] Activated plugin acme-ssl [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Applied 1 migration(s) for plugin workspaces: 0001_adopt_user_workspaces [op:plugin_migrate] +termix | [1:21:50 PM] [INFO] [🗄️] Moved 1 Host Metrics setting(s) and 0 host(s) into plugin settings [op:host_metrics_settings_migration] +termix | [1:21:50 PM] [INFO] [🧩] Mounted /plugin-api/workspaces [op:plugin_http_mount] +termix | [1:21:50 PM] [INFO] [🧩] Workspaces routes mounted at /plugin-api/workspaces [op:plugin:workspaces] +termix | [1:21:50 PM] [SUCCESS] [🧩] Activated plugin workspaces [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Applied 1 migration(s) for plugin network-topology: 0001_adopt_network_topology [op:plugin_migrate] +termix | [1:21:50 PM] [INFO] [🧩] Mounted /plugin-api/network-topology [op:plugin_http_mount] +termix | [1:21:50 PM] [INFO] [🧩] Network Topology routes mounted at /plugin-api/network-topology [op:plugin:network-topology] +termix | [1:21:50 PM] [SUCCESS] [🧩] Activated plugin network-topology [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Applied 1 migration(s) for plugin snippets: 0001_adopt_snippets_tables [op:plugin_migrate] +termix | [1:21:50 PM] [INFO] [🧩] Mounted /plugin-api/snippets [op:plugin_http_mount] +termix | [1:21:50 PM] [INFO] [🧩] Snippets routes mounted at /plugin-api/snippets [op:plugin:snippets] +termix | [1:21:50 PM] [SUCCESS] [🧩] Activated plugin snippets [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Applied 1 migration(s) for plugin fleets: 0001_adopt_fleets [op:plugin_migrate] +termix | [1:21:50 PM] [INFO] [🧩] Mounted /plugin-api/fleets [op:plugin_http_mount] +termix | [1:21:50 PM] [INFO] [🧩] Fleets routes mounted at /plugin-api/fleets [op:plugin:fleets] +termix | [1:21:50 PM] [SUCCESS] [🧩] Activated plugin fleets [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Plugin ssh-terminal optional service "tmux.sessions" is not available [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Plugin ssh-terminal optional service "sessions.sharing" is not available [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Plugin ssh-terminal optional service "recordings.writer" is not available [op:plugin_activate] +termix | [1:21:50 PM] [INFO] [🧩] Applied 1 migration(s) for plugin ssh-terminal: 0001_adopt_command_history [op:plugin_migrate] +termix | [1:21:51 PM] [WARN] [🧩] Plugin ssh-terminal serves /plugin-ws/ssh-terminal/terminal without core authentication [op:plugin_ws_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-ws/ssh-terminal/terminal [op:plugin_ws_mount] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/ssh-terminal [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] SSH terminal mounted at /plugin-ws/ssh-terminal/terminal [op:plugin:ssh-terminal] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin ssh-terminal [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin tunnels: 0001_adopt_c2s_tunnel_presets [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/tunnels [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-ws/tunnels/c2s/stream [op:plugin_ws_mount] +termix | [1:21:51 PM] [INFO] [🧩] Tunnel routes mounted at /plugin-api/tunnels [op:plugin:tunnels] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin tunnels [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/docker [op:plugin_http_mount] +termix | [1:21:51 PM] [WARN] [🧩] Plugin docker serves /plugin-ws/docker/console without core authentication [op:plugin_ws_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-ws/docker/console [op:plugin_ws_mount] +termix | [1:21:51 PM] [INFO] [🧩] Docker mounted at /plugin-api/docker and /plugin-ws/docker/console [op:plugin:docker] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin docker [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin host-metrics: 0001_adopt_host_metrics_tables [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/host-metrics [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Host Metrics mounted at /plugin-api/host-metrics [op:plugin:host-metrics] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin host-metrics [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/wake-on-lan [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Wake-on-LAN routes mounted at /plugin-api/wake-on-lan [op:plugin:wake-on-lan] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin wake-on-lan [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 4 migration(s) for plugin automations: 0001_adopt_automations, 0002_unlink_channels, 0003_host_maintenance, 0004_rename_maintenance_index [op:plugin_migrate] +termix | [1:21:51 PM] [WARN] [🧩] Plugin automations serves 1 route(s) without authentication: /webhook/:token [op:plugin_http_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/automations [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin automations [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin homepage: 0001_adopt_homepage_tables [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/homepage [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Homepage routes mounted at /plugin-api/homepage [op:plugin:homepage] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin homepage [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 2 migration(s) for plugin ai: 0001_adopt_ai_tables, 0002_provider_sync [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/ai [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] AI assistant routes mounted at /plugin-api/ai [op:plugin:ai] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin ai [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin alerts: 0001_create_alerts [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/alerts [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin alerts [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin file-manager: 0001_adopt_file_manager_tables [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/file-manager [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] File manager mounted at /plugin-api/file-manager [op:plugin:file-manager] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin file-manager [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin ldap: 0001_create_providers [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/ldap [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin ldap [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin opkssh: 0001_adopt_opkssh_tokens [op:plugin_migrate] +termix | [1:21:51 PM] [WARN] [🧩] Plugin opkssh serves 5 route(s) without authentication: /chooser/:requestId, /chooser/:requestId/*, /callback, /callback/:requestId, /callback/:requestId/* [op:plugin_http_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/opkssh [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin opkssh [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin proxmox: 0001_adopt_proxmox_stats [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/proxmox [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Proxmox routes mounted at /plugin-api/proxmox [op:plugin:proxmox] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin proxmox [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin session-recording: 0001_adopt_session_recordings [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/session-recording [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Session Recording routes mounted at /plugin-api/session-recording [op:plugin:session-recording] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin session-recording [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/remote-desktop [op:plugin_http_mount] +termix | [1:21:51 PM] [WARN] [🧩] Plugin remote-desktop serves /plugin-ws/remote-desktop/display without core authentication [op:plugin_ws_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted raw upgrade /plugin-ws/remote-desktop/display [op:plugin_ws_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin remote-desktop [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin secret-sources: 0001_adopt_secret_sources [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/secret-sources [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Secret sources routes mounted at /plugin-api/secret-sources [op:plugin:secret-sources] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin secret-sources [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-ws/serial/console [op:plugin_ws_mount] +termix | [1:21:51 PM] [INFO] [🧩] Serial console mounted at /plugin-ws/serial/console [op:plugin:serial] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin serial [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin session-sharing: 0001_adopt_session_sharing [op:plugin_migrate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/session-sharing [op:plugin_http_mount] +termix | [1:21:51 PM] [WARN] [🧩] Plugin session-sharing serves 2 route(s) without authentication: /resolve/:linkToken, /guest/:token [op:plugin_http_public] +termix | [1:21:51 PM] [INFO] [🧩] Session sharing mounted at /plugin-api/session-sharing [op:plugin:session-sharing] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin session-sharing [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 2 migration(s) for plugin sso: 0001_adopt_sso_providers, 0002_legacy_callback [op:plugin_migrate] +termix | [1:21:51 PM] [WARN] [🧩] Plugin sso serves 4 route(s) without authentication: /start, /callback, /backchannel-logout, /config [op:plugin_http_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/sso [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin sso [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin step-ca: 0001_create_certs [op:plugin_migrate] +termix | [1:21:51 PM] [WARN] [🧩] Plugin step-ca serves 1 route(s) without authentication: /callback [op:plugin_http_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/step-ca [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin step-ca [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/tailscale [op:plugin_http_mount] +termix | [1:21:51 PM] [INFO] [🧩] Tailscale routes mounted at /plugin-api/tailscale [op:plugin:tailscale] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin tailscale [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/telemetry [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin telemetry [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin termix-identity: 0001_adopt_termix_identity_tables [op:plugin_migrate] +termix | [1:21:51 PM] [WARN] [🧩] Plugin termix-identity serves 2 route(s) without authentication: /u/:handle, /u/:handle/:algo [op:plugin_http_public] +termix | [1:21:51 PM] [INFO] [🧩] Mounted /plugin-api/termix-identity [op:plugin_http_mount] +termix | [1:21:51 PM] [SUCCESS] [🧩] Activated plugin termix-identity [op:plugin_activate] +termix | [1:21:51 PM] [INFO] [🧩] Applied 1 migration(s) for plugin tmux-monitor: 0001_adopt_tmux_session_tags [op:plugin_migrate] +termix | [1:21:52 PM] [INFO] [🧩] Mounted /plugin-api/tmux-monitor [op:plugin_http_mount] +termix | [1:21:52 PM] [INFO] [🧩] Tmux Monitor routes mounted at /plugin-api/tmux-monitor [op:plugin:tmux-monitor] +termix | [1:21:52 PM] [SUCCESS] [🧩] Activated plugin tmux-monitor [op:plugin_activate] +termix | [1:21:52 PM] [INFO] [🧩] Applied 1 migration(s) for plugin totp: 0001_create_enrollments [op:plugin_migrate] +termix | [1:21:52 PM] [INFO] [🧩] Mounted /plugin-api/totp [op:plugin_http_mount] +termix | [1:21:52 PM] [SUCCESS] [🧩] Activated plugin totp [op:plugin_activate] +termix | [1:21:52 PM] [INFO] [🧩] Applied 1 migration(s) for plugin vault: 0001_adopt_vault_tables [op:plugin_migrate] +termix | [1:21:52 PM] [WARN] [🧩] Plugin vault serves 1 route(s) without authentication: /oidc/callback [op:plugin_http_public] +termix | [1:21:52 PM] [INFO] [🧩] Mounted /plugin-api/vault [op:plugin_http_mount] +termix | [1:21:52 PM] [SUCCESS] [🧩] Activated plugin vault [op:plugin_activate] +termix | [1:21:52 PM] [SUCCESS] [🧩] Activated plugin warpgate [op:plugin_activate] +termix | [1:21:52 PM] [INFO] [🧩] Mounted /plugin-api/web-endpoint [op:plugin_http_mount] +termix | [1:21:52 PM] [INFO] [🧩] Web Endpoint routes mounted at /plugin-api/web-endpoint [op:plugin:web-endpoint] +termix | [1:21:52 PM] [SUCCESS] [🧩] Activated plugin web-endpoint [op:plugin_activate] +termix | [1:21:52 PM] [INFO] [🧩] Applied 1 migration(s) for plugin webauthn: 0001_adopt_webauthn_credentials [op:plugin_migrate] +termix | [1:21:52 PM] [WARN] [🧩] Plugin webauthn serves 1 route(s) without authentication: /authenticate/options [op:plugin_http_public] +termix | [1:21:52 PM] [INFO] [🧩] Mounted /plugin-api/webauthn [op:plugin_http_mount] +termix | [1:21:52 PM] [SUCCESS] [🧩] Activated plugin webauthn [op:plugin_activate] +termix | [1:21:52 PM] [INFO] [🚀] Loaded 34 plugin(s) [op:plugin_init] +termix | [1:21:52 PM] [INFO] [🗄️] Moved 2 Remote Desktop setting(s), 0 user(s) and 0 host(s) into plugin settings [op:remote_desktop_settings_migration] +termix | [1:21:52 PM] [INFO] [🗄️] Moved telemetry settings into plugin settings [op:telemetry_settings_migration] +termix | [1:21:52 PM] [SUCCESS] [🚀] Termix backend started successfully [op:backend_init_complete,duration:3747ms] diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-states.json new file mode 100644 index 00000000..6a39e4b3 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/to-states.json @@ -0,0 +1,8 @@ +{ + "termix": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/verdict.json new file mode 100644 index 00000000..3d0dece6 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/bench/evidence/MV-termix/verdict.json @@ -0,0 +1,56 @@ +{ + "harness_version": 5, + "edge": "MV-termix", + "app": "termix", + "note": "night 2026-09-23 within-a-major move: termix=ghcr.io/lukegus/termix:2.9.2", + "from": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": "\u001b[2Ktermix | [1:21:40 PM] [INFO] [\ud83d\uddc4\ufe0f] Database layer pre-upgrade backup created [op:database_layer_preupgrade_backup_created]", + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 605.4, + "requested_s": 600, + "requests": 12022, + "codes": { + "200": 12022 + }, + "first_kill": null, + "containers": { + "termix": { + "limit": 268435456, + "peak": 181923840, + "peak_pct": 0.678, + "anon_peak_sampled": 117604352, + "anon_peak_pct": 0.438, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [], + "bench_overrides": null, + "duration_s": 56.9, + "measured_at": "2026-10-28T12:32:57Z", + "evidence": "evidence/MV-termix", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 781.3 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/box-verdict-termix.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/box-verdict-termix.json new file mode 100644 index 00000000..a9a2d8ce --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/box-verdict-termix.json @@ -0,0 +1,222 @@ +{ + "app": "termix", + "walk": "security", + "box_walk_version": 1, + "verdict": "proven", + "venue": "box 9202 (drill catalog), the guarded Update", + "from": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "observables_before": { + "pinned_images": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "installed_images": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "catalog_images": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "live_compose_image_lines": [ + "image: ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9" + ], + "docker_inspect": [ + "termix ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9 running=true restarts=0" + ] + }, + "setup_gate_before": { + "browser": { + "status": "302", + "redirect": "https://felhom.enkisfelhom.hu/__gate/start?…" + }, + "script": { + "status": "401", + "redirect": null + } + }, + "seed": "read_back", + "drill_commit": "071db0085d6f", + "sync_waited_s": 4.4, + "badge_before": { + "hu": [ + { + "title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.", + "text": "Frissítés elérhető — ma" + } + ], + "en": [ + { + "title": "A newer version of this app is available. Select the Update button to start it.", + "text": "Update available — today" + } + ] + }, + "measured_at": "2026-10-28T12:53:47Z", + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztonsági mentés készül a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 13.3, + "phase": "pulling", + "label": "Új verzió letöltése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 33.8, + "phase": "copying", + "label": "Az adatok másolása a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 42.0, + "phase": "starting", + "label": "Indítás az új verzióval…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 43.0, + "phase": "verifying", + "label": "Működés ellenőrzése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 68.7, + "phase": "done", + "label": "Frissítve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 68.7, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "observables_after": { + "pinned_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "installed_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "catalog_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "live_compose_image_lines": [ + "image: ghcr.io/lukegus/termix:2.9.2" + ], + "docker_inspect": [ + "termix ghcr.io/lukegus/termix:2.9.2 running=true restarts=0" + ] + }, + "badge_after": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "state_after": "running", + "hold_after": null, + "to_digests": { + "termix": "sha256:d64c841a560c54aa7c27b0e6bbd2fbf8b51073565040d2a6bfbc127f0a72cf1e" + }, + "four_observables": { + "pinned": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "installed": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "catalog": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "live_compose": [ + "ghcr.io/lukegus/termix:2.9.2" + ] + }, + "seed_read_after": true, + "setup_gate_after": { + "browser": { + "status": "200", + "redirect": null + }, + "script": { + "status": "200", + "redirect": null + } + }, + "memory": { + "soak_s": 600, + "interval_s": 10, + "samples": 60, + "containers": { + "termix": { + "samples": 60, + "anon_peak_bytes": 118284288, + "limit_bytes": 268435456, + "anon_peak_pct": 44.1, + "cgroup_peak_pct": 100.0, + "oom_kill_delta": 0, + "oom_killed_flag": false, + "restarts_delta": 0, + "running_all_samples": true, + "cgroup": "/sys/fs/cgroup/system.slice/docker-2d522faa2de6d34c156c32c7950dfde9764bdb5e8a09f08c6c2d68d918f8f733.scope" + } + }, + "oom_kills": 0, + "restarts": 0, + "peak_pct": 44.1 + }, + "why": "the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back", + "log": [ + "13:52:43 [5] the box's drill mirror now at e410bac1c", + "13:52:48 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}", + "13:53:28 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'}", + "13:53:28 gate: termix is gated — passed as the household (cookie set)", + "13:53:31 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__gate/start?…'}, 'script': {'status': '401', 'redirect': None}}", + "13:53:31 termix: seeded user drilla57e7f53 via /users/create", + "13:53:32 termix: readback found=True (http 200, control refused as it must)", + "13:53:33 [5] drill commit 071db0085d6f: termix ghcr.io/lukegus/termix:2.8.0 -> ghcr.io/lukegus/termix:2.9.2 (push rc=0)", + "13:53:42 [5] the box's drill mirror now at 071db0085", + "13:53:47 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "13:53:47 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None", + "13:54:00 + 13.3s phase=pulling label=Új verzió letöltése… err=None hold=None", + "13:54:21 + 33.8s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None", + "13:54:29 + 42.0s phase=starting label=Indítás az új verzióval… err=None hold=None", + "13:54:30 + 43.0s phase=verifying label=Működés ellenőrzése… err=None hold=None", + "13:54:56 + 68.7s phase=done label=Frissítve err=None hold=None", + "13:55:14 termix: readback found=True (http 200, control refused as it must)", + "13:55:14 [7] memory soak 600 s …", + "14:05:20 [7] soak: peak 44.1% of the limit (anon), kills 0, restarts 0" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/walk.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/walk.txt new file mode 100644 index 00000000..f03af416 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/box/walk.txt @@ -0,0 +1,24 @@ +13:52:43 [5] the box's drill mirror now at e410bac1c +13:52:48 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +13:53:28 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'} +13:53:28 gate: termix is gated — passed as the household (cookie set) +13:53:31 [2] setup gate as installed: {'browser': {'status': '302', 'redirect': 'https://felhom.enkisfelhom.hu/__gate/start?…'}, 'script': {'status': '401', 'redirect': None}} +13:53:31 termix: seeded user drilla57e7f53 via /users/create +13:53:32 termix: readback found=True (http 200, control refused as it must) +13:53:33 [5] drill commit 071db0085d6f: termix ghcr.io/lukegus/termix:2.8.0 -> ghcr.io/lukegus/termix:2.9.2 (push rc=0) +13:53:42 [5] the box's drill mirror now at 071db0085 +13:53:47 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +13:53:47 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +13:54:00 + 13.3s phase=pulling label=Új verzió letöltése… err=None hold=None +13:54:21 + 33.8s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +13:54:29 + 42.0s phase=starting label=Indítás az új verzióval… err=None hold=None +13:54:30 + 43.0s phase=verifying label=Működés ellenőrzése… err=None hold=None +13:54:56 + 68.7s phase=done label=Frissítve err=None hold=None +13:55:14 termix: readback found=True (http 200, control refused as it must) +13:55:14 [7] memory soak 600 s … +14:05:20 [7] soak: peak 44.1% of the limit (anon), kills 0, restarts 0 +14:05:20 [9] verdict proven -> /tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/p2/box/termix-292/verdict.json +14:05:20 RESULT proven — the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back +14:05:21 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:05:53 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:06:01 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/run.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/run.txt new file mode 100644 index 00000000..618d9124 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/run.txt @@ -0,0 +1,22 @@ +14:07:26 [5] the box's drill mirror now at fcadb0a09 +14:07:31 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:08:21 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'} +14:08:21 gate: termix is gated — passed as the household (cookie set) +14:08:22 termix: seeded user drill3ba18d55 via /users/create +14:08:22 termix: readback found=True (http 200, control refused as it must) +14:08:23 drill commit 36230429acc4: termix TO with failing checks +14:08:32 [5] the box's drill mirror now at 36230429a +14:08:36 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:08:37 + 0.1s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +14:08:40 + 3.1s phase=pulling label=Új verzió letöltése… err=None hold=None +14:09:13 + 36.9s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +14:09:18 + 42.0s phase=starting label=Indítás az új verzióval… err=None hold=None +14:09:19 + 43.1s phase=verifying label=Működés ellenőrzése… err=None hold=None +14:10:51 + 134.2s phase=done label=Frissítve err=None hold=None +14:11:19 RESULT failed — the update ended 'done', not 'undone' +14:11:19 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:11:51 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:11:59 [X] after remove: deployed=False leftovers='' +14:12:10 [5] the box's drill mirror now at 718be0f30 +14:12:10 drill revert 36230429acc4: rc=0 +14:12:10 drill templates/termix equal to before: True diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/undo-proof-termix.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/undo-proof-termix.json new file mode 100644 index 00000000..77f42268 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo-try1-probe-passed/undo-proof-termix.json @@ -0,0 +1,164 @@ +{ + "app": "termix", + "from": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "started": "2026-10-28T13:07:17Z", + "drill_head_before": "fcadb0a0935bb06581b9df06e6ce723fcc835ee0", + "failing_compose_main_healthcheck": [ + "test: [\"CMD\", \"false\"]" + ], + "failing_probe": true, + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.1, + "phase": "backing-up", + "label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 3.1, + "phase": "pulling", + "label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 36.9, + "phase": "copying", + "label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 42.0, + "phase": "starting", + "label": "Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 43.1, + "phase": "verifying", + "label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 134.2, + "phase": "done", + "label": "Friss\u00edtve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 134.2, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "unhealthy" + }, + "to_log_while_verifying": [ + "[2:09:47 PM] [INFO] [\ud83e\udde9] Applied 2 migration(s) for plugin sso: 0001_adopt_sso_providers, 0002_legacy_callback [op:plugin_migrate]", + "[2:09:47 PM] [WARN] [\ud83e\udde9] Plugin sso serves 4 route(s) without authentication: /start, /callback, /backchannel-logout, /config [op:plugin_http_public]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/sso [op:plugin_http_mount]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin sso [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin step-ca: 0001_create_certs [op:plugin_migrate]", + "[2:09:47 PM] [WARN] [\ud83e\udde9] Plugin step-ca serves 1 route(s) without authentication: /callback [op:plugin_http_public]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/step-ca [op:plugin_http_mount]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin step-ca [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tailscale [op:plugin_http_mount]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Tailscale routes mounted at /plugin-api/tailscale [op:plugin:tailscale]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tailscale [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/telemetry [op:plugin_http_mount]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin telemetry [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin termix-identity: 0001_adopt_termix_identity_tables [op:plugin_migrate]", + "[2:09:47 PM] [WARN] [\ud83e\udde9] Plugin termix-identity serves 2 route(s) without authentication: /u/:handle, /u/:handle/:algo [op:plugin_http_public]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/termix-identity [op:plugin_http_mount]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin termix-identity [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin tmux-monitor: 0001_adopt_tmux_session_tags [op:plugin_migrate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tmux-monitor [op:plugin_http_mount]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Tmux Monitor routes mounted at /plugin-api/tmux-monitor [op:plugin:tmux-monitor]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tmux-monitor [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin totp: 0001_create_enrollments [op:plugin_migrate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/totp [op:plugin_http_mount]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin totp [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin vault: 0001_adopt_vault_tables [op:plugin_migrate]", + "[2:09:47 PM] [WARN] [\ud83e\udde9] Plugin vault serves 1 route(s) without authentication: /oidc/callback [op:plugin_http_public]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/vault [op:plugin_http_mount]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin vault [op:plugin_activate]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin warpgate [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/web-endpoint [op:plugin_http_mount]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Web Endpoint routes mounted at /plugin-api/web-endpoint [op:plugin:web-endpoint]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin web-endpoint [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin webauthn: 0001_adopt_webauthn_credentials [op:plugin_migrate]", + "[2:09:47 PM] [WARN] [\ud83e\udde9] Plugin webauthn serves 1 route(s) without authentication: /authenticate/options [op:plugin_http_public]", + "[2:09:47 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/webauthn [op:plugin_http_mount]", + "[2:09:47 PM] [SUCCESS] [\ud83e\udde9] Activated plugin webauthn [op:plugin_activate]", + "[2:09:47 PM] [INFO] [\ud83d\ude80] Loaded 34 plugin(s) [op:plugin_init]", + "[2:09:47 PM] [INFO] [\ud83d\uddc4\ufe0f] Moved 2 Remote Desktop setting(s), 0 user(s) and 0 host(s) into plugin settings [op:remote_desktop_settings_migration]", + "[2:09:47 PM] [INFO] [\ud83d\uddc4\ufe0f] Moved telemetry settings into plugin settings [op:telemetry_settings_migration]", + "[2:09:47 PM] [SUCCESS] [\ud83d\ude80] Termix backend started successfully [op:backend_init_complete,duration:8680ms]" + ], + "observables_after": { + "pinned_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "installed_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "catalog_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "live_compose_image_lines": [ + "image: ghcr.io/lukegus/termix:2.9.2" + ], + "docker_inspect": [ + "termix ghcr.io/lukegus/termix:2.9.2 running=true restarts=0" + ] + }, + "running_images_after": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "verdict": "failed", + "why": "the update ended 'done', not 'undone'", + "drill_head_after": "718be0f305031668e62b450eadc860ddbfed4cf4", + "drill_tree_equal_to_before": true, + "log": [ + "14:07:26 [5] the box's drill mirror now at fcadb0a09", + "14:07:31 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "14:08:21 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'}", + "14:08:21 gate: termix is gated \u2014 passed as the household (cookie set)", + "14:08:22 termix: seeded user drill3ba18d55 via /users/create", + "14:08:22 termix: readback found=True (http 200, control refused as it must)", + "14:08:23 drill commit 36230429acc4: termix TO with failing checks", + "14:08:32 [5] the box's drill mirror now at 36230429a", + "14:08:36 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "14:08:37 + 0.1s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "14:08:40 + 3.1s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None", + "14:09:13 + 36.9s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "14:09:18 + 42.0s phase=starting label=Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026 err=None hold=None", + "14:09:19 + 43.1s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None", + "14:10:51 + 134.2s phase=done label=Friss\u00edtve err=None hold=None", + "14:11:19 RESULT failed \u2014 the update ended 'done', not 'undone'", + "14:11:19 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'}", + "14:11:51 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm", + "14:11:59 [X] after remove: deployed=False leftovers=''", + "14:12:10 [5] the box's drill mirror now at 718be0f30", + "14:12:10 drill revert 36230429acc4: rc=0", + "14:12:10 drill templates/termix equal to before: True" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/run.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/run.txt new file mode 100644 index 00000000..3b46de2a --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/run.txt @@ -0,0 +1,25 @@ +14:13:34 [5] the box's drill mirror now at 718be0f30 +14:13:38 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:14:19 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'} +14:14:19 gate: termix is gated — passed as the household (cookie set) +14:14:19 termix: seeded user drill86061530 via /users/create +14:14:19 termix: readback found=True (http 200, control refused as it must) +14:14:20 drill commit 39f59c8d713e: termix TO with failing checks +14:14:28 [5] the box's drill mirror now at 39f59c8d7 +14:14:33 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:14:33 + 0.0s phase=checking label=Ellenőrzés… err=None hold=None +14:14:34 + 1.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +14:14:37 + 4.1s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +14:14:38 + 5.2s phase=pulling label=Új verzió letöltése… err=None hold=None +14:15:04 + 30.8s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +14:15:10 + 36.9s phase=verifying label=Működés ellenőrzése… err=None hold=None +14:20:13 + 340.1s phase=undoing label=Visszaállítás az előző változatra… err=None hold=None +14:20:20 + 347.3s phase=undone label=Visszaállítva az előző változatra err=None hold=None +14:20:50 termix: readback found=True (http 200, control refused as it must) +14:20:50 RESULT proven — TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back +14:20:50 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:21:22 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:21:31 [X] after remove: deployed=False leftovers='' +14:21:41 [5] the box's drill mirror now at 465e60882 +14:21:41 drill revert 39f59c8d713e: rc=0 +14:21:41 drill templates/termix equal to before: True diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/undo-proof-termix.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/undo-proof-termix.json new file mode 100644 index 00000000..cf95f992 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-292/undo/undo-proof-termix.json @@ -0,0 +1,184 @@ +{ + "app": "termix", + "from": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "to": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "started": "2026-10-28T13:13:24Z", + "drill_head_before": "718be0f305031668e62b450eadc860ddbfed4cf4", + "failing_compose_main_healthcheck": [ + "test: [\"CMD\", \"false\"]" + ], + "failing_probe": true, + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "checking", + "label": "Ellen\u0151rz\u00e9s\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 1.0, + "phase": "backing-up", + "label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 4.1, + "phase": "safety-dump", + "label": "Adatb\u00e1zis pillanatk\u00e9p\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 5.2, + "phase": "pulling", + "label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 30.8, + "phase": "copying", + "label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 36.9, + "phase": "verifying", + "label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 340.1, + "phase": "undoing", + "label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 347.3, + "phase": "undone", + "label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 347.3, + "final_phase": "undone", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "to_log_while_verifying": [ + "[2:15:32 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/sso [op:plugin_http_mount]", + "[2:15:32 PM] [SUCCESS] [\ud83e\udde9] Activated plugin sso [op:plugin_activate]", + "[2:15:32 PM] [WARN] [\ud83e\udde9] Plugin sso serves 4 route(s) without authentication: /start, /callback, /backchannel-logout, /config [op:plugin_http_public]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin step-ca: 0001_create_certs [op:plugin_migrate]", + "[2:15:33 PM] [WARN] [\ud83e\udde9] Plugin step-ca serves 1 route(s) without authentication: /callback [op:plugin_http_public]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/step-ca [op:plugin_http_mount]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin step-ca [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tailscale [op:plugin_http_mount]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Tailscale routes mounted at /plugin-api/tailscale [op:plugin:tailscale]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tailscale [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/telemetry [op:plugin_http_mount]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin telemetry [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin termix-identity: 0001_adopt_termix_identity_tables [op:plugin_migrate]", + "[2:15:33 PM] [WARN] [\ud83e\udde9] Plugin termix-identity serves 2 route(s) without authentication: /u/:handle, /u/:handle/:algo [op:plugin_http_public]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/termix-identity [op:plugin_http_mount]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin termix-identity [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin tmux-monitor: 0001_adopt_tmux_session_tags [op:plugin_migrate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/tmux-monitor [op:plugin_http_mount]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Tmux Monitor routes mounted at /plugin-api/tmux-monitor [op:plugin:tmux-monitor]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin tmux-monitor [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin totp: 0001_create_enrollments [op:plugin_migrate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/totp [op:plugin_http_mount]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin totp [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin vault: 0001_adopt_vault_tables [op:plugin_migrate]", + "[2:15:33 PM] [WARN] [\ud83e\udde9] Plugin vault serves 1 route(s) without authentication: /oidc/callback [op:plugin_http_public]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/vault [op:plugin_http_mount]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin vault [op:plugin_activate]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin warpgate [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/web-endpoint [op:plugin_http_mount]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Web Endpoint routes mounted at /plugin-api/web-endpoint [op:plugin:web-endpoint]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin web-endpoint [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Applied 1 migration(s) for plugin webauthn: 0001_adopt_webauthn_credentials [op:plugin_migrate]", + "[2:15:33 PM] [WARN] [\ud83e\udde9] Plugin webauthn serves 1 route(s) without authentication: /authenticate/options [op:plugin_http_public]", + "[2:15:33 PM] [INFO] [\ud83e\udde9] Mounted /plugin-api/webauthn [op:plugin_http_mount]", + "[2:15:33 PM] [SUCCESS] [\ud83e\udde9] Activated plugin webauthn [op:plugin_activate]", + "[2:15:33 PM] [INFO] [\ud83d\ude80] Loaded 34 plugin(s) [op:plugin_init]", + "[2:15:33 PM] [INFO] [\ud83d\uddc4\ufe0f] Moved 2 Remote Desktop setting(s), 0 user(s) and 0 host(s) into plugin settings [op:remote_desktop_settings_migration]", + "[2:15:33 PM] [INFO] [\ud83d\uddc4\ufe0f] Moved telemetry settings into plugin settings [op:telemetry_settings_migration]", + "[2:15:33 PM] [SUCCESS] [\ud83d\ude80] Termix backend started successfully [op:backend_init_complete,duration:6972ms]", + "[2:18:33 PM] [INFO] [\ud83e\udde9] Sent daily usage statistics [op:plugin:telemetry]" + ], + "observables_after": { + "pinned_images": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "installed_images": { + "termix": "ghcr.io/lukegus/termix:2.8.0" + }, + "catalog_images": { + "termix": "ghcr.io/lukegus/termix:2.9.2" + }, + "live_compose_image_lines": [ + "image: ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9" + ], + "docker_inspect": [ + "termix ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9 running=true restarts=0" + ] + }, + "running_images_after": { + "termix": "ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9" + }, + "seed_after_undo": true, + "verdict": "proven", + "why": "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "drill_head_after": "465e608822e17b14ec45beab71266ee1524ab005", + "drill_tree_equal_to_before": true, + "log": [ + "14:13:34 [5] the box's drill mirror now at 718be0f30", + "14:13:38 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "14:14:19 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'}", + "14:14:19 gate: termix is gated \u2014 passed as the household (cookie set)", + "14:14:19 termix: seeded user drill86061530 via /users/create", + "14:14:19 termix: readback found=True (http 200, control refused as it must)", + "14:14:20 drill commit 39f59c8d713e: termix TO with failing checks", + "14:14:28 [5] the box's drill mirror now at 39f59c8d7", + "14:14:33 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "14:14:33 + 0.0s phase=checking label=Ellen\u0151rz\u00e9s\u2026 err=None hold=None", + "14:14:34 + 1.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "14:14:37 + 4.1s phase=safety-dump label=Adatb\u00e1zis pillanatk\u00e9p\u2026 err=None hold=None", + "14:14:38 + 5.2s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None", + "14:15:04 + 30.8s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "14:15:10 + 36.9s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None", + "14:20:13 + 340.1s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None", + "14:20:20 + 347.3s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None", + "14:20:50 termix: readback found=True (http 200, control refused as it must)", + "14:20:50 RESULT proven \u2014 TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "14:20:50 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'}", + "14:21:22 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm", + "14:21:31 [X] after remove: deployed=False leftovers=''", + "14:21:41 [5] the box's drill mirror now at 465e60882", + "14:21:41 drill revert 39f59c8d713e: rc=0", + "14:21:41 drill templates/termix equal to before: True" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_run-2.8.0-try1-no-gate-cookie.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_run-2.8.0-try1-no-gate-cookie.txt new file mode 100644 index 00000000..b8f6736d --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_run-2.8.0-try1-no-gate-cookie.txt @@ -0,0 +1,13 @@ +14:22:11 [5] the box's drill mirror now at 465e60882 +14:22:16 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:23:01 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'} +14:23:01 gate: termix is gated — passed as the household (cookie set) +14:23:01 termix: seeded user drill974d3df9 via /users/create +seed: True +{"label": "2.8.0", "image": "ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9", "lan_codes": ["401", "401", "401", "401", "401", "429", "429"], "tunnel_codes": ["404", "404", "404", "404", "404", "404", "404"], "lan_fixed": true, "tunnel_fixed": false} +14:23:20 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:23:52 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:24:00 [X] after remove: deployed=False leftovers='' +14:23:20 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:23:52 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:24:00 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-2.8.0.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-2.8.0.txt new file mode 100644 index 00000000..46fd81b7 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-2.8.0.txt @@ -0,0 +1,13 @@ +14:25:21 [5] the box's drill mirror now at 465e60882 +14:25:25 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:26:10 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'} +14:26:10 gate: termix is gated — passed as the household (cookie set) +14:26:11 termix: seeded user drill08407c55 via /users/create +seed: True +{"label": "2.8.0", "image": "ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9", "lan_codes": ["401", "401", "401", "401", "401", "429", "429"], "tunnel_codes": ["401", "401", "401", "401", "401", "401", "401"], "lan_fixed": true, "tunnel_fixed": false} +14:26:18 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:26:50 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:26:58 [X] after remove: deployed=False leftovers='' +14:26:18 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:26:50 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:26:58 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-26.10.5.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-26.10.5.txt new file mode 100644 index 00000000..18e595df --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-run-26.10.5.txt @@ -0,0 +1,16 @@ +14:40:46 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:41:17 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': [], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt sajá +14:41:26 [X] after remove: deployed=False leftovers='' +14:41:36 [5] the box's drill mirror now at 69b61c69d +14:41:40 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:42:31 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:26.10.5'} +14:42:31 gate: termix is gated — passed as the household (cookie set) +14:42:31 termix: seeded user drill6906ad90 via /users/create +seed: True +{"label": "26.10.5", "image": "ghcr.io/lukegus/termix:26.10.5", "lan_codes": ["401", "401", "401", "401", "401", "429", "429"], "tunnel_codes": ["401", "401", "401", "401", "401", "401", "401"], "lan_fixed": true, "tunnel_fixed": false} +14:42:39 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:43:11 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:43:20 [X] after remove: deployed=False leftovers='' +14:42:39 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:43:11 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:43:20 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-2.8.0.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-2.8.0.json new file mode 100644 index 00000000..7ad250b0 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-2.8.0.json @@ -0,0 +1,24 @@ +{ + "label": "2.8.0", + "image": "ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9", + "lan_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "tunnel_codes": [ + "401", + "401", + "401", + "401", + "401", + "401", + "401" + ], + "lan_fixed": true, + "tunnel_fixed": false +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-26.10.5.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-26.10.5.json new file mode 100644 index 00000000..7ffd962a --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try2-forged-only-xff-26.10.5.json @@ -0,0 +1,24 @@ +{ + "label": "26.10.5", + "image": "ghcr.io/lukegus/termix:26.10.5", + "lan_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "tunnel_codes": [ + "401", + "401", + "401", + "401", + "401", + "401", + "401" + ], + "lan_fixed": true, + "tunnel_fixed": false +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-run-2.9.2.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-run-2.9.2.txt new file mode 100644 index 00000000..36c43de4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-run-2.9.2.txt @@ -0,0 +1,13 @@ +14:45:56 [5] the box's drill mirror now at 6e9a885d5 +14:46:00 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:47:01 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.9.2'} +14:47:01 gate: termix is gated — passed as the household (cookie set) +14:47:01 termix: seeded user drill7fb9a190 via /users/create +seed: True +{"label": "2.9.2", "image": "ghcr.io/lukegus/termix:2.9.2", "lan_codes": ["401", "401", "401", "401", "401", "429", "429"], "tunnel_codes": ["502", "404", "404", "404", "404", "404", "404"], "lan_fixed": true, "tunnel_fixed": false} +14:47:20 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:47:52 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:48:00 [X] after remove: deployed=False leftovers='' +14:47:20 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:47:52 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:48:00 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-xff-2.9.2.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-xff-2.9.2.json new file mode 100644 index 00000000..56a74453 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_try3-route-dropped-xff-2.9.2.json @@ -0,0 +1,24 @@ +{ + "label": "2.9.2", + "image": "ghcr.io/lukegus/termix:2.9.2", + "lan_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "tunnel_codes": [ + "502", + "404", + "404", + "404", + "404", + "404", + "404" + ], + "lan_fixed": true, + "tunnel_fixed": false +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_xff-2.8.0-try1.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_xff-2.8.0-try1.json new file mode 100644 index 00000000..3566e988 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/_xff-2.8.0-try1.json @@ -0,0 +1,24 @@ +{ + "label": "2.8.0", + "image": "ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9", + "lan_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "tunnel_codes": [ + "404", + "404", + "404", + "404", + "404", + "404", + "404" + ], + "lan_fixed": true, + "tunnel_fixed": false +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.8.0.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.8.0.txt new file mode 100644 index 00000000..8b2182ca --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.8.0.txt @@ -0,0 +1,14 @@ +14:51:48 [5] the box's drill mirror now at e79107cb1 +14:51:53 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:52:38 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.8.0'} +14:52:38 gate: termix is gated — passed as the household (cookie set) +14:52:38 termix: seeded user drill6867516f via /users/create +seed: True +health before the test: healthy 0 +{"label": "2.8.0", "image": "ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9", "lan_codes": ["401", "401", "401", "401", "401", "429", "429"], "tunnel_codes": ["401", "401", "401", "401", "401", "429", "429"], "lan_fixed": true, "tunnel_fixed": true} +14:53:52 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:54:24 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:54:33 [X] after remove: deployed=False leftovers='' +14:53:52 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:54:24 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:54:33 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.9.2.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.9.2.txt new file mode 100644 index 00000000..bfe7925b --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-2.9.2.txt @@ -0,0 +1,14 @@ +14:48:23 [5] the box's drill mirror now at 6e9a885d5 +14:48:28 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:49:28 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:2.9.2'} +14:49:28 gate: termix is gated — passed as the household (cookie set) +14:49:28 termix: seeded user drilld73d1a05 via /users/create +seed: True +health before the test: healthy 0 +{"label": "2.9.2", "image": "ghcr.io/lukegus/termix:2.9.2", "lan_codes": ["401", "401", "401", "401", "401", "429", "429"], "tunnel_codes": ["401", "401", "401", "401", "401", "429", "429"], "lan_fixed": true, "tunnel_fixed": true} +14:50:43 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:51:15 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:51:24 [X] after remove: deployed=False leftovers='' +14:50:43 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:51:15 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:51:24 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-26.10.5.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-26.10.5.txt new file mode 100644 index 00000000..0a49b30d --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/run-26.10.5.txt @@ -0,0 +1,13 @@ +14:43:49 [5] the box's drill mirror now at 69b61c69d +14:43:54 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:44:49 [1] deployed, controller state=running, pinned={'termix': 'ghcr.io/lukegus/termix:26.10.5'} +14:44:49 gate: termix is gated — passed as the household (cookie set) +14:44:49 termix: seeded user drill3b783abf via /users/create +seed: True +{"label": "26.10.5", "image": "ghcr.io/lukegus/termix:26.10.5", "lan_codes": ["401", "401", "401", "401", "401", "429", "429"], "tunnel_codes": ["401", "401", "401", "401", "401", "429", "429"], "lan_fixed": true, "tunnel_fixed": true} +14:44:57 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:45:29 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:45:38 [X] after remove: deployed=False leftovers='' +14:44:57 [X] stop -> 200 {'ok': True, 'message': 'Stack termix stop completed'} +14:45:29 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'termix', 'volumes_removed': ['termix_termix_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalm +14:45:38 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.8.0.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.8.0.json new file mode 100644 index 00000000..548acd5f --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.8.0.json @@ -0,0 +1,24 @@ +{ + "label": "2.8.0", + "image": "ghcr.io/lukegus/termix:2.8.0@sha256:25e8a0eb39f45c9ac5e8e7615fd84a0380018ea012317bc665b86458d900b4b9", + "lan_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "tunnel_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "lan_fixed": true, + "tunnel_fixed": true +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.9.2.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.9.2.json new file mode 100644 index 00000000..954c3d05 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-2.9.2.json @@ -0,0 +1,24 @@ +{ + "label": "2.9.2", + "image": "ghcr.io/lukegus/termix:2.9.2", + "lan_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "tunnel_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "lan_fixed": true, + "tunnel_fixed": true +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-26.10.5.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-26.10.5.json new file mode 100644 index 00000000..1a50ae03 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix-xff/xff-26.10.5.json @@ -0,0 +1,24 @@ +{ + "label": "26.10.5", + "image": "ghcr.io/lukegus/termix:26.10.5", + "lan_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "tunnel_codes": [ + "401", + "401", + "401", + "401", + "401", + "429", + "429" + ], + "lan_fixed": true, + "tunnel_fixed": true +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff.py b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff.py new file mode 100644 index 00000000..fbe93122 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +"""termix_xff.py LABEL — D58 / GHSA-7j7m on the Termix installed on scratch 9202: does a forged X-Forwarded-For let one +address skip the login limit? 7 wrong logins, 7 different usernames, 7 different forged X-Forwarded-For values: + LAN: from DooPlex straight to 9202's traefik (the household's LAN path; traefik does NOT trust this peer); + TUNNEL: from a throwaway curl container on 9202's felhom-tunnel network at 172.16.253.2 — the address cloudflared has on + a real box, the ONE peer whose forwarded headers traefik keeps (the internet path). The header is what Cloudflare + delivers: the visitor's forged value, then the real visitor address Cloudflare APPENDS (one constant, 203.0.113.99). +Fixed = an HTTP 429 by the 6th attempt (the per-address limit, MAX_ATTEMPTS 5). Not fixed = no 429 in 7. +usage: SC= TARGET=9202 python3 termix_xff.py LABEL (prints, and writes xff-LABEL.json in EV)""" +import json, os, secrets, sys +sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts") +import box_walk as w +label, EV = sys.argv[1], os.environ["EV"] +os.makedirs(EV, exist_ok=True) +sub = "termix" +w.login() +res = {"label": label, "image": w.guest("docker inspect -f '{{.Config.Image}}' termix").strip()} +lan = [] +for i in range(7): + rc, code, out = w.app_curl(sub, "/users/login", "-H", "Content-Type: application/json", + "-H", f"X-Forwarded-For: 203.0.113.{10 + i}", + data=json.dumps({"username": "nobody" + secrets.token_hex(3), "password": "wrong-" + secrets.token_hex(4)}), + method="POST") + lan.append(code) +res["lan_codes"] = lan +host = f"{sub}.{w.DOMAIN}" +gc = w.GATE.get(sub) or w.gate_cookie(sub) or "" # the household's gate cookie, as the LAN half sends it; never printed +lines = ["for x in 11 12 13 14 15 16 17; do", + " curl -sk -o /dev/null -w '%{http_code} ' --resolve " + host + ":443:172.16.253.3 \\", + " -H \"X-Forwarded-For: 198.51.100.$x, 203.0.113.99\" -H 'Content-Type: application/json' -H \"Cookie: $GC\" \\", + " --data \"{\\\"username\\\":\\\"tun$x$$\\\",\\\"password\\\":\\\"wrong-pass-$x\\\"}\" https://" + host + "/users/login", + "done"] +script = ("cat > /tmp/xff.sh <<'XEOF'\n" + "\n".join(lines) + "\nXEOF\n" + "docker run --rm --network felhom-tunnel --ip 172.16.253.2 -e GC -v /tmp/xff.sh:/xff.sh:ro curlimages/curl:8.11.1 sh /xff.sh; rm -f /tmp/xff.sh") +out = w.guest("export GC=" + json.dumps(gc) + "\n" + script, timeout=300) +res["tunnel_codes"] = out.split() +res["lan_fixed"] = "429" in lan[:6] +res["tunnel_fixed"] = "429" in res["tunnel_codes"][:6] +print(json.dumps(res)) +json.dump(res, open(os.path.join(EV, f"xff-{label}.json"), "w"), indent=1) diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff_install.py b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff_install.py new file mode 100644 index 00000000..050682f8 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/termix_xff_install.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +"""termix_xff_install.py LABEL — install Termix from the drill on 9202 through the product, make the first account (the +fixture's own sign-up: it lifts the setup gate), run termix_xff.py LABEL, remove the app through the product.""" +import os, runpy, sys +sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts") +import box_walk as w +import upgrade_fixtures_box28 as f28 +w.login() +try: + if w.stack("termix").get("deployed"): + w.remove("termix") + w.refresh_box_mirror(); w.sync_rescan() + if not w.deploy("termix", "termix"): + print("install failed"); sys.exit(1) + t = f28.FIXTURES28["termix"].seed(w, "termix", w.say) + print("seed:", bool(t)) + # 2.9.2 dropped its route for a while right after the first install (502, then 404 — 2026-10-28): wait until the + # container is healthy and stays so for 60 s before the test + import time + for _ in range(40): + if w.guest("docker inspect -f '{{.State.Health.Status}}' termix").strip() == "healthy": + break + time.sleep(10) + time.sleep(60) + print("health before the test:", w.guest("docker inspect -f '{{.State.Health.Status}} {{.RestartCount}}' termix").strip()) + sys.argv = ["termix_xff.py", sys.argv[1]] + runpy.run_path(os.path.join(os.path.dirname(os.path.abspath(__file__)), "termix_xff.py"), run_name="__main__") +finally: + if w.stack("termix").get("deployed"): + w.remove("termix") + print("\n".join(w.LOG[-3:])) diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/undo_proof2.py b/documentation/audits/dockerhub-bigsteps-2026-10-28/undo_proof2.py new file mode 100644 index 00000000..8fa8230e --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/undo_proof2.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +"""undo_proof2.py APP MAIN_SVC FROM(svc=ref,…) TO(svc=ref,…) — a big step's UNDO, proven on scratch 9202 through the product's +own guarded Update (generalised from audits/security-app-updates-2026-10-27/part3/tools/undo_proof.py, Jellyfin): + 1. the drill's APP must stand at FROM (this tool checks, never guesses); install, seed with the box fixture, read back (C1); + 2. a temporary drill commit moves the images to TO AND makes the checks fail (MAIN_SVC's compose healthcheck `false`, + the .felhom.yml probe on a path that does not exist) — so TO starts on the data, runs its migrations, and the + Update fails in its check; + 3. press the guarded Update: the final phase must be `undone`; MAIN_SVC's log is saved while TO verifies; + 4. after the undo: the running images are FROM and the seed reads back; + 5. the temporary drill commit is reverted (the template equal to before), the app removed. +usage: SC= TARGET=9202 EV= python3 undo_proof2.py APP MAIN_SVC FROM TO [DEFINITION_DIR]""" +import json, os, re, subprocess, sys, threading, time +sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts") +import box_walk as w +import upgrade_fixtures_box as fb +import upgrade_fixtures_box28 as f28 + +APP, MAIN = sys.argv[1], sys.argv[2] +FROM = dict(x.split("=", 1) for x in sys.argv[3].split(",")) +TO = dict(x.split("=", 1) for x in sys.argv[4].split(",")) +DEF = sys.argv[5] if len(sys.argv) > 5 else None # a definition step: TO is that whole definition (box_walk --to-definition) +FX = dict(f28.FIXTURES28); FX.update(fb.FIXTURES) +fx = FX[APP] +SUB = getattr(fx, "sub", APP) +D = w.DRILL +EV = os.environ["EV"] +os.makedirs(EV, exist_ok=True) +OUT = os.path.join(EV, "undo-proof-%s.json" % APP) +rec = {"app": APP, "from": FROM, "to": TO, "started": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())} + + +def git(*a): + return subprocess.run(["git", "-C", D] + list(a), capture_output=True, text=True, timeout=120) + + +def finish(verdict, why): + rec["verdict"], rec["why"] = verdict, why + w.say(f"RESULT {verdict} — {why}") + + +def failing_to(c, y): + if DEF: + c = open(os.path.join(DEF, "docker-compose.yml")).read() + y = open(os.path.join(DEF, ".felhom.yml")).read() + assert w.images_of(c) == TO, (w.images_of(c), TO) + for svc in ({} if DEF else FROM): + if FROM[svc] != TO[svc]: + assert f"image: {FROM[svc]}" in c, svc + c = c.replace(f"image: {FROM[svc]}", f"image: {TO[svc]}") + # MAIN's own block only (never past the next service), comment lines allowed between healthcheck: and test: + m = re.search(r"(?m)^ %s:\n(?:(?! \S)[^\n]*\n)*? healthcheck:\n(?:\s*#[^\n]*\n)*(\s+)test: [^\n]*\n" % re.escape(MAIN), c) + if m: + c = c[:m.start()] + m.group(0).replace(m.group(0).split("\n")[-2], m.group(1) + 'test: ["CMD", "false"]') + c[m.end():] + else: # no test line of our own (the image's own): add a failing healthcheck under the service + c = re.sub(r"(?m)^( %s:\n)" % re.escape(MAIN), r'\1 healthcheck:\n test: ["CMD", "false"]\n', c, count=1) + # port 1: nothing listens there, so the probe fails on ANY app — an app that answers 200 on every path (a single-page + # app: Termix, 2026-10-28) passed a „no such path" probe and the update ended `done` + y2 = re.sub(r"(?m)^(healthcheck:\n checks:\n - type: )\w+(\n port: )\d+\n(?: path: [^\n]*\n)?(?: expect:\n status: \d+\n)?", + r'\1api\g<2>1\n path: "/undo-proof-no-such-path"\n expect:\n status: 200\n', y, count=1) + return c, y2 + + +w.login() +git("pull", "-q", "--rebase", "origin", "main") +head0 = git("rev-parse", "HEAD").stdout.strip() +rec["drill_head_before"] = head0 +comp, fy = f"{D}/templates/{APP}/docker-compose.yml", f"{D}/templates/{APP}/.felhom.yml" +commit = None +try: + if w.images_of(open(comp).read()) != FROM: + finish("inconclusive", f"the drill's {APP} is not at FROM"); raise SystemExit(1) + if w.stack(APP).get("deployed"): + w.remove(APP) + w.refresh_box_mirror() + w.sync_rescan() + if not w.deploy(APP, SUB): + finish("inconclusive", "the install at FROM did not complete"); raise SystemExit(1) + tok = fx.seed(w, SUB, w.say) + if not tok or not fx.verify(w, SUB, tok, w.say): + finish("inconclusive", "C1: the seed did not read back before the update"); raise SystemExit(1) + c, y = failing_to(open(comp).read(), open(fy).read()) + rec["failing_compose_main_healthcheck"] = re.findall(r'test: \["CMD", "false"\]', c) + rec["failing_probe"] = "/undo-proof-no-such-path" in y + open(comp, "w").write(c); open(fy, "w").write(y) + git("add", f"templates/{APP}") + git("commit", "-q", "-m", f"UNDO-PROOF: {APP} at TO whose checks fail (temporary, reverted at the end)") + git("push", "-q", "origin", "main") + commit = git("rev-parse", "--short=12", "HEAD").stdout.strip() + w.say(f" drill commit {commit}: {APP} TO with failing checks") + w.refresh_box_mirror() + main_to = TO[MAIN] + w.sync_rescan(APP, main_to, tries=40, delay=10) + seen = {"lines": []} + stop = threading.Event() + + def watch(): + while not stop.is_set(): + out = w.guest(f"docker inspect -f '{{{{.Config.Image}}}}' {MAIN} 2>/dev/null; docker logs --tail 300 {MAIN} 2>&1 | tail -40") + if main_to.split(":")[-1] in out.split("\n")[0]: + seen["lines"] = out.strip().split("\n") + time.sleep(5) + th = threading.Thread(target=watch, daemon=True) + th.start() + rec["update"] = u = w.press_update(APP, poll=1.0, cap_s=1800) + stop.set(); th.join(timeout=30) + rec["to_log_while_verifying"] = seen["lines"][-40:] + time.sleep(15) + rec["observables_after"] = w.observables(APP) + running = {s: w.guest(f"docker inspect -f '{{{{.Config.Image}}}}' {s} 2>/dev/null").strip() for s in FROM} + rec["running_images_after"] = running + if u.get("final_phase") != "undone": + finish("failed", f"the update ended {u.get('final_phase')!r}, not 'undone'"); raise SystemExit(1) + if any(running[s].split("@")[0] != FROM[s] for s in FROM): + finish("failed", f"after the undo the running images are {running}, not FROM"); raise SystemExit(1) + rec["seed_after_undo"] = ok = fx.verify(w, SUB, tok, w.say) + if not ok: + finish("failed", "the undo put the old images back but the seed does not read back"); raise SystemExit(1) + finish("proven", "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back") +finally: + if w.stack(APP).get("deployed"): + w.remove(APP) + if commit: + git("pull", "-q", "--rebase", "origin", "main") + r = git("revert", "--no-edit", commit) + git("push", "-q", "origin", "main") + w.refresh_box_mirror() + w.say(f" drill revert {commit}: rc={r.returncode}") + rec["drill_head_after"] = git("rev-parse", "HEAD").stdout.strip() + rec["drill_tree_equal_to_before"] = git("diff", "--quiet", head0, "HEAD", "--", f"templates/{APP}").returncode == 0 + w.say(f" drill templates/{APP} equal to before: {rec['drill_tree_equal_to_before']}") + rec["log"] = w.LOG + json.dump(rec, open(OUT, "w"), indent=2) diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/MV-wanderer.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/MV-wanderer.log new file mode 100644 index 00000000..037308cf --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/MV-wanderer.log @@ -0,0 +1,145 @@ +[12:02:54] scratch drive folders cleared before FROM (R-656): none existed +[12:02:54] MV-wanderer: deploying wanderer at FROM {'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:03:57] FROM settled=True in 31.2s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:03:57] fixture: the BOX walk's own (Wanderer), through upgrade_boxport +[12:03:58] wanderer: sign-up http=200 +[12:03:58] wanderer: seeded user drill5229bfc6 and private list Drill-0943754405 http=200 id=True +[12:03:58] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:03:58] C1 (seed reads back BEFORE): True +[12:03:59] MV-wanderer: swapping to TO {'wanderer': 'flomp/wanderer-web:v0.21.2', 'wanderer-db': 'flomp/wanderer-db:v0.21.2', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:04:47] TO up -d rc=0 +[12:05:24] TO settled=True in 36.4s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:05:24] migration lines observed: 0 +[12:05:24] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:05:24] RESULT (seed reads back AFTER): True +[12:05:25] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[12:05:40] + 15s wanderer=136M/512M peak=141M kills=0 rs=0 wanderer-db=20M/256M peak=22M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=244 +[12:05:55] + 30s wanderer=137M/512M peak=143M kills=0 rs=0 wanderer-db=24M/256M peak=24M kills=0 rs=0 wanderer-search=250M/256M peak=256M kills=0 rs=0 reqs=501 +[12:06:11] + 46s wanderer=139M/512M peak=146M kills=0 rs=0 wanderer-db=27M/256M peak=27M kills=0 rs=0 wanderer-search=250M/256M peak=256M kills=0 rs=0 reqs=749 +[12:06:26] + 61s wanderer=140M/512M peak=146M kills=0 rs=0 wanderer-db=31M/256M peak=34M kills=0 rs=0 wanderer-search=250M/256M peak=256M kills=0 rs=0 reqs=988 +[12:06:41] + 76s wanderer=139M/512M peak=146M kills=0 rs=0 wanderer-db=32M/256M peak=34M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=1237 +[12:06:56] + 91s wanderer=139M/512M peak=146M kills=0 rs=0 wanderer-db=33M/256M peak=35M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=1482 +[12:07:11] + 106s wanderer=141M/512M peak=150M kills=0 rs=0 wanderer-db=37M/256M peak=37M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=1735 +[12:07:26] + 121s wanderer=138M/512M peak=150M kills=0 rs=0 wanderer-db=37M/256M peak=39M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=1977 +[12:07:42] + 137s wanderer=140M/512M peak=150M kills=0 rs=0 wanderer-db=40M/256M peak=41M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=2231 +[12:07:57] + 152s wanderer=139M/512M peak=154M kills=0 rs=0 wanderer-db=40M/256M peak=42M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=2465 +[12:08:12] + 167s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=43M/256M peak=46M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=2713 +[12:08:27] + 182s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=43M/256M peak=46M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=2949 +[12:08:42] + 197s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=45M/256M peak=46M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3192 +[12:08:58] + 212s wanderer=139M/512M peak=154M kills=0 rs=0 wanderer-db=47M/256M peak=47M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3444 +[12:09:13] + 228s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=48M/256M peak=49M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3703 +[12:09:28] + 243s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=50M/256M peak=51M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3949 +[12:09:43] + 258s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=52M/256M peak=53M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4192 +[12:09:58] + 273s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=53M/256M peak=54M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4435 +[12:10:13] + 288s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=54M/256M peak=55M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4675 +[12:10:29] + 304s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=56M/256M peak=57M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4910 +[12:10:44] + 319s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=57M/256M peak=59M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5159 +[12:10:59] + 334s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=59M/256M peak=60M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5395 +[12:11:14] + 349s wanderer=140M/512M peak=154M kills=0 rs=0 wanderer-db=60M/256M peak=62M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5631 +[12:11:29] + 364s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=61M/256M peak=63M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5868 +[12:11:45] + 380s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=63M/256M peak=64M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6107 +[12:12:00] + 395s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=65M/256M peak=66M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6348 +[12:12:15] + 410s wanderer=139M/512M peak=154M kills=0 rs=0 wanderer-db=67M/256M peak=67M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6604 +[12:12:30] + 425s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=68M/256M peak=69M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6837 +[12:12:45] + 440s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=69M/256M peak=71M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=7091 +[12:13:01] + 456s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=71M/256M peak=72M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=7351 +[12:13:16] + 471s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=73M/256M peak=73M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=7602 +[12:13:31] + 486s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=74M/256M peak=75M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=7852 +[12:13:46] + 501s wanderer=144M/512M peak=154M kills=0 rs=0 wanderer-db=76M/256M peak=76M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8107 +[12:14:01] + 516s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=77M/256M peak=79M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8340 +[12:14:16] + 531s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=78M/256M peak=79M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8582 +[12:14:32] + 547s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=80M/256M peak=81M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8820 +[12:14:47] + 562s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=81M/256M peak=83M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=9057 +[12:15:02] + 577s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=83M/256M peak=84M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=9295 +[12:15:17] + 592s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=84M/256M peak=86M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=9538 +[12:15:32] + 607s wanderer=140M/512M peak=154M kills=0 rs=0 wanderer-db=86M/256M peak=87M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=9780 +[12:15:33] memory watch: killed=False tight=['wanderer-search'] requests=9781 codes={'200': 9781} +[12:15:33] MV-wanderer: ABORT — putting the FROM images back +[12:16:22] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:16:22] ABORT: app came back in 31.3s; data present=True +{ + "harness_version": 5, + "edge": "MV-wanderer", + "app": "wanderer", + "note": "night 2026-09-23 within-a-major move: wanderer=flomp/wanderer-web:v0.21.2, wanderer-db=flomp/wanderer-db:v0.21.2", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 607.8, + "requested_s": 600, + "requests": 9781, + "codes": { + "200": 9781 + }, + "first_kill": null, + "containers": { + "wanderer": { + "limit": 536870912, + "peak": 161669120, + "peak_pct": 0.301, + "anon_peak_sampled": 140189696, + "anon_peak_pct": 0.261, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-db": { + "limit": 268435456, + "peak": 91942912, + "peak_pct": 0.343, + "anon_peak_sampled": 57614336, + "anon_peak_pct": 0.215, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-search": { + "limit": 268435456, + "peak": 268439552, + "peak_pct": 1.0, + "anon_peak_sampled": 257552384, + "anon_peak_pct": 0.959, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [ + "memory_tight" + ], + "bench_overrides": null, + "duration_s": 36.4, + "measured_at": "2026-10-28T12:16:22Z", + "evidence": "evidence/MV-wanderer", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 808.3 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/abort-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/abort-states.json new file mode 100644 index 00000000..9c0780e8 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/abort-states.json @@ -0,0 +1,20 @@ +{ + "wanderer": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-db": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-search": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/compose-final.log new file mode 100644 index 00000000..bbe358e9 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/compose-final.log @@ -0,0 +1,913 @@ +0m meilisearch: close time.busy=207µs time.idle=449µs +wanderer-search | 2026-10-28T12:15:05.419740Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.8µs time.idle=256µs +wanderer-search | 2026-10-28T12:15:05.475415Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=452µs +wanderer-search | 2026-10-28T12:15:05.498137Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.6µs time.idle=250µs +wanderer-search | 2026-10-28T12:15:05.540970Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=124µs time.idle=569µs +wanderer-search | 2026-10-28T12:15:05.555490Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=211µs time.idle=580µs +wanderer-search | 2026-10-28T12:15:05.597124Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=422µs +wanderer-search | 2026-10-28T12:15:05.620135Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.9µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:05.675989Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=444µs +wanderer-search | 2026-10-28T12:15:05.684790Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.3µs time.idle=233µs +wanderer-search | 2026-10-28T12:15:05.741053Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=440µs +wanderer-search | 2026-10-28T12:15:05.762985Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.0µs time.idle=222µs +wanderer-search | 2026-10-28T12:15:05.805612Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.0µs time.idle=322µs +wanderer-search | 2026-10-28T12:15:05.818990Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:05.861228Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=406µs +wanderer-search | 2026-10-28T12:15:05.885427Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.1µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:05.941947Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=229µs time.idle=381µs +wanderer-search | 2026-10-28T12:15:05.949834Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=71.9µs time.idle=225µs +wanderer-search | 2026-10-28T12:15:06.009057Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=455µs +wanderer-search | 2026-10-28T12:15:06.027693Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.3µs time.idle=251µs +wanderer-search | 2026-10-28T12:15:06.071604Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=116µs time.idle=303µs +wanderer-search | 2026-10-28T12:15:06.083577Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=234µs time.idle=506µs +wanderer-search | 2026-10-28T12:15:06.128173Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=411µs +wanderer-search | 2026-10-28T12:15:06.150683Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.2µs time.idle=281µs +wanderer-search | 2026-10-28T12:15:06.206248Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=460µs +wanderer-search | 2026-10-28T12:15:06.217720Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.8µs time.idle=278µs +wanderer-search | 2026-10-28T12:15:06.273164Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=418µs +wanderer-search | 2026-10-28T12:15:06.291988Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.1µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:06.336925Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.7µs time.idle=297µs +wanderer-search | 2026-10-28T12:15:06.348217Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=436µs +wanderer-search | 2026-10-28T12:15:06.393359Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=405µs +wanderer-search | 2026-10-28T12:15:06.414150Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.9µs time.idle=315µs +wanderer-search | 2026-10-28T12:15:06.468881Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=449µs +wanderer-search | 2026-10-28T12:15:06.482120Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.2µs time.idle=229µs +wanderer-search | 2026-10-28T12:15:06.537896Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=253µs time.idle=502µs +wanderer-search | 2026-10-28T12:15:06.557130Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.0µs time.idle=224µs +wanderer-search | 2026-10-28T12:15:06.605644Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.1µs time.idle=301µs +wanderer-search | 2026-10-28T12:15:06.611416Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=467µs +wanderer-search | 2026-10-28T12:15:06.663110Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=236µs time.idle=493µs +wanderer-search | 2026-10-28T12:15:06.677719Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.5µs time.idle=220µs +wanderer-search | 2026-10-28T12:15:06.735435Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=428µs +wanderer-search | 2026-10-28T12:15:06.746588Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.4µs time.idle=224µs +wanderer-search | 2026-10-28T12:15:06.800682Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=432µs +wanderer-search | 2026-10-28T12:15:06.819879Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.9µs time.idle=234µs +wanderer-search | 2026-10-28T12:15:06.874618Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=433µs +wanderer-search | 2026-10-28T12:15:06.875362Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.5µs time.idle=260µs +wanderer-search | 2026-10-28T12:15:06.929127Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=412µs +wanderer-search | 2026-10-28T12:15:06.943817Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.3µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:06.999789Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=233µs time.idle=471µs +wanderer-search | 2026-10-28T12:15:07.008935Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.2µs time.idle=263µs +wanderer-search | 2026-10-28T12:15:07.062854Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=457µs +wanderer-search | 2026-10-28T12:15:07.083056Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.7µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:07.137285Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=436µs +wanderer-search | 2026-10-28T12:15:07.138151Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.2µs time.idle=272µs +wanderer-search | 2026-10-28T12:15:07.192967Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=171µs time.idle=379µs +wanderer-search | 2026-10-28T12:15:07.208050Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.6µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:07.261252Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=386µs +wanderer-search | 2026-10-28T12:15:07.270700Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.2µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:07.326670Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=258µs time.idle=593µs +wanderer-search | 2026-10-28T12:15:07.346674Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.1µs time.idle=475µs +wanderer-search | 2026-10-28T12:15:07.400813Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=428µs +wanderer-search | 2026-10-28T12:15:07.403840Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=301µs +wanderer-search | 2026-10-28T12:15:07.459257Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=449µs +wanderer-search | 2026-10-28T12:15:07.469244Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.9µs time.idle=243µs +wanderer-search | 2026-10-28T12:15:07.523653Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=392µs +wanderer-search | 2026-10-28T12:15:07.537158Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=245µs +wanderer-search | 2026-10-28T12:15:07.590270Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=484µs +wanderer-search | 2026-10-28T12:15:07.612620Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.7µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:07.665907Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=402µs +wanderer-search | 2026-10-28T12:15:07.673308Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=221µs +wanderer-search | 2026-10-28T12:15:07.726218Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=402µs +wanderer-search | 2026-10-28T12:15:07.733649Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.7µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:07.787782Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=402µs +wanderer-search | 2026-10-28T12:15:07.798777Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.4µs time.idle=233µs +wanderer-search | 2026-10-28T12:15:07.851986Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=389µs +wanderer-search | 2026-10-28T12:15:07.873837Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:07.928681Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=469µs +wanderer-search | 2026-10-28T12:15:07.936986Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.9µs time.idle=218µs +wanderer-search | 2026-10-28T12:15:07.993193Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:08.003860Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.5µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:08.059464Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=414µs +wanderer-search | 2026-10-28T12:15:08.060912Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.4µs time.idle=266µs +wanderer-search | 2026-10-28T12:15:08.116566Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=466µs +wanderer-search | 2026-10-28T12:15:08.137651Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=251µs +wanderer-search | 2026-10-28T12:15:08.192050Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=414µs +wanderer-search | 2026-10-28T12:15:08.203261Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=239µs +wanderer-search | 2026-10-28T12:15:08.256856Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=404µs +wanderer-search | 2026-10-28T12:15:08.269045Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.0µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:08.323135Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=396µs +wanderer-search | 2026-10-28T12:15:08.325590Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.9µs time.idle=265µs +wanderer-search | 2026-10-28T12:15:08.379719Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=507µs +wanderer-search | 2026-10-28T12:15:08.400151Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.0µs time.idle=216µs +wanderer-search | 2026-10-28T12:15:08.453258Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=398µs +wanderer-search | 2026-10-28T12:15:08.464714Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.6µs time.idle=214µs +wanderer-search | 2026-10-28T12:15:08.518853Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=413µs +wanderer-search | 2026-10-28T12:15:08.532454Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.0µs time.idle=250µs +wanderer-search | 2026-10-28T12:15:08.586559Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=438µs +wanderer-search | 2026-10-28T12:15:08.588232Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.8µs time.idle=257µs +wanderer-search | 2026-10-28T12:15:08.644990Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=479µs +wanderer-search | 2026-10-28T12:15:08.661131Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=239µs +wanderer-search | 2026-10-28T12:15:08.714674Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=171µs time.idle=406µs +wanderer-search | 2026-10-28T12:15:08.726813Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.3µs time.idle=229µs +wanderer-search | 2026-10-28T12:15:08.781058Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=170µs time.idle=458µs +wanderer-search | 2026-10-28T12:15:08.795133Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.0µs time.idle=224µs +wanderer-search | 2026-10-28T12:15:08.849065Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=403µs +wanderer-search | 2026-10-28T12:15:08.857392Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.2µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:08.910861Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=423µs +wanderer-search | 2026-10-28T12:15:08.922841Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.9µs time.idle=249µs +wanderer-search | 2026-10-28T12:15:08.977481Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=395µs +wanderer-search | 2026-10-28T12:15:08.989252Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.8µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:09.043601Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=417µs +wanderer-search | 2026-10-28T12:15:09.056982Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=221µs +wanderer-search | 2026-10-28T12:15:09.111211Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=453µs +wanderer-search | 2026-10-28T12:15:09.124262Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=115µs time.idle=1.49ms +wanderer-search | 2026-10-28T12:15:09.180047Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=414µs time.idle=237µs +wanderer-search | 2026-10-28T12:15:09.192806Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=129µs time.idle=909µs +wanderer-search | 2026-10-28T12:15:09.246537Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=427µs +wanderer-search | 2026-10-28T12:15:09.256270Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.3µs time.idle=230µs +wanderer-search | 2026-10-28T12:15:09.311187Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=227µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:09.329210Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=150µs time.idle=2.83ms +wanderer-search | 2026-10-28T12:15:09.352482Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=459µs time.idle=278µs +wanderer-search | 2026-10-28T12:15:09.391701Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.5µs time.idle=294µs +wanderer-search | 2026-10-28T12:15:09.404763Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:09.456218Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=298µs +wanderer-search | 2026-10-28T12:15:09.472894Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=429µs +wanderer-search | 2026-10-28T12:15:09.520998Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.7µs time.idle=239µs +wanderer-search | 2026-10-28T12:15:09.534051Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=473µs +wanderer-search | 2026-10-28T12:15:09.565021Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=256µs +wanderer-search | 2026-10-28T12:15:09.579585Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=458µs +wanderer-search | 2026-10-28T12:15:09.614191Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.9µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:09.629794Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=523µs +wanderer-search | 2026-10-28T12:15:09.683220Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.1µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:09.704084Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=536µs +wanderer-search | 2026-10-28T12:15:09.743133Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.4µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:09.757212Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=423µs +wanderer-search | 2026-10-28T12:15:09.787518Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=259µs +wanderer-search | 2026-10-28T12:15:09.800944Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=388µs +wanderer-search | 2026-10-28T12:15:09.843990Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.7µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:09.856992Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=398µs +wanderer-search | 2026-10-28T12:15:09.915879Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.2µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:09.931530Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=508µs +wanderer-search | 2026-10-28T12:15:09.967150Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.1µs time.idle=356µs +wanderer-search | 2026-10-28T12:15:09.983303Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=236µs time.idle=502µs +wanderer-search | 2026-10-28T12:15:10.009557Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.1µs time.idle=348µs +wanderer-search | 2026-10-28T12:15:10.027872Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=254µs time.idle=553µs +wanderer-search | 2026-10-28T12:15:10.064980Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.5µs time.idle=240µs +wanderer-search | 2026-10-28T12:15:10.078010Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=211µs time.idle=436µs +wanderer-search | 2026-10-28T12:15:10.141775Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.3µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:10.154995Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=431µs +wanderer-search | 2026-10-28T12:15:10.193730Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.9µs time.idle=233µs +wanderer-search | 2026-10-28T12:15:10.206727Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=459µs +wanderer-search | 2026-10-28T12:15:10.238043Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=229µs +wanderer-search | 2026-10-28T12:15:10.252135Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=500µs +wanderer-search | 2026-10-28T12:15:10.285954Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=134µs time.idle=354µs +wanderer-search | 2026-10-28T12:15:10.299051Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=458µs +wanderer-search | 2026-10-28T12:15:10.364143Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=305µs +wanderer-search | 2026-10-28T12:15:10.378726Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=422µs +wanderer-search | 2026-10-28T12:15:10.415022Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.5µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:10.427871Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=446µs +wanderer-search | 2026-10-28T12:15:10.461504Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=291µs +wanderer-search | 2026-10-28T12:15:10.477346Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=418µs +wanderer-search | 2026-10-28T12:15:10.506973Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.5µs time.idle=225µs +wanderer-search | 2026-10-28T12:15:10.521556Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=440µs +wanderer-search | 2026-10-28T12:15:10.588103Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.2µs time.idle=227µs +wanderer-search | 2026-10-28T12:15:10.602157Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=419µs +wanderer-search | 2026-10-28T12:15:10.636136Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:10.650229Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=399µs +wanderer-search | 2026-10-28T12:15:10.686688Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.6µs time.idle=221µs +wanderer-search | 2026-10-28T12:15:10.699822Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:10.730762Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.2µs time.idle=224µs +wanderer-search | 2026-10-28T12:15:10.744275Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=384µs +wanderer-search | 2026-10-28T12:15:10.810508Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.4µs time.idle=271µs +wanderer-search | 2026-10-28T12:15:10.824765Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=444µs +wanderer-search | 2026-10-28T12:15:10.859293Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.1µs time.idle=284µs +wanderer-search | 2026-10-28T12:15:10.872764Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=217µs time.idle=423µs +wanderer-search | 2026-10-28T12:15:10.908378Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.4µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:10.922131Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=468µs +wanderer-search | 2026-10-28T12:15:10.954956Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.8µs time.idle=257µs +wanderer-search | 2026-10-28T12:15:10.969370Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=227µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:11.033373Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.1µs time.idle=275µs +wanderer-search | 2026-10-28T12:15:11.048597Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=455µs +wanderer-search | 2026-10-28T12:15:11.083210Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.3µs time.idle=257µs +wanderer-search | 2026-10-28T12:15:11.101482Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=299µs time.idle=674µs +wanderer-search | 2026-10-28T12:15:11.130806Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.9µs time.idle=221µs +wanderer-search | 2026-10-28T12:15:11.144789Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=423µs +wanderer-search | 2026-10-28T12:15:11.178677Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.0µs time.idle=224µs +wanderer-search | 2026-10-28T12:15:11.193300Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=418µs +wanderer-search | 2026-10-28T12:15:11.258309Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.2µs time.idle=228µs +wanderer-search | 2026-10-28T12:15:11.271309Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=397µs +wanderer-search | 2026-10-28T12:15:11.312325Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.3µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:11.331893Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=427µs +wanderer-search | 2026-10-28T12:15:11.354125Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=327µs +wanderer-search | 2026-10-28T12:15:11.371087Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:11.402155Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=129µs time.idle=276µs +wanderer-search | 2026-10-28T12:15:11.415052Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=433µs +wanderer-search | 2026-10-28T12:15:11.479840Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:11.493088Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=420µs +wanderer-search | 2026-10-28T12:15:11.543859Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=126µs time.idle=331µs +wanderer-search | 2026-10-28T12:15:11.557166Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:11.580250Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.8µs time.idle=225µs +wanderer-search | 2026-10-28T12:15:11.625141Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.2µs time.idle=285µs +wanderer-search | 2026-10-28T12:15:11.637999Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=504µs +wanderer-search | 2026-10-28T12:15:11.681502Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=241µs time.idle=504µs +wanderer-search | 2026-10-28T12:15:11.701220Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.0µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:11.755323Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=397µs +wanderer-search | 2026-10-28T12:15:11.764901Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.3µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:11.818569Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=411µs +wanderer-search | 2026-10-28T12:15:11.846786Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.3µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:11.861075Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=405µs +wanderer-search | 2026-10-28T12:15:11.891605Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.6µs time.idle=262µs +wanderer-search | 2026-10-28T12:15:11.904815Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:11.963883Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.1µs time.idle=279µs +wanderer-search | 2026-10-28T12:15:11.978969Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=441µs +wanderer-search | 2026-10-28T12:15:12.026767Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=238µs +wanderer-search | 2026-10-28T12:15:12.044333Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=219µs time.idle=543µs +wanderer-search | 2026-10-28T12:15:12.069887Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=133µs time.idle=506µs +wanderer-search | 2026-10-28T12:15:12.087301Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=462µs +wanderer-search | 2026-10-28T12:15:12.113696Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.6µs time.idle=233µs +wanderer-search | 2026-10-28T12:15:12.127344Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=212µs time.idle=457µs +wanderer-search | 2026-10-28T12:15:12.187267Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.4µs time.idle=232µs +wanderer-search | 2026-10-28T12:15:12.201936Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=440µs +wanderer-search | 2026-10-28T12:15:12.253197Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.9µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:12.266249Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=422µs +wanderer-search | 2026-10-28T12:15:12.296029Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.7µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:12.309534Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=249µs time.idle=418µs +wanderer-search | 2026-10-28T12:15:12.336164Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.3µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:12.348917Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=434µs +wanderer-search | 2026-10-28T12:15:12.411078Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.2µs time.idle=310µs +wanderer-search | 2026-10-28T12:15:12.426706Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=444µs +wanderer-search | 2026-10-28T12:15:12.474494Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=240µs +wanderer-search | 2026-10-28T12:15:12.489471Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=506µs +wanderer-search | 2026-10-28T12:15:12.517996Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:12.531683Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=420µs +wanderer-search | 2026-10-28T12:15:12.556900Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.6µs time.idle=217µs +wanderer-search | 2026-10-28T12:15:12.610264Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=172µs time.idle=408µs +wanderer-search | 2026-10-28T12:15:12.634999Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.2µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:12.689504Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=433µs +wanderer-search | 2026-10-28T12:15:12.700216Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=73.0µs time.idle=238µs +wanderer-search | 2026-10-28T12:15:12.739836Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=255µs +wanderer-search | 2026-10-28T12:15:12.758158Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=448µs +wanderer-search | 2026-10-28T12:15:12.762794Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=302µs time.idle=627µs +wanderer-search | 2026-10-28T12:15:12.818337Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.4µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:12.832472Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=442µs +wanderer-search | 2026-10-28T12:15:12.898316Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=232µs +wanderer-search | 2026-10-28T12:15:12.918334Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=543µs time.idle=2.52ms +wanderer-search | 2026-10-28T12:15:12.969531Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=258µs +wanderer-search | 2026-10-28T12:15:12.977501Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.7µs time.idle=287µs +wanderer-search | 2026-10-28T12:15:12.985224Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=476µs +wanderer-search | 2026-10-28T12:15:13.033072Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:13.041756Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.1µs time.idle=710µs +wanderer-search | 2026-10-28T12:15:13.095789Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=445µs +wanderer-search | 2026-10-28T12:15:13.132150Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.6µs time.idle=251µs +wanderer-search | 2026-10-28T12:15:13.147523Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=439µs +wanderer-search | 2026-10-28T12:15:13.196210Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.0µs time.idle=261µs +wanderer-search | 2026-10-28T12:15:13.214988Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=462µs +wanderer-search | 2026-10-28T12:15:13.231322Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=78.7µs time.idle=16.8µs +wanderer-search | 2026-10-28T12:15:13.241935Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=73.7µs time.idle=253µs +wanderer-search | 2026-10-28T12:15:13.254316Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=396µs +wanderer-search | 2026-10-28T12:15:13.304946Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=109µs time.idle=265µs +wanderer-search | 2026-10-28T12:15:13.317792Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=394µs +wanderer-search | 2026-10-28T12:15:13.356564Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.4µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:13.369434Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:13.425333Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.4µs time.idle=232µs +wanderer-search | 2026-10-28T12:15:13.437865Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=408µs +wanderer-search | 2026-10-28T12:15:13.462917Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.8µs time.idle=222µs +wanderer-search | 2026-10-28T12:15:13.517508Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=407µs +wanderer-search | 2026-10-28T12:15:13.525757Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:13.579610Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=435µs +wanderer-search | 2026-10-28T12:15:13.580071Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=72.4µs time.idle=228µs +wanderer-search | 2026-10-28T12:15:13.633254Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:13.645927Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.8µs time.idle=275µs +wanderer-search | 2026-10-28T12:15:13.700571Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=451µs +wanderer-search | 2026-10-28T12:15:13.725626Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.6µs time.idle=304µs +wanderer-search | 2026-10-28T12:15:13.780112Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=399µs +wanderer-search | 2026-10-28T12:15:13.787880Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.0µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:13.842096Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=240µs time.idle=487µs +wanderer-search | 2026-10-28T12:15:13.843981Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.4µs time.idle=262µs +wanderer-search | 2026-10-28T12:15:13.897716Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=500µs +wanderer-search | 2026-10-28T12:15:13.908530Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.4µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:13.963924Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:13.989087Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.9µs time.idle=243µs +wanderer-search | 2026-10-28T12:15:14.042343Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=401µs +wanderer-search | 2026-10-28T12:15:14.053094Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.3µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:14.107179Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=110µs time.idle=351µs +wanderer-search | 2026-10-28T12:15:14.109504Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=249µs time.idle=611µs +wanderer-search | 2026-10-28T12:15:14.165099Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=400µs +wanderer-search | 2026-10-28T12:15:14.173154Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.4µs time.idle=304µs +wanderer-search | 2026-10-28T12:15:14.229291Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=222µs time.idle=483µs +wanderer-search | 2026-10-28T12:15:14.250549Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.0µs time.idle=221µs +wanderer-search | 2026-10-28T12:15:14.305711Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=400µs +wanderer-search | 2026-10-28T12:15:14.318887Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=69.9µs time.idle=200µs +wanderer-search | 2026-10-28T12:15:14.373414Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=461µs +wanderer-search | 2026-10-28T12:15:14.374181Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.0µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:14.428970Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=475µs +wanderer-search | 2026-10-28T12:15:14.438272Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.5µs time.idle=303µs +wanderer-search | 2026-10-28T12:15:14.491020Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=390µs +wanderer-search | 2026-10-28T12:15:14.514059Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=218µs +wanderer-search | 2026-10-28T12:15:14.567809Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=447µs +wanderer-search | 2026-10-28T12:15:14.581215Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.4µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:14.634255Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=378µs +wanderer-search | 2026-10-28T12:15:14.642066Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.0µs time.idle=232µs +wanderer-search | 2026-10-28T12:15:14.695830Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=420µs +wanderer-search | 2026-10-28T12:15:14.704684Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.9µs time.idle=220µs +wanderer-search | 2026-10-28T12:15:14.759896Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=389µs +wanderer-search | 2026-10-28T12:15:14.776043Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.0µs time.idle=245µs +wanderer-search | 2026-10-28T12:15:14.828904Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=387µs +wanderer-search | 2026-10-28T12:15:14.842433Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.8µs time.idle=234µs +wanderer-search | 2026-10-28T12:15:14.894895Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=449µs +wanderer-search | 2026-10-28T12:15:14.905585Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=181µs time.idle=260µs +wanderer-search | 2026-10-28T12:15:14.925813Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=411µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:14.968371Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:14.980750Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=400µs +wanderer-search | 2026-10-28T12:15:15.037157Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.0µs time.idle=265µs +wanderer-search | 2026-10-28T12:15:15.054224Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=334µs time.idle=614µs +wanderer-search | 2026-10-28T12:15:15.102901Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=255µs +wanderer-search | 2026-10-28T12:15:15.115593Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=467µs +wanderer-search | 2026-10-28T12:15:15.136003Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.3µs time.idle=218µs +wanderer-search | 2026-10-28T12:15:15.189422Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:15.191462Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.4µs time.idle=256µs +wanderer-search | 2026-10-28T12:15:15.245516Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=408µs +wanderer-search | 2026-10-28T12:15:15.264801Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.8µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:15.318358Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=172µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:15.326212Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.9µs time.idle=212µs +wanderer-search | 2026-10-28T12:15:15.381480Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=476µs +wanderer-search | 2026-10-28T12:15:15.397966Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:15.454356Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=221µs time.idle=418µs +wanderer-search | 2026-10-28T12:15:15.456216Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.0µs time.idle=310µs +wanderer-search | 2026-10-28T12:15:15.509797Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=444µs +wanderer-search | 2026-10-28T12:15:15.526729Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.1µs time.idle=227µs +wanderer-search | 2026-10-28T12:15:15.580465Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=430µs +wanderer-search | 2026-10-28T12:15:15.590435Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.2µs time.idle=286µs +wanderer-search | 2026-10-28T12:15:15.645814Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:15.664120Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.1µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:15.716891Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:15.717735Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.6µs time.idle=238µs +wanderer-search | 2026-10-28T12:15:15.774465Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=230µs time.idle=463µs +wanderer-search | 2026-10-28T12:15:15.788817Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.4µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:15.844425Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=218µs time.idle=626µs +wanderer-search | 2026-10-28T12:15:15.854556Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.7µs time.idle=344µs +wanderer-search | 2026-10-28T12:15:15.910978Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=441µs +wanderer-search | 2026-10-28T12:15:15.925551Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.4µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:15.982586Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=224µs time.idle=653µs +wanderer-search | 2026-10-28T12:15:15.987107Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=119µs time.idle=683µs +wanderer-search | 2026-10-28T12:15:16.041160Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=380µs +wanderer-search | 2026-10-28T12:15:16.054089Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.8µs time.idle=267µs +wanderer-search | 2026-10-28T12:15:16.108894Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:16.120426Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.5µs time.idle=296µs +wanderer-search | 2026-10-28T12:15:16.173714Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=419µs +wanderer-search | 2026-10-28T12:15:16.195065Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=282µs +wanderer-search | 2026-10-28T12:15:16.249866Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=465µs +wanderer-search | 2026-10-28T12:15:16.252681Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.1µs time.idle=312µs +wanderer-search | 2026-10-28T12:15:16.307644Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=231µs time.idle=512µs +wanderer-search | 2026-10-28T12:15:16.319102Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.8µs time.idle=232µs +wanderer-search | 2026-10-28T12:15:16.377096Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=252µs time.idle=491µs +wanderer-search | 2026-10-28T12:15:16.388150Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.3µs time.idle=260µs +wanderer-search | 2026-10-28T12:15:16.443470Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=438µs +wanderer-search | 2026-10-28T12:15:16.459254Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.1µs time.idle=253µs +wanderer-search | 2026-10-28T12:15:16.513568Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=443µs +wanderer-search | 2026-10-28T12:15:16.522068Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.3µs time.idle=214µs +wanderer-search | 2026-10-28T12:15:16.576091Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=407µs +wanderer-search | 2026-10-28T12:15:16.588174Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.8µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:16.641913Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=425µs +wanderer-search | 2026-10-28T12:15:16.651131Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=213µs +wanderer-search | 2026-10-28T12:15:16.705140Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=407µs +wanderer-search | 2026-10-28T12:15:16.721832Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.5µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:16.776597Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=434µs +wanderer-search | 2026-10-28T12:15:16.784678Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.3µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:16.838184Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=420µs +wanderer-search | 2026-10-28T12:15:16.850013Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.6µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:16.903089Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=443µs +wanderer-search | 2026-10-28T12:15:16.912980Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.9µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:16.966561Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:16.989349Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=165µs time.idle=576µs +wanderer-search | 2026-10-28T12:15:17.044169Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=280µs time.idle=437µs +wanderer-search | 2026-10-28T12:15:17.047071Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=254µs +wanderer-search | 2026-10-28T12:15:17.104951Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=544µs +wanderer-search | 2026-10-28T12:15:17.113505Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.7µs time.idle=282µs +wanderer-search | 2026-10-28T12:15:17.169174Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=406µs +wanderer-search | 2026-10-28T12:15:17.177211Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=222µs +wanderer-search | 2026-10-28T12:15:17.230741Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=476µs +wanderer-search | 2026-10-28T12:15:17.254958Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.8µs time.idle=227µs +wanderer-search | 2026-10-28T12:15:17.309026Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=397µs +wanderer-search | 2026-10-28T12:15:17.317272Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.5µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:17.370324Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=423µs +wanderer-search | 2026-10-28T12:15:17.378973Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.7µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:17.433775Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=523µs +wanderer-search | 2026-10-28T12:15:17.443414Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.2µs time.idle=243µs +wanderer-search | 2026-10-28T12:15:17.498997Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=683µs +wanderer-search | 2026-10-28T12:15:17.518077Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.1µs time.idle=271µs +wanderer-search | 2026-10-28T12:15:17.573214Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=435µs +wanderer-search | 2026-10-28T12:15:17.581970Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.0µs time.idle=313µs +wanderer-search | 2026-10-28T12:15:17.638493Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=220µs time.idle=460µs +wanderer-search | 2026-10-28T12:15:17.648913Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=256µs +wanderer-search | 2026-10-28T12:15:17.704801Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=215µs time.idle=445µs +wanderer-search | 2026-10-28T12:15:17.714840Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.7µs time.idle=277µs +wanderer-search | 2026-10-28T12:15:17.769418Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=496µs +wanderer-search | 2026-10-28T12:15:17.782372Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.0µs time.idle=252µs +wanderer-search | 2026-10-28T12:15:17.835898Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=456µs +wanderer-search | 2026-10-28T12:15:17.848933Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=276µs +wanderer-search | 2026-10-28T12:15:17.903110Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=428µs +wanderer-search | 2026-10-28T12:15:17.914882Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:17.969069Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=414µs +wanderer-search | 2026-10-28T12:15:17.978237Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.8µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:18.031421Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:18.044871Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.9µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:18.098801Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=406µs +wanderer-search | 2026-10-28T12:15:18.111053Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.5µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:18.166699Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=370µs time.idle=635µs +wanderer-search | 2026-10-28T12:15:18.177280Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.0µs time.idle=264µs +wanderer-search | 2026-10-28T12:15:18.232745Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:18.241129Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.5µs time.idle=219µs +wanderer-search | 2026-10-28T12:15:18.294273Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=405µs +wanderer-search | 2026-10-28T12:15:18.306667Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.2µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:18.362602Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=413µs +wanderer-search | 2026-10-28T12:15:18.375276Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.1µs time.idle=227µs +wanderer-search | 2026-10-28T12:15:18.429080Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=407µs +wanderer-search | 2026-10-28T12:15:18.440657Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.6µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:18.494436Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=421µs +wanderer-search | 2026-10-28T12:15:18.502235Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.4µs time.idle=221µs +wanderer-search | 2026-10-28T12:15:18.559144Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=218µs time.idle=453µs +wanderer-search | 2026-10-28T12:15:18.571068Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.4µs time.idle=266µs +wanderer-search | 2026-10-28T12:15:18.625012Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=221µs time.idle=530µs +wanderer-search | 2026-10-28T12:15:18.637089Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:18.690534Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=413µs +wanderer-search | 2026-10-28T12:15:18.702577Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.6µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:18.757876Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:18.769483Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.5µs time.idle=249µs +wanderer-search | 2026-10-28T12:15:18.824049Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=388µs +wanderer-search | 2026-10-28T12:15:18.832465Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.4µs time.idle=257µs +wanderer-search | 2026-10-28T12:15:18.886653Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=412µs +wanderer-search | 2026-10-28T12:15:18.898659Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=243µs +wanderer-search | 2026-10-28T12:15:18.953826Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=414µs +wanderer-search | 2026-10-28T12:15:18.965851Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:19.024159Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=223µs time.idle=463µs +wanderer-search | 2026-10-28T12:15:19.037143Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=145µs time.idle=193µs +wanderer-search | 2026-10-28T12:15:19.059572Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=514µs +wanderer-search | 2026-10-28T12:15:19.095406Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.5µs time.idle=296µs +wanderer-search | 2026-10-28T12:15:19.110548Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=521µs +wanderer-search | 2026-10-28T12:15:19.162832Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:19.179322Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=454µs +wanderer-search | 2026-10-28T12:15:19.234862Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.3µs time.idle=232µs +wanderer-search | 2026-10-28T12:15:19.251703Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=565µs +wanderer-search | 2026-10-28T12:15:19.269858Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.5µs time.idle=254µs +wanderer-search | 2026-10-28T12:15:19.321876Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.9µs time.idle=249µs +wanderer-search | 2026-10-28T12:15:19.323646Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=220µs time.idle=448µs +wanderer-search | 2026-10-28T12:15:19.376555Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=427µs +wanderer-search | 2026-10-28T12:15:19.388570Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=224µs +wanderer-search | 2026-10-28T12:15:19.442614Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=417µs +wanderer-search | 2026-10-28T12:15:19.460136Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=217µs +wanderer-search | 2026-10-28T12:15:19.513734Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=409µs +wanderer-search | 2026-10-28T12:15:19.532458Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:19.586561Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:19.587212Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=72.4µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:19.642149Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=409µs +wanderer-search | 2026-10-28T12:15:19.650995Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.2µs time.idle=225µs +wanderer-search | 2026-10-28T12:15:19.712146Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=504µs +wanderer-search | 2026-10-28T12:15:19.723425Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.1µs time.idle=311µs +wanderer-search | 2026-10-28T12:15:19.779049Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=453µs +wanderer-search | 2026-10-28T12:15:19.795430Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.6µs time.idle=292µs +wanderer-search | 2026-10-28T12:15:19.850073Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=259µs time.idle=513µs +wanderer-search | 2026-10-28T12:15:19.851787Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=110µs time.idle=307µs +wanderer-search | 2026-10-28T12:15:19.905394Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=458µs +wanderer-search | 2026-10-28T12:15:19.922151Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.6µs time.idle=266µs +wanderer-search | 2026-10-28T12:15:19.976244Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=411µs +wanderer-search | 2026-10-28T12:15:19.988239Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.6µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:20.042032Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=408µs +wanderer-search | 2026-10-28T12:15:20.059667Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.7µs time.idle=224µs +wanderer-search | 2026-10-28T12:15:20.113631Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=494µs +wanderer-search | 2026-10-28T12:15:20.115838Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.8µs time.idle=253µs +wanderer-search | 2026-10-28T12:15:20.169299Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=398µs +wanderer-search | 2026-10-28T12:15:20.185136Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=239µs +wanderer-search | 2026-10-28T12:15:20.239003Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=400µs +wanderer-search | 2026-10-28T12:15:20.249788Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:20.303989Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=400µs +wanderer-search | 2026-10-28T12:15:20.322508Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.9µs time.idle=287µs +wanderer-search | 2026-10-28T12:15:20.376291Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=416µs +wanderer-search | 2026-10-28T12:15:20.377705Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.6µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:20.431667Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=448µs +wanderer-search | 2026-10-28T12:15:20.447174Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.7µs time.idle=276µs +wanderer-search | 2026-10-28T12:15:20.500836Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=420µs +wanderer-search | 2026-10-28T12:15:20.511835Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.7µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:20.564981Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=432µs +wanderer-search | 2026-10-28T12:15:20.586365Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.3µs time.idle=273µs +wanderer-search | 2026-10-28T12:15:20.641310Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=423µs +wanderer-search | 2026-10-28T12:15:20.642062Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.3µs time.idle=228µs +wanderer-search | 2026-10-28T12:15:20.695300Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=427µs +wanderer-search | 2026-10-28T12:15:20.708650Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.2µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:20.763484Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=393µs +wanderer-search | 2026-10-28T12:15:20.776198Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.5µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:20.831603Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=397µs +wanderer-search | 2026-10-28T12:15:20.849536Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.8µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:20.903330Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=415µs +wanderer-search | 2026-10-28T12:15:20.904808Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.0µs time.idle=266µs +wanderer-search | 2026-10-28T12:15:20.957929Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:20.972240Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.5µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:21.028181Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=555µs +wanderer-search | 2026-10-28T12:15:21.041665Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.2µs time.idle=263µs +wanderer-search | 2026-10-28T12:15:21.096996Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=418µs +wanderer-search | 2026-10-28T12:15:21.111895Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=72.7µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:21.165591Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=418µs +wanderer-search | 2026-10-28T12:15:21.167042Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.7µs time.idle=298µs +wanderer-search | 2026-10-28T12:15:21.220046Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=430µs +wanderer-search | 2026-10-28T12:15:21.239507Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.3µs time.idle=245µs +wanderer-search | 2026-10-28T12:15:21.295011Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=245µs time.idle=454µs +wanderer-search | 2026-10-28T12:15:21.304442Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.0µs time.idle=271µs +wanderer-search | 2026-10-28T12:15:21.358565Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:21.374283Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.8µs time.idle=261µs +wanderer-search | 2026-10-28T12:15:21.429697Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=471µs +wanderer-search | 2026-10-28T12:15:21.431699Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=152µs time.idle=378µs +wanderer-search | 2026-10-28T12:15:21.488399Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=436µs +wanderer-search | 2026-10-28T12:15:21.504011Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.8µs time.idle=253µs +wanderer-search | 2026-10-28T12:15:21.559893Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=439µs +wanderer-search | 2026-10-28T12:15:21.568391Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.7µs time.idle=267µs +wanderer-search | 2026-10-28T12:15:21.624997Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=245µs time.idle=453µs +wanderer-search | 2026-10-28T12:15:21.638829Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.1µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:21.694306Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=249µs time.idle=514µs +wanderer-search | 2026-10-28T12:15:21.706009Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.1µs time.idle=312µs +wanderer-search | 2026-10-28T12:15:21.761659Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=412µs +wanderer-search | 2026-10-28T12:15:21.770115Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.0µs time.idle=269µs +wanderer-search | 2026-10-28T12:15:21.825885Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=444µs +wanderer-search | 2026-10-28T12:15:21.834882Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=238µs +wanderer-search | 2026-10-28T12:15:21.893044Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=240µs time.idle=560µs +wanderer-search | 2026-10-28T12:15:21.905568Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.3µs time.idle=343µs +wanderer-search | 2026-10-28T12:15:21.964504Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=270µs time.idle=501µs +wanderer-search | 2026-10-28T12:15:21.974619Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.1µs time.idle=243µs +wanderer-search | 2026-10-28T12:15:22.029640Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=458µs +wanderer-search | 2026-10-28T12:15:22.038894Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.3µs time.idle=239µs +wanderer-search | 2026-10-28T12:15:22.094512Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=239µs time.idle=464µs +wanderer-search | 2026-10-28T12:15:22.104709Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:22.161053Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=472µs +wanderer-search | 2026-10-28T12:15:22.175271Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.0µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:22.191694Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.2µs time.idle=230µs +wanderer-search | 2026-10-28T12:15:22.205782Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:22.228596Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=407µs +wanderer-search | 2026-10-28T12:15:22.239401Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.6µs time.idle=279µs +wanderer-search | 2026-10-28T12:15:22.293107Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=400µs +wanderer-search | 2026-10-28T12:15:22.303995Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.7µs time.idle=234µs +wanderer-search | 2026-10-28T12:15:22.357494Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:22.369881Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.2µs time.idle=222µs +wanderer-search | 2026-10-28T12:15:22.423262Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=402µs +wanderer-search | 2026-10-28T12:15:22.436511Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.8µs time.idle=291µs +wanderer-search | 2026-10-28T12:15:22.490548Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=485µs +wanderer-search | 2026-10-28T12:15:22.500918Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.8µs time.idle=251µs +wanderer-search | 2026-10-28T12:15:22.555564Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=172µs time.idle=476µs +wanderer-search | 2026-10-28T12:15:22.565892Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.9µs time.idle=314µs +wanderer-search | 2026-10-28T12:15:22.621233Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=212µs time.idle=652µs +wanderer-search | 2026-10-28T12:15:22.631770Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.8µs time.idle=250µs +wanderer-search | 2026-10-28T12:15:22.686241Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=409µs +wanderer-search | 2026-10-28T12:15:22.699017Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.1µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:22.752650Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:22.763942Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.2µs time.idle=230µs +wanderer-search | 2026-10-28T12:15:22.823165Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=224µs time.idle=531µs +wanderer-search | 2026-10-28T12:15:22.833859Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.0µs time.idle=263µs +wanderer-search | 2026-10-28T12:15:22.889610Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=494µs +wanderer-search | 2026-10-28T12:15:22.898678Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=116µs time.idle=220µs +wanderer-search | 2026-10-28T12:15:22.962999Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=300µs time.idle=1.14ms +wanderer-search | 2026-10-28T12:15:22.964487Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=126µs time.idle=1.06ms +wanderer-search | 2026-10-28T12:15:23.020242Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=362µs time.idle=812µs +wanderer-search | 2026-10-28T12:15:23.032824Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.3µs time.idle=327µs +wanderer-search | 2026-10-28T12:15:23.086781Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=389µs +wanderer-search | 2026-10-28T12:15:23.099106Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=73.8µs time.idle=219µs +wanderer-search | 2026-10-28T12:15:23.153628Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=468µs +wanderer-search | 2026-10-28T12:15:23.181623Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.8µs time.idle=251µs +wanderer-search | 2026-10-28T12:15:23.196832Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=478µs +wanderer-search | 2026-10-28T12:15:23.228189Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.3µs time.idle=267µs +wanderer-search | 2026-10-28T12:15:23.243274Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:23.295916Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.9µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:23.309683Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=408µs +wanderer-search | 2026-10-28T12:15:23.363053Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.0µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:23.377048Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=227µs time.idle=460µs +wanderer-search | 2026-10-28T12:15:23.407043Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.7µs time.idle=272µs +wanderer-search | 2026-10-28T12:15:23.422372Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=445µs +wanderer-search | 2026-10-28T12:15:23.452782Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=73.4µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:23.467340Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=419µs +wanderer-search | 2026-10-28T12:15:23.518482Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.2µs time.idle=262µs +wanderer-search | 2026-10-28T12:15:23.532205Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=416µs +wanderer-search | 2026-10-28T12:15:23.586000Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.7µs time.idle=225µs +wanderer-search | 2026-10-28T12:15:23.599165Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=401µs +wanderer-search | 2026-10-28T12:15:23.631304Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=72.1µs time.idle=237µs +wanderer-search | 2026-10-28T12:15:23.645500Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=440µs +wanderer-search | 2026-10-28T12:15:23.676987Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.4µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:23.690950Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=452µs +wanderer-search | 2026-10-28T12:15:23.741707Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.7µs time.idle=226µs +wanderer-search | 2026-10-28T12:15:23.754509Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=438µs +wanderer-search | 2026-10-28T12:15:23.807296Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.2µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:23.820949Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=526µs +wanderer-search | 2026-10-28T12:15:23.854192Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.5µs time.idle=256µs +wanderer-search | 2026-10-28T12:15:23.870119Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=261µs time.idle=522µs +wanderer-search | 2026-10-28T12:15:23.898864Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=279µs +wanderer-search | 2026-10-28T12:15:23.916423Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=438µs +wanderer-search | 2026-10-28T12:15:23.963656Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.8µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:23.978093Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=431µs +wanderer-search | 2026-10-28T12:15:24.029776Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.0µs time.idle=232µs +wanderer-search | 2026-10-28T12:15:24.043828Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=403µs +wanderer-search | 2026-10-28T12:15:24.079842Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.4µs time.idle=238µs +wanderer-search | 2026-10-28T12:15:24.093176Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=438µs +wanderer-search | 2026-10-28T12:15:24.126031Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.6µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:24.139184Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=416µs +wanderer-search | 2026-10-28T12:15:24.187778Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.6µs time.idle=233µs +wanderer-search | 2026-10-28T12:15:24.201126Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=391µs +wanderer-search | 2026-10-28T12:15:24.252249Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.7µs time.idle=308µs +wanderer-search | 2026-10-28T12:15:24.268940Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=376µs time.idle=595µs +wanderer-search | 2026-10-28T12:15:24.301511Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.6µs time.idle=262µs +wanderer-search | 2026-10-28T12:15:24.316253Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=425µs +wanderer-search | 2026-10-28T12:15:24.347270Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:24.360246Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=407µs +wanderer-search | 2026-10-28T12:15:24.409449Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.4µs time.idle=266µs +wanderer-search | 2026-10-28T12:15:24.423755Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=424µs +wanderer-search | 2026-10-28T12:15:24.477172Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.1µs time.idle=265µs +wanderer-search | 2026-10-28T12:15:24.492476Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=961µs +wanderer-search | 2026-10-28T12:15:24.524710Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=113µs time.idle=243µs +wanderer-search | 2026-10-28T12:15:24.538463Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=513µs +wanderer-search | 2026-10-28T12:15:24.568262Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.9µs time.idle=238µs +wanderer-search | 2026-10-28T12:15:24.581187Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=440µs +wanderer-search | 2026-10-28T12:15:24.632707Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.4µs time.idle=228µs +wanderer-search | 2026-10-28T12:15:24.645551Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=477µs +wanderer-search | 2026-10-28T12:15:24.701780Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.7µs time.idle=229µs +wanderer-search | 2026-10-28T12:15:24.715014Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=481µs +wanderer-search | 2026-10-28T12:15:24.748550Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=215µs time.idle=341µs +wanderer-search | 2026-10-28T12:15:24.763305Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=539µs +wanderer-search | 2026-10-28T12:15:24.789631Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=280µs +wanderer-search | 2026-10-28T12:15:24.804649Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=463µs +wanderer-search | 2026-10-28T12:15:24.853700Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.1µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:24.867479Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=454µs +wanderer-search | 2026-10-28T12:15:24.928909Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.3µs time.idle=257µs +wanderer-search | 2026-10-28T12:15:24.942416Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=527µs +wanderer-search | 2026-10-28T12:15:24.971595Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.8µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:24.984459Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=493µs +wanderer-search | 2026-10-28T12:15:25.013101Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.4µs time.idle=237µs +wanderer-search | 2026-10-28T12:15:25.025802Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=473µs +wanderer-search | 2026-10-28T12:15:25.076363Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.5µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:25.089226Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:25.150017Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.3µs time.idle=290µs +wanderer-search | 2026-10-28T12:15:25.163997Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=450µs +wanderer-search | 2026-10-28T12:15:25.192708Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.6µs time.idle=251µs +wanderer-search | 2026-10-28T12:15:25.205342Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=172µs time.idle=417µs +wanderer-search | 2026-10-28T12:15:25.234507Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.5µs time.idle=262µs +wanderer-search | 2026-10-28T12:15:25.247922Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=217µs time.idle=455µs +wanderer-search | 2026-10-28T12:15:25.297981Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.4µs time.idle=243µs +wanderer-search | 2026-10-28T12:15:25.311767Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=234µs time.idle=426µs +wanderer-search | 2026-10-28T12:15:25.372686Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.7µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:25.385663Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=433µs +wanderer-search | 2026-10-28T12:15:25.413475Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.4µs time.idle=244µs +wanderer-search | 2026-10-28T12:15:25.426161Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=388µs +wanderer-search | 2026-10-28T12:15:25.455510Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.7µs time.idle=251µs +wanderer-search | 2026-10-28T12:15:25.468673Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=425µs +wanderer-search | 2026-10-28T12:15:25.520675Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.5µs time.idle=245µs +wanderer-search | 2026-10-28T12:15:25.535212Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=430µs +wanderer-search | 2026-10-28T12:15:25.594098Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.9µs time.idle=233µs +wanderer-search | 2026-10-28T12:15:25.607256Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=172µs time.idle=398µs +wanderer-search | 2026-10-28T12:15:25.634233Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=223µs +wanderer-search | 2026-10-28T12:15:25.649084Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=427µs +wanderer-search | 2026-10-28T12:15:25.676949Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=256µs +wanderer-search | 2026-10-28T12:15:25.691954Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=520µs +wanderer-search | 2026-10-28T12:15:25.743431Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=281µs +wanderer-search | 2026-10-28T12:15:25.757827Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=614µs +wanderer-search | 2026-10-28T12:15:25.814432Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.9µs time.idle=260µs +wanderer-search | 2026-10-28T12:15:25.827250Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=419µs +wanderer-search | 2026-10-28T12:15:25.858557Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.5µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:25.871205Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=400µs +wanderer-search | 2026-10-28T12:15:25.902252Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=263µs +wanderer-search | 2026-10-28T12:15:25.915722Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=407µs +wanderer-search | 2026-10-28T12:15:25.965792Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.6µs time.idle=256µs +wanderer-search | 2026-10-28T12:15:25.979438Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=445µs +wanderer-search | 2026-10-28T12:15:26.035492Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.9µs time.idle=296µs +wanderer-search | 2026-10-28T12:15:26.052824Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=577µs +wanderer-search | 2026-10-28T12:15:26.079424Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.0µs time.idle=254µs +wanderer-search | 2026-10-28T12:15:26.094253Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=227µs time.idle=648µs +wanderer-search | 2026-10-28T12:15:26.124727Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.1µs time.idle=267µs +wanderer-search | 2026-10-28T12:15:26.139790Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=445µs +wanderer-search | 2026-10-28T12:15:26.187928Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=237µs +wanderer-search | 2026-10-28T12:15:26.200732Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=416µs +wanderer-search | 2026-10-28T12:15:26.262481Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.1µs time.idle=265µs +wanderer-search | 2026-10-28T12:15:26.275504Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=222µs time.idle=411µs +wanderer-search | 2026-10-28T12:15:26.302210Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.6µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:26.348939Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.3µs time.idle=246µs +wanderer-search | 2026-10-28T12:15:26.357432Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=438µs +wanderer-search | 2026-10-28T12:15:26.404710Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=427µs +wanderer-search | 2026-10-28T12:15:26.412617Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.7µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:26.474210Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=613µs time.idle=1.24ms +wanderer-search | 2026-10-28T12:15:26.488876Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=241µs time.idle=388µs +wanderer-search | 2026-10-28T12:15:26.514841Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=484µs +wanderer-search | 2026-10-28T12:15:26.565799Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=156µs time.idle=276µs +wanderer-search | 2026-10-28T12:15:26.580224Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=437µs +wanderer-search | 2026-10-28T12:15:26.613397Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.3µs time.idle=273µs +wanderer-search | 2026-10-28T12:15:26.627873Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=474µs +wanderer-search | 2026-10-28T12:15:26.688614Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.4µs time.idle=258µs +wanderer-search | 2026-10-28T12:15:26.702462Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=443µs +wanderer-search | 2026-10-28T12:15:26.723377Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.5µs time.idle=269µs +wanderer-search | 2026-10-28T12:15:26.778090Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=171µs time.idle=398µs +wanderer-search | 2026-10-28T12:15:26.789898Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.4µs time.idle=273µs +wanderer-search | 2026-10-28T12:15:26.840251Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.3µs time.idle=315µs +wanderer-search | 2026-10-28T12:15:26.848974Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=226µs time.idle=384µs +wanderer-search | 2026-10-28T12:15:26.911106Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=255µs time.idle=548µs +wanderer-search | 2026-10-28T12:15:26.913189Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=179µs time.idle=299µs +wanderer-search | 2026-10-28T12:15:26.935830Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=230µs time.idle=508µs +wanderer-search | 2026-10-28T12:15:26.987457Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.4µs time.idle=258µs +wanderer-search | 2026-10-28T12:15:27.001909Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=217µs time.idle=458µs +wanderer-search | 2026-10-28T12:15:27.059332Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=266µs +wanderer-search | 2026-10-28T12:15:27.072612Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=171µs time.idle=495µs +wanderer-search | 2026-10-28T12:15:27.121673Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=112µs time.idle=217µs +wanderer-search | 2026-10-28T12:15:27.135773Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=424µs +wanderer-search | 2026-10-28T12:15:27.145194Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.6µs time.idle=236µs +wanderer-search | 2026-10-28T12:15:27.199227Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=580µs +wanderer-search | 2026-10-28T12:15:27.210469Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.7µs time.idle=253µs +wanderer-search | 2026-10-28T12:15:27.264845Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:27.281628Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=235µs +wanderer-search | 2026-10-28T12:15:27.338487Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=423µs +wanderer-search | 2026-10-28T12:15:27.347121Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.5µs time.idle=283µs +wanderer-search | 2026-10-28T12:15:27.403508Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=505µs +wanderer-search | 2026-10-28T12:15:27.412065Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=326µs +wanderer-search | 2026-10-28T12:15:27.465281Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=441µs +wanderer-search | 2026-10-28T12:15:27.473787Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.7µs time.idle=260µs +wanderer-search | 2026-10-28T12:15:27.528579Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=462µs +wanderer-search | 2026-10-28T12:15:27.547904Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=100.0µs time.idle=311µs +wanderer-search | 2026-10-28T12:15:27.602494Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=441µs +wanderer-search | 2026-10-28T12:15:27.612296Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.2µs time.idle=239µs +wanderer-search | 2026-10-28T12:15:27.665188Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=411µs +wanderer-search | 2026-10-28T12:15:27.673207Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.6µs time.idle=241µs +wanderer-search | 2026-10-28T12:15:27.727707Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=433µs +wanderer-search | 2026-10-28T12:15:27.737847Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.5µs time.idle=255µs +wanderer-search | 2026-10-28T12:15:27.795958Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=452µs +wanderer-search | 2026-10-28T12:15:27.810971Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.3µs time.idle=291µs +wanderer-search | 2026-10-28T12:15:27.865394Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=437µs +wanderer-search | 2026-10-28T12:15:27.873237Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.8µs time.idle=257µs +wanderer-search | 2026-10-28T12:15:27.927146Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=601µs +wanderer-search | 2026-10-28T12:15:27.936934Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:27.990192Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=414µs +wanderer-search | 2026-10-28T12:15:28.005336Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.6µs time.idle=242µs +wanderer-search | 2026-10-28T12:15:28.058672Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=406µs +wanderer-search | 2026-10-28T12:15:28.073332Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.8µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:28.125998Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=395µs +wanderer-search | 2026-10-28T12:15:28.134541Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.2µs time.idle=287µs +wanderer-search | 2026-10-28T12:15:28.188555Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=420µs +wanderer-search | 2026-10-28T12:15:28.198298Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.7µs time.idle=264µs +wanderer-search | 2026-10-28T12:15:28.256724Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=240µs time.idle=512µs +wanderer-search | 2026-10-28T12:15:28.267263Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.5µs time.idle=302µs +wanderer-search | 2026-10-28T12:15:28.300576Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=60.7µs time.idle=17.5µs +wanderer-search | 2026-10-28T12:15:28.320855Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=441µs +wanderer-search | 2026-10-28T12:15:28.333146Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.3µs time.idle=250µs +wanderer-search | 2026-10-28T12:15:28.386894Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=429µs +wanderer-search | 2026-10-28T12:15:28.398151Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.6µs time.idle=264µs +wanderer-search | 2026-10-28T12:15:28.452657Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=444µs +wanderer-search | 2026-10-28T12:15:28.468157Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=143µs time.idle=667µs +wanderer-search | 2026-10-28T12:15:28.524549Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=579µs +wanderer-search | 2026-10-28T12:15:28.533062Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.5µs time.idle=212µs +wanderer-search | 2026-10-28T12:15:28.587527Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=410µs +wanderer-search | 2026-10-28T12:15:28.595606Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.4µs time.idle=245µs +wanderer-search | 2026-10-28T12:15:28.653844Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=236µs time.idle=490µs +wanderer-search | 2026-10-28T12:15:28.665105Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.3µs time.idle=260µs +wanderer-search | 2026-10-28T12:15:28.719109Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=212µs time.idle=541µs +wanderer-search | 2026-10-28T12:15:28.733693Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.4µs time.idle=329µs +wanderer-search | 2026-10-28T12:15:28.791736Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=443µs +wanderer-search | 2026-10-28T12:15:28.799795Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.0µs time.idle=297µs +wanderer-search | 2026-10-28T12:15:28.858971Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=251µs time.idle=487µs +wanderer-search | 2026-10-28T12:15:28.869552Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=386µs +wanderer-search | 2026-10-28T12:15:28.925978Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=440µs +wanderer-search | 2026-10-28T12:15:28.927971Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.1µs time.idle=311µs +wanderer-search | 2026-10-28T12:15:28.988169Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=235µs time.idle=483µs +wanderer-search | 2026-10-28T12:15:29.000883Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.3µs time.idle=460µs +wanderer-search | 2026-10-28T12:15:29.055418Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=469µs +wanderer-search | 2026-10-28T12:15:29.069884Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.6µs time.idle=252µs +wanderer-search | 2026-10-28T12:15:29.124298Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=411µs +wanderer-search | 2026-10-28T12:15:29.134735Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=250µs +wanderer-search | 2026-10-28T12:15:29.191608Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=220µs time.idle=496µs +wanderer-search | 2026-10-28T12:15:29.201941Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.6µs time.idle=289µs +wanderer-search | 2026-10-28T12:15:29.260169Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=413µs +wanderer-search | 2026-10-28T12:15:29.270104Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=273µs +wanderer-search | 2026-10-28T12:15:29.328771Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=237µs time.idle=467µs +wanderer-search | 2026-10-28T12:15:29.340080Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.9µs time.idle=302µs +wanderer-search | 2026-10-28T12:15:29.395783Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=237µs time.idle=484µs +wanderer-search | 2026-10-28T12:15:29.404478Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.7µs time.idle=305µs +wanderer-search | 2026-10-28T12:15:29.459363Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=401µs +wanderer-search | 2026-10-28T12:15:29.470263Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.2µs time.idle=248µs +wanderer-search | 2026-10-28T12:15:29.526094Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=438µs +wanderer-search | 2026-10-28T12:15:29.539268Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.4µs time.idle=255µs +wanderer-search | 2026-10-28T12:15:29.594648Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=459µs +wanderer-search | 2026-10-28T12:15:29.605430Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=109µs time.idle=364µs +wanderer-search | 2026-10-28T12:15:29.661078Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=425µs +wanderer-search | 2026-10-28T12:15:29.669991Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.7µs time.idle=278µs +wanderer-search | 2026-10-28T12:15:29.726139Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=428µs +wanderer-search | 2026-10-28T12:15:29.736619Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=125µs time.idle=302µs +wanderer-search | 2026-10-28T12:15:29.799829Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=291µs time.idle=457µs +wanderer-search | 2026-10-28T12:15:29.811063Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.4µs time.idle=270µs +wanderer-search | 2026-10-28T12:15:29.867131Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=259µs time.idle=546µs +wanderer-search | 2026-10-28T12:15:29.877567Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.3µs time.idle=345µs +wanderer-search | 2026-10-28T12:15:29.934352Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=220µs time.idle=456µs +wanderer-search | 2026-10-28T12:15:29.937447Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.1µs time.idle=302µs +wanderer-search | 2026-10-28T12:15:29.992213Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=458µs +wanderer-search | 2026-10-28T12:15:30.011432Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.3µs time.idle=326µs +wanderer-search | 2026-10-28T12:15:30.066357Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=457µs +wanderer-search | 2026-10-28T12:15:30.077538Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.2µs time.idle=299µs +wanderer-search | 2026-10-28T12:15:30.133539Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=234µs time.idle=515µs +wanderer-search | 2026-10-28T12:15:30.143560Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.9µs time.idle=272µs +wanderer-search | 2026-10-28T12:15:30.199863Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=476µs +wanderer-search | 2026-10-28T12:15:30.202441Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.0µs time.idle=318µs +wanderer-search | 2026-10-28T12:15:30.257292Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=489µs +wanderer-search | 2026-10-28T12:15:30.275685Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.8µs time.idle=249µs +wanderer-search | 2026-10-28T12:15:30.331112Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=477µs +wanderer-search | 2026-10-28T12:15:30.343435Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.5µs time.idle=287µs +wanderer-search | 2026-10-28T12:15:30.400167Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=223µs time.idle=570µs +wanderer-search | 2026-10-28T12:15:30.409674Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.0µs time.idle=301µs +wanderer-search | 2026-10-28T12:15:30.466663Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=235µs time.idle=508µs +wanderer-search | 2026-10-28T12:15:30.468573Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.0µs time.idle=347µs +wanderer-search | 2026-10-28T12:15:30.535563Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=363µs time.idle=837µs +wanderer-search | 2026-10-28T12:15:30.553147Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=154µs time.idle=2.13ms +wanderer-search | 2026-10-28T12:15:30.589572Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=277µs time.idle=2.23ms +wanderer-search | 2026-10-28T12:15:30.609922Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=111µs time.idle=622µs +wanderer-search | 2026-10-28T12:15:30.628204Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=274µs time.idle=419µs +wanderer-search | 2026-10-28T12:15:30.678572Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.7µs time.idle=319µs +wanderer-search | 2026-10-28T12:15:30.696457Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=229µs time.idle=565µs +wanderer-search | 2026-10-28T12:15:30.753780Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=122µs time.idle=311µs +wanderer-search | 2026-10-28T12:15:30.770416Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=425µs +wanderer-search | 2026-10-28T12:15:30.801275Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.0µs time.idle=308µs +wanderer-search | 2026-10-28T12:15:30.816756Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=487µs +wanderer-search | 2026-10-28T12:15:30.838883Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.0µs time.idle=271µs +wanderer-search | 2026-10-28T12:15:30.898671Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=314µs time.idle=637µs +wanderer-search | 2026-10-28T12:15:30.910787Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.7µs time.idle=284µs +wanderer-search | 2026-10-28T12:15:30.969169Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=487µs +wanderer-search | 2026-10-28T12:15:30.980035Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.6µs time.idle=262µs +wanderer-search | 2026-10-28T12:15:31.035130Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=106µs time.idle=338µs +wanderer-search | 2026-10-28T12:15:31.040083Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=248µs time.idle=514µs +wanderer-search | 2026-10-28T12:15:31.094067Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=436µs +wanderer-search | 2026-10-28T12:15:31.109880Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.9µs time.idle=289µs +wanderer-search | 2026-10-28T12:15:31.166817Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=463µs +wanderer-search | 2026-10-28T12:15:31.178229Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.5µs time.idle=255µs +wanderer-search | 2026-10-28T12:15:31.234782Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=477µs +wanderer-search | 2026-10-28T12:15:31.250782Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.5µs time.idle=276µs +wanderer-search | 2026-10-28T12:15:31.306008Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.6µs time.idle=351µs +wanderer-search | 2026-10-28T12:15:31.308330Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=233µs time.idle=503µs +wanderer-search | 2026-10-28T12:15:31.364737Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=507µs +wanderer-search | 2026-10-28T12:15:31.377110Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.8µs time.idle=309µs +wanderer-search | 2026-10-28T12:15:31.433442Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=218µs time.idle=462µs +wanderer-search | 2026-10-28T12:15:31.445141Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.4µs time.idle=337µs +wanderer-search | 2026-10-28T12:15:31.502931Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=215µs time.idle=525µs +wanderer-search | 2026-10-28T12:15:31.517480Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.7µs time.idle=320µs +wanderer-search | 2026-10-28T12:15:31.574023Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=451µs +wanderer-search | 2026-10-28T12:15:31.576952Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.6µs time.idle=339µs +wanderer-search | 2026-10-28T12:15:31.633922Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=486µs +wanderer-search | 2026-10-28T12:15:31.647194Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=109µs time.idle=341µs +wanderer-search | 2026-10-28T12:15:31.720537Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=117µs time.idle=238µs +wanderer-search | 2026-10-28T12:15:31.721167Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=727µs time.idle=257µs +wanderer-search | 2026-10-28T12:15:31.747097Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=483µs time.idle=742µs +wanderer-search | 2026-10-28T12:15:31.789001Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=139µs time.idle=273µs +wanderer-search | 2026-10-28T12:15:31.806832Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=610µs time.idle=102µs +wanderer-search | 2026-10-28T12:15:31.847478Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.1µs time.idle=457µs +wanderer-search | 2026-10-28T12:15:31.863144Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=412µs +wanderer-search | 2026-10-28T12:15:31.934129Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.3µs time.idle=325µs +wanderer-search | 2026-10-28T12:15:31.948770Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=392µs +wanderer-search | 2026-10-28T12:15:31.958146Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.2µs time.idle=292µs +wanderer-search | 2026-10-28T12:15:32.016111Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=448µs +wanderer-search | 2026-10-28T12:15:32.024367Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.2µs time.idle=247µs +wanderer-search | 2026-10-28T12:15:32.074649Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=146µs time.idle=447µs +wanderer-search | 2026-10-28T12:15:32.083120Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=516µs time.idle=650µs +wanderer-search | 2026-10-28T12:15:32.132089Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=257µs time.idle=944µs +wanderer-search | 2026-10-28T12:15:32.159029Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.8µs time.idle=796µs +wanderer-search | 2026-10-28T12:15:32.177398Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=424µs time.idle=498µs +wanderer-search | 2026-10-28T12:15:32.225924Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=459µs +wanderer-search | 2026-10-28T12:15:32.245647Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=287µs time.idle=502µs +wanderer-search | 2026-10-28T12:15:32.294159Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.5µs time.idle=231µs +wanderer-search | 2026-10-28T12:15:32.308997Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=219µs time.idle=507µs +wanderer-search | 2026-10-28T12:15:32.344634Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.7µs time.idle=297µs +wanderer-search | 2026-10-28T12:15:32.361653Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=486µs +wanderer-search | 2026-10-28T12:15:32.388479Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.0µs time.idle=269µs +wanderer-search | 2026-10-28T12:15:32.402558Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=478µs +wanderer-search | 2026-10-28T12:15:32.456412Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.5µs time.idle=325µs +wanderer-search | 2026-10-28T12:15:32.474276Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=379µs time.idle=517µs +wanderer-search | 2026-10-28T12:15:32.522489Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=164µs time.idle=1.79ms +wanderer-search | 2026-10-28T12:15:32.549444Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=233µs time.idle=1.03ms +wanderer-search | 2026-10-28T12:15:32.570794Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=73.8µs time.idle=250µs +wanderer-search | 2026-10-28T12:15:32.588108Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=386µs +wanderer-search | 2026-10-28T12:15:32.612560Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.7µs time.idle=289µs +wanderer-search | 2026-10-28T12:15:32.627536Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=452µs +wanderer-search | 2026-10-28T12:15:32.689355Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.5µs time.idle=327µs +wanderer-search | 2026-10-28T12:15:32.704952Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=540µs +wanderer-search | 2026-10-28T12:15:32.758116Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.5µs time.idle=402µs +wanderer-search | 2026-10-28T12:15:32.778370Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=227µs time.idle=457µs +wanderer-search | 2026-10-28T12:15:32.796769Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=146µs time.idle=260µs +wanderer-search | 2026-10-28T12:15:32.837057Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=73.9µs time.idle=252µs +wanderer-search | 2026-10-28T12:15:32.858938Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=227µs time.idle=1.22ms +wanderer-search | 2026-10-28T12:15:32.863155Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=262µs time.idle=561µs +wanderer-search | 2026-10-28T12:15:32.915229Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.4µs time.idle=277µs +wanderer-search | 2026-10-28T12:15:32.931746Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=406µs +wanderer-search | 2026-10-28T12:15:35.233936Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=143µs time.idle=129µs +wanderer-search | 2026-10-28T12:15:35.244658Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=165µs time.idle=9.40ms +wanderer-search | 2026-10-28T12:15:35.245602Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=115µs time.idle=131µs +wanderer-search | 2026-10-28T12:15:35.250899Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=152µs time.idle=4.54ms +wanderer-search | 2026-10-28T12:15:35.252117Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=108µs time.idle=123µs +wanderer-search | 2026-10-28T12:15:35.257411Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:15:35.257508Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=169µs time.idle=4.71ms +wanderer-search | 2026-10-28T12:15:35.267455Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/trails/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=118µs time.idle=8.30ms +wanderer-search | 2026-10-28T12:15:35.273486Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=108µs time.idle=4.78ms +wanderer-search | 2026-10-28T12:15:35.277920Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:15:35.303889Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:15:35.319010Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:15:35.319135Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=542µs time.idle=43.4ms +wanderer-search | 2026-10-28T12:15:35.330057Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=124µs time.idle=9.73ms +wanderer-search | 2026-10-28T12:15:35.337974Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=369µs time.idle=6.39ms +wanderer-search | 2026-10-28T12:15:35.688332Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=357.997661ms +wanderer-search | 2026-10-28T12:15:35.698903Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:15:35.711891Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:15:35.813790Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=96.845577ms +wanderer-search | 2026-10-28T12:15:35.821032Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:15:43.374997Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=92.2µs time.idle=18.6µs +wanderer-search | 2026-10-28T12:15:58.458505Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=61.0µs time.idle=17.4µs +wanderer-search | 2026-10-28T12:16:13.536009Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=87.1µs time.idle=17.5µs +wanderer-search | 2026-10-28T12:16:21.108637Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=213µs time.idle=678µs +wanderer-search | 2026-10-28T12:16:21.205572Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=347µs time.idle=741µs +wanderer-search | 2026-10-28T12:16:22.261687Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.4µs time.idle=354µs +wanderer-search | 2026-10-28T12:16:22.293061Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=455µs +wanderer-search | 2026-10-28T12:16:22.346667Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=118µs time.idle=342µs +wanderer-search | 2026-10-28T12:16:22.461299Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.2µs time.idle=247µs +wanderer-search | 2026-10-28T12:16:22.572294Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.1µs time.idle=289µs diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/engine-state.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/memory-samples.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/memory-samples.json new file mode 100644 index 00000000..fdd3be69 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/memory-samples.json @@ -0,0 +1,1802 @@ +[ + { + "t": 15.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 143224832, + "peak": 148819968, + "anon": 132210688, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 21319680, + "peak": 23425024, + "anon": 18259968, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264077312, + "peak": 268439552, + "anon": 257552384, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 244 + }, + { + "t": 30.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 144302080, + "peak": 150269952, + "anon": 133111808, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 25571328, + "peak": 26189824, + "anon": 19251200, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 262807552, + "peak": 268439552, + "anon": 256602112, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 501 + }, + { + "t": 45.6, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 146116608, + "peak": 153161728, + "anon": 135299072, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 28491776, + "peak": 28794880, + "anon": 20045824, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263122944, + "peak": 268439552, + "anon": 256581632, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 749 + }, + { + "t": 60.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 147439616, + "peak": 153321472, + "anon": 136245248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 33308672, + "peak": 36065280, + "anon": 20946944, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263053312, + "peak": 268439552, + "anon": 256581632, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 988 + }, + { + "t": 75.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 145797120, + "peak": 153321472, + "anon": 134475776, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 34451456, + "peak": 36065280, + "anon": 21807104, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263512064, + "peak": 268439552, + "anon": 256724992, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1237 + }, + { + "t": 91.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 146186240, + "peak": 153321472, + "anon": 135102464, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 35549184, + "peak": 36921344, + "anon": 23035904, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263630848, + "peak": 268439552, + "anon": 255336448, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1482 + }, + { + "t": 106.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148586496, + "peak": 158015488, + "anon": 138125312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 38957056, + "peak": 39636992, + "anon": 24231936, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264470528, + "peak": 268439552, + "anon": 253652992, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1735 + }, + { + "t": 121.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 145301504, + "peak": 158015488, + "anon": 134967296, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 39448576, + "peak": 41132032, + "anon": 25477120, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263528448, + "peak": 268439552, + "anon": 253652992, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1977 + }, + { + "t": 136.6, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 147300352, + "peak": 158015488, + "anon": 136073216, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 42364928, + "peak": 43380736, + "anon": 26513408, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263544832, + "peak": 268439552, + "anon": 253652992, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2231 + }, + { + "t": 151.8, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 146288640, + "peak": 161669120, + "anon": 135835648, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 42782720, + "peak": 44441600, + "anon": 27623424, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264216576, + "peak": 268439552, + "anon": 253792256, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2465 + }, + { + "t": 167.0, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148242432, + "peak": 161669120, + "anon": 137408512, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 45162496, + "peak": 48242688, + "anon": 28360704, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264286208, + "peak": 268439552, + "anon": 253440000, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2713 + }, + { + "t": 182.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148180992, + "peak": 161669120, + "anon": 136785920, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 45711360, + "peak": 48242688, + "anon": 28647424, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264040448, + "peak": 268439552, + "anon": 253440000, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2949 + }, + { + "t": 197.3, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148250624, + "peak": 161669120, + "anon": 137781248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 47857664, + "peak": 48660480, + "anon": 29483008, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264007680, + "peak": 268439552, + "anon": 253423616, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3192 + }, + { + "t": 212.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 146432000, + "peak": 161669120, + "anon": 135266304, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 49373184, + "peak": 50130944, + "anon": 30322688, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264171520, + "peak": 268439552, + "anon": 253558784, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3444 + }, + { + "t": 227.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149037056, + "peak": 161669120, + "anon": 137654272, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 51134464, + "peak": 51404800, + "anon": 31707136, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263610368, + "peak": 268439552, + "anon": 253530112, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3703 + }, + { + "t": 242.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 150548480, + "peak": 161669120, + "anon": 139423744, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 52916224, + "peak": 53997568, + "anon": 32702464, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263999488, + "peak": 268439552, + "anon": 253435904, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3949 + }, + { + "t": 258.0, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 150085632, + "peak": 161669120, + "anon": 139128832, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 55164928, + "peak": 55672832, + "anon": 33648640, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264003584, + "peak": 268439552, + "anon": 253435904, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4192 + }, + { + "t": 273.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 150388736, + "peak": 161669120, + "anon": 139071488, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 55922688, + "peak": 56922112, + "anon": 34557952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263999488, + "peak": 268439552, + "anon": 253435904, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4435 + }, + { + "t": 288.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149053440, + "peak": 161669120, + "anon": 138534912, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 57311232, + "peak": 58638336, + "anon": 35545088, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264011776, + "peak": 268439552, + "anon": 253435904, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4675 + }, + { + "t": 303.6, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148123648, + "peak": 161669120, + "anon": 137175040, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 59711488, + "peak": 60620800, + "anon": 36773888, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263729152, + "peak": 268439552, + "anon": 253419520, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4910 + }, + { + "t": 318.8, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149639168, + "peak": 161669120, + "anon": 138457088, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 60456960, + "peak": 61923328, + "anon": 37822464, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263467008, + "peak": 268439552, + "anon": 253419520, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5159 + }, + { + "t": 334.0, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149008384, + "peak": 161669120, + "anon": 137805824, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 62181376, + "peak": 63922176, + "anon": 38617088, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263675904, + "peak": 268439552, + "anon": 253366272, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5395 + }, + { + "t": 349.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 147578880, + "peak": 161669120, + "anon": 136794112, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 63528960, + "peak": 65138688, + "anon": 39735296, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263749632, + "peak": 268439552, + "anon": 253460480, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5631 + }, + { + "t": 364.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 150532096, + "peak": 161669120, + "anon": 139575296, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 64700416, + "peak": 66392064, + "anon": 40927232, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263757824, + "peak": 268439552, + "anon": 253460480, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5868 + }, + { + "t": 379.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149262336, + "peak": 161669120, + "anon": 138186752, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 66883584, + "peak": 67903488, + "anon": 41549824, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263888896, + "peak": 268439552, + "anon": 253325312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6107 + }, + { + "t": 394.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149225472, + "peak": 161669120, + "anon": 137850880, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 68780032, + "peak": 69382144, + "anon": 42840064, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263639040, + "peak": 268439552, + "anon": 253325312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6348 + }, + { + "t": 409.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 146685952, + "peak": 161669120, + "anon": 136024064, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 70914048, + "peak": 71196672, + "anon": 43974656, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263897088, + "peak": 268439552, + "anon": 253325312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6604 + }, + { + "t": 425.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149499904, + "peak": 161669120, + "anon": 138518528, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 72134656, + "peak": 72814592, + "anon": 45035520, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263733248, + "peak": 268439552, + "anon": 253423616, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6837 + }, + { + "t": 440.3, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 150597632, + "peak": 161669120, + "anon": 139436032, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 72994816, + "peak": 74723328, + "anon": 45731840, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263987200, + "peak": 268439552, + "anon": 253423616, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7091 + }, + { + "t": 455.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148561920, + "peak": 161669120, + "anon": 137822208, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 75038720, + "peak": 76136448, + "anon": 47108096, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263897088, + "peak": 268439552, + "anon": 253558784, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7351 + }, + { + "t": 470.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149622784, + "peak": 161669120, + "anon": 138190848, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 76726272, + "peak": 77463552, + "anon": 47755264, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264368128, + "peak": 268439552, + "anon": 253501440, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7602 + }, + { + "t": 485.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149860352, + "peak": 161669120, + "anon": 138608640, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 78151680, + "peak": 78929920, + "anon": 49143808, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264028160, + "peak": 268439552, + "anon": 253456384, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7852 + }, + { + "t": 501.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 151429120, + "peak": 161669120, + "anon": 140189696, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 79716352, + "peak": 80465920, + "anon": 49975296, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263856128, + "peak": 268439552, + "anon": 253321216, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8107 + }, + { + "t": 516.3, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148860928, + "peak": 161669120, + "anon": 138645504, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 81018880, + "peak": 83435520, + "anon": 50700288, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263872512, + "peak": 268439552, + "anon": 253321216, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8340 + }, + { + "t": 531.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148480000, + "peak": 161669120, + "anon": 137527296, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 82522112, + "peak": 83841024, + "anon": 51884032, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263622656, + "peak": 268439552, + "anon": 253321216, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8582 + }, + { + "t": 546.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148602880, + "peak": 161669120, + "anon": 137314304, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 84770816, + "peak": 85315584, + "anon": 53510144, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263471104, + "peak": 268439552, + "anon": 253411328, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8820 + }, + { + "t": 561.8, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 150503424, + "peak": 161669120, + "anon": 140025856, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 85766144, + "peak": 87281664, + "anon": 54325248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 263725056, + "peak": 268439552, + "anon": 253411328, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9057 + }, + { + "t": 577.0, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 149426176, + "peak": 161669120, + "anon": 138637312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 87744512, + "peak": 88809472, + "anon": 55250944, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264507392, + "peak": 268439552, + "anon": 253411328, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9295 + }, + { + "t": 592.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 148045824, + "peak": 161669120, + "anon": 137224192, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 89055232, + "peak": 90210304, + "anon": 55906304, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264224768, + "peak": 268439552, + "anon": 253632512, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9538 + }, + { + "t": 607.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 147357696, + "peak": 161669120, + "anon": 136794112, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 91205632, + "peak": 91942912, + "anon": 57495552, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 268435456, + "current": 264630272, + "peak": 268439552, + "anon": 253497344, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9780 + } +] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/migration-lines.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/run.log new file mode 100644 index 00000000..f0ed6162 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/run.log @@ -0,0 +1,59 @@ +[12:02:54] scratch drive folders cleared before FROM (R-656): none existed +[12:02:54] MV-wanderer: deploying wanderer at FROM {'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:03:57] FROM settled=True in 31.2s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:03:57] fixture: the BOX walk's own (Wanderer), through upgrade_boxport +[12:03:58] wanderer: sign-up http=200 +[12:03:58] wanderer: seeded user drill5229bfc6 and private list Drill-0943754405 http=200 id=True +[12:03:58] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:03:58] C1 (seed reads back BEFORE): True +[12:03:59] MV-wanderer: swapping to TO {'wanderer': 'flomp/wanderer-web:v0.21.2', 'wanderer-db': 'flomp/wanderer-db:v0.21.2', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:04:47] TO up -d rc=0 +[12:05:24] TO settled=True in 36.4s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:05:24] migration lines observed: 0 +[12:05:24] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:05:24] RESULT (seed reads back AFTER): True +[12:05:25] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[12:05:40] + 15s wanderer=136M/512M peak=141M kills=0 rs=0 wanderer-db=20M/256M peak=22M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=244 +[12:05:55] + 30s wanderer=137M/512M peak=143M kills=0 rs=0 wanderer-db=24M/256M peak=24M kills=0 rs=0 wanderer-search=250M/256M peak=256M kills=0 rs=0 reqs=501 +[12:06:11] + 46s wanderer=139M/512M peak=146M kills=0 rs=0 wanderer-db=27M/256M peak=27M kills=0 rs=0 wanderer-search=250M/256M peak=256M kills=0 rs=0 reqs=749 +[12:06:26] + 61s wanderer=140M/512M peak=146M kills=0 rs=0 wanderer-db=31M/256M peak=34M kills=0 rs=0 wanderer-search=250M/256M peak=256M kills=0 rs=0 reqs=988 +[12:06:41] + 76s wanderer=139M/512M peak=146M kills=0 rs=0 wanderer-db=32M/256M peak=34M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=1237 +[12:06:56] + 91s wanderer=139M/512M peak=146M kills=0 rs=0 wanderer-db=33M/256M peak=35M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=1482 +[12:07:11] + 106s wanderer=141M/512M peak=150M kills=0 rs=0 wanderer-db=37M/256M peak=37M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=1735 +[12:07:26] + 121s wanderer=138M/512M peak=150M kills=0 rs=0 wanderer-db=37M/256M peak=39M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=1977 +[12:07:42] + 137s wanderer=140M/512M peak=150M kills=0 rs=0 wanderer-db=40M/256M peak=41M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=2231 +[12:07:57] + 152s wanderer=139M/512M peak=154M kills=0 rs=0 wanderer-db=40M/256M peak=42M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=2465 +[12:08:12] + 167s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=43M/256M peak=46M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=2713 +[12:08:27] + 182s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=43M/256M peak=46M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=2949 +[12:08:42] + 197s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=45M/256M peak=46M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3192 +[12:08:58] + 212s wanderer=139M/512M peak=154M kills=0 rs=0 wanderer-db=47M/256M peak=47M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3444 +[12:09:13] + 228s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=48M/256M peak=49M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3703 +[12:09:28] + 243s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=50M/256M peak=51M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=3949 +[12:09:43] + 258s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=52M/256M peak=53M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4192 +[12:09:58] + 273s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=53M/256M peak=54M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4435 +[12:10:13] + 288s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=54M/256M peak=55M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4675 +[12:10:29] + 304s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=56M/256M peak=57M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=4910 +[12:10:44] + 319s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=57M/256M peak=59M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5159 +[12:10:59] + 334s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=59M/256M peak=60M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5395 +[12:11:14] + 349s wanderer=140M/512M peak=154M kills=0 rs=0 wanderer-db=60M/256M peak=62M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5631 +[12:11:29] + 364s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=61M/256M peak=63M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=5868 +[12:11:45] + 380s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=63M/256M peak=64M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6107 +[12:12:00] + 395s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=65M/256M peak=66M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6348 +[12:12:15] + 410s wanderer=139M/512M peak=154M kills=0 rs=0 wanderer-db=67M/256M peak=67M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6604 +[12:12:30] + 425s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=68M/256M peak=69M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=6837 +[12:12:45] + 440s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=69M/256M peak=71M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=7091 +[12:13:01] + 456s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=71M/256M peak=72M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=7351 +[12:13:16] + 471s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=73M/256M peak=73M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=7602 +[12:13:31] + 486s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=74M/256M peak=75M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=7852 +[12:13:46] + 501s wanderer=144M/512M peak=154M kills=0 rs=0 wanderer-db=76M/256M peak=76M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8107 +[12:14:01] + 516s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=77M/256M peak=79M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8340 +[12:14:16] + 531s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=78M/256M peak=79M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8582 +[12:14:32] + 547s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=80M/256M peak=81M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=8820 +[12:14:47] + 562s wanderer=143M/512M peak=154M kills=0 rs=0 wanderer-db=81M/256M peak=83M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=9057 +[12:15:02] + 577s wanderer=142M/512M peak=154M kills=0 rs=0 wanderer-db=83M/256M peak=84M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=9295 +[12:15:17] + 592s wanderer=141M/512M peak=154M kills=0 rs=0 wanderer-db=84M/256M peak=86M kills=0 rs=0 wanderer-search=251M/256M peak=256M kills=0 rs=0 reqs=9538 +[12:15:32] + 607s wanderer=140M/512M peak=154M kills=0 rs=0 wanderer-db=86M/256M peak=87M kills=0 rs=0 wanderer-search=252M/256M peak=256M kills=0 rs=0 reqs=9780 +[12:15:33] memory watch: killed=False tight=['wanderer-search'] requests=9781 codes={'200': 9781} +[12:15:33] MV-wanderer: ABORT — putting the FROM images back +[12:16:22] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:16:22] ABORT: app came back in 31.3s; data present=True \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-full.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-full.log new file mode 100644 index 00000000..ab911a38 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-full.log @@ -0,0 +1,165 @@ +wanderer-search | +wanderer-db | 2026/10/28 12:04:33 Settings synced for index [trails] +wanderer-db | 2026/10/28 12:04:33 Settings synced for index [lists] +wanderer | +wanderer | > wanderer@0.21.2 start +wanderer | > node watcher.js & node server.js +wanderer | +wanderer | [File Watcher] Service active. Watching: /app/uploads +wanderer | Listening on http://0.0.0.0:3000 +wanderer-db | 2026/10/28 12:04:33 Settings synced for index [actors] +wanderer-db | 2026/10/28 12:04:33 backfill polyline started +wanderer-db | 2026/10/28 12:04:33 backfill polyline completed: processed=0 failed=0 +wanderer-db | 2026/10/28 12:04:33 Server started at http://0.0.0.0:8090 +wanderer-db | ├─ REST API: http://0.0.0.0:8090/api/ +wanderer-search | 888b d888 d8b 888 d8b 888 +wanderer-search | 8888b d8888 Y8P 888 Y8P 888 +wanderer-search | 88888b.d88888 888 888 +wanderer-search | 888Y88888P888 .d88b. 888 888 888 .d8888b .d88b. 8888b. 888d888 .d8888b 88888b. +wanderer-db | └─ Dashboard: http://0.0.0.0:8090/_/ +wanderer-db | +wanderer-db | (!) Launch the URL below in the browser if it hasn't been open already to create your first superuser account: +wanderer-db | http://0.0.0.0:8090/_/#/pbinstall/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2xsZWN0aW9uSWQiOiJwYmNfMzE0MjYzNTgyMyIsImV4cCI6MTc5MzE5MDg3MywiaWQiOiJwNDZqN3J6ZHd3NXUzYXkiLCJyZWZyZXNoYWJsZSI6ZmFsc2UsInR5cGUiOiJhdXRoIn0.jQMgbVh6SkNsxAV24rLNJOYXTd0jDI2wBHy_yW1T87Q +wanderer-search | 888 Y888P 888 d8P Y8b 888 888 888 88K d8P Y8b "88b 888P" d88P" 888 "88b +wanderer-db | (you can also create your first superuser by running: /pocketbase superuser upsert EMAIL PASS) +wanderer-db | +wanderer-search | 888 Y8P 888 88888888 888 888 888 "Y8888b. 88888888 .d888888 888 888 888 888 +wanderer-search | 888 " 888 Y8b. 888 888 888 X88 Y8b. 888 888 888 Y88b. 888 888 +wanderer-search | 888 888 "Y8888 888 888 888 88888P' "Y8888 "Y888888 888 "Y8888P 888 888 +wanderer-search | +wanderer-search | Config file path: "none" +wanderer-search | Database path: "./data.ms" +wanderer-search | Server listening on: "http://0.0.0.0:7700" +wanderer-search | Environment: "development" +wanderer-search | Commit SHA: "2458d44f2173e26e33356482b5e26787e4e45319" +wanderer-search | Commit date: "unknown" +wanderer-search | Package version: "1.36.0" +wanderer-search | Anonymous telemetry: "Disabled" +wanderer-search | +wanderer-search | A master key has been set. Requests to Meilisearch won't be authorized unless you provide an authentication key. +wanderer-search | +wanderer-search | Check out Meilisearch Cloud! https://www.meilisearch.com/cloud?utm_campaign=oss&utm_source=engine&utm_medium=cli +wanderer-search | Documentation: https://www.meilisearch.com/docs +wanderer-search | Source code: https://github.com/meilisearch/meilisearch +wanderer-search | Discord: https://discord.meilisearch.com +wanderer-search | +wanderer-search | 2026-10-28T12:02:55.089647Z  INFO actix_server::builder: starting 6 workers +wanderer-search | 2026-10-28T12:02:55.089681Z  INFO actix_server::server: Actix runtime found; starting in Actix runtime +wanderer-search | 2026-10-28T12:02:55.089689Z  INFO actix_server::server: starting service: "actix-web-service-0.0.0.0:7700", workers: 6, listening on: 0.0.0.0:7700 +wanderer-search | 2026-10-28T12:03:10.103743Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=448µs time.idle=25.1µs +wanderer-search | 2026-10-28T12:03:10.895391Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=296µs time.idle=6.16ms +wanderer-search | 2026-10-28T12:03:10.921744Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=202µs time.idle=25.4ms +wanderer-search | 2026-10-28T12:03:10.928119Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=180µs time.idle=5.38ms +wanderer-search | 2026-10-28T12:03:10.934261Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:10.934344Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=107µs time.idle=5.46ms +wanderer-search | 2026-10-28T12:03:10.943459Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/lists/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=135µs time.idle=8.42ms +wanderer-search | 2026-10-28T12:03:10.951818Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/lists/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=140µs time.idle=7.54ms +wanderer-search | 2026-10-28T12:03:10.954969Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:10.987875Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:11.001307Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:11.319282Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/searchable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=286µs time.idle=9.06ms +wanderer-search | 2026-10-28T12:03:11.327175Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:12.914102Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=239µs time.idle=5.98ms +wanderer-search | 2026-10-28T12:03:12.920217Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=148µs time.idle=5.18ms +wanderer-search | 2026-10-28T12:03:12.923404Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:12.936771Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:14.962067Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=226µs time.idle=261µs +wanderer-search | 2026-10-28T12:03:14.969678Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=172µs time.idle=6.70ms +wanderer-search | 2026-10-28T12:03:14.970632Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=138µs time.idle=132µs +wanderer-search | 2026-10-28T12:03:14.975856Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=130µs time.idle=4.63ms +wanderer-search | 2026-10-28T12:03:14.976420Z  WARN HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=404 error=Index `actors` not found.}: tracing_actix_web::middleware: Error encountered while processing the incoming HTTP request: ResponseError { code: 404, message: "Index `actors` not found.", error_code: "index_not_found", error_type: "invalid_request", error_link: "https://docs.meilisearch.com/errors#index_not_found" } +wanderer-search | 2026-10-28T12:03:14.976528Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=404 error=Index `actors` not found.}: meilisearch: close time.busy=169µs time.idle=104µs +wanderer-search | 2026-10-28T12:03:14.981911Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:14.981943Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=93.8µs time.idle=4.91ms +wanderer-search | 2026-10-28T12:03:14.982685Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks/11 query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=159µs time.idle=114µs +wanderer-search | 2026-10-28T12:03:14.998068Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:15.022932Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:15.034591Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks/11 query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=133µs time.idle=154µs +wanderer-search | 2026-10-28T12:03:15.040725Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=137µs time.idle=5.36ms +wanderer-search | 2026-10-28T12:03:15.050285Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/trails/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=127µs time.idle=8.17ms +wanderer-search | 2026-10-28T12:03:15.056666Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:15.056682Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=98.3µs time.idle=5.42ms +wanderer-search | 2026-10-28T12:03:15.068004Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=100µs time.idle=10.4ms +wanderer-search | 2026-10-28T12:03:15.075153Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:15.085676Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:15.100032Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:25.168389Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=112µs time.idle=17.9µs +wanderer-search | 2026-10-28T12:03:40.238140Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=119µs time.idle=16.9µs +wanderer-search | 2026-10-28T12:03:55.295073Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=82.6µs time.idle=16.2µs +wanderer-search | 2026-10-28T12:03:56.815018Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=200µs time.idle=347µs +wanderer-search | 2026-10-28T12:03:56.906054Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=903µs time.idle=903µs +wanderer-search | 2026-10-28T12:03:57.908425Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.8µs time.idle=331µs +wanderer-search | 2026-10-28T12:03:57.935806Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=510µs +wanderer-search | 2026-10-28T12:03:57.990800Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=72.4µs time.idle=278µs +wanderer-search | 2026-10-28T12:03:58.179960Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=538µs time.idle=13.7ms +wanderer-search | 2026-10-28T12:03:58.233753Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=272µs +wanderer-search | 2026-10-28T12:03:58.237135Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=56.915017ms +wanderer-search | 2026-10-28T12:03:58.247561Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:58.375370Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.4µs time.idle=319µs +wanderer-search | 2026-10-28T12:03:58.401186Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=373µs time.idle=8.44ms +wanderer-search | 2026-10-28T12:03:58.463539Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=343µs +wanderer-search | 2026-10-28T12:03:58.466583Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=64.954308ms +wanderer-search | 2026-10-28T12:03:58.476852Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:58.489620Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=285µs time.idle=6.43ms +wanderer-search | 2026-10-28T12:03:58.536370Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.0µs time.idle=332µs +wanderer-search | 2026-10-28T12:03:58.550745Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=60.834658ms +wanderer-search | 2026-10-28T12:03:58.560884Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:03:58.562072Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=428µs +wanderer-search | 2026-10-28T12:03:58.609324Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=72.7µs time.idle=211µs +wanderer-search | 2026-10-28T12:03:58.719256Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=251µs +wanderer-search | 2026-10-28T12:03:58.840438Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.3µs time.idle=275µs +wanderer-search | 2026-10-28T12:04:10.362902Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=89.4µs time.idle=17.8µs +wanderer-search | 2026-10-28T12:04:25.428259Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=96.3µs time.idle=17.7µs +wanderer-search | 2026-10-28T12:04:27.387812Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=196µs time.idle=470µs +wanderer-search | 2026-10-28T12:04:27.416659Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=294µs time.idle=805µs +wanderer-search | 2026-10-28T12:04:33.890134Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=224µs time.idle=461µs +wanderer-search | 2026-10-28T12:04:33.897769Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=218µs time.idle=6.25ms +wanderer-search | 2026-10-28T12:04:33.898930Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=115µs time.idle=135µs +wanderer-search | 2026-10-28T12:04:33.904144Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=195µs time.idle=4.36ms +wanderer-search | 2026-10-28T12:04:33.904851Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.7µs time.idle=93.7µs +wanderer-search | 2026-10-28T12:04:33.914470Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=131µs time.idle=9.06ms +wanderer-search | 2026-10-28T12:04:33.914493Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:33.917186Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/health query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.2µs time.idle=90.0µs +wanderer-search | 2026-10-28T12:04:33.918057Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.9µs time.idle=122µs +wanderer-search | 2026-10-28T12:04:33.926447Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=163µs time.idle=7.65ms +wanderer-search | 2026-10-28T12:04:33.927493Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=trails&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=154µs time.idle=178µs +wanderer-search | 2026-10-28T12:04:33.932613Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/trails/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=143µs time.idle=4.14ms +wanderer-search | 2026-10-28T12:04:33.934142Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.1µs time.idle=124µs +wanderer-search | 2026-10-28T12:04:33.935128Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.5µs time.idle=124µs +wanderer-search | 2026-10-28T12:04:33.935886Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:33.943323Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=159µs time.idle=7.49ms +wanderer-search | 2026-10-28T12:04:33.944064Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=lists&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=114µs time.idle=110µs +wanderer-search | 2026-10-28T12:04:33.949070Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=98.3µs time.idle=4.44ms +wanderer-search | 2026-10-28T12:04:33.952430Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:33.973069Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents query_parameters=primaryKey=id user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=345µs time.idle=21.5ms +wanderer-search | 2026-10-28T12:04:33.974047Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.9µs time.idle=109µs +wanderer-search | 2026-10-28T12:04:33.974961Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.2µs time.idle=108µs +wanderer-search | 2026-10-28T12:04:33.979668Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=138µs time.idle=4.11ms +wanderer-search | 2026-10-28T12:04:33.979677Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:33.980477Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=actors&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=109µs time.idle=134µs +wanderer-search | 2026-10-28T12:04:33.990366Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=101µs time.idle=9.35ms +wanderer-search | 2026-10-28T12:04:33.996041Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/actors/documents query_parameters=primaryKey=id user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=287µs time.idle=4.03ms +wanderer-search | 2026-10-28T12:04:33.997128Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.0µs time.idle=108µs +wanderer-search | 2026-10-28T12:04:33.998034Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.9µs time.idle=125µs +wanderer-search | 2026-10-28T12:04:34.006943Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:34.006945Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=164µs time.idle=8.19ms +wanderer-search | 2026-10-28T12:04:34.007666Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=trails&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=114µs +wanderer-search | 2026-10-28T12:04:34.008555Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/documents/fetch query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=146µs time.idle=87.6µs +wanderer-search | 2026-10-28T12:04:34.009457Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.8µs time.idle=139µs +wanderer-search | 2026-10-28T12:04:34.019438Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=134µs time.idle=9.44ms +wanderer-search | 2026-10-28T12:04:34.021077Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=lists&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=185µs time.idle=141µs +wanderer-search | 2026-10-28T12:04:34.211173Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=191.309673ms +wanderer-search | 2026-10-28T12:04:34.221884Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:34.244927Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:34.393050Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=143.604779ms +wanderer-search | 2026-10-28T12:04:34.426898Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:34.441077Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:34.453304Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:04:39.022934Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=lists&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=115µs time.idle=120µs +wanderer-search | 2026-10-28T12:04:39.023830Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents/fetch query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=183µs time.idle=98.4µs +wanderer-search | 2026-10-28T12:04:39.025952Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents/fetch query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=161µs time.idle=81.8µs +wanderer-search | 2026-10-28T12:04:40.497672Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=771µs time.idle=19.5µs +wanderer-search | 2026-10-28T12:04:55.552482Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=108µs time.idle=16.8µs +wanderer-search | 2026-10-28T12:05:10.621474Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=117µs time.idle=20.6µs +wanderer-search | 2026-10-28T12:05:18.096090Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=197µs time.idle=378µs +wanderer-search | 2026-10-28T12:05:18.206165Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=279µs time.idle=513µs diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-states.json new file mode 100644 index 00000000..9c0780e8 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/to-states.json @@ -0,0 +1,20 @@ +{ + "wanderer": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-db": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-search": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/verdict.json new file mode 100644 index 00000000..799a761e --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-run2-meili256/evidence/MV-wanderer/verdict.json @@ -0,0 +1,86 @@ +{ + "harness_version": 5, + "edge": "MV-wanderer", + "app": "wanderer", + "note": "night 2026-09-23 within-a-major move: wanderer=flomp/wanderer-web:v0.21.2, wanderer-db=flomp/wanderer-db:v0.21.2", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 607.8, + "requested_s": 600, + "requests": 9781, + "codes": { + "200": 9781 + }, + "first_kill": null, + "containers": { + "wanderer": { + "limit": 536870912, + "peak": 161669120, + "peak_pct": 0.301, + "anon_peak_sampled": 140189696, + "anon_peak_pct": 0.261, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-db": { + "limit": 268435456, + "peak": 91942912, + "peak_pct": 0.343, + "anon_peak_sampled": 57614336, + "anon_peak_pct": 0.215, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-search": { + "limit": 268435456, + "peak": 268439552, + "peak_pct": 1.0, + "anon_peak_sampled": 257552384, + "anon_peak_pct": 0.959, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [ + "memory_tight" + ], + "bench_overrides": null, + "duration_s": 36.4, + "measured_at": "2026-10-28T12:16:22Z", + "evidence": "evidence/MV-wanderer", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 808.3 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/MV-wanderer.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/MV-wanderer.log new file mode 100644 index 00000000..b2b4317c --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/MV-wanderer.log @@ -0,0 +1,39 @@ +[12:00:08] scratch drive folders cleared before FROM (R-656): none existed +[12:00:08] MV-wanderer: deploying wanderer at FROM {'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:01:46] FROM settled=True in 31.3s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:01:46] fixture: the BOX walk's own (Wanderer), through upgrade_boxport +[12:01:46] wanderer: sign-up http=200 +[12:01:46] wanderer: sign-in after sign-up http=200 cookie=True actor=False +[12:01:46] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. +{ + "harness_version": 5, + "edge": "MV-wanderer", + "app": "wanderer", + "note": "night 2026-09-23 within-a-major move: wanderer=flomp/wanderer-web:v0.21.2, wanderer-db=flomp/wanderer-db:v0.21.2", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route", + "engine_state_after": null, + "memory": null, + "marks": [], + "bench_overrides": null, + "duration_s": 98.5, + "measured_at": "2026-10-28T12:01:46Z", + "evidence": "evidence/MV-wanderer", + "scratch_cleared": [], + "total_s": 98.5 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/compose-final.log new file mode 100644 index 00000000..af51e5a9 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/compose-final.log @@ -0,0 +1,98 @@ +wanderer | +wanderer | > wanderer@0.20.0 start +wanderer | > node watcher.js & node build +wanderer | +wanderer | [File Watcher] Service active. Watching: /app/uploads +wanderer | Listening on http://0.0.0.0:3000 +wanderer-search | +wanderer-search | 888b d888 d8b 888 d8b 888 +wanderer-search | 8888b d8888 Y8P 888 Y8P 888 +wanderer-search | 88888b.d88888 888 888 +wanderer-search | 888Y88888P888 .d88b. 888 888 888 .d8888b .d88b. 8888b. 888d888 .d8888b 88888b. +wanderer-search | 888 Y888P 888 d8P Y8b 888 888 888 88K d8P Y8b "88b 888P" d88P" 888 "88b +wanderer-search | 888 Y8P 888 88888888 888 888 888 "Y8888b. 88888888 .d888888 888 888 888 888 +wanderer-search | 888 " 888 Y8b. 888 888 888 X88 Y8b. 888 888 888 Y88b. 888 888 +wanderer-search | 888 888 "Y8888 888 888 888 88888P' "Y8888 "Y888888 888 "Y8888P 888 888 +wanderer-search | +wanderer-search | Config file path: "none" +wanderer-search | Database path: "./data.ms" +wanderer-search | Server listening on: "http://0.0.0.0:7700" +wanderer-search | Environment: "development" +wanderer-search | Commit SHA: "2458d44f2173e26e33356482b5e26787e4e45319" +wanderer-search | Commit date: "unknown" +wanderer-search | Package version: "1.36.0" +wanderer-search | Anonymous telemetry: "Disabled" +wanderer-search | +wanderer-search | A master key has been set. Requests to Meilisearch won't be authorized unless you provide an authentication key. +wanderer-search | +wanderer-search | Check out Meilisearch Cloud! https://www.meilisearch.com/cloud?utm_campaign=oss&utm_source=engine&utm_medium=cli +wanderer-search | Documentation: https://www.meilisearch.com/docs +wanderer-search | Source code: https://github.com/meilisearch/meilisearch +wanderer-search | Discord: https://discord.meilisearch.com +wanderer-search | +wanderer-search | 2026-10-28T12:00:43.499753Z  INFO actix_server::builder: starting 6 workers +wanderer-search | 2026-10-28T12:00:43.499787Z  INFO actix_server::server: Actix runtime found; starting in Actix runtime +wanderer-search | 2026-10-28T12:00:43.499795Z  INFO actix_server::server: starting service: "actix-web-service-0.0.0.0:7700", workers: 6, listening on: 0.0.0.0:7700 +wanderer-search | 2026-10-28T12:00:58.519858Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=415µs time.idle=19.7µs +wanderer-search | 2026-10-28T12:00:59.342602Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=298µs time.idle=6.04ms +wanderer-search | 2026-10-28T12:00:59.364835Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=188µs time.idle=21.2ms +wanderer-search | 2026-10-28T12:00:59.373202Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=148µs time.idle=7.60ms +wanderer-search | 2026-10-28T12:00:59.379317Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:00:59.379449Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=104µs time.idle=5.54ms +wanderer-search | 2026-10-28T12:00:59.389086Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/lists/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=133µs time.idle=8.88ms +wanderer-search | 2026-10-28T12:00:59.398558Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/lists/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=139µs time.idle=7.94ms +wanderer-search | 2026-10-28T12:00:59.401628Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:00:59.435109Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:00:59.448166Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:00:59.805630Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/searchable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=290µs time.idle=7.08ms +wanderer-search | 2026-10-28T12:00:59.813064Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:01.393049Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=240µs time.idle=5.92ms +wanderer-search | 2026-10-28T12:01:01.399090Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=128µs time.idle=5.16ms +wanderer-search | 2026-10-28T12:01:01.402282Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:01.417112Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:03.432015Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=230µs time.idle=284µs +wanderer-search | 2026-10-28T12:01:03.439461Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=168µs time.idle=6.55ms +wanderer-search | 2026-10-28T12:01:03.440362Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=129µs time.idle=131µs +wanderer-search | 2026-10-28T12:01:03.445536Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=136µs time.idle=4.59ms +wanderer-search | 2026-10-28T12:01:03.446147Z  WARN HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=404 error=Index `actors` not found.}: tracing_actix_web::middleware: Error encountered while processing the incoming HTTP request: ResponseError { code: 404, message: "Index `actors` not found.", error_code: "index_not_found", error_type: "invalid_request", error_link: "https://docs.meilisearch.com/errors#index_not_found" } +wanderer-search | 2026-10-28T12:01:03.446265Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=404 error=Index `actors` not found.}: meilisearch: close time.busy=161µs time.idle=116µs +wanderer-search | 2026-10-28T12:01:03.454236Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:03.454278Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=124µs time.idle=7.35ms +wanderer-search | 2026-10-28T12:01:03.455097Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks/11 query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=148µs time.idle=110µs +wanderer-search | 2026-10-28T12:01:03.467172Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:03.496827Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:03.506395Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks/11 query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=140µs time.idle=168µs +wanderer-search | 2026-10-28T12:01:03.512938Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=163µs time.idle=5.68ms +wanderer-search | 2026-10-28T12:01:03.519027Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/trails/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=131µs time.idle=3.73ms +wanderer-search | 2026-10-28T12:01:03.525340Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:03.525400Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=98.9µs time.idle=5.38ms +wanderer-search | 2026-10-28T12:01:03.537083Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=103µs time.idle=10.8ms +wanderer-search | 2026-10-28T12:01:03.547818Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:03.558029Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:03.568486Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:01:13.592202Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=87.4µs time.idle=18.4µs +wanderer-search | 2026-10-28T12:01:28.667089Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=120µs time.idle=17.1µs +wanderer-search | 2026-10-28T12:01:43.733266Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=99.0µs time.idle=18.0µs +wanderer-search | 2026-10-28T12:01:45.249047Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=189µs time.idle=368µs +wanderer-search | 2026-10-28T12:01:45.335030Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=753µs time.idle=984µs +wanderer-search | 2026-10-28T12:01:46.412823Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=71.3µs time.idle=269µs +wanderer-search | 2026-10-28T12:01:46.444889Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=521µs +wanderer-search | 2026-10-28T12:01:46.500493Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.5µs time.idle=333µs +wanderer-search | 2026-10-28T12:01:46.795800Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=546µs time.idle=14.3ms +wanderer-search | 2026-10-28T12:01:46.854684Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=58.493007ms +wanderer-search | 2026-10-28T12:01:46.859372Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=69.8µs time.idle=252µs +wanderer-search | 2026-10-28T12:01:46.864989Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-db | 2026/10/28 12:01:03 Settings synced for index [trails] +wanderer-db | 2026/10/28 12:01:03 Settings synced for index [lists] +wanderer-db | 2026/10/28 12:01:03 Index [actors] not found, creating it... +wanderer-db | 2026/10/28 12:01:03 Settings synced for index [actors] +wanderer-db | 2026/10/28 12:01:03 backfill polyline started +wanderer-db | 2026/10/28 12:01:03 backfill polyline completed: processed=0 failed=0 +wanderer-db | 2026/10/28 12:01:03 Server started at http://0.0.0.0:8090 +wanderer-db | ├─ REST API: http://0.0.0.0:8090/api/ +wanderer-db | └─ Dashboard: http://0.0.0.0:8090/_/ +wanderer-db | +wanderer-db | (!) Launch the URL below in the browser if it hasn't been open already to create your first superuser account: +wanderer-db | http://0.0.0.0:8090/_/#/pbinstall/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2xsZWN0aW9uSWQiOiJwYmNfMzE0MjYzNTgyMyIsImV4cCI6MTc5MzE5MDY2MywiaWQiOiJzM2V6eHY4OTd4dTY2Nm8iLCJyZWZyZXNoYWJsZSI6ZmFsc2UsInR5cGUiOiJhdXRoIn0.NplQIG04LHv1u4fuFCW1fFb90x0g-6o2w2sXxj8cfII +wanderer-db | (you can also create your first superuser by running: /pocketbase superuser upsert EMAIL PASS) +wanderer-db | diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/run.log new file mode 100644 index 00000000..d0dae878 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/run.log @@ -0,0 +1,7 @@ +[12:00:08] scratch drive folders cleared before FROM (R-656): none existed +[12:00:08] MV-wanderer: deploying wanderer at FROM {'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:01:46] FROM settled=True in 31.3s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:01:46] fixture: the BOX walk's own (Wanderer), through upgrade_boxport +[12:01:46] wanderer: sign-up http=200 +[12:01:46] wanderer: sign-in after sign-up http=200 cookie=True actor=False +[12:01:46] INCONCLUSIVE — no non-browser seed route. Nothing was planted by hand. \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/verdict.json new file mode 100644 index 00000000..386c3d57 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench-try1-no-actor/evidence/MV-wanderer/verdict.json @@ -0,0 +1,32 @@ +{ + "harness_version": 5, + "edge": "MV-wanderer", + "app": "wanderer", + "note": "night 2026-09-23 within-a-major move: wanderer=flomp/wanderer-web:v0.21.2, wanderer-db=flomp/wanderer-db:v0.21.2", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "verdict": "inconclusive", + "seed_read_before": false, + "seed_read_after": false, + "healthy_after": false, + "migration_observed": null, + "abort": "not-attempted", + "abort_detail": "no non-browser seed route", + "engine_state_after": null, + "memory": null, + "marks": [], + "bench_overrides": null, + "duration_s": 98.5, + "measured_at": "2026-10-28T12:01:46Z", + "evidence": "evidence/MV-wanderer", + "scratch_cleared": [], + "total_s": 98.5 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/MV-wanderer.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/MV-wanderer.log new file mode 100644 index 00000000..2d651d7a --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/MV-wanderer.log @@ -0,0 +1,145 @@ +[12:52:32] scratch drive folders cleared before FROM (R-656): none existed +[12:52:32] MV-wanderer: deploying wanderer at FROM {'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:53:35] FROM settled=True in 31.2s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:53:35] fixture: the BOX walk's own (Wanderer), through upgrade_boxport +[12:53:36] wanderer: sign-up http=200 +[12:53:36] wanderer: seeded user drill038bf1e6 and private list Drill-971f499e36 http=200 id=True +[12:53:36] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:53:36] C1 (seed reads back BEFORE): True +[12:53:37] MV-wanderer: swapping to TO {'wanderer': 'flomp/wanderer-web:v0.21.2', 'wanderer-db': 'flomp/wanderer-db:v0.21.2', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:53:54] TO up -d rc=0 +[12:54:31] TO settled=True in 36.4s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:54:31] migration lines observed: 0 +[12:54:31] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:54:31] RESULT (seed reads back AFTER): True +[12:54:32] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[12:54:47] + 15s wanderer=246M/512M peak=251M kills=0 rs=0 wanderer-db=71M/256M peak=72M kills=0 rs=0 wanderer-search=362M/384M peak=384M kills=0 rs=0 reqs=247 +[12:55:02] + 30s wanderer=233M/512M peak=251M kills=0 rs=0 wanderer-db=68M/256M peak=72M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=496 +[12:55:18] + 46s wanderer=234M/512M peak=251M kills=0 rs=0 wanderer-db=70M/256M peak=72M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=732 +[12:55:33] + 61s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=77M/256M peak=77M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=978 +[12:55:48] + 76s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=77M/256M peak=79M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=1217 +[12:56:03] + 91s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=78M/256M peak=80M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=1474 +[12:56:18] + 106s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=82M/256M peak=83M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=1730 +[12:56:34] + 122s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=82M/256M peak=84M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=1975 +[12:56:49] + 137s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=84M/256M peak=85M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2222 +[12:57:04] + 152s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=85M/256M peak=87M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2461 +[12:57:19] + 167s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=88M/256M peak=89M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2711 +[12:57:34] + 182s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=88M/256M peak=90M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2951 +[12:57:49] + 197s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=90M/256M peak=91M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=3203 +[12:58:05] + 213s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=91M/256M peak=92M kills=0 rs=0 wanderer-search=355M/384M peak=384M kills=0 rs=0 reqs=3443 +[12:58:20] + 228s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=93M/256M peak=94M kills=0 rs=0 wanderer-search=356M/384M peak=384M kills=0 rs=0 reqs=3699 +[12:58:35] + 243s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=94M/256M peak=95M kills=0 rs=0 wanderer-search=355M/384M peak=384M kills=0 rs=0 reqs=3948 +[12:58:50] + 258s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=96M/256M peak=97M kills=0 rs=0 wanderer-search=356M/384M peak=384M kills=0 rs=0 reqs=4201 +[12:59:05] + 273s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=98M/256M peak=98M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=4462 +[12:59:21] + 288s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=99M/256M peak=100M kills=0 rs=0 wanderer-search=357M/384M peak=384M kills=0 rs=0 reqs=4716 +[12:59:36] + 304s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=102M/256M peak=102M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=4959 +[12:59:51] + 319s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=104M/256M peak=104M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=5213 +[13:00:06] + 334s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=105M/256M peak=106M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=5449 +[13:00:21] + 349s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=108M/256M peak=109M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=5703 +[13:00:36] + 364s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=110M/256M peak=111M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=5961 +[13:00:52] + 380s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=113M/256M peak=113M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=6208 +[13:01:07] + 395s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=113M/256M peak=115M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=6460 +[13:01:22] + 410s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=116M/256M peak=118M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=6710 +[13:01:37] + 425s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=118M/256M peak=119M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=6951 +[13:01:52] + 440s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=121M/256M peak=121M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7207 +[13:02:08] + 456s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=123M/256M peak=124M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7451 +[13:02:23] + 471s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=125M/256M peak=126M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7694 +[13:02:38] + 486s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=126M/256M peak=127M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7947 +[13:02:53] + 501s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=128M/256M peak=130M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=8194 +[13:03:08] + 516s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=131M/256M peak=132M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=8440 +[13:03:23] + 531s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=133M/256M peak=134M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=8702 +[13:03:39] + 547s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=136M/256M peak=136M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=8947 +[13:03:54] + 562s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=138M/256M peak=138M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9181 +[13:04:09] + 577s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=138M/256M peak=140M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9447 +[13:04:24] + 592s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=141M/256M peak=142M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9717 +[13:04:39] + 607s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=143M/256M peak=144M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9955 +[13:04:40] memory watch: killed=False tight=['wanderer-search'] requests=9956 codes={'200': 9956} +[13:04:40] MV-wanderer: ABORT — putting the FROM images back +[13:05:29] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[13:05:29] ABORT: app came back in 31.2s; data present=True +{ + "harness_version": 5, + "edge": "MV-wanderer", + "app": "wanderer", + "note": "night 2026-09-23 within-a-major move: wanderer=flomp/wanderer-web:v0.21.2, wanderer-db=flomp/wanderer-db:v0.21.2", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 607.7, + "requested_s": 600, + "requests": 9956, + "codes": { + "200": 9956 + }, + "first_kill": null, + "containers": { + "wanderer": { + "limit": 536870912, + "peak": 263442432, + "peak_pct": 0.491, + "anon_peak_sampled": 139509760, + "anon_peak_pct": 0.26, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-db": { + "limit": 268435456, + "peak": 151154688, + "peak_pct": 0.563, + "anon_peak_sampled": 58568704, + "anon_peak_pct": 0.218, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-search": { + "limit": 402653184, + "peak": 402653184, + "peak_pct": 1.0, + "anon_peak_sampled": 357703680, + "anon_peak_pct": 0.888, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [ + "memory_tight" + ], + "bench_overrides": null, + "duration_s": 36.4, + "measured_at": "2026-10-28T13:05:29Z", + "evidence": "evidence/MV-wanderer", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 777.2 +} diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/abort-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/abort-states.json new file mode 100644 index 00000000..9c0780e8 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/abort-states.json @@ -0,0 +1,20 @@ +{ + "wanderer": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-db": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-search": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/compose-final.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/compose-final.log new file mode 100644 index 00000000..d54b217b --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/compose-final.log @@ -0,0 +1,913 @@ +=200}: meilisearch: close time.busy=186µs time.idle=449µs +wanderer-search | 2026-10-28T13:04:13.419594Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.5µs time.idle=239µs +wanderer-search | 2026-10-28T13:04:13.433910Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=469µs +wanderer-search | 2026-10-28T13:04:13.486095Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.1µs time.idle=224µs +wanderer-search | 2026-10-28T13:04:13.499130Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=400µs +wanderer-search | 2026-10-28T13:04:13.540314Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.4µs time.idle=239µs +wanderer-search | 2026-10-28T13:04:13.552840Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=421µs +wanderer-search | 2026-10-28T13:04:13.592425Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.5µs time.idle=253µs +wanderer-search | 2026-10-28T13:04:13.606656Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=396µs +wanderer-search | 2026-10-28T13:04:13.643319Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.5µs time.idle=242µs +wanderer-search | 2026-10-28T13:04:13.655777Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=400µs +wanderer-search | 2026-10-28T13:04:13.707136Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.0µs time.idle=226µs +wanderer-search | 2026-10-28T13:04:13.722331Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=444µs +wanderer-search | 2026-10-28T13:04:13.761008Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.0µs time.idle=283µs +wanderer-search | 2026-10-28T13:04:13.777774Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=600µs +wanderer-search | 2026-10-28T13:04:13.814991Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.8µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:13.828644Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=440µs +wanderer-search | 2026-10-28T13:04:13.864550Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=110µs time.idle=399µs +wanderer-search | 2026-10-28T13:04:13.878942Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=409µs +wanderer-search | 2026-10-28T13:04:13.932028Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.6µs time.idle=227µs +wanderer-search | 2026-10-28T13:04:13.945002Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=378µs +wanderer-search | 2026-10-28T13:04:13.988973Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.8µs time.idle=220µs +wanderer-search | 2026-10-28T13:04:14.001608Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=409µs +wanderer-search | 2026-10-28T13:04:14.037112Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.1µs time.idle=257µs +wanderer-search | 2026-10-28T13:04:14.049834Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=397µs +wanderer-search | 2026-10-28T13:04:14.087768Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.2µs time.idle=225µs +wanderer-search | 2026-10-28T13:04:14.100528Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=401µs +wanderer-search | 2026-10-28T13:04:14.153022Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.1µs time.idle=226µs +wanderer-search | 2026-10-28T13:04:14.166626Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:14.209713Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=106µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:14.222573Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=389µs +wanderer-search | 2026-10-28T13:04:14.257910Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:14.271044Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=425µs +wanderer-search | 2026-10-28T13:04:14.308494Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=243µs +wanderer-search | 2026-10-28T13:04:14.324309Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=221µs time.idle=462µs +wanderer-search | 2026-10-28T13:04:14.375377Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.0µs time.idle=259µs +wanderer-search | 2026-10-28T13:04:14.396415Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=242µs time.idle=532µs +wanderer-search | 2026-10-28T13:04:14.431159Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.5µs time.idle=241µs +wanderer-search | 2026-10-28T13:04:14.443945Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=462µs +wanderer-search | 2026-10-28T13:04:14.479450Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.1µs time.idle=276µs +wanderer-search | 2026-10-28T13:04:14.493414Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:14.534339Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=231µs +wanderer-search | 2026-10-28T13:04:14.546763Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:14.611781Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:14.624110Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=399µs +wanderer-search | 2026-10-28T13:04:14.653069Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.1µs time.idle=241µs +wanderer-search | 2026-10-28T13:04:14.666077Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=394µs +wanderer-search | 2026-10-28T13:04:14.701611Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=225µs +wanderer-search | 2026-10-28T13:04:14.715107Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=398µs +wanderer-search | 2026-10-28T13:04:14.755361Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.7µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:14.767899Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=432µs +wanderer-search | 2026-10-28T13:04:14.832330Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.7µs time.idle=228µs +wanderer-search | 2026-10-28T13:04:14.846235Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=427µs +wanderer-search | 2026-10-28T13:04:14.874936Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.7µs time.idle=238µs +wanderer-search | 2026-10-28T13:04:14.887886Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=416µs +wanderer-search | 2026-10-28T13:04:14.923694Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.3µs time.idle=231µs +wanderer-search | 2026-10-28T13:04:14.936845Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=418µs +wanderer-search | 2026-10-28T13:04:14.976751Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.9µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:14.989424Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:15.055446Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.4µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:15.071004Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=457µs +wanderer-search | 2026-10-28T13:04:15.096044Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.0µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:15.108865Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=465µs +wanderer-search | 2026-10-28T13:04:15.145110Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.2µs time.idle=218µs +wanderer-search | 2026-10-28T13:04:15.159150Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=401µs +wanderer-search | 2026-10-28T13:04:15.198172Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.2µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:15.211358Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=415µs +wanderer-search | 2026-10-28T13:04:15.279940Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.2µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:15.294625Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=439µs +wanderer-search | 2026-10-28T13:04:15.317294Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=226µs +wanderer-search | 2026-10-28T13:04:15.367537Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=347µs +wanderer-search | 2026-10-28T13:04:15.375219Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=508µs +wanderer-search | 2026-10-28T13:04:15.426245Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=280µs +wanderer-search | 2026-10-28T13:04:15.426501Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=419µs +wanderer-search | 2026-10-28T13:04:15.481945Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=420µs +wanderer-search | 2026-10-28T13:04:15.503827Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.0µs time.idle=269µs +wanderer-search | 2026-10-28T13:04:15.557800Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=387µs +wanderer-search | 2026-10-28T13:04:15.586457Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.5µs time.idle=263µs +wanderer-search | 2026-10-28T13:04:15.599480Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=433µs +wanderer-search | 2026-10-28T13:04:15.635784Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.7µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:15.648207Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=443µs +wanderer-search | 2026-10-28T13:04:15.691624Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.0µs time.idle=274µs +wanderer-search | 2026-10-28T13:04:15.704135Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=398µs +wanderer-search | 2026-10-28T13:04:15.766211Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:15.778720Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=220µs time.idle=410µs +wanderer-search | 2026-10-28T13:04:15.808180Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.7µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:15.821785Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=409µs +wanderer-search | 2026-10-28T13:04:15.856314Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.8µs time.idle=215µs +wanderer-search | 2026-10-28T13:04:15.869278Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=399µs +wanderer-search | 2026-10-28T13:04:15.912124Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=221µs +wanderer-search | 2026-10-28T13:04:15.925281Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=398µs +wanderer-search | 2026-10-28T13:04:15.985963Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.7µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:15.998767Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=414µs +wanderer-search | 2026-10-28T13:04:16.029656Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.6µs time.idle=238µs +wanderer-search | 2026-10-28T13:04:16.042433Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=427µs +wanderer-search | 2026-10-28T13:04:16.077705Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:16.097939Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=219µs time.idle=530µs +wanderer-search | 2026-10-28T13:04:16.133919Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.6µs time.idle=265µs +wanderer-search | 2026-10-28T13:04:16.156653Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=497µs +wanderer-search | 2026-10-28T13:04:16.207266Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.7µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:16.221555Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=453µs +wanderer-search | 2026-10-28T13:04:16.251409Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.7µs time.idle=238µs +wanderer-search | 2026-10-28T13:04:16.272658Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:16.308937Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.9µs time.idle=227µs +wanderer-search | 2026-10-28T13:04:16.323360Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=464µs +wanderer-search | 2026-10-28T13:04:16.367591Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.1µs time.idle=243µs +wanderer-search | 2026-10-28T13:04:16.382026Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=460µs +wanderer-search | 2026-10-28T13:04:16.430441Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.7µs time.idle=264µs +wanderer-search | 2026-10-28T13:04:16.445898Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=468µs +wanderer-search | 2026-10-28T13:04:16.482299Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=311µs +wanderer-search | 2026-10-28T13:04:16.497482Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=475µs +wanderer-search | 2026-10-28T13:04:16.532632Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=256µs +wanderer-search | 2026-10-28T13:04:16.548047Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=223µs time.idle=467µs +wanderer-search | 2026-10-28T13:04:16.590998Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.2µs time.idle=212µs +wanderer-search | 2026-10-28T13:04:16.603564Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:16.655005Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.0µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:16.667827Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=423µs +wanderer-search | 2026-10-28T13:04:16.706597Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=259µs +wanderer-search | 2026-10-28T13:04:16.721018Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=417µs +wanderer-search | 2026-10-28T13:04:16.758063Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.3µs time.idle=237µs +wanderer-search | 2026-10-28T13:04:16.771233Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:16.811872Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=258µs +wanderer-search | 2026-10-28T13:04:16.824919Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=462µs +wanderer-search | 2026-10-28T13:04:16.876104Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.1µs time.idle=240µs +wanderer-search | 2026-10-28T13:04:16.888899Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=418µs +wanderer-search | 2026-10-28T13:04:16.929853Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=236µs +wanderer-search | 2026-10-28T13:04:16.943755Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=436µs +wanderer-search | 2026-10-28T13:04:16.979844Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.8µs time.idle=278µs +wanderer-search | 2026-10-28T13:04:16.996265Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=449µs +wanderer-search | 2026-10-28T13:04:17.033786Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.0µs time.idle=266µs +wanderer-search | 2026-10-28T13:04:17.050288Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=232µs time.idle=485µs +wanderer-search | 2026-10-28T13:04:17.097137Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.2µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:17.111372Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=404µs +wanderer-search | 2026-10-28T13:04:17.152365Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.0µs time.idle=256µs +wanderer-search | 2026-10-28T13:04:17.165471Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=440µs +wanderer-search | 2026-10-28T13:04:17.206681Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=276µs +wanderer-search | 2026-10-28T13:04:17.220140Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=418µs +wanderer-search | 2026-10-28T13:04:17.260273Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.9µs time.idle=298µs +wanderer-search | 2026-10-28T13:04:17.275546Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=436µs +wanderer-search | 2026-10-28T13:04:17.319931Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.6µs time.idle=236µs +wanderer-search | 2026-10-28T13:04:17.332847Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=436µs +wanderer-search | 2026-10-28T13:04:17.374291Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.7µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:17.387201Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=405µs +wanderer-search | 2026-10-28T13:04:17.428350Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:17.441622Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=435µs +wanderer-search | 2026-10-28T13:04:17.484254Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.3µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:17.498036Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=398µs +wanderer-search | 2026-10-28T13:04:17.540443Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=290µs +wanderer-search | 2026-10-28T13:04:17.558999Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=347µs time.idle=600µs +wanderer-search | 2026-10-28T13:04:17.595484Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.5µs time.idle=271µs +wanderer-search | 2026-10-28T13:04:17.610266Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=448µs +wanderer-search | 2026-10-28T13:04:17.650019Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.1µs time.idle=221µs +wanderer-search | 2026-10-28T13:04:17.663307Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=407µs +wanderer-search | 2026-10-28T13:04:17.706919Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.3µs time.idle=217µs +wanderer-search | 2026-10-28T13:04:17.720565Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=416µs +wanderer-search | 2026-10-28T13:04:17.768030Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.5µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:17.780848Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=390µs +wanderer-search | 2026-10-28T13:04:17.819115Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.0µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:17.832356Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=404µs +wanderer-search | 2026-10-28T13:04:17.872044Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.2µs time.idle=259µs +wanderer-search | 2026-10-28T13:04:17.886553Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:17.927971Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.6µs time.idle=275µs +wanderer-search | 2026-10-28T13:04:17.940740Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=470µs +wanderer-search | 2026-10-28T13:04:17.989024Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.1µs time.idle=227µs +wanderer-search | 2026-10-28T13:04:18.001777Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=430µs +wanderer-search | 2026-10-28T13:04:18.041357Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.3µs time.idle=241µs +wanderer-search | 2026-10-28T13:04:18.054166Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=402µs +wanderer-search | 2026-10-28T13:04:18.094734Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.3µs time.idle=225µs +wanderer-search | 2026-10-28T13:04:18.107514Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=412µs +wanderer-search | 2026-10-28T13:04:18.149302Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.5µs time.idle=255µs +wanderer-search | 2026-10-28T13:04:18.163651Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=444µs +wanderer-search | 2026-10-28T13:04:18.210161Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.8µs time.idle=232µs +wanderer-search | 2026-10-28T13:04:18.223085Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=410µs +wanderer-search | 2026-10-28T13:04:18.263021Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.0µs time.idle=240µs +wanderer-search | 2026-10-28T13:04:18.275751Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=215µs time.idle=417µs +wanderer-search | 2026-10-28T13:04:18.316564Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=118µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:18.329133Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=389µs +wanderer-search | 2026-10-28T13:04:18.371034Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.8µs time.idle=313µs +wanderer-search | 2026-10-28T13:04:18.384585Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=412µs +wanderer-search | 2026-10-28T13:04:18.431834Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.4µs time.idle=297µs +wanderer-search | 2026-10-28T13:04:18.445971Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=486µs +wanderer-search | 2026-10-28T13:04:18.484634Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.1µs time.idle=406µs +wanderer-search | 2026-10-28T13:04:18.499350Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=438µs +wanderer-search | 2026-10-28T13:04:18.537925Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.8µs time.idle=255µs +wanderer-search | 2026-10-28T13:04:18.553653Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=457µs +wanderer-search | 2026-10-28T13:04:18.593678Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=319µs +wanderer-search | 2026-10-28T13:04:18.608656Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=237µs time.idle=482µs +wanderer-search | 2026-10-28T13:04:18.655108Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.5µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:18.668017Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=483µs +wanderer-search | 2026-10-28T13:04:18.708813Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:18.721894Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=421µs +wanderer-search | 2026-10-28T13:04:18.765040Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.5µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:18.778186Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=431µs +wanderer-search | 2026-10-28T13:04:18.817217Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=237µs +wanderer-search | 2026-10-28T13:04:18.830753Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=220µs time.idle=512µs +wanderer-search | 2026-10-28T13:04:18.875346Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.2µs time.idle=225µs +wanderer-search | 2026-10-28T13:04:18.889936Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=426µs +wanderer-search | 2026-10-28T13:04:18.930463Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.4µs time.idle=242µs +wanderer-search | 2026-10-28T13:04:18.943969Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=436µs +wanderer-search | 2026-10-28T13:04:18.986897Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.1µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:18.999736Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:19.039101Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.5µs time.idle=258µs +wanderer-search | 2026-10-28T13:04:19.054436Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=234µs time.idle=533µs +wanderer-search | 2026-10-28T13:04:19.098196Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.0µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:19.111856Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=470µs +wanderer-search | 2026-10-28T13:04:19.152684Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=108µs time.idle=224µs +wanderer-search | 2026-10-28T13:04:19.166196Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=589µs +wanderer-search | 2026-10-28T13:04:19.207966Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.5µs time.idle=236µs +wanderer-search | 2026-10-28T13:04:19.220919Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=438µs +wanderer-search | 2026-10-28T13:04:19.266214Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.9µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:19.279081Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=410µs +wanderer-search | 2026-10-28T13:04:19.320010Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.6µs time.idle=228µs +wanderer-search | 2026-10-28T13:04:19.333766Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=405µs +wanderer-search | 2026-10-28T13:04:19.373765Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=248µs +wanderer-search | 2026-10-28T13:04:19.387540Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=440µs +wanderer-search | 2026-10-28T13:04:19.429231Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.4µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:19.444105Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=433µs +wanderer-search | 2026-10-28T13:04:19.488023Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.0µs time.idle=233µs +wanderer-search | 2026-10-28T13:04:19.501276Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=569µs +wanderer-search | 2026-10-28T13:04:19.541827Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=236µs +wanderer-search | 2026-10-28T13:04:19.555632Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=449µs +wanderer-search | 2026-10-28T13:04:19.596516Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.8µs time.idle=282µs +wanderer-search | 2026-10-28T13:04:19.609413Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=443µs +wanderer-search | 2026-10-28T13:04:19.652667Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:19.666114Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=406µs +wanderer-search | 2026-10-28T13:04:19.710735Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.3µs time.idle=233µs +wanderer-search | 2026-10-28T13:04:19.723966Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=409µs +wanderer-search | 2026-10-28T13:04:19.763971Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.5µs time.idle=231µs +wanderer-search | 2026-10-28T13:04:19.776751Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=437µs +wanderer-search | 2026-10-28T13:04:19.818712Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=136µs time.idle=313µs +wanderer-search | 2026-10-28T13:04:19.832691Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=573µs +wanderer-search | 2026-10-28T13:04:19.874160Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.3µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:19.888061Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:19.932006Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.0µs time.idle=241µs +wanderer-search | 2026-10-28T13:04:19.945080Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=414µs +wanderer-search | 2026-10-28T13:04:19.985627Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.9µs time.idle=280µs +wanderer-search | 2026-10-28T13:04:20.002236Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=262µs time.idle=593µs +wanderer-search | 2026-10-28T13:04:20.040903Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.8µs time.idle=276µs +wanderer-search | 2026-10-28T13:04:20.057640Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=241µs time.idle=516µs +wanderer-search | 2026-10-28T13:04:20.097337Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=105µs time.idle=286µs +wanderer-search | 2026-10-28T13:04:20.109937Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=478µs +wanderer-search | 2026-10-28T13:04:20.154514Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.0µs time.idle=297µs +wanderer-search | 2026-10-28T13:04:20.168537Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:20.213806Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.2µs time.idle=232µs +wanderer-search | 2026-10-28T13:04:20.226803Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=464µs +wanderer-search | 2026-10-28T13:04:20.267700Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=289µs +wanderer-search | 2026-10-28T13:04:20.281650Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=432µs +wanderer-search | 2026-10-28T13:04:20.318164Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.9µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:20.334123Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=440µs +wanderer-search | 2026-10-28T13:04:20.376425Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.0µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:20.390159Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=416µs +wanderer-search | 2026-10-28T13:04:20.435691Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=110µs time.idle=232µs +wanderer-search | 2026-10-28T13:04:20.449045Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=410µs +wanderer-search | 2026-10-28T13:04:20.490608Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.9µs time.idle=282µs +wanderer-search | 2026-10-28T13:04:20.504674Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=453µs +wanderer-search | 2026-10-28T13:04:20.542744Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.1µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:20.557201Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=173µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:20.598996Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.1µs time.idle=231µs +wanderer-search | 2026-10-28T13:04:20.613316Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=231µs time.idle=540µs +wanderer-search | 2026-10-28T13:04:20.657665Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.8µs time.idle=262µs +wanderer-search | 2026-10-28T13:04:20.673147Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=481µs +wanderer-search | 2026-10-28T13:04:20.712497Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.0µs time.idle=275µs +wanderer-search | 2026-10-28T13:04:20.727139Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=428µs +wanderer-search | 2026-10-28T13:04:20.765535Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.4µs time.idle=260µs +wanderer-search | 2026-10-28T13:04:20.778623Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=412µs +wanderer-search | 2026-10-28T13:04:20.822688Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=108µs time.idle=222µs +wanderer-search | 2026-10-28T13:04:20.835936Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=387µs +wanderer-search | 2026-10-28T13:04:20.881701Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.9µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:20.895465Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:20.935604Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.6µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:20.949409Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=422µs +wanderer-search | 2026-10-28T13:04:20.987241Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.7µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:21.003991Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=408µs +wanderer-search | 2026-10-28T13:04:21.044177Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.2µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:21.059396Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=488µs +wanderer-search | 2026-10-28T13:04:21.103900Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.5µs time.idle=263µs +wanderer-search | 2026-10-28T13:04:21.118487Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=437µs +wanderer-search | 2026-10-28T13:04:21.152563Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=60.6µs time.idle=17.2µs +wanderer-search | 2026-10-28T13:04:21.157811Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.1µs time.idle=217µs +wanderer-search | 2026-10-28T13:04:21.176522Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=463µs +wanderer-search | 2026-10-28T13:04:21.213866Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.1µs time.idle=233µs +wanderer-search | 2026-10-28T13:04:21.228142Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=402µs +wanderer-search | 2026-10-28T13:04:21.268496Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.1µs time.idle=270µs +wanderer-search | 2026-10-28T13:04:21.284077Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=396µs +wanderer-search | 2026-10-28T13:04:21.327346Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:21.340570Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=422µs +wanderer-search | 2026-10-28T13:04:21.389326Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=114µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:21.403634Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=500µs +wanderer-search | 2026-10-28T13:04:21.437782Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.8µs time.idle=253µs +wanderer-search | 2026-10-28T13:04:21.450623Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=434µs +wanderer-search | 2026-10-28T13:04:21.493706Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.8µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:21.506713Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=426µs +wanderer-search | 2026-10-28T13:04:21.548625Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.8µs time.idle=240µs +wanderer-search | 2026-10-28T13:04:21.561454Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=393µs +wanderer-search | 2026-10-28T13:04:21.612843Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.0µs time.idle=222µs +wanderer-search | 2026-10-28T13:04:21.626585Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=406µs +wanderer-search | 2026-10-28T13:04:21.658786Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=224µs +wanderer-search | 2026-10-28T13:04:21.672672Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=406µs +wanderer-search | 2026-10-28T13:04:21.714745Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.3µs time.idle=221µs +wanderer-search | 2026-10-28T13:04:21.727456Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=417µs +wanderer-search | 2026-10-28T13:04:21.768942Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.3µs time.idle=228µs +wanderer-search | 2026-10-28T13:04:21.781981Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=406µs +wanderer-search | 2026-10-28T13:04:21.835340Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.7µs time.idle=253µs +wanderer-search | 2026-10-28T13:04:21.848647Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=443µs +wanderer-search | 2026-10-28T13:04:21.881645Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.1µs time.idle=267µs +wanderer-search | 2026-10-28T13:04:21.896833Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=434µs +wanderer-search | 2026-10-28T13:04:21.935131Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.1µs time.idle=258µs +wanderer-search | 2026-10-28T13:04:21.949445Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=471µs +wanderer-search | 2026-10-28T13:04:21.990199Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.9µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:22.003854Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=218µs time.idle=438µs +wanderer-search | 2026-10-28T13:04:22.057625Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.4µs time.idle=251µs +wanderer-search | 2026-10-28T13:04:22.071132Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=416µs +wanderer-search | 2026-10-28T13:04:22.106011Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.4µs time.idle=242µs +wanderer-search | 2026-10-28T13:04:22.119793Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=202µs time.idle=423µs +wanderer-search | 2026-10-28T13:04:22.159969Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.9µs time.idle=278µs +wanderer-search | 2026-10-28T13:04:22.177062Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=226µs time.idle=582µs +wanderer-search | 2026-10-28T13:04:22.212813Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.2µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:22.228577Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=461µs +wanderer-search | 2026-10-28T13:04:22.278548Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:22.294147Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=250µs time.idle=479µs +wanderer-search | 2026-10-28T13:04:22.328603Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.1µs time.idle=323µs +wanderer-search | 2026-10-28T13:04:22.346098Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=472µs +wanderer-search | 2026-10-28T13:04:22.391544Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.5µs time.idle=271µs +wanderer-search | 2026-10-28T13:04:22.405701Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=477µs +wanderer-search | 2026-10-28T13:04:22.437914Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.0µs time.idle=237µs +wanderer-search | 2026-10-28T13:04:22.452487Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=450µs +wanderer-search | 2026-10-28T13:04:22.506095Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:22.520217Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=432µs +wanderer-search | 2026-10-28T13:04:22.555689Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.8µs time.idle=283µs +wanderer-search | 2026-10-28T13:04:22.569331Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=428µs +wanderer-search | 2026-10-28T13:04:22.613619Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.0µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:22.626782Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=404µs +wanderer-search | 2026-10-28T13:04:22.661422Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.5µs time.idle=260µs +wanderer-search | 2026-10-28T13:04:22.674809Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=236µs time.idle=423µs +wanderer-search | 2026-10-28T13:04:22.728771Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.1µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:22.743005Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:22.776688Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.1µs time.idle=239µs +wanderer-search | 2026-10-28T13:04:22.790597Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=436µs +wanderer-search | 2026-10-28T13:04:22.835109Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=182µs time.idle=347µs +wanderer-search | 2026-10-28T13:04:22.848162Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=417µs +wanderer-search | 2026-10-28T13:04:22.883096Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.3µs time.idle=273µs +wanderer-search | 2026-10-28T13:04:22.902209Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=267µs time.idle=626µs +wanderer-search | 2026-10-28T13:04:22.951932Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.4µs time.idle=286µs +wanderer-search | 2026-10-28T13:04:22.967244Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=528µs +wanderer-search | 2026-10-28T13:04:22.999262Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=104µs time.idle=329µs +wanderer-search | 2026-10-28T13:04:23.017083Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=206µs time.idle=419µs +wanderer-search | 2026-10-28T13:04:23.057165Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.7µs time.idle=213µs +wanderer-search | 2026-10-28T13:04:23.072192Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=479µs +wanderer-search | 2026-10-28T13:04:23.112679Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.4µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:23.127226Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:23.177656Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.6µs time.idle=404µs +wanderer-search | 2026-10-28T13:04:23.194360Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=577µs +wanderer-search | 2026-10-28T13:04:23.225991Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.5µs time.idle=256µs +wanderer-search | 2026-10-28T13:04:23.239995Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=426µs +wanderer-search | 2026-10-28T13:04:23.281965Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.3µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:23.296908Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=470µs +wanderer-search | 2026-10-28T13:04:23.336236Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.9µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:23.352600Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=434µs +wanderer-search | 2026-10-28T13:04:23.403657Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.8µs time.idle=255µs +wanderer-search | 2026-10-28T13:04:23.418125Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=433µs +wanderer-search | 2026-10-28T13:04:23.448981Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.7µs time.idle=292µs +wanderer-search | 2026-10-28T13:04:23.464191Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=239µs time.idle=502µs +wanderer-search | 2026-10-28T13:04:23.506259Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.8µs time.idle=264µs +wanderer-search | 2026-10-28T13:04:23.520776Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=212µs time.idle=502µs +wanderer-search | 2026-10-28T13:04:23.561817Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.8µs time.idle=257µs +wanderer-search | 2026-10-28T13:04:23.577349Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=422µs +wanderer-search | 2026-10-28T13:04:23.627379Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.9µs time.idle=259µs +wanderer-search | 2026-10-28T13:04:23.641687Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=427µs +wanderer-search | 2026-10-28T13:04:23.672440Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.6µs time.idle=276µs +wanderer-search | 2026-10-28T13:04:23.688770Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=458µs +wanderer-search | 2026-10-28T13:04:23.731075Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.2µs time.idle=259µs +wanderer-search | 2026-10-28T13:04:23.745936Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=482µs +wanderer-search | 2026-10-28T13:04:23.786437Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.0µs time.idle=265µs +wanderer-search | 2026-10-28T13:04:23.800683Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:23.851080Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.4µs time.idle=285µs +wanderer-search | 2026-10-28T13:04:23.868189Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=242µs time.idle=525µs +wanderer-search | 2026-10-28T13:04:23.898534Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=322µs +wanderer-search | 2026-10-28T13:04:23.914751Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=448µs +wanderer-search | 2026-10-28T13:04:23.955664Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.4µs time.idle=298µs +wanderer-search | 2026-10-28T13:04:23.970569Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:24.010095Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=239µs +wanderer-search | 2026-10-28T13:04:24.023064Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=395µs +wanderer-search | 2026-10-28T13:04:24.080496Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.6µs time.idle=269µs +wanderer-search | 2026-10-28T13:04:24.094168Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=379µs +wanderer-search | 2026-10-28T13:04:24.124597Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.8µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:24.138468Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=397µs +wanderer-search | 2026-10-28T13:04:24.181328Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.9µs time.idle=221µs +wanderer-search | 2026-10-28T13:04:24.194784Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:24.231024Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.5µs time.idle=240µs +wanderer-search | 2026-10-28T13:04:24.245807Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=400µs +wanderer-search | 2026-10-28T13:04:24.302881Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=331µs +wanderer-search | 2026-10-28T13:04:24.319155Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=440µs +wanderer-search | 2026-10-28T13:04:24.346936Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.0µs time.idle=279µs +wanderer-search | 2026-10-28T13:04:24.363750Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=470µs +wanderer-search | 2026-10-28T13:04:24.404470Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=172µs time.idle=501µs +wanderer-search | 2026-10-28T13:04:24.426361Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=471µs +wanderer-search | 2026-10-28T13:04:24.454876Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.5µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:24.470456Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=390µs +wanderer-search | 2026-10-28T13:04:24.526626Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.4µs time.idle=275µs +wanderer-search | 2026-10-28T13:04:24.540603Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=414µs +wanderer-search | 2026-10-28T13:04:24.574021Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.2µs time.idle=218µs +wanderer-search | 2026-10-28T13:04:24.587377Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=456µs +wanderer-search | 2026-10-28T13:04:24.636058Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=220µs +wanderer-search | 2026-10-28T13:04:24.654916Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=360µs time.idle=1.04ms +wanderer-search | 2026-10-28T13:04:24.680977Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.0µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:24.693853Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=408µs +wanderer-search | 2026-10-28T13:04:24.749794Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.9µs time.idle=257µs +wanderer-search | 2026-10-28T13:04:24.762845Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=425µs +wanderer-search | 2026-10-28T13:04:24.796349Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=114µs time.idle=264µs +wanderer-search | 2026-10-28T13:04:24.809491Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:24.868168Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=255µs +wanderer-search | 2026-10-28T13:04:24.881129Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=448µs +wanderer-search | 2026-10-28T13:04:24.901666Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.7µs time.idle=254µs +wanderer-search | 2026-10-28T13:04:24.955436Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=408µs +wanderer-search | 2026-10-28T13:04:24.971213Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.6µs time.idle=302µs +wanderer-search | 2026-10-28T13:04:25.019096Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=231µs +wanderer-search | 2026-10-28T13:04:25.026045Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=404µs +wanderer-search | 2026-10-28T13:04:25.073635Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=244µs time.idle=498µs +wanderer-search | 2026-10-28T13:04:25.090532Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=104µs time.idle=348µs +wanderer-search | 2026-10-28T13:04:25.148289Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=405µs +wanderer-search | 2026-10-28T13:04:25.163590Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.1µs time.idle=239µs +wanderer-search | 2026-10-28T13:04:25.217916Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=392µs +wanderer-search | 2026-10-28T13:04:25.234668Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=217µs +wanderer-search | 2026-10-28T13:04:25.291201Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.3µs time.idle=309µs +wanderer-search | 2026-10-28T13:04:25.291630Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=233µs time.idle=602µs +wanderer-search | 2026-10-28T13:04:25.345234Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=423µs +wanderer-search | 2026-10-28T13:04:25.357275Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.2µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:25.410778Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=415µs +wanderer-search | 2026-10-28T13:04:25.425889Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.4µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:25.480318Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=416µs +wanderer-search | 2026-10-28T13:04:25.500813Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.3µs time.idle=227µs +wanderer-search | 2026-10-28T13:04:25.556624Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=541µs +wanderer-search | 2026-10-28T13:04:25.557294Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.1µs time.idle=265µs +wanderer-search | 2026-10-28T13:04:25.610559Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=438µs +wanderer-search | 2026-10-28T13:04:25.619044Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.5µs time.idle=232µs +wanderer-search | 2026-10-28T13:04:25.672590Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=418µs +wanderer-search | 2026-10-28T13:04:25.688778Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.1µs time.idle=242µs +wanderer-search | 2026-10-28T13:04:25.742570Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=412µs +wanderer-search | 2026-10-28T13:04:25.765721Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.5µs time.idle=227µs +wanderer-search | 2026-10-28T13:04:25.819057Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.7µs time.idle=251µs +wanderer-search | 2026-10-28T13:04:25.820773Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=408µs +wanderer-search | 2026-10-28T13:04:25.872922Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=431µs +wanderer-search | 2026-10-28T13:04:25.881758Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.8µs time.idle=218µs +wanderer-search | 2026-10-28T13:04:25.935777Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=419µs +wanderer-search | 2026-10-28T13:04:25.950844Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.3µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:26.005034Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=444µs +wanderer-search | 2026-10-28T13:04:26.028919Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.0µs time.idle=246µs +wanderer-search | 2026-10-28T13:04:26.082726Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.6µs time.idle=261µs +wanderer-search | 2026-10-28T13:04:26.083080Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=282µs time.idle=392µs +wanderer-search | 2026-10-28T13:04:26.137861Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=446µs +wanderer-search | 2026-10-28T13:04:26.146762Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.9µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:26.202001Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=481µs +wanderer-search | 2026-10-28T13:04:26.213995Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.4µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:26.268374Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=482µs +wanderer-search | 2026-10-28T13:04:26.292467Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.2µs time.idle=238µs +wanderer-search | 2026-10-28T13:04:26.346375Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=499µs +wanderer-search | 2026-10-28T13:04:26.347961Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.1µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:26.401119Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:26.410510Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.7µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:26.464519Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=296µs time.idle=435µs +wanderer-search | 2026-10-28T13:04:26.475758Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.7µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:26.532331Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=240µs time.idle=533µs +wanderer-search | 2026-10-28T13:04:26.555646Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.7µs time.idle=269µs +wanderer-search | 2026-10-28T13:04:26.609639Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=416µs +wanderer-search | 2026-10-28T13:04:26.610498Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:26.666764Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=473µs +wanderer-search | 2026-10-28T13:04:26.677508Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.3µs time.idle=253µs +wanderer-search | 2026-10-28T13:04:26.735154Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=411µs +wanderer-search | 2026-10-28T13:04:26.743796Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.0µs time.idle=245µs +wanderer-search | 2026-10-28T13:04:26.798361Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=392µs +wanderer-search | 2026-10-28T13:04:26.818056Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.3µs time.idle=220µs +wanderer-search | 2026-10-28T13:04:26.872480Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=474µs +wanderer-search | 2026-10-28T13:04:26.882581Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.4µs time.idle=322µs +wanderer-search | 2026-10-28T13:04:26.940492Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=427µs +wanderer-search | 2026-10-28T13:04:26.949646Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.5µs time.idle=290µs +wanderer-search | 2026-10-28T13:04:27.005136Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=230µs time.idle=468µs +wanderer-search | 2026-10-28T13:04:27.007411Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.2µs time.idle=339µs +wanderer-search | 2026-10-28T13:04:27.063614Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=236µs time.idle=497µs +wanderer-search | 2026-10-28T13:04:27.081995Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=106µs time.idle=327µs +wanderer-search | 2026-10-28T13:04:27.137726Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=167µs time.idle=486µs +wanderer-search | 2026-10-28T13:04:27.149802Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.7µs time.idle=257µs +wanderer-search | 2026-10-28T13:04:27.203996Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=399µs +wanderer-search | 2026-10-28T13:04:27.215052Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.6µs time.idle=243µs +wanderer-search | 2026-10-28T13:04:27.268579Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=408µs +wanderer-search | 2026-10-28T13:04:27.277504Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=333µs +wanderer-search | 2026-10-28T13:04:27.333032Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=387µs +wanderer-search | 2026-10-28T13:04:27.348086Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.9µs time.idle=299µs +wanderer-search | 2026-10-28T13:04:27.402915Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=433µs +wanderer-search | 2026-10-28T13:04:27.412727Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=104µs time.idle=270µs +wanderer-search | 2026-10-28T13:04:27.466875Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=176µs time.idle=401µs +wanderer-search | 2026-10-28T13:04:27.476756Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.0µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:27.530669Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=412µs +wanderer-search | 2026-10-28T13:04:27.544645Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:27.602950Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=463µs +wanderer-search | 2026-10-28T13:04:27.612066Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.0µs time.idle=233µs +wanderer-search | 2026-10-28T13:04:27.665344Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=415µs +wanderer-search | 2026-10-28T13:04:27.675526Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.5µs time.idle=246µs +wanderer-search | 2026-10-28T13:04:27.729148Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=424µs +wanderer-search | 2026-10-28T13:04:27.738739Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.1µs time.idle=215µs +wanderer-search | 2026-10-28T13:04:27.792347Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=400µs +wanderer-search | 2026-10-28T13:04:27.811799Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.3µs time.idle=232µs +wanderer-search | 2026-10-28T13:04:27.865704Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=405µs +wanderer-search | 2026-10-28T13:04:27.874659Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.8µs time.idle=242µs +wanderer-search | 2026-10-28T13:04:27.928880Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=431µs +wanderer-search | 2026-10-28T13:04:27.937658Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=336µs +wanderer-search | 2026-10-28T13:04:27.991556Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=464µs +wanderer-search | 2026-10-28T13:04:28.000555Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=110µs time.idle=240µs +wanderer-search | 2026-10-28T13:04:28.054505Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=407µs +wanderer-search | 2026-10-28T13:04:28.074195Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.7µs time.idle=221µs +wanderer-search | 2026-10-28T13:04:28.127568Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=430µs +wanderer-search | 2026-10-28T13:04:28.138085Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.3µs time.idle=226µs +wanderer-search | 2026-10-28T13:04:28.192664Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=452µs +wanderer-search | 2026-10-28T13:04:28.201600Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=104µs time.idle=271µs +wanderer-search | 2026-10-28T13:04:28.257497Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=346µs time.idle=563µs +wanderer-search | 2026-10-28T13:04:28.266480Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.6µs time.idle=274µs +wanderer-search | 2026-10-28T13:04:28.321065Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=391µs +wanderer-search | 2026-10-28T13:04:28.335937Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.7µs time.idle=257µs +wanderer-search | 2026-10-28T13:04:28.389686Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=407µs +wanderer-search | 2026-10-28T13:04:28.401787Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=258µs +wanderer-search | 2026-10-28T13:04:28.455906Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=483µs +wanderer-search | 2026-10-28T13:04:28.466055Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.8µs time.idle=253µs +wanderer-search | 2026-10-28T13:04:28.519713Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=394µs +wanderer-search | 2026-10-28T13:04:28.528837Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.6µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:28.582005Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=381µs +wanderer-search | 2026-10-28T13:04:28.599709Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=124µs time.idle=621µs +wanderer-search | 2026-10-28T13:04:28.662674Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=261µs time.idle=1.58ms +wanderer-search | 2026-10-28T13:04:28.665843Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=210µs time.idle=187µs +wanderer-search | 2026-10-28T13:04:28.690708Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=423µs +wanderer-search | 2026-10-28T13:04:28.728512Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.2µs time.idle=251µs +wanderer-search | 2026-10-28T13:04:28.743861Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=252µs time.idle=470µs +wanderer-search | 2026-10-28T13:04:28.792539Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=183µs time.idle=2.02ms +wanderer-search | 2026-10-28T13:04:28.812225Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=811µs time.idle=339µs +wanderer-search | 2026-10-28T13:04:28.876847Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=220µs time.idle=292µs +wanderer-search | 2026-10-28T13:04:28.893684Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=476µs +wanderer-search | 2026-10-28T13:04:28.903903Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=105µs time.idle=839µs +wanderer-search | 2026-10-28T13:04:28.956163Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=149µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:28.959649Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=345µs time.idle=379µs +wanderer-search | 2026-10-28T13:04:29.012104Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=390µs +wanderer-search | 2026-10-28T13:04:29.022357Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.8µs time.idle=227µs +wanderer-search | 2026-10-28T13:04:29.079723Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=221µs time.idle=386µs +wanderer-search | 2026-10-28T13:04:29.103470Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.7µs time.idle=340µs +wanderer-search | 2026-10-28T13:04:29.121637Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=175µs time.idle=455µs +wanderer-search | 2026-10-28T13:04:29.175972Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.5µs time.idle=291µs +wanderer-search | 2026-10-28T13:04:29.192615Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=241µs time.idle=506µs +wanderer-search | 2026-10-28T13:04:29.221098Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.8µs time.idle=274µs +wanderer-search | 2026-10-28T13:04:29.237320Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=193µs time.idle=466µs +wanderer-search | 2026-10-28T13:04:29.289050Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.7µs time.idle=270µs +wanderer-search | 2026-10-28T13:04:29.303499Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=452µs +wanderer-search | 2026-10-28T13:04:29.331863Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.8µs time.idle=263µs +wanderer-search | 2026-10-28T13:04:29.346290Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=236µs time.idle=500µs +wanderer-search | 2026-10-28T13:04:29.403247Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=104µs time.idle=307µs +wanderer-search | 2026-10-28T13:04:29.417052Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=401µs +wanderer-search | 2026-10-28T13:04:29.447640Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.9µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:29.460868Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=434µs +wanderer-search | 2026-10-28T13:04:29.512678Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.1µs time.idle=310µs +wanderer-search | 2026-10-28T13:04:29.527752Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=211µs time.idle=441µs +wanderer-search | 2026-10-28T13:04:29.555721Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.5µs time.idle=294µs +wanderer-search | 2026-10-28T13:04:29.571606Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=456µs +wanderer-search | 2026-10-28T13:04:29.626325Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:29.641253Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=453µs +wanderer-search | 2026-10-28T13:04:29.669696Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.1µs time.idle=288µs +wanderer-search | 2026-10-28T13:04:29.686750Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=268µs time.idle=537µs +wanderer-search | 2026-10-28T13:04:29.737265Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.8µs time.idle=255µs +wanderer-search | 2026-10-28T13:04:29.753606Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=247µs time.idle=496µs +wanderer-search | 2026-10-28T13:04:29.780671Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.7µs time.idle=267µs +wanderer-search | 2026-10-28T13:04:29.797747Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=464µs +wanderer-search | 2026-10-28T13:04:29.851185Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=274µs +wanderer-search | 2026-10-28T13:04:29.867470Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=211µs time.idle=446µs +wanderer-search | 2026-10-28T13:04:29.896290Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.5µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:29.912045Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=235µs time.idle=537µs +wanderer-search | 2026-10-28T13:04:29.964025Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.5µs time.idle=287µs +wanderer-search | 2026-10-28T13:04:29.981796Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=224µs time.idle=442µs +wanderer-search | 2026-10-28T13:04:30.007808Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.4µs time.idle=272µs +wanderer-search | 2026-10-28T13:04:30.023841Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=443µs +wanderer-search | 2026-10-28T13:04:30.077659Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.4µs time.idle=311µs +wanderer-search | 2026-10-28T13:04:30.104147Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=982µs time.idle=1.55ms +wanderer-search | 2026-10-28T13:04:30.122365Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=635µs +wanderer-search | 2026-10-28T13:04:30.145545Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=317µs time.idle=1.90ms +wanderer-search | 2026-10-28T13:04:30.191932Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.0µs time.idle=236µs +wanderer-search | 2026-10-28T13:04:30.205983Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=211µs time.idle=406µs +wanderer-search | 2026-10-28T13:04:30.234021Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.0µs time.idle=246µs +wanderer-search | 2026-10-28T13:04:30.248133Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=414µs +wanderer-search | 2026-10-28T13:04:30.315080Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.9µs time.idle=269µs +wanderer-search | 2026-10-28T13:04:30.329965Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=471µs +wanderer-search | 2026-10-28T13:04:30.358242Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=194µs time.idle=570µs +wanderer-search | 2026-10-28T13:04:30.379742Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=227µs time.idle=526µs +wanderer-search | 2026-10-28T13:04:30.414561Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.1µs time.idle=238µs +wanderer-search | 2026-10-28T13:04:30.429614Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=217µs time.idle=455µs +wanderer-search | 2026-10-28T13:04:30.456810Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:30.477757Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=253µs time.idle=563µs +wanderer-search | 2026-10-28T13:04:30.539426Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.3µs time.idle=301µs +wanderer-search | 2026-10-28T13:04:30.555961Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=212µs time.idle=524µs +wanderer-search | 2026-10-28T13:04:30.590349Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=278µs +wanderer-search | 2026-10-28T13:04:30.610854Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=453µs +wanderer-search | 2026-10-28T13:04:30.639373Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=509µs +wanderer-search | 2026-10-28T13:04:30.655843Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=474µs +wanderer-search | 2026-10-28T13:04:30.688640Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.1µs time.idle=259µs +wanderer-search | 2026-10-28T13:04:30.705006Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=243µs time.idle=528µs +wanderer-search | 2026-10-28T13:04:30.767959Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.1µs time.idle=341µs +wanderer-search | 2026-10-28T13:04:30.788853Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=459µs +wanderer-search | 2026-10-28T13:04:30.820315Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.3µs time.idle=316µs +wanderer-search | 2026-10-28T13:04:30.835638Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=222µs time.idle=497µs +wanderer-search | 2026-10-28T13:04:30.864778Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=272µs +wanderer-search | 2026-10-28T13:04:30.879710Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=516µs +wanderer-search | 2026-10-28T13:04:30.914473Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=332µs +wanderer-search | 2026-10-28T13:04:30.932363Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=226µs time.idle=465µs +wanderer-search | 2026-10-28T13:04:30.998066Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=104µs time.idle=355µs +wanderer-search | 2026-10-28T13:04:31.021127Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=291µs time.idle=534µs +wanderer-search | 2026-10-28T13:04:31.045712Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=106µs time.idle=316µs +wanderer-search | 2026-10-28T13:04:31.054691Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=105µs time.idle=356µs +wanderer-search | 2026-10-28T13:04:31.065756Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=242µs time.idle=544µs +wanderer-search | 2026-10-28T13:04:31.091292Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=212µs time.idle=736µs +wanderer-search | 2026-10-28T13:04:31.115354Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=248µs time.idle=549µs +wanderer-search | 2026-10-28T13:04:31.132760Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=234µs time.idle=489µs +wanderer-search | 2026-10-28T13:04:31.144095Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.6µs time.idle=328µs +wanderer-search | 2026-10-28T13:04:31.158764Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=399µs +wanderer-search | 2026-10-28T13:04:31.232631Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.1µs time.idle=330µs +wanderer-search | 2026-10-28T13:04:31.249712Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=232µs time.idle=512µs +wanderer-search | 2026-10-28T13:04:31.277842Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.7µs time.idle=279µs +wanderer-search | 2026-10-28T13:04:31.296010Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=461µs +wanderer-search | 2026-10-28T13:04:31.326641Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.3µs time.idle=294µs +wanderer-search | 2026-10-28T13:04:31.343435Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=211µs time.idle=446µs +wanderer-search | 2026-10-28T13:04:31.368987Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=275µs +wanderer-search | 2026-10-28T13:04:31.385506Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=233µs time.idle=452µs +wanderer-search | 2026-10-28T13:04:31.460480Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.6µs time.idle=298µs +wanderer-search | 2026-10-28T13:04:31.476802Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=465µs +wanderer-search | 2026-10-28T13:04:31.507108Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.8µs time.idle=338µs +wanderer-search | 2026-10-28T13:04:31.523411Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=460µs +wanderer-search | 2026-10-28T13:04:31.553937Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.8µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:31.570295Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=219µs time.idle=480µs +wanderer-search | 2026-10-28T13:04:31.596261Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.6µs time.idle=281µs +wanderer-search | 2026-10-28T13:04:31.615850Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=282µs time.idle=474µs +wanderer-search | 2026-10-28T13:04:31.689117Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=181µs time.idle=341µs +wanderer-search | 2026-10-28T13:04:31.716306Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=261µs time.idle=501µs +wanderer-search | 2026-10-28T13:04:31.734562Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.9µs time.idle=649µs +wanderer-search | 2026-10-28T13:04:31.752730Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=233µs time.idle=468µs +wanderer-search | 2026-10-28T13:04:31.781042Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.3µs time.idle=292µs +wanderer-search | 2026-10-28T13:04:31.797560Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=598µs time.idle=262µs +wanderer-search | 2026-10-28T13:04:31.831317Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.6µs time.idle=329µs +wanderer-search | 2026-10-28T13:04:31.847617Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=252µs time.idle=542µs +wanderer-search | 2026-10-28T13:04:31.927085Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.3µs time.idle=247µs +wanderer-search | 2026-10-28T13:04:31.953239Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=586µs time.idle=345µs +wanderer-search | 2026-10-28T13:04:31.965007Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=96.9µs time.idle=299µs +wanderer-search | 2026-10-28T13:04:32.009310Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=98.0µs time.idle=308µs +wanderer-search | 2026-10-28T13:04:32.019469Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=286µs time.idle=480µs +wanderer-search | 2026-10-28T13:04:32.078661Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=130µs time.idle=152µs +wanderer-search | 2026-10-28T13:04:32.081891Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=482µs time.idle=2.10ms +wanderer-search | 2026-10-28T13:04:32.098793Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=237µs time.idle=431µs +wanderer-search | 2026-10-28T13:04:32.166599Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=120µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:32.181574Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=178µs time.idle=402µs +wanderer-search | 2026-10-28T13:04:32.229567Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=121µs time.idle=441µs +wanderer-search | 2026-10-28T13:04:32.244505Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=413µs +wanderer-search | 2026-10-28T13:04:32.294429Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.1µs time.idle=276µs +wanderer-search | 2026-10-28T13:04:32.313695Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=492µs +wanderer-search | 2026-10-28T13:04:32.316418Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=143µs time.idle=2.11ms +wanderer-search | 2026-10-28T13:04:32.374918Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=365µs +wanderer-search | 2026-10-28T13:04:32.390045Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=290µs +wanderer-search | 2026-10-28T13:04:32.445044Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=231µs time.idle=602µs +wanderer-search | 2026-10-28T13:04:32.454827Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=109µs time.idle=299µs +wanderer-search | 2026-10-28T13:04:32.511135Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=230µs time.idle=411µs +wanderer-search | 2026-10-28T13:04:32.525906Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.2µs time.idle=281µs +wanderer-search | 2026-10-28T13:04:32.583294Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=476µs +wanderer-search | 2026-10-28T13:04:32.585833Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=122µs time.idle=767µs +wanderer-search | 2026-10-28T13:04:32.646187Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=404µs +wanderer-search | 2026-10-28T13:04:32.657983Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.2µs time.idle=332µs +wanderer-search | 2026-10-28T13:04:32.714321Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=366µs +wanderer-search | 2026-10-28T13:04:32.724271Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.7µs time.idle=278µs +wanderer-search | 2026-10-28T13:04:32.780755Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=453µs +wanderer-search | 2026-10-28T13:04:32.795792Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.8µs time.idle=299µs +wanderer-search | 2026-10-28T13:04:32.851418Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=456µs +wanderer-search | 2026-10-28T13:04:32.862463Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=286µs +wanderer-search | 2026-10-28T13:04:32.918756Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=397µs +wanderer-search | 2026-10-28T13:04:32.927558Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.6µs time.idle=305µs +wanderer-search | 2026-10-28T13:04:32.983360Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=258µs time.idle=513µs +wanderer-search | 2026-10-28T13:04:32.992826Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=397µs +wanderer-search | 2026-10-28T13:04:33.048676Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=421µs +wanderer-search | 2026-10-28T13:04:33.061649Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.0µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:33.117666Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=446µs +wanderer-search | 2026-10-28T13:04:33.127972Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.7µs time.idle=255µs +wanderer-search | 2026-10-28T13:04:33.184633Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=216µs time.idle=460µs +wanderer-search | 2026-10-28T13:04:33.194176Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.2µs time.idle=257µs +wanderer-search | 2026-10-28T13:04:33.249562Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=432µs +wanderer-search | 2026-10-28T13:04:33.259875Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.6µs time.idle=274µs +wanderer-search | 2026-10-28T13:04:33.319616Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=218µs time.idle=558µs +wanderer-search | 2026-10-28T13:04:33.330187Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.5µs time.idle=263µs +wanderer-search | 2026-10-28T13:04:33.384900Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=192µs time.idle=448µs +wanderer-search | 2026-10-28T13:04:33.394349Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.5µs time.idle=240µs +wanderer-search | 2026-10-28T13:04:33.451511Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=233µs time.idle=433µs +wanderer-search | 2026-10-28T13:04:33.463682Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.8µs time.idle=376µs +wanderer-search | 2026-10-28T13:04:33.520752Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=443µs +wanderer-search | 2026-10-28T13:04:33.530760Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=121µs time.idle=282µs +wanderer-search | 2026-10-28T13:04:33.592475Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=236µs time.idle=961µs +wanderer-search | 2026-10-28T13:04:33.595199Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.1µs time.idle=293µs +wanderer-search | 2026-10-28T13:04:33.653536Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=252µs time.idle=559µs +wanderer-search | 2026-10-28T13:04:33.664960Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.6µs time.idle=294µs +wanderer-search | 2026-10-28T13:04:33.718874Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=512µs +wanderer-search | 2026-10-28T13:04:33.731737Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=108µs time.idle=860µs +wanderer-search | 2026-10-28T13:04:33.787897Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=172µs time.idle=436µs +wanderer-search | 2026-10-28T13:04:33.806624Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=125µs time.idle=308µs +wanderer-search | 2026-10-28T13:04:33.868499Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=335µs time.idle=1.34ms +wanderer-search | 2026-10-28T13:04:33.870086Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=190µs time.idle=256µs +wanderer-search | 2026-10-28T13:04:33.895069Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=290µs time.idle=515µs +wanderer-search | 2026-10-28T13:04:33.929834Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=163µs time.idle=226µs +wanderer-search | 2026-10-28T13:04:33.947574Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=500µs time.idle=232µs +wanderer-search | 2026-10-28T13:04:33.998333Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.7µs time.idle=229µs +wanderer-search | 2026-10-28T13:04:34.012566Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=446µs +wanderer-search | 2026-10-28T13:04:34.081296Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.8µs time.idle=245µs +wanderer-search | 2026-10-28T13:04:34.096279Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=419µs +wanderer-search | 2026-10-28T13:04:34.106636Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.7µs time.idle=265µs +wanderer-search | 2026-10-28T13:04:34.162415Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=176µs time.idle=282µs +wanderer-search | 2026-10-28T13:04:34.162922Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=255µs time.idle=684µs +wanderer-search | 2026-10-28T13:04:34.224436Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=165µs time.idle=213µs +wanderer-search | 2026-10-28T13:04:34.226293Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=636µs time.idle=698µs +wanderer-search | 2026-10-28T13:04:34.250133Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=184µs time.idle=381µs +wanderer-search | 2026-10-28T13:04:34.306226Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=211µs +wanderer-search | 2026-10-28T13:04:34.321071Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=189µs time.idle=400µs +wanderer-search | 2026-10-28T13:04:34.372502Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.3µs time.idle=303µs +wanderer-search | 2026-10-28T13:04:34.388520Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=226µs time.idle=444µs +wanderer-search | 2026-10-28T13:04:34.439855Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.6µs time.idle=260µs +wanderer-search | 2026-10-28T13:04:34.454310Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=462µs +wanderer-search | 2026-10-28T13:04:34.462397Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=77.8µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:34.519886Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=240µs time.idle=442µs +wanderer-search | 2026-10-28T13:04:34.531108Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.4µs time.idle=323µs +wanderer-search | 2026-10-28T13:04:34.588960Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=477µs +wanderer-search | 2026-10-28T13:04:34.598891Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.2µs time.idle=244µs +wanderer-search | 2026-10-28T13:04:34.656238Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=252µs time.idle=495µs +wanderer-search | 2026-10-28T13:04:34.667252Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=95.1µs time.idle=304µs +wanderer-search | 2026-10-28T13:04:34.721467Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=442µs +wanderer-search | 2026-10-28T13:04:34.731130Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.9µs time.idle=263µs +wanderer-search | 2026-10-28T13:04:34.786117Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=449µs +wanderer-search | 2026-10-28T13:04:34.798813Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.6µs time.idle=276µs +wanderer-search | 2026-10-28T13:04:34.854768Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=255µs time.idle=495µs +wanderer-search | 2026-10-28T13:04:34.866241Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.9µs time.idle=252µs +wanderer-search | 2026-10-28T13:04:34.921957Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=232µs time.idle=422µs +wanderer-search | 2026-10-28T13:04:34.930586Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.7µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:34.987520Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=231µs time.idle=454µs +wanderer-search | 2026-10-28T13:04:34.997080Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.1µs time.idle=251µs +wanderer-search | 2026-10-28T13:04:35.052985Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=221µs time.idle=446µs +wanderer-search | 2026-10-28T13:04:35.064691Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=113µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:35.121181Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=204µs time.idle=468µs +wanderer-search | 2026-10-28T13:04:35.131962Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=114µs time.idle=498µs +wanderer-search | 2026-10-28T13:04:35.190945Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=785µs time.idle=468µs +wanderer-search | 2026-10-28T13:04:35.199582Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=75.9µs time.idle=261µs +wanderer-search | 2026-10-28T13:04:35.253549Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=182µs time.idle=417µs +wanderer-search | 2026-10-28T13:04:35.262183Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.6µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:35.315776Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=185µs time.idle=386µs +wanderer-search | 2026-10-28T13:04:35.330607Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=108µs time.idle=308µs +wanderer-search | 2026-10-28T13:04:35.386822Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=458µs +wanderer-search | 2026-10-28T13:04:35.399919Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.6µs time.idle=208µs +wanderer-search | 2026-10-28T13:04:35.453496Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=418µs +wanderer-search | 2026-10-28T13:04:35.461860Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.0µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:35.515646Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=453µs +wanderer-search | 2026-10-28T13:04:35.523834Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.9µs time.idle=233µs +wanderer-search | 2026-10-28T13:04:35.581378Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=506µs +wanderer-search | 2026-10-28T13:04:35.595991Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.1µs time.idle=258µs +wanderer-search | 2026-10-28T13:04:35.651827Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=477µs +wanderer-search | 2026-10-28T13:04:35.663476Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.8µs time.idle=262µs +wanderer-search | 2026-10-28T13:04:35.718320Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=195µs time.idle=434µs +wanderer-search | 2026-10-28T13:04:35.726608Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.7µs time.idle=256µs +wanderer-search | 2026-10-28T13:04:35.784853Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=237µs time.idle=524µs +wanderer-search | 2026-10-28T13:04:35.794189Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=412µs +wanderer-search | 2026-10-28T13:04:35.848208Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=441µs +wanderer-search | 2026-10-28T13:04:35.862772Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.4µs time.idle=277µs +wanderer-search | 2026-10-28T13:04:35.918238Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=442µs +wanderer-search | 2026-10-28T13:04:35.926932Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.1µs time.idle=246µs +wanderer-search | 2026-10-28T13:04:35.983167Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=238µs time.idle=502µs +wanderer-search | 2026-10-28T13:04:35.997266Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=128µs time.idle=1.33ms +wanderer-search | 2026-10-28T13:04:36.053509Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=478µs +wanderer-search | 2026-10-28T13:04:36.056599Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.4µs time.idle=271µs +wanderer-search | 2026-10-28T13:04:36.117600Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=213µs time.idle=511µs +wanderer-search | 2026-10-28T13:04:36.126933Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=73.3µs time.idle=232µs +wanderer-search | 2026-10-28T13:04:36.184340Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=321µs time.idle=646µs +wanderer-search | 2026-10-28T13:04:36.209126Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=202µs time.idle=374µs +wanderer-search | 2026-10-28T13:04:36.221178Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=59.8µs time.idle=16.7µs +wanderer-search | 2026-10-28T13:04:36.227822Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=177µs time.idle=383µs +wanderer-search | 2026-10-28T13:04:36.264244Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.2µs time.idle=239µs +wanderer-search | 2026-10-28T13:04:36.277568Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=167µs time.idle=399µs +wanderer-search | 2026-10-28T13:04:36.327284Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.9µs time.idle=249µs +wanderer-search | 2026-10-28T13:04:36.339950Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=404µs +wanderer-search | 2026-10-28T13:04:36.407513Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=135µs time.idle=337µs +wanderer-search | 2026-10-28T13:04:36.420992Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=229µs time.idle=412µs +wanderer-search | 2026-10-28T13:04:36.436016Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.6µs time.idle=250µs +wanderer-search | 2026-10-28T13:04:36.490890Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=232µs time.idle=516µs +wanderer-search | 2026-10-28T13:04:36.491553Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=273µs +wanderer-search | 2026-10-28T13:04:36.546292Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=434µs +wanderer-search | 2026-10-28T13:04:36.549105Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=107µs time.idle=338µs +wanderer-search | 2026-10-28T13:04:36.615780Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=333µs time.idle=609µs +wanderer-search | 2026-10-28T13:04:36.629660Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.8µs time.idle=291µs +wanderer-search | 2026-10-28T13:04:36.687302Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=217µs time.idle=525µs +wanderer-search | 2026-10-28T13:04:36.702114Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.5µs time.idle=267µs +wanderer-search | 2026-10-28T13:04:36.757526Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=224µs time.idle=479µs +wanderer-search | 2026-10-28T13:04:36.759328Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=99.4µs time.idle=273µs +wanderer-search | 2026-10-28T13:04:36.813299Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=427µs +wanderer-search | 2026-10-28T13:04:36.825136Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=88.4µs time.idle=242µs +wanderer-search | 2026-10-28T13:04:36.878614Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=451µs +wanderer-search | 2026-10-28T13:04:36.897954Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.7µs time.idle=224µs +wanderer-search | 2026-10-28T13:04:36.951498Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=203µs time.idle=427µs +wanderer-search | 2026-10-28T13:04:36.968350Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.9µs time.idle=233µs +wanderer-search | 2026-10-28T13:04:37.023211Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.1µs time.idle=248µs +wanderer-search | 2026-10-28T13:04:37.023492Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=196µs time.idle=420µs +wanderer-search | 2026-10-28T13:04:37.076477Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=445µs +wanderer-search | 2026-10-28T13:04:37.087010Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.4µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:37.141441Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=225µs time.idle=476µs +wanderer-search | 2026-10-28T13:04:37.160404Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=285µs +wanderer-search | 2026-10-28T13:04:37.215053Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=249µs time.idle=495µs +wanderer-search | 2026-10-28T13:04:37.232575Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.8µs time.idle=302µs +wanderer-search | 2026-10-28T13:04:37.287224Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=188µs time.idle=425µs +wanderer-search | 2026-10-28T13:04:37.287760Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=76.2µs time.idle=220µs +wanderer-search | 2026-10-28T13:04:37.343205Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=179µs time.idle=411µs +wanderer-search | 2026-10-28T13:04:37.350946Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=79.2µs time.idle=224µs +wanderer-search | 2026-10-28T13:04:37.408528Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=212µs time.idle=476µs +wanderer-search | 2026-10-28T13:04:37.424351Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.7µs time.idle=266µs +wanderer-search | 2026-10-28T13:04:37.478389Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=194µs time.idle=478µs +wanderer-search | 2026-10-28T13:04:37.495634Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=101µs time.idle=222µs +wanderer-search | 2026-10-28T13:04:37.551095Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=425µs +wanderer-search | 2026-10-28T13:04:37.552593Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.5µs time.idle=253µs +wanderer-search | 2026-10-28T13:04:37.607294Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=415µs +wanderer-search | 2026-10-28T13:04:37.618469Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.5µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:37.678246Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=438µs +wanderer-search | 2026-10-28T13:04:37.687541Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.9µs time.idle=268µs +wanderer-search | 2026-10-28T13:04:37.742547Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=190µs time.idle=421µs +wanderer-search | 2026-10-28T13:04:37.759587Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.3µs time.idle=263µs +wanderer-search | 2026-10-28T13:04:37.814203Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=471µs +wanderer-search | 2026-10-28T13:04:37.815995Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.6µs time.idle=294µs +wanderer-search | 2026-10-28T13:04:37.870570Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=183µs time.idle=422µs +wanderer-search | 2026-10-28T13:04:37.887986Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:37.945399Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=251µs time.idle=558µs +wanderer-search | 2026-10-28T13:04:37.958223Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=206µs time.idle=559µs +wanderer-search | 2026-10-28T13:04:38.011777Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=234µs time.idle=414µs +wanderer-search | 2026-10-28T13:04:38.022823Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.0µs time.idle=230µs +wanderer-search | 2026-10-28T13:04:38.077976Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=208µs time.idle=441µs +wanderer-search | 2026-10-28T13:04:38.079467Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=78.8µs time.idle=269µs +wanderer-search | 2026-10-28T13:04:38.135144Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=180µs time.idle=426µs +wanderer-search | 2026-10-28T13:04:38.157489Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.9µs time.idle=243µs +wanderer-search | 2026-10-28T13:04:38.212551Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=199µs time.idle=458µs +wanderer-search | 2026-10-28T13:04:38.220431Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.5µs time.idle=245µs +wanderer-search | 2026-10-28T13:04:38.273318Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=427µs +wanderer-search | 2026-10-28T13:04:38.287018Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=92.0µs time.idle=251µs +wanderer-search | 2026-10-28T13:04:38.340643Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=181µs time.idle=441µs +wanderer-search | 2026-10-28T13:04:38.348305Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.9µs time.idle=308µs +wanderer-search | 2026-10-28T13:04:38.402199Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=245µs time.idle=577µs +wanderer-search | 2026-10-28T13:04:38.420805Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.7µs time.idle=236µs +wanderer-search | 2026-10-28T13:04:38.475691Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=218µs time.idle=606µs +wanderer-search | 2026-10-28T13:04:38.484684Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.4µs time.idle=304µs +wanderer-search | 2026-10-28T13:04:38.539075Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=207µs time.idle=640µs +wanderer-search | 2026-10-28T13:04:38.548710Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.3µs time.idle=344µs +wanderer-search | 2026-10-28T13:04:38.604668Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=532µs +wanderer-search | 2026-10-28T13:04:38.613050Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=118µs time.idle=355µs +wanderer-search | 2026-10-28T13:04:38.668270Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=187µs time.idle=466µs +wanderer-search | 2026-10-28T13:04:38.684320Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.9µs time.idle=248µs +wanderer-search | 2026-10-28T13:04:38.738088Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=214µs time.idle=515µs +wanderer-search | 2026-10-28T13:04:38.747537Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=91.5µs time.idle=286µs +wanderer-search | 2026-10-28T13:04:38.801942Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=211µs time.idle=483µs +wanderer-search | 2026-10-28T13:04:38.813432Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.8µs time.idle=284µs +wanderer-search | 2026-10-28T13:04:38.867982Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=228µs time.idle=511µs +wanderer-search | 2026-10-28T13:04:38.876603Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.5µs time.idle=238µs +wanderer-search | 2026-10-28T13:04:38.932021Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=487µs +wanderer-search | 2026-10-28T13:04:38.946365Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.4µs time.idle=251µs +wanderer-search | 2026-10-28T13:04:39.002035Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=222µs time.idle=566µs +wanderer-search | 2026-10-28T13:04:39.012637Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=270µs +wanderer-search | 2026-10-28T13:04:39.067738Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=205µs time.idle=516µs +wanderer-search | 2026-10-28T13:04:39.075655Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.0µs time.idle=239µs +wanderer-search | 2026-10-28T13:04:39.132070Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=197µs time.idle=426µs +wanderer-search | 2026-10-28T13:04:39.141626Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=87.2µs time.idle=246µs +wanderer-search | 2026-10-28T13:04:39.196996Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=198µs time.idle=502µs +wanderer-search | 2026-10-28T13:04:39.212878Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.4µs time.idle=223µs +wanderer-search | 2026-10-28T13:04:39.267424Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=201µs time.idle=438µs +wanderer-search | 2026-10-28T13:04:39.278054Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=81.0µs time.idle=234µs +wanderer-search | 2026-10-28T13:04:39.334629Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=464µs +wanderer-search | 2026-10-28T13:04:39.343247Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.5µs time.idle=273µs +wanderer-search | 2026-10-28T13:04:39.397243Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=200µs time.idle=431µs +wanderer-search | 2026-10-28T13:04:39.405720Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.5µs time.idle=228µs +wanderer-search | 2026-10-28T13:04:39.460755Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=245µs time.idle=438µs +wanderer-search | 2026-10-28T13:04:39.476939Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.0µs time.idle=224µs +wanderer-search | 2026-10-28T13:04:39.530616Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=174µs time.idle=403µs +wanderer-search | 2026-10-28T13:04:39.543435Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.7µs time.idle=243µs +wanderer-search | 2026-10-28T13:04:39.597359Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=191µs time.idle=388µs +wanderer-search | 2026-10-28T13:04:39.606138Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=83.3µs time.idle=235µs +wanderer-search | 2026-10-28T13:04:39.660848Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=220µs time.idle=482µs +wanderer-search | 2026-10-28T13:04:39.668708Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.5µs time.idle=243µs +wanderer-search | 2026-10-28T13:04:39.726890Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=240µs time.idle=490µs +wanderer-search | 2026-10-28T13:04:39.738882Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=90.6µs time.idle=233µs +wanderer-search | 2026-10-28T13:04:39.795899Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=210µs time.idle=448µs +wanderer-search | 2026-10-28T13:04:42.057796Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=229µs time.idle=169µs +wanderer-search | 2026-10-28T13:04:42.065161Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=153µs time.idle=5.56ms +wanderer-search | 2026-10-28T13:04:42.065899Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=94.5µs time.idle=109µs +wanderer-search | 2026-10-28T13:04:42.071044Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=122µs time.idle=4.53ms +wanderer-search | 2026-10-28T13:04:42.071717Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.1µs time.idle=97.8µs +wanderer-search | 2026-10-28T13:04:42.077080Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T13:04:42.077113Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=121µs time.idle=4.87ms +wanderer-search | 2026-10-28T13:04:42.086605Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/trails/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=112µs time.idle=7.98ms +wanderer-search | 2026-10-28T13:04:42.095542Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=99.8µs time.idle=7.78ms +wanderer-search | 2026-10-28T13:04:42.101554Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T13:04:42.101585Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=293µs time.idle=3.81ms +wanderer-search | 2026-10-28T13:04:42.111274Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=117µs time.idle=8.80ms +wanderer-search | 2026-10-28T13:04:42.118099Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=390µs time.idle=5.48ms +wanderer-search | 2026-10-28T13:04:42.121182Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T13:04:42.132065Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T13:04:42.145994Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T13:04:42.385175Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=234.669226ms +wanderer-search | 2026-10-28T13:04:42.393082Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T13:04:42.470749Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=72.659873ms +wanderer-search | 2026-10-28T13:04:42.478128Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T13:04:51.291342Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=90.8µs time.idle=17.0µs +wanderer-search | 2026-10-28T13:05:06.353891Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=55.9µs time.idle=16.1µs +wanderer-search | 2026-10-28T13:05:21.410981Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=83.0µs time.idle=16.8µs +wanderer-search | 2026-10-28T13:05:27.956837Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=213µs time.idle=403µs +wanderer-search | 2026-10-28T13:05:28.036989Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=290µs time.idle=627µs +wanderer-search | 2026-10-28T13:05:29.052029Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=80.0µs time.idle=237µs +wanderer-search | 2026-10-28T13:05:29.083514Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=240µs time.idle=456µs +wanderer-search | 2026-10-28T13:05:29.147557Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.4µs time.idle=304µs +wanderer-search | 2026-10-28T13:05:29.264141Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=74.0µs time.idle=222µs +wanderer-search | 2026-10-28T13:05:29.381223Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.8µs time.idle=337µs diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/engine-state.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/engine-state.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/engine-state.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-after.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before-detail.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before-detail.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before-detail.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/files-before.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/memory-samples.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/memory-samples.json new file mode 100644 index 00000000..72c0ffcd --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/memory-samples.json @@ -0,0 +1,1802 @@ +[ + { + "t": 15.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 258347008, + "peak": 263368704, + "anon": 131624960, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 75423744, + "peak": 75943936, + "anon": 18837504, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 380428288, + "peak": 402653184, + "anon": 357703680, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 247 + }, + { + "t": 30.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 245174272, + "peak": 263368704, + "anon": 131448832, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 71843840, + "peak": 76009472, + "anon": 19787776, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 368517120, + "peak": 402653184, + "anon": 345251840, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 496 + }, + { + "t": 45.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 245821440, + "peak": 263368704, + "anon": 131948544, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 74088448, + "peak": 76009472, + "anon": 20369408, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 368640000, + "peak": 402653184, + "anon": 345137152, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 732 + }, + { + "t": 60.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 248180736, + "peak": 263368704, + "anon": 134184960, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 80756736, + "peak": 81399808, + "anon": 21381120, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 368959488, + "peak": 402653184, + "anon": 345374720, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 978 + }, + { + "t": 75.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 248537088, + "peak": 263368704, + "anon": 134787072, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 81199104, + "peak": 82972672, + "anon": 22257664, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 368570368, + "peak": 402653184, + "anon": 345350144, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1217 + }, + { + "t": 91.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 247582720, + "peak": 263368704, + "anon": 133902336, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 82759680, + "peak": 84197376, + "anon": 23777280, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 368758784, + "peak": 402653184, + "anon": 345239552, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1474 + }, + { + "t": 106.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 249851904, + "peak": 263368704, + "anon": 135974912, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 86011904, + "peak": 87314432, + "anon": 24612864, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 368214016, + "peak": 402653184, + "anon": 345206784, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1730 + }, + { + "t": 121.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 250945536, + "peak": 263442432, + "anon": 137080832, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 86056960, + "peak": 88612864, + "anon": 25612288, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 370835456, + "peak": 402653184, + "anon": 347504640, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 1975 + }, + { + "t": 136.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 247656448, + "peak": 263442432, + "anon": 133832704, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 88125440, + "peak": 89972736, + "anon": 26509312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 370483200, + "peak": 402653184, + "anon": 346038272, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2222 + }, + { + "t": 151.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 247541760, + "peak": 263442432, + "anon": 134062080, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 89878528, + "peak": 91508736, + "anon": 27721728, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 370724864, + "peak": 402653184, + "anon": 346050560, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2461 + }, + { + "t": 167.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 249507840, + "peak": 263442432, + "anon": 135725056, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 92639232, + "peak": 93634560, + "anon": 28696576, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 370978816, + "peak": 402653184, + "anon": 346046464, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2711 + }, + { + "t": 182.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 250118144, + "peak": 263442432, + "anon": 136241152, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 92721152, + "peak": 94932992, + "anon": 28729344, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 371163136, + "peak": 402653184, + "anon": 346284032, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 2951 + }, + { + "t": 197.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 248651776, + "peak": 263442432, + "anon": 134799360, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 95064064, + "peak": 95481856, + "anon": 30027776, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 370434048, + "peak": 402653184, + "anon": 344227840, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3203 + }, + { + "t": 212.6, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 248733696, + "peak": 263442432, + "anon": 135217152, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 96096256, + "peak": 97259520, + "anon": 30859264, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 373272576, + "peak": 402653184, + "anon": 346460160, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3443 + }, + { + "t": 227.8, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 251125760, + "peak": 263442432, + "anon": 137469952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 97574912, + "peak": 98684928, + "anon": 31997952, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 373641216, + "peak": 402653184, + "anon": 346169344, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3699 + }, + { + "t": 243.0, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 253399040, + "peak": 263442432, + "anon": 139509760, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 99545088, + "peak": 100331520, + "anon": 33005568, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 372985856, + "peak": 402653184, + "anon": 346271744, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 3948 + }, + { + "t": 258.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 249577472, + "peak": 263442432, + "anon": 135806976, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 101429248, + "peak": 102244352, + "anon": 34234368, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 373469184, + "peak": 402653184, + "anon": 346087424, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4201 + }, + { + "t": 273.3, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 248832000, + "peak": 263442432, + "anon": 134733824, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 102928384, + "peak": 103120896, + "anon": 35008512, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375476224, + "peak": 402653184, + "anon": 348295168, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4462 + }, + { + "t": 288.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 250961920, + "peak": 263442432, + "anon": 136908800, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 104484864, + "peak": 105345024, + "anon": 36372480, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375275520, + "peak": 402653184, + "anon": 346157056, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4716 + }, + { + "t": 303.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 251523072, + "peak": 263442432, + "anon": 137285632, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 107102208, + "peak": 107642880, + "anon": 37269504, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375922688, + "peak": 402653184, + "anon": 346439680, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 4959 + }, + { + "t": 318.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 252317696, + "peak": 263442432, + "anon": 138600448, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 109494272, + "peak": 109989888, + "anon": 38293504, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375394304, + "peak": 402653184, + "anon": 346255360, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5213 + }, + { + "t": 334.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 251740160, + "peak": 263442432, + "anon": 138031104, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 111136768, + "peak": 111796224, + "anon": 39256064, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375590912, + "peak": 402653184, + "anon": 346013696, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5449 + }, + { + "t": 349.3, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 249769984, + "peak": 263442432, + "anon": 135704576, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 113889280, + "peak": 114376704, + "anon": 40632320, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375668736, + "peak": 402653184, + "anon": 345878528, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5703 + }, + { + "t": 364.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 250839040, + "peak": 263442432, + "anon": 137515008, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 116158464, + "peak": 116699136, + "anon": 41779200, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376451072, + "peak": 402653184, + "anon": 346083328, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 5961 + }, + { + "t": 379.6, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 252035072, + "peak": 263442432, + "anon": 138514432, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 118820864, + "peak": 119103488, + "anon": 42487808, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375824384, + "peak": 402653184, + "anon": 343519232, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6208 + }, + { + "t": 394.8, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 248455168, + "peak": 263442432, + "anon": 135135232, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 119304192, + "peak": 120864768, + "anon": 43405312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376451072, + "peak": 402653184, + "anon": 343605248, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6460 + }, + { + "t": 410.0, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 250707968, + "peak": 263442432, + "anon": 136572928, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 122449920, + "peak": 123973632, + "anon": 45133824, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376557568, + "peak": 402653184, + "anon": 341704704, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6710 + }, + { + "t": 425.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 250601472, + "peak": 263442432, + "anon": 136564736, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 124583936, + "peak": 125247488, + "anon": 45928448, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376553472, + "peak": 402653184, + "anon": 341884928, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 6951 + }, + { + "t": 440.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 251961344, + "peak": 263442432, + "anon": 138571776, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 126943232, + "peak": 127524864, + "anon": 46923776, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376205312, + "peak": 402653184, + "anon": 341671936, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7207 + }, + { + "t": 455.5, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 252366848, + "peak": 263442432, + "anon": 138260480, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 129155072, + "peak": 130183168, + "anon": 48332800, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376115200, + "peak": 402653184, + "anon": 341782528, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7451 + }, + { + "t": 470.7, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 252882944, + "peak": 263442432, + "anon": 139087872, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 131682304, + "peak": 132374528, + "anon": 49336320, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375951360, + "peak": 402653184, + "anon": 341676032, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7694 + }, + { + "t": 485.9, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 250044416, + "peak": 263442432, + "anon": 135868416, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 132968448, + "peak": 133545984, + "anon": 50483200, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375570432, + "peak": 402653184, + "anon": 341737472, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 7947 + }, + { + "t": 501.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 249397248, + "peak": 263442432, + "anon": 135970816, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 135229440, + "peak": 136986624, + "anon": 51363840, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376098816, + "peak": 402653184, + "anon": 341553152, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8194 + }, + { + "t": 516.2, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 249704448, + "peak": 263442432, + "anon": 136216576, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 137564160, + "peak": 138412032, + "anon": 52805632, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376176640, + "peak": 402653184, + "anon": 341614592, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8440 + }, + { + "t": 531.4, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 253186048, + "peak": 263442432, + "anon": 139169792, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 140435456, + "peak": 141271040, + "anon": 53645312, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375857152, + "peak": 402653184, + "anon": 341561344, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8702 + }, + { + "t": 546.6, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 252518400, + "peak": 263442432, + "anon": 138702848, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 142929920, + "peak": 143560704, + "anon": 54693888, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376655872, + "peak": 402653184, + "anon": 341774336, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 8947 + }, + { + "t": 561.8, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 251572224, + "peak": 263442432, + "anon": 137785344, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 144990208, + "peak": 145534976, + "anon": 55672832, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375631872, + "peak": 402653184, + "anon": 341594112, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9181 + }, + { + "t": 577.0, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 249794560, + "peak": 263442432, + "anon": 136237056, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 145461248, + "peak": 146907136, + "anon": 56348672, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376066048, + "peak": 402653184, + "anon": 341479424, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9447 + }, + { + "t": 592.1, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 253267968, + "peak": 263442432, + "anon": 139280384, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 148193280, + "peak": 149045248, + "anon": 57249792, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 375459840, + "peak": 402653184, + "anon": 341426176, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9717 + }, + { + "t": 607.3, + "containers": { + "wanderer": { + "limit": 536870912, + "current": 252755968, + "peak": 263442432, + "anon": 139157504, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-db": { + "limit": 268435456, + "current": 150249472, + "peak": 151154688, + "anon": 58564608, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + }, + "wanderer-search": { + "limit": 402653184, + "current": 376066048, + "peak": 402653184, + "anon": 341479424, + "swap": 0, + "swap_peak": 0, + "oom_kill": 0, + "restarts": 0, + "oomkilled_flag": false, + "status": "running", + "cgroup": true + } + }, + "requests": 9955 + } +] \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/migration-lines.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/migration-lines.txt new file mode 100644 index 00000000..e69de29b diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/run.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/run.log new file mode 100644 index 00000000..8a27e934 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/run.log @@ -0,0 +1,59 @@ +[12:52:32] scratch drive folders cleared before FROM (R-656): none existed +[12:52:32] MV-wanderer: deploying wanderer at FROM {'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:53:35] FROM settled=True in 31.2s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:53:35] fixture: the BOX walk's own (Wanderer), through upgrade_boxport +[12:53:36] wanderer: sign-up http=200 +[12:53:36] wanderer: seeded user drill038bf1e6 and private list Drill-971f499e36 http=200 id=True +[12:53:36] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:53:36] C1 (seed reads back BEFORE): True +[12:53:37] MV-wanderer: swapping to TO {'wanderer': 'flomp/wanderer-web:v0.21.2', 'wanderer-db': 'flomp/wanderer-db:v0.21.2', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +[12:53:54] TO up -d rc=0 +[12:54:31] TO settled=True in 36.4s :: {"wanderer": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "wanderer-search": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}} +[12:54:31] migration lines observed: 0 +[12:54:31] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[12:54:31] RESULT (seed reads back AFTER): True +[12:54:32] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000 +[12:54:47] + 15s wanderer=246M/512M peak=251M kills=0 rs=0 wanderer-db=71M/256M peak=72M kills=0 rs=0 wanderer-search=362M/384M peak=384M kills=0 rs=0 reqs=247 +[12:55:02] + 30s wanderer=233M/512M peak=251M kills=0 rs=0 wanderer-db=68M/256M peak=72M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=496 +[12:55:18] + 46s wanderer=234M/512M peak=251M kills=0 rs=0 wanderer-db=70M/256M peak=72M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=732 +[12:55:33] + 61s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=77M/256M peak=77M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=978 +[12:55:48] + 76s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=77M/256M peak=79M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=1217 +[12:56:03] + 91s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=78M/256M peak=80M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=1474 +[12:56:18] + 106s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=82M/256M peak=83M kills=0 rs=0 wanderer-search=351M/384M peak=384M kills=0 rs=0 reqs=1730 +[12:56:34] + 122s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=82M/256M peak=84M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=1975 +[12:56:49] + 137s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=84M/256M peak=85M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2222 +[12:57:04] + 152s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=85M/256M peak=87M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2461 +[12:57:19] + 167s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=88M/256M peak=89M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2711 +[12:57:34] + 182s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=88M/256M peak=90M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=2951 +[12:57:49] + 197s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=90M/256M peak=91M kills=0 rs=0 wanderer-search=353M/384M peak=384M kills=0 rs=0 reqs=3203 +[12:58:05] + 213s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=91M/256M peak=92M kills=0 rs=0 wanderer-search=355M/384M peak=384M kills=0 rs=0 reqs=3443 +[12:58:20] + 228s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=93M/256M peak=94M kills=0 rs=0 wanderer-search=356M/384M peak=384M kills=0 rs=0 reqs=3699 +[12:58:35] + 243s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=94M/256M peak=95M kills=0 rs=0 wanderer-search=355M/384M peak=384M kills=0 rs=0 reqs=3948 +[12:58:50] + 258s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=96M/256M peak=97M kills=0 rs=0 wanderer-search=356M/384M peak=384M kills=0 rs=0 reqs=4201 +[12:59:05] + 273s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=98M/256M peak=98M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=4462 +[12:59:21] + 288s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=99M/256M peak=100M kills=0 rs=0 wanderer-search=357M/384M peak=384M kills=0 rs=0 reqs=4716 +[12:59:36] + 304s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=102M/256M peak=102M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=4959 +[12:59:51] + 319s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=104M/256M peak=104M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=5213 +[13:00:06] + 334s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=105M/256M peak=106M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=5449 +[13:00:21] + 349s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=108M/256M peak=109M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=5703 +[13:00:36] + 364s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=110M/256M peak=111M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=5961 +[13:00:52] + 380s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=113M/256M peak=113M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=6208 +[13:01:07] + 395s wanderer=236M/512M peak=251M kills=0 rs=0 wanderer-db=113M/256M peak=115M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=6460 +[13:01:22] + 410s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=116M/256M peak=118M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=6710 +[13:01:37] + 425s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=118M/256M peak=119M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=6951 +[13:01:52] + 440s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=121M/256M peak=121M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7207 +[13:02:08] + 456s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=123M/256M peak=124M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7451 +[13:02:23] + 471s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=125M/256M peak=126M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7694 +[13:02:38] + 486s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=126M/256M peak=127M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=7947 +[13:02:53] + 501s wanderer=237M/512M peak=251M kills=0 rs=0 wanderer-db=128M/256M peak=130M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=8194 +[13:03:08] + 516s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=131M/256M peak=132M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=8440 +[13:03:23] + 531s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=133M/256M peak=134M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=8702 +[13:03:39] + 547s wanderer=240M/512M peak=251M kills=0 rs=0 wanderer-db=136M/256M peak=136M kills=0 rs=0 wanderer-search=359M/384M peak=384M kills=0 rs=0 reqs=8947 +[13:03:54] + 562s wanderer=239M/512M peak=251M kills=0 rs=0 wanderer-db=138M/256M peak=138M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9181 +[13:04:09] + 577s wanderer=238M/512M peak=251M kills=0 rs=0 wanderer-db=138M/256M peak=140M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9447 +[13:04:24] + 592s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=141M/256M peak=142M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9717 +[13:04:39] + 607s wanderer=241M/512M peak=251M kills=0 rs=0 wanderer-db=143M/256M peak=144M kills=0 rs=0 wanderer-search=358M/384M peak=384M kills=0 rs=0 reqs=9955 +[13:04:40] memory watch: killed=False tight=['wanderer-search'] requests=9956 codes={'200': 9956} +[13:04:40] MV-wanderer: ABORT — putting the FROM images back +[13:05:29] wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +[13:05:29] ABORT: app came back in 31.2s; data present=True \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-full.log b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-full.log new file mode 100644 index 00000000..65320fe6 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-full.log @@ -0,0 +1,161 @@ +wanderer | +wanderer | > wanderer@0.21.2 start +wanderer | > node watcher.js & node server.js +wanderer | +wanderer | [File Watcher] Service active. Watching: /app/uploads +wanderer | Listening on http://0.0.0.0:3000 +wanderer-db | 2026/10/28 12:53:40 Settings synced for index [trails] +wanderer-db | 2026/10/28 12:53:40 Settings synced for index [lists] +wanderer-db | 2026/10/28 12:53:40 Settings synced for index [actors] +wanderer-db | 2026/10/28 12:53:40 backfill polyline started +wanderer-db | 2026/10/28 12:53:40 backfill polyline completed: processed=0 failed=0 +wanderer-db | 2026/10/28 12:53:40 Server started at http://0.0.0.0:8090 +wanderer-db | ├─ REST API: http://0.0.0.0:8090/api/ +wanderer-db | └─ Dashboard: http://0.0.0.0:8090/_/ +wanderer-db | +wanderer-db | (!) Launch the URL below in the browser if it hasn't been open already to create your first superuser account: +wanderer-db | http://0.0.0.0:8090/_/#/pbinstall/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2xsZWN0aW9uSWQiOiJwYmNfMzE0MjYzNTgyMyIsImV4cCI6MTc5MzE5MzgyMCwiaWQiOiJ3ZjhnMnZpemxjNG92aDciLCJyZWZyZXNoYWJsZSI6ZmFsc2UsInR5cGUiOiJhdXRoIn0.5L4ia2b1wwAxvNguCx8gZ8mPCqGvClTxF_hp1G3qSOc +wanderer-db | (you can also create your first superuser by running: /pocketbase superuser upsert EMAIL PASS) +wanderer-db | +wanderer-search | +wanderer-search | 888b d888 d8b 888 d8b 888 +wanderer-search | 8888b d8888 Y8P 888 Y8P 888 +wanderer-search | 88888b.d88888 888 888 +wanderer-search | 888Y88888P888 .d88b. 888 888 888 .d8888b .d88b. 8888b. 888d888 .d8888b 88888b. +wanderer-search | 888 Y888P 888 d8P Y8b 888 888 888 88K d8P Y8b "88b 888P" d88P" 888 "88b +wanderer-search | 888 Y8P 888 88888888 888 888 888 "Y8888b. 88888888 .d888888 888 888 888 888 +wanderer-search | 888 " 888 Y8b. 888 888 888 X88 Y8b. 888 888 888 Y88b. 888 888 +wanderer-search | 888 888 "Y8888 888 888 888 88888P' "Y8888 "Y888888 888 "Y8888P 888 888 +wanderer-search | +wanderer-search | Config file path: "none" +wanderer-search | Database path: "./data.ms" +wanderer-search | Server listening on: "http://0.0.0.0:7700" +wanderer-search | Environment: "development" +wanderer-search | Commit SHA: "2458d44f2173e26e33356482b5e26787e4e45319" +wanderer-search | Commit date: "unknown" +wanderer-search | Package version: "1.36.0" +wanderer-search | Anonymous telemetry: "Disabled" +wanderer-search | +wanderer-search | A master key has been set. Requests to Meilisearch won't be authorized unless you provide an authentication key. +wanderer-search | +wanderer-search | Check out Meilisearch Cloud! https://www.meilisearch.com/cloud?utm_campaign=oss&utm_source=engine&utm_medium=cli +wanderer-search | Documentation: https://www.meilisearch.com/docs +wanderer-search | Source code: https://github.com/meilisearch/meilisearch +wanderer-search | Discord: https://discord.meilisearch.com +wanderer-search | +wanderer-search | 2026-10-28T12:52:33.075658Z  INFO actix_server::builder: starting 6 workers +wanderer-search | 2026-10-28T12:52:33.075706Z  INFO actix_server::server: Actix runtime found; starting in Actix runtime +wanderer-search | 2026-10-28T12:52:33.075715Z  INFO actix_server::server: starting service: "actix-web-service-0.0.0.0:7700", workers: 6, listening on: 0.0.0.0:7700 +wanderer-search | 2026-10-28T12:52:48.094907Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=444µs time.idle=19.5µs +wanderer-search | 2026-10-28T12:52:48.881814Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=284µs time.idle=6.06ms +wanderer-search | 2026-10-28T12:52:48.906153Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=192µs time.idle=23.4ms +wanderer-search | 2026-10-28T12:52:48.912590Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=164µs time.idle=5.58ms +wanderer-search | 2026-10-28T12:52:48.918171Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:48.918268Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=105µs time.idle=5.00ms +wanderer-search | 2026-10-28T12:52:48.927101Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/lists/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=131µs time.idle=8.20ms +wanderer-search | 2026-10-28T12:52:48.933568Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/lists/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=164µs time.idle=5.48ms +wanderer-search | 2026-10-28T12:52:48.940416Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:48.969552Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:48.989672Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:49.277559Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/searchable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=241µs time.idle=5.10ms +wanderer-search | 2026-10-28T12:52:49.284551Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:50.863987Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/sortable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=249µs time.idle=9.52ms +wanderer-search | 2026-10-28T12:52:50.869794Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/trails/settings/filterable-attributes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=145µs time.idle=4.86ms +wanderer-search | 2026-10-28T12:52:50.872888Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:50.883780Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:53.061123Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=227µs time.idle=284µs +wanderer-search | 2026-10-28T12:52:53.068936Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=209µs time.idle=6.50ms +wanderer-search | 2026-10-28T12:52:53.070130Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=157µs time.idle=181µs +wanderer-search | 2026-10-28T12:52:53.074820Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=155µs time.idle=3.99ms +wanderer-search | 2026-10-28T12:52:53.075524Z  WARN HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=404 error=Index `actors` not found.}: tracing_actix_web::middleware: Error encountered while processing the incoming HTTP request: ResponseError { code: 404, message: "Index `actors` not found.", error_code: "index_not_found", error_type: "invalid_request", error_link: "https://docs.meilisearch.com/errors#index_not_found" } +wanderer-search | 2026-10-28T12:52:53.075623Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=404 error=Index `actors` not found.}: meilisearch: close time.busy=138µs time.idle=153µs +wanderer-search | 2026-10-28T12:52:53.080674Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=189µs time.idle=4.29ms +wanderer-search | 2026-10-28T12:52:53.080724Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:53.081556Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks/11 query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=210µs time.idle=142µs +wanderer-search | 2026-10-28T12:52:53.094152Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:53.121862Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:53.133497Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks/11 query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=133µs time.idle=119µs +wanderer-search | 2026-10-28T12:52:53.139450Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=196µs time.idle=5.26ms +wanderer-search | 2026-10-28T12:52:53.145355Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/trails/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=125µs time.idle=4.51ms +wanderer-search | 2026-10-28T12:52:53.155593Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:53.155623Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=103µs time.idle=9.29ms +wanderer-search | 2026-10-28T12:52:53.166585Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=196µs time.idle=9.86ms +wanderer-search | 2026-10-28T12:52:53.174348Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:53.185040Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:52:53.195768Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:03.159890Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=127µs time.idle=27.1µs +wanderer-search | 2026-10-28T12:53:18.227250Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=125µs time.idle=17.1µs +wanderer-search | 2026-10-28T12:53:33.302895Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=95.6µs time.idle=17.3µs +wanderer-search | 2026-10-28T12:53:34.820903Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=228µs time.idle=434µs +wanderer-search | 2026-10-28T12:53:34.939535Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=821µs time.idle=855µs +wanderer-search | 2026-10-28T12:53:35.908257Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=85.9µs time.idle=312µs +wanderer-search | 2026-10-28T12:53:35.944475Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=209µs time.idle=568µs +wanderer-search | 2026-10-28T12:53:36.008000Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=89.0µs time.idle=370µs +wanderer-search | 2026-10-28T12:53:36.237202Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=773µs time.idle=12.6ms +wanderer-search | 2026-10-28T12:53:36.295561Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=57.947133ms +wanderer-search | 2026-10-28T12:53:36.299819Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.2µs time.idle=335µs +wanderer-search | 2026-10-28T12:53:36.305309Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:36.413638Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=82.9µs time.idle=314µs +wanderer-search | 2026-10-28T12:53:36.437175Z  INFO HTTP request{method=PUT host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=780µs time.idle=6.13ms +wanderer-search | 2026-10-28T12:53:36.490944Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=93.1µs time.idle=312µs +wanderer-search | 2026-10-28T12:53:36.516061Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=324µs time.idle=3.87ms +wanderer-search | 2026-10-28T12:53:36.570331Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=72.0µs time.idle=295µs +wanderer-search | 2026-10-28T12:53:36.599047Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=186µs time.idle=371µs +wanderer-search | 2026-10-28T12:53:36.669765Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=70.6µs time.idle=241µs +wanderer-search | 2026-10-28T12:53:36.701137Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=263.678624ms +wanderer-search | 2026-10-28T12:53:36.732477Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:36.794885Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=140µs time.idle=169µs +wanderer-search | 2026-10-28T12:53:36.946521Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=123µs time.idle=438µs +wanderer-search | 2026-10-28T12:53:36.979757Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=240.74625ms +wanderer-search | 2026-10-28T12:53:36.996337Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.640271Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=229µs time.idle=192µs +wanderer-search | 2026-10-28T12:53:40.649995Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=163µs time.idle=8.71ms +wanderer-search | 2026-10-28T12:53:40.650941Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=115µs +wanderer-search | 2026-10-28T12:53:40.655809Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=147µs time.idle=4.23ms +wanderer-search | 2026-10-28T12:53:40.656576Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=120µs time.idle=103µs +wanderer-search | 2026-10-28T12:53:40.662156Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=128µs time.idle=5.02ms +wanderer-search | 2026-10-28T12:53:40.662184Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.663702Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/health query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=97.4µs time.idle=87.2µs +wanderer-search | 2026-10-28T12:53:40.665309Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=108µs time.idle=155µs +wanderer-search | 2026-10-28T12:53:40.673868Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=172µs time.idle=7.78ms +wanderer-search | 2026-10-28T12:53:40.674646Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=trails&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=124µs time.idle=105µs +wanderer-search | 2026-10-28T12:53:40.681970Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/trails/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=101µs time.idle=6.48ms +wanderer-search | 2026-10-28T12:53:40.683305Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.7µs time.idle=117µs +wanderer-search | 2026-10-28T12:53:40.684276Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=106µs time.idle=112µs +wanderer-search | 2026-10-28T12:53:40.688178Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.688212Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=139µs time.idle=3.35ms +wanderer-search | 2026-10-28T12:53:40.688968Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=lists&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=109µs time.idle=105µs +wanderer-search | 2026-10-28T12:53:40.695345Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/lists/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=109µs time.idle=5.89ms +wanderer-search | 2026-10-28T12:53:40.701963Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents query_parameters=primaryKey=id user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=315µs time.idle=3.98ms +wanderer-search | 2026-10-28T12:53:40.702916Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=84.0µs time.idle=119µs +wanderer-search | 2026-10-28T12:53:40.703840Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=86.6µs time.idle=113µs +wanderer-search | 2026-10-28T12:53:40.708167Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.708199Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/actors/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=129µs time.idle=3.82ms +wanderer-search | 2026-10-28T12:53:40.708942Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=actors&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=102µs time.idle=102µs +wanderer-search | 2026-10-28T12:53:40.718462Z  INFO HTTP request{method=DELETE host="wanderer-search:7700" route=/indexes/actors/documents query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=105µs time.idle=8.98ms +wanderer-search | 2026-10-28T12:53:40.727289Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/actors/documents query_parameters=primaryKey=id user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=303µs time.idle=7.20ms +wanderer-search | 2026-10-28T12:53:40.728969Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/actors query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=119µs time.idle=132µs +wanderer-search | 2026-10-28T12:53:40.730311Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/trails query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=116µs time.idle=132µs +wanderer-search | 2026-10-28T12:53:40.755308Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/trails/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=168µs time.idle=24.3ms +wanderer-search | 2026-10-28T12:53:40.756124Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=trails&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=145µs time.idle=111µs +wanderer-search | 2026-10-28T12:53:40.759248Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.770977Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.888610Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=113.131019ms +wanderer-search | 2026-10-28T12:53:40.899080Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.912827Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 2 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:40.984991Z  INFO index_scheduler::scheduler::process_index_operation: document indexing done indexing_result=DocumentAdditionResult { indexed_documents: 1, number_of_documents: 1 } processed_in=67.659544ms +wanderer-search | 2026-10-28T12:53:40.994798Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:41.007845Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:45.758148Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=trails&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=107µs time.idle=125µs +wanderer-search | 2026-10-28T12:53:45.759020Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/documents/fetch query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=117µs time.idle=106µs +wanderer-search | 2026-10-28T12:53:45.759649Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/indexes/lists query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=71.1µs time.idle=148µs +wanderer-search | 2026-10-28T12:53:45.765913Z  INFO HTTP request{method=PATCH host="wanderer-search:7700" route=/indexes/lists/settings query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=202}: meilisearch: close time.busy=122µs time.idle=5.77ms +wanderer-search | 2026-10-28T12:53:45.766694Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/tasks query_parameters=indexUids=lists&limit=1&statuses=enqueued%2Cprocessing&types=documentAdditionOrUpdate%2CdocumentDeletion user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=103µs time.idle=105µs +wanderer-search | 2026-10-28T12:53:45.767588Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents/fetch query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=137µs time.idle=98.1µs +wanderer-search | 2026-10-28T12:53:45.770240Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/lists/documents/fetch query_parameters= user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=851µs time.idle=123µs +wanderer-search | 2026-10-28T12:53:45.773135Z  INFO index_scheduler::scheduler: A batch of tasks was successfully completed with 1 successful tasks and 0 failed tasks. +wanderer-search | 2026-10-28T12:53:48.364414Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=92.8µs time.idle=17.2µs +wanderer-search | 2026-10-28T12:54:03.429249Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=57.9µs time.idle=17.0µs +wanderer-search | 2026-10-28T12:54:18.494943Z  INFO HTTP request{method=GET host="127.0.0.1:7700" route=/health query_parameters= user_agent=curl/8.14.1 status_code=200}: meilisearch: close time.busy=103µs time.idle=20.3µs +wanderer-search | 2026-10-28T12:54:25.166975Z  INFO HTTP request{method=GET host="wanderer-search:7700" route=/keys query_parameters=limit=20 user_agent=Meilisearch Go (v0.36.2) status_code=200}: meilisearch: close time.busy=214µs time.idle=413µs +wanderer-search | 2026-10-28T12:54:25.256113Z  INFO HTTP request{method=POST host="wanderer-search:7700" route=/indexes/trails/search query_parameters= user_agent=node status_code=200}: meilisearch: close time.busy=314µs time.idle=622µs diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-states.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-states.json new file mode 100644 index 00000000..9c0780e8 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/to-states.json @@ -0,0 +1,20 @@ +{ + "wanderer": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-db": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + }, + "wanderer-search": { + "status": "running", + "health": "healthy", + "restarts": 0, + "exit": 0 + } +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/verdict.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/verdict.json new file mode 100644 index 00000000..5abf7d72 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/bench/evidence/MV-wanderer/verdict.json @@ -0,0 +1,86 @@ +{ + "harness_version": 5, + "edge": "MV-wanderer", + "app": "wanderer", + "note": "night 2026-09-23 within-a-major move: wanderer=flomp/wanderer-web:v0.21.2, wanderer-db=flomp/wanderer-db:v0.21.2", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "verdict": "proven", + "seed_read_before": true, + "seed_read_after": true, + "healthy_after": true, + "migration_observed": null, + "abort": "starts-and-serves", + "abort_detail": null, + "engine_state_after": null, + "memory": { + "soak_s": 607.7, + "requested_s": 600, + "requests": 9956, + "codes": { + "200": 9956 + }, + "first_kill": null, + "containers": { + "wanderer": { + "limit": 536870912, + "peak": 263442432, + "peak_pct": 0.491, + "anon_peak_sampled": 139509760, + "anon_peak_pct": 0.26, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-db": { + "limit": 268435456, + "peak": 151154688, + "peak_pct": 0.563, + "anon_peak_sampled": 58568704, + "anon_peak_pct": 0.218, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + }, + "wanderer-search": { + "limit": 402653184, + "peak": 402653184, + "peak_pct": 1.0, + "anon_peak_sampled": 357703680, + "anon_peak_pct": 0.888, + "swap_peak": 0, + "oom_kills": 0, + "restarts": 0, + "oomkilled_flag": false, + "measured": true + } + }, + "unmeasured": [], + "venue_swap_bytes": 0, + "load": "reached" + }, + "marks": [ + "memory_tight" + ], + "bench_overrides": null, + "duration_s": 36.4, + "measured_at": "2026-10-28T13:05:29Z", + "evidence": "evidence/MV-wanderer", + "scratch_cleared": [], + "files_changed": [], + "files_changed_detail": [], + "files_ignored": [], + "total_s": 777.2 +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/box-verdict-wanderer.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/box-verdict-wanderer.json new file mode 100644 index 00000000..f4a8a326 --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/box-verdict-wanderer.json @@ -0,0 +1,289 @@ +{ + "app": "wanderer", + "walk": "security", + "box_walk_version": 1, + "verdict": "proven", + "venue": "box 9202 (drill catalog), the guarded Update", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "observables_before": { + "pinned_images": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "installed_images": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "catalog_images": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "live_compose_image_lines": [ + "image: flomp/wanderer-web:v0.20.0", + "image: flomp/wanderer-db:v0.20.0", + "image: getmeili/meilisearch:v1.36.0" + ], + "docker_inspect": [ + "wanderer flomp/wanderer-web:v0.20.0 running=true restarts=0", + "wanderer-db flomp/wanderer-db:v0.20.0 running=true restarts=0", + "wanderer-search getmeili/meilisearch:v1.36.0 running=true restarts=0" + ] + }, + "setup_gate_before": { + "browser": { + "status": "404", + "redirect": null + }, + "script": { + "status": "404", + "redirect": null + } + }, + "seed": "read_back", + "drill_commit": "655d25f2717c", + "sync_waited_s": 4.4, + "badge_before": { + "hu": [ + { + "title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.", + "text": "Frissítés elérhető — ma" + } + ], + "en": [ + { + "title": "A newer version of this app is available. Select the Update button to start it.", + "text": "Update available — today" + } + ] + }, + "measured_at": "2026-10-28T12:05:59Z", + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztonsági mentés készül a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 16.4, + "phase": "safety-dump", + "label": "Adatbázis pillanatkép…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 18.4, + "phase": "pulling", + "label": "Új verzió letöltése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 46.1, + "phase": "copying", + "label": "Az adatok másolása a frissítés előtt…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 55.3, + "phase": "starting", + "label": "Indítás az új verzióval…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 67.6, + "phase": "verifying", + "label": "Működés ellenőrzése…", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 77.9, + "phase": "done", + "label": "Frissítve", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 77.9, + "final_phase": "done", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "observables_after": { + "pinned_images": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "installed_images": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "catalog_images": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "live_compose_image_lines": [ + "image: flomp/wanderer-web:v0.21.2", + "image: flomp/wanderer-db:v0.21.2", + "image: getmeili/meilisearch:v1.36.0" + ], + "docker_inspect": [ + "wanderer flomp/wanderer-web:v0.21.2 running=true restarts=0", + "wanderer-db flomp/wanderer-db:v0.21.2 running=true restarts=0", + "wanderer-search getmeili/meilisearch:v1.36.0 running=true restarts=0" + ] + }, + "badge_after": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "state_after": "running", + "hold_after": null, + "to_digests": { + "wanderer": "sha256:849f63732d3e751f077c1567bda77aebc68c8b5691271cb418e10efbcf2f364f", + "wanderer-db": "sha256:2f8d7f29c2a473dce8e84b1a33ac3a692a21238c39b6757fa0e0162542d85865", + "wanderer-search": "sha256:203a0854738be101bfdada825ac3cbf95e5681bc849757b6bc199e4cfae98faa" + }, + "four_observables": { + "pinned": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "installed": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "catalog": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "live_compose": [ + "flomp/wanderer-db:v0.21.2", + "flomp/wanderer-web:v0.21.2", + "getmeili/meilisearch:v1.36.0" + ] + }, + "seed_read_after": true, + "setup_gate_after": { + "browser": { + "status": "404", + "redirect": null + }, + "script": { + "status": "404", + "redirect": null + } + }, + "memory": { + "soak_s": 600, + "interval_s": 10, + "samples": 174, + "containers": { + "wanderer": { + "samples": 58, + "anon_peak_bytes": 116068352, + "limit_bytes": 536870912, + "anon_peak_pct": 21.6, + "cgroup_peak_pct": 27.9, + "oom_kill_delta": 0, + "oom_killed_flag": false, + "restarts_delta": 0, + "running_all_samples": true, + "cgroup": "/sys/fs/cgroup/system.slice/docker-fc6f96fbc46b8c3246f8f1d6dc04b0985a74d1606c060449aeb8654d40d68d61.scope" + }, + "wanderer-db": { + "samples": 58, + "anon_peak_bytes": 18522112, + "limit_bytes": 268435456, + "anon_peak_pct": 6.9, + "cgroup_peak_pct": 9.7, + "oom_kill_delta": 0, + "oom_killed_flag": false, + "restarts_delta": 0, + "running_all_samples": true, + "cgroup": "/sys/fs/cgroup/system.slice/docker-8208bef4c0366adc202722cf5980f57d28c61d37e0ae462eb4d70e653f730f19.scope" + }, + "wanderer-search": { + "samples": 58, + "anon_peak_bytes": 246140928, + "limit_bytes": 268435456, + "anon_peak_pct": 91.7, + "cgroup_peak_pct": 99.8, + "oom_kill_delta": 0, + "oom_killed_flag": false, + "restarts_delta": 0, + "running_all_samples": true, + "cgroup": "/sys/fs/cgroup/system.slice/docker-f56e2840be92b4583435d0765b0b8059b40ac55e3d6c6935eaaebb2dcbe2d959.scope" + } + }, + "oom_kills": 0, + "restarts": 0, + "peak_pct": 91.7 + }, + "why": "the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back", + "log": [ + "13:04:29 [5] the box's drill mirror now at 524687d79", + "13:04:34 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}", + "13:05:40 [1] deployed, controller state=running, pinned={'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'}", + "13:05:43 [2] setup gate as installed: {'browser': {'status': '404', 'redirect': None}, 'script': {'status': '404', 'redirect': None}}", + "13:05:44 wanderer: sign-up http=200", + "13:05:44 wanderer: seeded user drill97eb0867 and private list Drill-11c9d58e2e http=200 id=True", + "13:05:44 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True", + "13:05:46 [5] drill commit 655d25f2717c: wanderer flomp/wanderer-web:v0.20.0,flomp/wanderer-db:v0.20.0 -> flomp/wanderer-web:v0.21.2,flomp/wanderer-db:v0.21.2 (push rc=0)", + "13:05:55 [5] the box's drill mirror now at 655d25f27", + "13:06:00 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "13:06:00 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None", + "13:06:16 + 16.4s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None", + "13:06:18 + 18.4s phase=pulling label=Új verzió letöltése… err=None hold=None", + "13:06:46 + 46.1s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None", + "13:06:55 + 55.3s phase=starting label=Indítás az új verzióval… err=None hold=None", + "13:07:07 + 67.6s phase=verifying label=Működés ellenőrzése… err=None hold=None", + "13:07:18 + 77.9s phase=done label=Frissítve err=None hold=None", + "13:07:37 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True", + "13:07:37 [7] memory soak 600 s …", + "13:17:45 [7] soak: peak 91.7% of the limit (anon), kills 0, restarts 0" + ] +} \ No newline at end of file diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/walk.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/walk.txt new file mode 100644 index 00000000..b386203b --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/box/walk.txt @@ -0,0 +1,25 @@ +13:04:29 [5] the box's drill mirror now at 524687d79 +13:04:34 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +13:05:40 [1] deployed, controller state=running, pinned={'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +13:05:43 [2] setup gate as installed: {'browser': {'status': '404', 'redirect': None}, 'script': {'status': '404', 'redirect': None}} +13:05:44 wanderer: sign-up http=200 +13:05:44 wanderer: seeded user drill97eb0867 and private list Drill-11c9d58e2e http=200 id=True +13:05:44 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +13:05:46 [5] drill commit 655d25f2717c: wanderer flomp/wanderer-web:v0.20.0,flomp/wanderer-db:v0.20.0 -> flomp/wanderer-web:v0.21.2,flomp/wanderer-db:v0.21.2 (push rc=0) +13:05:55 [5] the box's drill mirror now at 655d25f27 +13:06:00 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +13:06:00 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +13:06:16 + 16.4s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +13:06:18 + 18.4s phase=pulling label=Új verzió letöltése… err=None hold=None +13:06:46 + 46.1s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +13:06:55 + 55.3s phase=starting label=Indítás az új verzióval… err=None hold=None +13:07:07 + 67.6s phase=verifying label=Működés ellenőrzése… err=None hold=None +13:07:18 + 77.9s phase=done label=Frissítve err=None hold=None +13:07:37 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +13:07:37 [7] memory soak 600 s … +13:17:45 [7] soak: peak 91.7% of the limit (anon), kills 0, restarts 0 +13:17:45 [9] verdict proven -> /tmp/claude-1000/-mnt-5-hdd-felhom-eu-git/0b76c4d7-9b39-4e4e-869d-d0d2c6006331/scratchpad/p2/box/wanderer/verdict.json +13:17:45 RESULT proven — the security-fix step ran on the box through the guarded Update; healthy, TO on all four observables, no undo, no hold, a clean soak, seed read back +13:17:47 [X] stop -> 200 {'ok': True, 'message': 'Stack wanderer stop completed'} +13:18:19 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'wanderer', 'volumes_removed': ['wanderer_wanderer_data', 'wanderer_wanderer_meili_data', 'wanderer_wanderer_plugins', 'wandere +13:18:27 [X] after remove: deployed=False leftovers='' diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/run.txt b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/run.txt new file mode 100644 index 00000000..5d6c848c --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/run.txt @@ -0,0 +1,25 @@ +13:18:35 [5] the box's drill mirror now at a3b966242 +13:18:40 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +13:20:00 [1] deployed, controller state=running, pinned={'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'} +13:20:01 wanderer: sign-up http=200 +13:20:01 wanderer: seeded user drilla9dedf28 and private list Drill-2af9940200 http=200 id=True +13:20:01 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +13:20:02 drill commit c7a6cbdfefc7: wanderer TO with failing checks +13:20:11 [5] the box's drill mirror now at c7a6cbdfe +13:20:16 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +13:20:16 + 0.0s phase=backing-up label=Biztonsági mentés készül a frissítés előtt… err=None hold=None +13:20:35 + 19.5s phase=safety-dump label=Adatbázis pillanatkép… err=None hold=None +13:20:37 + 20.5s phase=pulling label=Új verzió letöltése… err=None hold=None +13:21:01 + 45.1s phase=copying label=Az adatok másolása a frissítés előtt… err=None hold=None +13:21:15 + 59.4s phase=starting label=Indítás az új verzióval… err=None hold=None +13:21:28 + 71.7s phase=verifying label=Működés ellenőrzése… err=None hold=None +13:26:31 + 374.9s phase=undoing label=Visszaállítás az előző változatra… err=None hold=None +13:26:59 + 402.6s phase=undone label=Visszaállítva az előző változatra err=None hold=None +13:27:28 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True +13:27:28 RESULT proven — TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back +13:27:29 [X] stop -> 200 {'ok': True, 'message': 'Stack wanderer stop completed'} +13:28:01 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'wanderer', 'volumes_removed': ['wanderer_wanderer_data', 'wanderer_wanderer_meili_data', 'wanderer_wanderer_plugins', 'wandere +13:28:09 [X] after remove: deployed=False leftovers='' +13:28:19 [5] the box's drill mirror now at e410bac1c +13:28:19 drill revert c7a6cbdfefc7: rc=0 +13:28:19 drill templates/wanderer equal to before: True diff --git a/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/undo-proof-wanderer.json b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/undo-proof-wanderer.json new file mode 100644 index 00000000..b63b289f --- /dev/null +++ b/documentation/audits/dockerhub-bigsteps-2026-10-28/wanderer/undo/undo-proof-wanderer.json @@ -0,0 +1,200 @@ +{ + "app": "wanderer", + "from": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "to": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "started": "2026-10-28T12:18:25Z", + "drill_head_before": "a3b966242cce71123efe81137277a5870f13d0a0", + "failing_compose_main_healthcheck": [ + "test: [\"CMD\", \"false\"]" + ], + "failing_probe": true, + "update": { + "accepted": true, + "http": "202", + "phases": [ + { + "t": 0.0, + "phase": "backing-up", + "label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 19.5, + "phase": "safety-dump", + "label": "Adatb\u00e1zis pillanatk\u00e9p\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 20.5, + "phase": "pulling", + "label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 45.1, + "phase": "copying", + "label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 59.4, + "phase": "starting", + "label": "Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 71.7, + "phase": "verifying", + "label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 374.9, + "phase": "undoing", + "label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026", + "updating": true, + "error": null, + "hold": null + }, + { + "t": 402.6, + "phase": "undone", + "label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra", + "updating": false, + "error": null, + "hold": null + } + ], + "duration_s": 402.6, + "final_phase": "undone", + "update_error": null, + "hold_reason": null, + "state": "running" + }, + "to_log_while_verifying": [ + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m", + "", + "\u001b[1;31m[404] GET /undo-proof-no-such-path\u001b[0m" + ], + "observables_after": { + "pinned_images": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "installed_images": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "catalog_images": { + "wanderer": "flomp/wanderer-web:v0.21.2", + "wanderer-db": "flomp/wanderer-db:v0.21.2", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "live_compose_image_lines": [ + "image: flomp/wanderer-web:v0.20.0", + "image: flomp/wanderer-db:v0.20.0", + "image: getmeili/meilisearch:v1.36.0" + ], + "docker_inspect": [ + "wanderer flomp/wanderer-web:v0.20.0 running=true restarts=0", + "wanderer-db flomp/wanderer-db:v0.20.0 running=true restarts=0", + "wanderer-search getmeili/meilisearch:v1.36.0 running=true restarts=0" + ] + }, + "running_images_after": { + "wanderer": "flomp/wanderer-web:v0.20.0", + "wanderer-db": "flomp/wanderer-db:v0.20.0", + "wanderer-search": "getmeili/meilisearch:v1.36.0" + }, + "seed_after_undo": true, + "verdict": "proven", + "why": "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "drill_head_after": "e410bac1c1b58f976da979859a86bfc958a553c6", + "drill_tree_equal_to_before": true, + "log": [ + "13:18:35 [5] the box's drill mirror now at a3b966242", + "13:18:40 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "13:20:00 [1] deployed, controller state=running, pinned={'wanderer': 'flomp/wanderer-web:v0.20.0', 'wanderer-db': 'flomp/wanderer-db:v0.20.0', 'wanderer-search': 'getmeili/meilisearch:v1.36.0'}", + "13:20:01 wanderer: sign-up http=200", + "13:20:01 wanderer: seeded user drilla9dedf28 and private list Drill-2af9940200 http=200 id=True", + "13:20:01 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True", + "13:20:02 drill commit c7a6cbdfefc7: wanderer TO with failing checks", + "13:20:11 [5] the box's drill mirror now at c7a6cbdfe", + "13:20:16 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}", + "13:20:16 + 0.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "13:20:35 + 19.5s phase=safety-dump label=Adatb\u00e1zis pillanatk\u00e9p\u2026 err=None hold=None", + "13:20:37 + 20.5s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None", + "13:21:01 + 45.1s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None", + "13:21:15 + 59.4s phase=starting label=Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026 err=None hold=None", + "13:21:28 + 71.7s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None", + "13:26:31 + 374.9s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None", + "13:26:59 + 402.6s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None", + "13:27:28 wanderer: sign-in ok (wrong password refused: http 400); the private list read back http=200 ok=True", + "13:27:28 RESULT proven \u2014 TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back", + "13:27:29 [X] stop -> 200 {'ok': True, 'message': 'Stack wanderer stop completed'}", + "13:28:01 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'wanderer', 'volumes_removed': ['wanderer_wanderer_data', 'wanderer_wanderer_meili_data', 'wanderer_wanderer_plugins', 'wandere", + "13:28:09 [X] after remove: deployed=False leftovers=''", + "13:28:19 [5] the box's drill mirror now at e410bac1c", + "13:28:19 drill revert c7a6cbdfefc7: rc=0", + "13:28:19 drill templates/wanderer equal to before: True" + ] +} \ No newline at end of file diff --git a/documentation/backlog/CLOSED-ITEMS.md b/documentation/backlog/CLOSED-ITEMS.md index 04788502..04896bfe 100644 --- a/documentation/backlog/CLOSED-ITEMS.md +++ b/documentation/backlog/CLOSED-ITEMS.md @@ -26,6 +26,15 @@ --- +## 2026-10-28 (afternoon) — the big steps: R-1335, R-1311, R-1320 and R-1317 closed (full text of the rows: `git show ac95ca4f:documentation/backlog/OPEN-ITEMS.md`) + +| Row | What | Closed | Evidence | +|---|---|---|---| +| **R-1335** | **Wanderer's big step v0.20.0 → v0.21.2 (the successor of R-1313): the ActivityPub fix (GHSA-fprh-3pp9-68m9) and the HTTP2Shell runtime fix.** (P3) | CLOSED 2026-10-28 — a normal ladder step live in catalog `1825247` on the operator's yes (CI job 2461 green): bench 9401 `proven` (abort starts and serves), box 9202 `proven` (78 s, soak 600 s), the undo proven on 9202 (28 s back to v0.20.0, the seed reads back). The template keeps PocketBase off the internet and leaves inbound federation OFF (no `POCKETBASE_PROXY_SECRET`, the operator's pick); D59 ended — Wanderer is offered again (`09` §3 decision 279). Meilisearch's memory: R-1338. | `audits/dockerhub-bigsteps-2026-10-28/wanderer/` | +| **R-1311** | **Termix (catalog 2.8.0): a stranger can get round the login rate limit by writing their own X-Forwarded-For (GHSA-7j7m-85p4-2cpm); the fix needed the big step.** (P3) | CLOSED 2026-10-28 — D58 (wait for the big step) ended: two normal ladder steps live on the operator's yes, 2.8.0 → 2.9.2 (`e0b9594`, CI 2462) → 26.10.5 (`589c957`, CI 2463), each with bench + box 9202 + the undo proven; 26.10.5 trusts only its own nginx (`trust proxy: loopback`) and carries Node.js 24.22.1. Measured on 9202 (7 wrong logins, 7 forged X-Forwarded-For values): from the LAN traefik replaces the header and the 6th try is HTTP 429 on 2.8.0, 2.9.2 and 26.10.5; from the tunnel's own address with the chain Cloudflare delivers (forged value, then the real visitor address Cloudflare appends) the 6th try is 429 on all three — so the bypass was not reachable on our boxes before either. A chain with no real address appended skipped the limit on every version (Cloudflare does not deliver one). No template change. | `audits/dockerhub-bigsteps-2026-10-28/termix-292/`, `termix-26105/`, `termix-xff/` | +| **R-1320** | **Homepage v1.13.2: a medium notice that needs a hand-written credentialed widget (family_gate in front); the fix is v2.7.0, a big step.** (P3) | CLOSED 2026-10-28 — a normal ladder step v1.13.2 → v2.7.0 live on the operator's yes (`1a254d4`, CI 2464): bench + box 9202 + the undo proven; a new fixture reads the dashboard's own first-start services and bookmarks before and after (Homepage keeps no household data through any route); the family gate still answers 302. v2.7.0 also carries Node.js 24.22.1 (HTTP2Shell). | `audits/dockerhub-bigsteps-2026-10-28/homepage/` | +| **R-1317** | **Seerr (jellyseerr 2.7.3): GHSA-rc4w (a stranger registers, Plex setups only) and GHSA-mc6w (path traversal to code execution, needs a hostile media server); the fix is `ghcr.io/seerr-team/seerr:v3.5.1`, a big step.** (P3) | CLOSED 2026-10-28 — a normal ladder DEFINITION step live on the operator's yes (`9ef06a7`, CI 2467): the new image, `init: true`, and a start that hands `/app/config` to UID 1000 and runs Seerr as `node`; bench + box 9202 + the undo proven (the bench's bare abort loses the seed on the converted data; the box's undo copy brings it back). A new fixture brings a throwaway Jellyfin for Seerr's first sign-in. v3.5.1 also carries Node.js 22.23.4 (HTTP2Shell). | `audits/dockerhub-bigsteps-2026-10-28/seerr/` | + ## 2026-10-28 (day) — R-1313, R-1322, R-1327 and R-1332 closed: Wanderer hidden, Immich's lane step live, the runtime watch fills its own cache in CI, the 20 runtime apps classified (full text of the rows: `git show 9b4b5fe5:documentation/backlog/OPEN-ITEMS.md`) | Row | What | Closed | Evidence | diff --git a/documentation/backlog/OPEN-ITEMS.md b/documentation/backlog/OPEN-ITEMS.md index 757b87f5..667b88ff 100644 --- a/documentation/backlog/OPEN-ITEMS.md +++ b/documentation/backlog/OPEN-ITEMS.md @@ -124,7 +124,7 @@ stopping line that lies. | **R-494** | Install & onboarding | P4 | **NARROWED 2026-09-14 by operator ruling → [P3-LOW] the hub COULD create the tunnel at customer creation, for a domain already on Cloudflare. Not blocking: every customer has their own domain and the operator creates the tunnel per day-0 A.1 (`architecture/01-topology-and-trust.md`).** *Original finding, kept:* **[P1-HIGH] A new customer's dashboard has NO reachable address unless the operator hand-makes a Cloudflare tunnel — the link in the setup-code mail is dead.** MEASURED 2026-09-14 on a fresh install from the public ISO (drill intervention **I1**): the claim mail points at `https://felhom.drill0242.felhom.eu`; that name has **no A and no AAAA** record (`dig @1.1.1.1`, control `felhom.enkisfelhom.hu` resolves); the hub has **no tunnel- or DNS-creation code** (`hub/internal/cloudflare/` holds only geo-rule removal; `cf_tunnel_token` is a pasted, optional form field, `configs.go:1478`) — day-0 runbook A.1 makes it a manual Cloudflare-dashboard step that nothing on the customer-create page asks for; the box's own split-horizon resolver on the appliance LAN IP answered `google.com` but not the dashboard name at 13:27:39Z; the agent applied the record at **13:27:44Z** (`lanresolver: applied split-horizon record … ip=192.168.0.158`, 3 m 46 s after the controller started), so the box CAN answer the name — **but only to a device that uses the box as its DNS server, and no document, screen or mail tells a household to do that**; the router and the installer-offered DNS answer nothing. The page was reachable only at the guest's LAN address with the name forced (`curl --resolve …:443:192.168.0.158`). **A volunteer could not have done that.** **What it needs:** an operator ruling — the hub creates the tunnel and DNS at customer creation, or the product gives a household a LAN address that works with no DNS change. | **READY — rank P3-LOW; owner: CC** **Re-ranked 2026-10-03: P3→P4: operator-side automation; the operator creates the tunnel by hand per the day-0 runbook.** | — | — | CC | | **R-504** | Install & onboarding | P4 | **[P3-LOW] `iso.felhom.eu` cannot show an index page on its own — its root returns 404, and the download page lives on the website instead.** MEASURED 2026-09-14: `https://iso.felhom.eu/` and `/index.html` → 404; only named objects answer. The host is an R2 bucket behind a custom domain; whether R2 would serve an uploaded `index.html` at `/` was **not measured** (uploading anything to the public bucket is a publication). The ISO v1.27.0 task puts the Hungarian download page at `felhom.eu/letoltes` (published with the ISO, after the operator's yes). **Remaining:** a redirect from `iso.felhom.eu/` to that page needs a Cloudflare rule the session has no credential for. | **WAITING-ON-OPERATOR — rank P3-LOW; owner: operator (Cloudflare rule)** **Re-ranked 2026-10-03: P3→P4: households are sent to the website's download page; the bare address is cosmetic.** | — | — | operator | -## Apps & catalog — 24 rows (P2 1, P3 12, P4 11) +## Apps & catalog — 25 rows (P2 1, P3 13, P4 11) | ID | Category | Sev | What | State | Blocked on | Next action | Owner | |---|---|---|---|---|---|---|---| @@ -152,19 +152,17 @@ stopping line that lies. | **R-1331** | Apps & catalog | P3 | **Paperless-ngx 2.20.15 carries Python Brotli 1.1.0 (CVE-2026-111497, fixed 1.1.1/1.2.1)** — its web side only COMPRESSES (whitenoise, compression_middleware); the DECODERS are urllib3's and httpx's, for replies to requests Paperless itself makes (its own outbound calls), never for what a visitor sends. Read in the running container on demo-hp 9201, 2026-10-27. 2026-10-28: the newest release 3.3.4 still carries Brotli 1.2.0 and is a new main version — no fixed release yet (`audits/runtime-fixes-2026-10-28/TABLE.md`). | OPEN — no step tonight (decided by CC unattended — operator may reverse): the bad path needs a hostile server Paperless calls | — | take the first Paperless release with Brotli ≥ 1.2.1 as a normal step | CC | | **R-1336** | Apps & catalog | P3 | **ActualBudget has no release with the HTTP2Shell fix (CVE-2026-111497): 26.9.0 carries Node.js 24.20.0 and the newest 26.10.0 still Node.js 24.21.0 (fixed: 24.22.1), read from both images.** `node app.js` serves the app; the setup gate covers it until the first account exists, then its own password. No box runs it. `audits/runtime-fixes-2026-10-28/TABLE.md` | OPEN — filed 2026-10-28 (runtime fixes) | upstream: an image with Node ≥ 24.22.1 | the watch lists it nightly (R-1327); take that release as a lane step | CC | | **R-1337** | Apps & catalog | P3 | **Calibre-Web (v4.0.8, the newest) loads a bad Brotli decoder: its `cps.py` maps Python Brotli 1.2.0 (fixed 1.2.1), Pillow's libbrotlidec 1.2.0 and Debian's libbrotlidec 1.1.0** — read from the process's maps on demo-hp 9201 (`audits/runtime-fixes-2026-10-28/calibre-web-brotli.txt`). Exposure: the Python decoder is urllib3's, for replies to the app's own outbound calls (book metadata), not for what a visitor sends — the Paperless shape (R-1331). No fixed release exists. `audits/runtime-fixes-2026-10-28/TABLE.md` | OPEN — filed 2026-10-28 (runtime fixes) | upstream: an image with Brotli ≥ 1.2.1 | take that release as a lane step; Debian's libbrotli1 fixed version is not known (R-1327's table has no Debian line) | CC | +| **R-1338** | Apps & catalog | P3 | **Wanderer's Meilisearch fills whatever memory limit it gets: 92–100 % anon of 256 MB (bench and 9202), still 88.8 % of 384 MB on the bench (2026-10-28)** — it sizes its indexing memory from the memory it sees (its default: 2/3 of the available RAM), so a higher limit alone does not end the `memory_tight` mark of Wanderer's step. No kill in any run. `audits/dockerhub-bigsteps-2026-10-28/wanderer/` | OPEN — filed 2026-10-28 (big steps) | — | set `MEILI_MAX_INDEXING_MEMORY` (e.g. a third of the limit) in the template, measure on the bench, a re-test entry | CC | -## App updates — 14 rows (P2 2, P3 12) +## App updates — 11 rows (P2 2, P3 9) | ID | Category | Sev | What | State | Blocked on | Next action | Owner | |---|---|---|---|---|---|---|---| | **R-1315** | App updates | P2 | **Gitea 1.27.3: two critical notices for any signed-in user (7cq7, 6pv5) and two with no login (c3cr, hf55); the fix is 28.2.0 (1.28 was renamed 28.0.0 — no 1.27.4 exists).** 28.0 routes git traffic through a new proxy with egress settings. GHSA-rqhx (SSRF through migration) has no fix at all (`PICKS.md` pick 2). No box runs Gitea. `audits/security-app-updates-2026-10-27/TRIAGE.md` | OPEN — **RULED D57 = keep repository import on** (operator 2026-10-27 21:33, `09` §3 decision 273) — judged again in the big step. — filed 2026-10-27 (security app updates, Part 3: not done today) | — | the big step 28.2.0: read the 28.0 proxy settings against our template; bench + 9202 + undo; a STOP | CC | | **R-1316** | App updates | P3 | **Gokapi v1.9.6: GHSA-3c22 (high, self-XSS for the only account); the fix is v2.x, a big step** — a user system with no downgrade, and our first-boot config seed must be captured again. No box runs Gokapi. `audits/security-app-updates-2026-10-27/TRIAGE.md` | OPEN — filed 2026-10-27 (security app updates, Part 3: not done today) | — | the big step v2.2.4 with a new first-boot seed; bench + 9202 + undo; a STOP | CC | -| **R-1317** | App updates | P3 | **Seerr (jellyseerr 2.7.3): GHSA-rc4w (a stranger registers, Plex setups only) and GHSA-mc6w (path traversal to code execution, needs a hostile media server); the fix is `ghcr.io/seerr-team/seerr:v3.5.1`, a big step** — a new image name, runs as UID 1000 (`/app/config` must be chowned), a config migration. No box runs it. `audits/security-app-updates-2026-10-27/TRIAGE.md` **2026-10-28 (R-1332): the HTTP2Shell runtime fix rides this big step too** — jellyseerr 2.7.3 carries Node.js 22.18.0, seerr v3.5.1 Node.js 22.23.4 (read from both images); `pnpm start` runs Node, behind the setup gate. | OPEN — filed 2026-10-27 (security app updates, Part 3: not done today) | — | the big step to seerr v3.5.1: the ownership step, the image rename; bench + 9202 + undo; a STOP | CC | | **R-1318** | App updates | P3 | **Karakeep 0.33.2 + chrome 151: two CISA-KEV V8 bugs in the crawler's Chromium (runs `--no-sandbox`), reached by content the household saves; the fix is 0.34.1 + chrome 154.0.8037.57-r1** — an auth library swap (everyone signed out, e-mails lowercased) and a chrome rebuilt on full Chrome (memory limit and healthcheck to measure again). No box runs it. `audits/security-app-updates-2026-10-27/TRIAGE.md` | OPEN — filed 2026-10-27 (security app updates, Part 3: not done today) | — | the big step: measure chrome 154's memory; bench + 9202 + undo; a STOP | CC | | **R-1319** | App updates | P3 | **Paperless-ngx 2.20.15: GHSA-2jhj (low; needs a setting we do not set — not reachable); the fix is 3.3.4, a big step** (encryption and API v1 removed, the search index rebuilt). It runs on all four test boxes. Not urgent. `audits/security-app-updates-2026-10-27/TRIAGE.md` | OPEN — filed 2026-10-27 (security app updates, Part 3: not done today) | — | the big step 3.3.4 when the catalog takes Paperless 3 for other reasons; read our API v1 use first | CC | -| **R-1320** | App updates | P3 | **Homepage v1.13.2: a medium notice that needs a hand-written credentialed widget (family_gate in front); the fix is v2.7.0, a big step** (the auth rework). No box runs it. `audits/security-app-updates-2026-10-27/TRIAGE.md` **2026-10-28 (R-1332): the HTTP2Shell runtime fix rides this big step too** — v1.13.2 carries Node.js 22.22.3 (`node server.js`, as root, behind the family gate), v2.7.0 Node.js 24.22.1 (read from both images); no fixed v1.x exists. | OPEN — filed 2026-10-27 (security app updates, Part 3: not done today) | — | the big step v2.7.0; bench + 9202 + undo; a STOP | CC | -| **R-1335** | App updates | P3 | **Wanderer's big step v0.20.0 → v0.21.2 (the successor of R-1313): it carries the ActivityPub fix (GHSA-fprh-3pp9-68m9) AND the HTTP2Shell runtime fix (Node.js 22.23.1 → 22.23.4, read from both images).** Wanderer is hidden since 2026-10-28 (D59); no box runs it. A main-version move by the operator's ruling (D59), so a normal ladder step, never the lane. `audits/runtime-fixes-2026-10-28/TABLE.md` | OPEN — filed 2026-10-28 (runtime fixes) | — | the big step: bench (R-739: the bench cannot run Wanderer yet) or a box-only walk on 9202 with the undo; a STOP; then un-hide | CC | | **R-1321** | App updates | P3 | **Tandoor 2.6.15: GHSA-5f74 (high, an XXE file read) and GHSA-69q3 (any user); the fix is 2.7.2** — 2.7.0 removes settings and an endpoint and rewrites the login pages (our probe path — not sure), and 2.7.0/2.7.1 break invite links with sign-up off, so straight to 2.7.2. No box runs it. `audits/security-app-updates-2026-10-27/TRIAGE.md` | OPEN — filed 2026-10-27 (security app updates, Part 3: not done today) | — | a normal step to 2.7.2 with the probe path checked; bench + 9202 (+ undo if a migration); a STOP | CC | | **R-1324** | App updates | P3 | **RomM 5.4's first start can run a 15–20 minute migration on a big library (upstream notes) — longer than the update's check window, so a household's night step could be undone for slowness, not for a fault.** Today's walk (9202, a small seed) took the step in seconds; demo-hp's RomM takes it tonight (security-fix step, catalog `06e603e`). `audits/security-app-updates-2026-10-27/triage-notes/romm.md` | OPEN — filed 2026-10-27; WATCH demo-hp's night leg line | — | read demo-hp's night leg line for romm (done / undone, the time); if undone for time: give the step a longer check or the `needs_person` mark | CC | | **R-1238** | App updates | P2 | **Plex has no test record and no upgrade fixture, so the night leg never updates Plex on a household box.** Filed 2026-10-23. Catalog `6cc317d` moved Plex 1.41.4.9463 → 1.43.5.11029-6bf8af3f0 (the Plex2Shell fix) on the operator's ruling, with NO `update_ladder` entry (the move gate refused; pushed `--no-verify`, the one time). With no ladder, a person's Update press pins the current compose (`stacks/ladder.go` `nextLadderStep`), but the night leg skips the app (`unattended.go` → `LegSkipNoTestRecord`), so every future Plex fix reaches a household only by a hand press. `scripts/upgrade_fixtures.py` has no Plex fixture. A likely seed route is NOT measured: an UNCLAIMED Plex answers a private-address request with no token (`architecture/13-threat-model.md`, the R-1045 row), so the bench may create and read back a library section through Plex's own API without a plex.tv account. **Needs a spike:** prove that route on the bench (seed a section, swap the image, read it back), add the fixture, then `upgrade-test.py --write-ladder` for the current pin — the box walk on 9202 needs the same route behind the setup gate. Evidence: `audits/plex-demo-boxes-2026-10-23/`. **2026-10-23 (later): the NEXT Plex fix need not wait for this** — the security-fix lane (`09` §3 decision 255, D39 = B, controller 0.341.0) takes a box-only step with `seed: "none"` at night (proven on 9202 with Plex 1.43.4 → 1.43.5, `audits/security-lane-2026-10-23/`). The bench fixture stays the aim: it is the only check that reads Plex's data back after a step. | **OPEN** | a claimed-Plex seed route on the bench | the spike above | CC | @@ -242,7 +240,7 @@ stopping line that lies. | **R-1275** | Storage & devices | P4 | **An English household sees the drive names in Hungarian** on the install page (and wherever a storage label shows): „Belső tárhely — 52.0 GB free (default)”, „Külső tárhely (hdd_1)” (catalog sweep 2026-10-24, `audits/catalog-sweep-2026-10-24/navidrome/page-install-en.txt`). The label is stored once, in Hungarian, when the drive is found (`felhom-controller/controller/internal/settings/settings.go` `InferStorageLabel`); a household may rename it. | OPEN | — | Render a label that still equals the inferred default in the reader's language; a test per language | CC | | **R-1276** | Storage & devices | P4 | **„Remove with data” leaves the app's empty parent folder** (`/appdata/`) when the template binds a subfolder: Grimmory, RomM, Paperless-ngx (catalog sweep 2026-10-24; 4 KB each; the bound folders were removed). Harmless (empty, not counted as old data), untidy for a household that browses the drive. | OPEN | — | Remove the parent when it is empty after the bound folders go; a test | CC | -## Security & access — 30 rows (P1 2, P2 5, P3 16, P4 7) +## Security & access — 29 rows (P1 2, P2 5, P3 15, P4 7) | ID | Category | Sev | What | State | Blocked on | Next action | Owner | |---|---|---|---|---|---|---|---| @@ -256,7 +254,6 @@ stopping line that lies. | **R-1141** | Security & access | P3 | **`felhom-host-install --rotate-recovery` exists only as part of a full installer re-run, which also reinstalls the vouched agent and the root files.** On a box running a newer agent than the vouched one (demo-hp on the candidate, 2026-10-17) it would move the agent back; on a household box it is a much larger act than a password change. The 2026-10-17 rotation therefore ran the installer's own `step_break_glass` ALONE (`audits/agent-allowlist-rotation-2026-10-17/P3/`). | **NARROWED 2026-10-18 — built on `main`, not published.** `felhom-host-install.sh --rotate-recovery-only` runs step 4b alone (felhom.eu `7d64038f`): reads the hub, host id and host key from the agent config, refuses byo and every other mode flag, asks the hub's `/healthz` before the password changes, never touches the agent or root files. The default install path is unchanged in behaviour (harness verdicts and 9 transcripts identical old vs new; demo-hp `--preflight-only` identical; `--rotate-recovery-only --dry-run` on demo-hp changed nothing). `step_break_glass` moved, byte-identical, ahead of the argument parse. `break-glass.md` §5 points at it. Publishes only with the next `installer-v…` tag. | the next installer tag | Cut the next `installer-v…` tag (with the other untagged installer changes); close | CC | | **R-1258** | Security & access | P3 | **ep0's iperf3 line-test server takes any tunnel peer's test: one box (root on its host) can keep it busy for the fleet or ask a long reverse test that fills ep0's uplink.** Found 2026-10-24 (SEC-2 X2): `felhom.eu/scripts/ep0-iperf3/felhom-iperf3.service:17` — no authorized users, no server-side duration or rate cap; one client at a time (`felhom-agent/internal/linetest/iperf.go:263-264` → `busy`; 6 tries a day). Static (no ep0 change in this run). | OPEN | — | per-box iperf3 users or server-side caps, tried on a scratch VM first | CC | | **R-1307** | Security & access | P3 | **Packages inside our own images are not watched** — the Debian packages of the controller image, the Alpine packages of the hub and Samba images (Samba's version is whatever Alpine 3.24 ships). The security watch (R-1303) reads only the base image's point release (BEHIND); Debian's DSAs and Alpine's secdb are not read. `audits/security-watch-2026-10-26/SPIKE.md` „cannot see" | OPEN — filed 2026-10-26 | — | add Alpine secdb (machine-readable JSON per release) and Debian's tracker for the packages the images install, or a scanner run on the built images in CI | CC | -| **R-1311** | Security & access | P3 | **Termix (catalog 2.8.0): a stranger can get round the login rate limit by writing their own X-Forwarded-For (GHSA-7j7m-85p4-2cpm), and our template keeps that header** (docmost and paperless strip it, R-753). The upstream fix needs Termix's big step (2.8 → 2.9.2 → 26.10.5). No box runs Termix (hub 2026-10-27). `audits/security-app-updates-2026-10-27/TRIAGE.md` **2026-10-27: Termix's big step (2.8.0 → 2.9.2 → 26.10.5, two hops — 2.9 must start once; calendar versions; guacd dropped) was not done today; this row carries it.** **2026-10-28 (R-1332): the HTTP2Shell runtime fix rides the same big step** — 2.8.0 carries Node.js 26.9.0, 2.9.2 still Node.js 26.10.0 (bad), 26.10.5 Node.js 24.22.1 (read from the images). | OPEN — **RULED D58 = wait for the big step; the header is not stripped** (operator 2026-10-27 21:33, `09` §3 decision 274). — filed 2026-10-27 | the operator: a template change (strip the header like R-753, so every visitor shares the tunnel's one address and the limit can lock the household out — the Grimmory shape, R-775) or wait for the big step | the pick in `PICKS.md`; or the big step | CC | | **R-955** | Security & access | P4 | **The cross-box check of the hub API is done in source and tests but not fully proven: if a later check masks a missing id check, a box's key could read or change another box's hub record without any test noticing.** Read 2026-10-12: every box-facing `/api/v1` route takes the box from its own key or refuses a different id; 14 routes already had a refusal test, 5 got one (`crossbox_refusal_test.go`). Left: red-prove the 4 new tests that were not red-proved (as the restore-directive one was), and the live read-only check with one demo box's key against the other demo box's id. | OPEN — filed 2026-10-12 by the security review | — | Red-prove the 4 tests; run the live GET check on the two demo boxes | CC | | **R-924** | Security & access | P2 | **The operator signing keys exist only on DooPlex, with no passphrase and in no backup — a loss of DooPlex means no box ever accepts a signed agent update, config bundle or OS step again without an on-site re-enrollment.** MEASURED 2026-10-09: `/mnt/5_hdd/felhom.eu/felhom-op-operational`, `felhom-rec-recovery`, `felhom_op_ed25519` (0600 `kisfenyo`); `ssh-keygen -y -P ''` opens all three (no passphrase); `/mnt/5_hdd/felhom.eu` is in no backup set, the off-site job does not carry them. `04` §1 says the operational key is "passphrase-protected" and the recovery key "kept offline" — today neither holds (custody ruling 1 of 2026-09-16 put both on DooPlex for this phase; `04` §3.1). Both keys share one fate, so the cold key cannot do its one job (re-pin after losing the operational key). `runbooks/total-loss-of-dooplex.md` S6. | NARROWED — **2026-10-23 (D32):** S6a/S6b are on the current sheet. LEFT: the operator prints it. **NARROWED 2026-10-09 — operator ruling: option A** (print both AND copy them). The three key files and their public halves ride the nightly encrypted DooPlex→ep0 copy (`scripts/dooplex-offsite/`, a missing key refuses the push); the Sunday restore test proves each private key still derives its own public half (never printed). **LEFT:** the operator prints S6a/S6b (`runbooks/break-glass-sheet.md`); the keys still have no passphrase (custody ruling 1 of 2026-09-16 stands until the first sale). **2026-10-23 night — survey (`audits/dooplex-survival-2026-10-22/PLAN.md`, G2):** the three key files are on `sda1`, the same disk as DooPlex's local backup tree; their only off-box copy is the S1-encrypted nightly one. Passphrase: unchanged by the custody ruling. | operator: print | Operator: print the two keys; then close | operator | | **R-132** | Security & access | P3 | **`curl -w '%{redirect_url}'` reconstructs the request URL WITH its basic-auth credential** — so a `-u ":$HUB_PW"` call that never put the password in a URL still printed it **Merged 2026-10-05 from R-350 (duplicate):** (1) 2026-08-20 occurrence: POST /configuration/artifacts answers 303; leak lives only in the CC transcript under ~/.claude/projects/ on DooPlex, not in git/evidence (checked then). (2) `-v` and `--libcurl` also re-render the credential, not only %{redirect_url}; confirm redirects with %{http_code} + follow-up GET. (3) Rotation path: hub /configuration form (current_password/new_password/confirm_password); DB override wins over ConfigMap (break-glass); CC can rotate file-to-file without printing (operator-present-one-time-secrets) if asked. | **NARROWED 2026-10-20 — the rotation is DONE:** the operator changed the hub password on 2026-10-15 and the `HUB_PW` line is gone (`audits/hub-tokens-2026-10-15/C153-live.txt:18`; CC uses its own token since hub 0.152.0). **Left, the operator's:** should the break-glass `password_hash` in `manifests/hub.yaml` (a public repository) be emptied or replaced? The DB override wins at login, so the old hash no longer opens the hub. **WAITING-ON-OPERATOR** — **ACTION: rotate `HUB_PW`** **Folded R-580 2026-10-03** (the same `curl -w %{redirect_url}` credential echo, seen again 2026-09-18). **Note 2026-10-12 (security review):** `manifests/hub.yaml` also carries the hub login's bcrypt hash in this public repository (the break-glass field); when `HUB_PW` is rotated, decide whether that field should stay empty. | the operator's word on the `manifests/hub.yaml` hash field | Happened on 2026-07-31 while red-proofing the R-120 gate: the hub operator password was written to the session transcript by the write-out format, not by the request. `-u` is safe; the *reporting* was not. Rule: read the redirect from `-D -` and grep `^Location:`, never `%{redirect_url}`, on any authenticated call. Rotate the hub password (`/configuration` → Login password; ConfigMap `auth.password_hash` is the reset path) and update `~/.config/credentials` | Viktor | @@ -303,7 +300,7 @@ stopping line that lies. |---|---|---|---|---|---|---|---| | **R-1262** | Monitoring & notifications | P3 | **The upload watch treats ANY viewer as an explanation for any amount of upload, so a hacked Plex can send freely while one family member watches.** Found 2026-10-24 (SEC-1 X1): `felhom-controller/controller/internal/upwatch/watch.go:275,299`; `08` §9 states the rule, its limits list did not name this case. | OPEN | — | propose a cap (viewers × a bitrate ceiling) for the operator's R-1244 design; `08`'s limits list names the case meanwhile | CC | | **R-1310** | Monitoring & notifications | P3 | **The security watch (R-1303) flags notices that do not apply and misses fixes that do — measured by reading all 38 flagged pins by hand on 2026-10-27.** False: advisories of ecosystem `actions` (Home Assistant's CI), of another package in the repo (Gitea's runner), with a hostname or ≤-old range (cal.com 2023/2024, Grafana 2022), for the desktop/Electron client (Termix), for the rootless image only (Uptime Kuma); a release hit on a word (Dawarich „no longer receives security fixes", Rallly v4.16.0). Wrong „no fix": Vikunja's six (range `<= 2.6.0`, fixed in 2.7.0), karakeep-chrome (154/156 exist). Missed: Tandoor 2.7.0 names 8 GHSA ids (1 matched), Dawarich 1.16.0 (2FA, export deletion), Wishlist v0.69.0 (critical, no GHSA). BEHIND reads linuxserver `26.09.20260929` as newer than 26.09.2; Seerr follows the renamed-away `fallenbagel/jellyseerr`. `audits/security-app-updates-2026-10-27/TRIAGE.md` NOT-A-FINDING list and `triage-notes/` | OPEN — filed 2026-10-27; **two shapes FIXED the same day** (ecosystem `actions` not listed; an empty fix with a closed range reads „after X"; test W9, red first) | — | teach `security_watch.py`: skip a package that is not the pinned one; match every GHSA id a release body names; ignore `YY.MM.YYYYMMDD` tags; repoint seerr to `seerr-team/seerr`; each with a test seen failing | CC | -| **R-1334** | Monitoring & notifications | P3 | **Docker Hub's tag API refuses the watch (HTTP 429) since the DooPlex group was added: 19 DooPlex images NOT CHECKED in the 2026-10-28 night run (job 2446, `hub.docker.com` = 211 requests), and the „could not check registry:docker.io" mail went out (streak 2).** The runtime part is not affected (HEAD + cache). ghcr.io also answered one blob with 429 in the dry run of 07:02 (Immich v3.3.5, while this session read images from the same address). | OPEN — filed 2026-10-28 (runtime fixes) | — | fewer tag-list calls (one list per image across groups, cached by day) or a Docker Hub login in CI (an Actions secret — the operator's); then a night with no Docker Hub 429 | CC | +| **R-1334** | Monitoring & notifications | P3 | **Docker Hub's tag API refuses the watch (HTTP 429) since the DooPlex group was added: 19 DooPlex images NOT CHECKED in the 2026-10-28 night run (job 2446, `hub.docker.com` = 211 requests), and the „could not check registry:docker.io" mail went out (streak 2).** The runtime part is not affected (HEAD + cache). ghcr.io also answered one blob with 429 in the dry run of 07:02 (Immich v3.3.5, while this session read images from the same address). | **VERIFY** — BUILT 2026-10-28 midday, measured first (`audits/dockerhub-bigsteps-2026-10-28/part1/`): the 429s came from the BURST, not the count — night 2446 sent 211 tag-list requests in ~2 min from six workers (15 refused), dry run 2450 sent 224 in 3.5 min (none). `fe677bae`: Docker Hub requests spaced (1/s across the workers), a 429 retried with its Retry-After (NOT CHECKED only after the 4th try), tag lists cached 24 h per registry path on the runner (two names of one path fetch once); `8644450d`: the image reader retries a registry 429 too (ghcr.io refused two blob reads in back-to-back dry runs). Tests W14 + retry checks, red first. Dry runs 2458 and 2459: **0 Docker Hub 429, 0 retries** (210 requests over ~7 min). **No Docker Hub login needed.** Each of the two CI runners keeps its own tag cache. `minio/minio:latest` answers 401 — Docker Hub no longer serves it (homelab, R-1328). | — | close after the first CI night with 0 Docker Hub 429 (the 03:40 run of 2026-10-29) | CC | | **R-1020** | Monitoring & notifications | P4 | **`app_repaired_after_crash` reports a duration of 0 s, and the controller log says „in 0s".** `RunAfterUncleanBoot` sets `res.Duration` in a deferred func after the result is already returned (no named result), so the caller sees 0; the `app.yaml` record is right (10,172 ms on demo-hp 2026-10-14, `audits/immich-repair-2026-10-14/D/`). Small, but the controller release for this session is spent (v0.311.0). | **OPEN** — filed 2026-10-14 | — | CC: a named result (or set the duration before return), with a test on the returned value; ride the next controller release | CC | | **R-528** | Monitoring & notifications | P2 | **[P2-MEDIUM] Docker does not report an OOM kill inside a Felhom LXC guest: `OOMKilled` stays false and no `oom` event fires, so the v0.243.0 OOM line is not proven live.** MEASURED 2026-09-15 on scratch 9202 (Docker 29.8.0): Paperless capped at 128M restarted 11 times with `OOMKilled=false` and zero `docker events --filter event=oom`; a memory hog inside the running container was killed (rc 137) with the same silence (`E2-oom-signal-measure-9202.txt`). BIGNIGHT VM 333 did read `oomkilled=true`, so the shape differs by case. **Fix shape:** the agent reads the guest container cgroups' `memory.events oom_kill` counters (host-side, reliable), or the controller alarms on a restart-count trend **RE-MEASURED 2026-09-16 on the DRILL box (fresh install, nested VM 334, Docker in an LXC guest, controller 0.243.0), so the finding is not a property of one machine:** the Paperless webserver was capped at 128 M with `docker update --memory`; it restarted 9-10 times, and all three signals stayed silent - `OOMKilled=false` on every inspect, `docker events --filter event=oom` EMPTY for the whole window, the container's cgroup not visible from inside the guest, and `dmesg` unreadable there. Identical to scratch 9202. So the v0.243.0 OOM line cannot fire on ANY Felhom box as shipped, on either host. Evidence: `audits/evidence-drill-0243-2026-09-16/phase2-m1-oom.txt`. | **WATCHING — DESIGN WRITTEN 2026-10-26 night (the brief's Part 7: build only if time is left; it was not built — the line test and the attended release came first).** The host-side counter EXISTS and is readable (read on demo-hp 2026-10-26): `/sys/fs/cgroup/lxc//ns/system.slice/docker-<64-hex id>.scope/memory.events`, line `oom_kill N`. **Design:** (1) agent: a read-only collector (no root CLI — a sysfs read under the agent's own rights; if not readable, the existing sudoers fence gets one read-only `Cmnd_Alias`) that, for each guest in the `felhom` pool, globs those scopes and keeps `{container_id: oom_kill}`; served on the guest's own local API as `GET /guest/oom-kills` (`withGuest`, the guest's containers only). (2) controller: the 30-s dead-app scan asks once per pass; a RISE of a container's counter = an OOM kill whatever Docker's `OOMKilled` says → the existing `app_oom` line (R-636's per-run grain), `source: cgroup` in the details. An agent without the route = today's behaviour. (3) Tests: a fake cgroup tree (agent), a rising counter → one `app_oom` (controller, red-first). (4) Live: 9202, a throwaway app capped at 64M with a memory hog: the counter rises, `app_oom` names the container while `OOMKilled` reads false. ~1 day, two repos, one agent release. **Earlier:** WATCHING — **2026-10-12: the built part is released** (agent v0.150.0 carries the Docker-approval memory-kill check; the boxes run 0.154.0; hub 0.140.0+ requires a passing `oom_check` before a Docker set is approved). Per decision 157 nothing else is built; the row watches for a box whose Docker reports a false OOM flag. Dated look: 2026-11-12. **READY — rank P2-MEDIUM; owner: CC** **2026-09-17 (chaos night): an OOM WAS detected on a fresh box, and named precisely.** On `tester-1-022354` (controller 0.245.0, guest 9201, 6 GB RAM) immich’s Postgres was killed by the memory limit during its reverse-geocoding import, and the controller pushed `app_oom` (warning, operator-only): „Alkalmazás memóriája elfogyott: immich (immich-postgres) — egy folyamatát a memóriakorlát leállította” — naming the app AND the exact container. The visible consequence was `write CONNECTION_CLOSED immich-postgres:5432` and twelve restarts of immich-server. So on THIS box the OOM scan works and was the fastest route to the diagnosis; recorded here rather than filed as a new row. Evidence: `audits/evidence-chaos-night-2026-09-17/round-2.txt`. **2026-10-05 (burn-down night): a one-page design proposal (no code) is in `audits/night-burndown-2026-10-05/design-R-528.md`** — for the operator. **2026-10-06: STOPPED BEFORE ANY CODE — the measurement contradicted the design** (decision 155 said A then C). On scratch 9202, Docker 29.8.2, the `OOMKilled` flag was TRUE in all four shapes tried: a child process killed while the container kept running (`oom_kill` 0 → 3, flag true) and three main-process kills (exit 137, flag true); an `oom` event each time. The false flags of 2026-09-15 were on Docker 29.8.0. Cost read for the record: one exec read of 21 containers on demo-hp = 1.6 s. `audits/design-build-2026-10-06/`C/. **2026-10-06 18:24: operator ruling, option A (decision 157):** nothing is built; the row stays open as a WATCH for a box whose Docker reports a false flag. **Added:** a Docker engine set may not be approved until it reports a memory kill correctly on the boxes that ran it (built in this row's next session). **2026-10-06 (night): the Docker-approval memory-kill check is BUILT** — hub v0.140.0 (LIVE: the approval waits for a passing `oom_check` on every ring-0 box; a failed, errored or missing one blocks) and the agent's wrapper (`felhom-agent` `acccb66`, unreleased — ships as v0.150.0 after the 2026-10-07 read-back). Proven by hand on demo-hp's guest: `OOMKilled=true`, exit 137, the `oom` event — seen only with an events window ending after the run (the wrapper waits 2 s). `audits/readback-2026-10-07/`F/. | — | 2026-11-12: read the hub for any failed `oom_check` or an `app_oom` with no restart reason since 2026-10-12; none → close | CC | | **R-1193** | Monitoring & notifications | P3 | **When the box froze (R-1192), the operator heard only „no report for 45 m" — 28 minutes in — and the household heard nothing at all.** Measured 2026-10-20 against the operator mailbox (the second channel): the freeze began ~13:05 UTC; the hub page read ONLINE / OK at 13:22 (correct inside the 45-minute threshold, R-549); `host_stale` at 13:33, `app_oom` at 13:34 (immich-machine-learning killed by its memory limit), `host_crash_restart` at 14:26 and 16:29 (the two plug pulls), `node_stale` 15:59 / `node_recovered` 16:03. No mail or banner tells the household that its box is not answering, and no operator mail says „the box answers ping but not its dashboard". CORRECTED the same day: the first version of this row said the hub showed OK „throughout" and „nobody was told" — that read only the hub page, not the mailbox. Evidence `audits/rehearsal-2026-10-20/journal.md`. | OPEN | — | Design note (2026-10-21, after R-1192's diagnosis): the freeze's signature is cheap to see from the HOST side — the guest cgroup's memory PSI „full" above ~50 % for a minute, or its `memory.events max` climbing, while the host still reports; the agent could raise `guest_memory_thrash` (operator mail in its own words, not „no report for 45 m") and the household banner „A dobozod most nagyon lassú…". With the swap fix (R-1192) the measured thrash ends within a minute, so this alarm should be built only if a freeze is seen again after the agent release; until then it stays a design. Decide whether a dashboard that does not answer for N minutes while the host still reports should alarm sooner and in its own words (guest-side liveness), and whether the household is told | CC | @@ -323,7 +320,7 @@ stopping line that lies. | **R-1224** | Monitoring & notifications | P4 | **The operator's 1-hour mail cooldown for `wg_tunnel_stale` is per customer, not per host, and `wg_tunnel_ok` does not end it.** Fresh review 2026-10-23 night (`REPORT-night-2026-10-23.md`, H3): `notify/dispatcher.go:620` keys the cooldown `customerID:eventType`. Two hosts of one household going stale within an hour, or stale → ok → stale, store a second event row but mail once (the suppression is in `notification_log`). | OPEN | — | Key the cooldown by `host_id` from the details for host-scoped operator events, and let the matching ok event end it; a dispatcher test with two hosts; rides a hub deploy | CC | | **R-1233** | Monitoring & notifications | P4 | **`[ERROR] [stacks] execCommand failed: exit status 1` names no command.** Seen once a night (2026-10-21 00:30:49 and 2026-10-23 02:17:14 UTC, each right after an app stopped for its dump); the command and stderr go only into the returned error, which the caller may drop (`internal/stacks/manager.go:1757`). An ERROR nobody can judge. | OPEN | — | Log the command's first two words (`docker inspect`, never the arguments — `docker exec … psql` can carry a password) and the stderr's first line; find the caller of the nightly one | CC | | **R-1296** | Monitoring & notifications | P4 | **When ep0's tenancy script refuses, the hub log shows only its one-line error — PBS's own reason (the 403 `missing Datastore.Audit|Datastore.Backup on …`) stays in the script's stderr, which the hub drops on a refusal.** Found 2026-10-26 diagnosing R-1295: the cause was visible only by reading ep0's proxy journal over root SSH. `hub/internal/tenantsync/client.go` `parseResponse` returns the JSON error and ignores stderr; the script keeps secrets off stderr by design (its header), so the tail is safe to log. | OPEN | — | append the last ~3 stderr lines to the refusal error (bounded, never stdout); a test that a secret on stdout never appears | CC | -| **R-1328** | Monitoring & notifications | P2 | **DooPlex's own workloads were not in the security watch at all** — about ten public apps there carry a bad Brotli/Node (HTTP2Shell), on the host that runs the hub, Gitea, the registry and the backups. | **VERIFY** — BUILT 2026-10-27 night (commit only): `scripts/dooplex_inventory.py` lists every `image:` of homelab-manifests (89 images, `documentation/security-watch/dooplex-workloads.txt`; NOT Helm-chart images — said in the file); the watch reads them as the group „dooplex" (operator mails only, own block, „Next: the homelab session"); an image in the private registry is NOT CHECKED with the reason. Tests W12, red-proved. The homelab session's list: `documentation/audits/http2shell-2026-10-27/HOMELAB-LIST.md`. Felhom changes nothing on DooPlex. | — | the first CI night shows the DooPlex block; the homelab session works its list | CC | +| **R-1328** | Monitoring & notifications | P2 | **DooPlex's own workloads were not in the security watch at all** — about ten public apps there carry a bad Brotli/Node (HTTP2Shell), on the host that runs the hub, Gitea, the registry and the backups. | **VERIFY** — BUILT 2026-10-27 night (commit only): `scripts/dooplex_inventory.py` lists every `image:` of homelab-manifests (89 images, `documentation/security-watch/dooplex-workloads.txt`; NOT Helm-chart images — said in the file); the watch reads them as the group „dooplex" (operator mails only, own block, „Next: the homelab session"); an image in the private registry is NOT CHECKED with the reason. Tests W12, red-proved. The homelab session's list: `documentation/audits/http2shell-2026-10-27/HOMELAB-LIST.md`. Felhom changes nothing on DooPlex. | — | the first CI night shows the DooPlex block; the homelab session works its list. 2026-10-28: `minio/minio:latest` answers HTTP 401 on Docker Hub (the image is no longer published there) — for the homelab session: the pin cannot be checked anonymously any more | CC | ## Hub & operator — 12 rows (P3 3, P4 9) diff --git a/documentation/backlog/STATUS-HISTORY.md b/documentation/backlog/STATUS-HISTORY.md index 273cf4cd..88e5675f 100644 --- a/documentation/backlog/STATUS-HISTORY.md +++ b/documentation/backlog/STATUS-HISTORY.md @@ -5,6 +5,14 @@ Moved here byte for byte on 2026-10-14 (night session), newest first, so that `S **Updated 2026-10-13 (night): demo-hp, demo-felhom and Tester 1 run agent 0.155.0; demo-felhom runs controller 0.310.0, the other two 0.309.0 until the floor is raised. The open-items list is at 127. Reports: `REPORT-poweroff.md`, `REPORT-plugmeter.md`, `REPORT-usenet-2026-10-12.md`, `REPORT-newapps-2026-10-12.md`, `REPORT-disk-evening-2026-10-12.md`, `REPORT-answers-2026-10-12.md`, `REPORT-m3-2026-10-11.md`, `REPORT-redesign-2026-10-10.md`, `REPORT-testers-2026-10-10.md`, `REPORT-register-shrink-2026-10-10.md`, `REPORT-new-apps-2026-10-10.md`, `REPORT-release-2026-10-10.md`, `REPORT-break-the-circle-2026-10-09.md`, `REPORT-dooplex-survival-2026-10-09.md`, `REPORT-day4-2026-10-09.md`.** +## Moved from STATUS on 2026-10-28 (evening) + +**Updated 2026-10-28 (day).** On your yes, tested security steps are live for 10 apps (Home Assistant, Immich, AdventureLog, Ghost, MeTube, Zipline, Karakeep, Tandoor, Papra, Dawarich); Wanderer is hidden. The nightly watch now reads the runtime inside every image in CI by itself. Tonight demo-hp takes the Home Assistant and AdventureLog steps; no box runs the other eight apps. + +- Apps still waiting for the HTTP2Shell fix: 10 — Homepage, Termix, Wanderer and Seerr need a big step; ActualBudget, cal.com, Calibre-Web, Paperless, RomM and SparkyFitness have no fixed release yet. + +**D58 and D59 ended 2026-10-28 (evening):** Termix's big step (D58) and Wanderer's big step (D59) are live; Wanderer is offered again (`09` §3 decision 279). + ## Moved from STATUS on 2026-10-28 (day) **Updated 2026-10-28 (night).** CC cannot delete from its secret store any more (D60). The watch now reads the Node and Brotli inside every image: 20 catalog apps carry HTTP2Shell; Home Assistant and Immich have tested steps waiting for your yes. The hub has 3 minutes to start.