Dev VM disk filled by a leaked log-flood test container #19

Open
opened 2026-09-22 19:06:26 +00:00 by kayg · 24 comments
Owner

Incident (2026-09-22, about 20:53–20:54): the dev VM's root disk (/, where /var/lib/docker lives) filled to 100%. The owner's AI agent found and removed a leaked container named flamboyant_yellow. dockerd logged about 22,700 no space left on device errors while writing that container's json-file log, whose content was an endless xxxx….

Cause. crates/server/tests/stream_e2e.rs (stream_priority_and_memory_smoke, branch stream) starts a Docker container running SATURATING_LOG_COMMAND through ContainerGuard, which removes it in Drop. Drop does not run when the test process is killed (a timeout, SIGKILL, or a panic with abort). The container is started without a log size limit, and Docker's default json-file driver is unbounded, so one killed bench run leaves a container filling the disk.

Fix, three layers:

  1. Test (branch stream, after fix-stream). Start every test and benchmark container with --log-opt max-size=… --log-opt max-file=1 (or --log-driver none where the test reads logs through the engine API only; check that the logs path still works), with --rm, and with a label such as infraternal.test=<run id>. Before each suite, sweep stale containers carrying the test label that are older than the run. Never touch containers labelled infraternal.demo=1.
  2. VM. provision-dev-vm writes /etc/docker/daemon.json with "log-driver": "json-file", "log-opts": {"max-size": "50m", "max-file": "2"}. This needs a Docker restart, which is done when no job is using Docker.
  3. Stopgap, live now. A root systemd timer, docker-log-guard.timer, truncates any container json log over 1 GiB every 30 s. Remove it once layer 2 lands.

Tracked as part of step 11 (the stream), with the provisioning change in its own small commit.

**Incident (2026-09-22, about 20:53–20:54):** the dev VM's root disk (`/`, where `/var/lib/docker` lives) filled to 100%. The owner's AI agent found and removed a leaked container named `flamboyant_yellow`. dockerd logged about 22,700 `no space left on device` errors while writing that container's json-file log, whose content was an endless `xxxx…`. **Cause.** `crates/server/tests/stream_e2e.rs` (`stream_priority_and_memory_smoke`, branch `stream`) starts a Docker container running `SATURATING_LOG_COMMAND` through `ContainerGuard`, which removes it in `Drop`. `Drop` does not run when the test process is killed (a timeout, SIGKILL, or a panic with `abort`). The container is started without a log size limit, and Docker's default `json-file` driver is unbounded, so one killed bench run leaves a container filling the disk. **Fix, three layers:** 1. **Test (branch `stream`, after `fix-stream`).** Start every test and benchmark container with `--log-opt max-size=… --log-opt max-file=1` (or `--log-driver none` where the test reads logs through the engine API only; check that the logs path still works), with `--rm`, and with a label such as `infraternal.test=<run id>`. Before each suite, sweep stale containers carrying the test label that are older than the run. Never touch containers labelled `infraternal.demo=1`. 2. **VM.** `provision-dev-vm` writes `/etc/docker/daemon.json` with `"log-driver": "json-file", "log-opts": {"max-size": "50m", "max-file": "2"}`. This needs a Docker restart, which is done when no job is using Docker. 3. **Stopgap, live now.** A root systemd timer, `docker-log-guard.timer`, truncates any container json log over 1 GiB every 30 s. Remove it once layer 2 lands. Tracked as part of step 11 (the stream), with the provisioning change in its own small commit.
Author
Owner

Disk incident evidence for #19: the archived fix-stream job log captured du -x -d3 /var/lib while / was full. The leaked flamboyant_yalow container (6cb572c1a80b...) occupied 28,048,968 KiB (26.75 GiB) under /var/lib/docker/containers/6cb572c1a80b837ac945acc045efb1cdd3e4d07483d4e3a416c4e558b02ffb4d/; dockerd's error names its 6cb572c1a80b837ac945acc045efb1cdd3e4d07483d4e3a416c4e558b02ffb4d-json.log as the full-disk write path. Three other benchmark container directories occupied 26,337,736 KiB, 30,298,548 KiB, and 1,064,268 KiB. Together /var/lib/docker/containers was 85,749,580 KiB (81.78 GiB). These were removed in the previous run; the present directory is only 72 KiB. The current change bounds each test fixture's logs and sweeps stale infraternal.test containers without touching infraternal.demo=1. scripts/provision-dev-vm now installs Docker daemon json-file defaults of 50m × 2; the live Docker daemon restart waits until no other job is using it.

Disk incident evidence for #19: the archived fix-stream job log captured `du -x -d3 /var/lib` while `/` was full. The leaked `flamboyant_yalow` container (`6cb572c1a80b...`) occupied 28,048,968 KiB (26.75 GiB) under `/var/lib/docker/containers/6cb572c1a80b837ac945acc045efb1cdd3e4d07483d4e3a416c4e558b02ffb4d/`; dockerd's error names its `6cb572c1a80b837ac945acc045efb1cdd3e4d07483d4e3a416c4e558b02ffb4d-json.log` as the full-disk write path. Three other benchmark container directories occupied 26,337,736 KiB, 30,298,548 KiB, and 1,064,268 KiB. Together `/var/lib/docker/containers` was 85,749,580 KiB (81.78 GiB). These were removed in the previous run; the present directory is only 72 KiB. The current change bounds each test fixture's logs and sweeps stale `infraternal.test` containers without touching `infraternal.demo=1`. `scripts/provision-dev-vm` now installs Docker daemon json-file defaults of 50m × 2; the live Docker daemon restart waits until no other job is using it.
Author
Owner

#19 mitigation is complete in step 11 final fix kayg/infraternal#7, branch stream, head 976323658df9f6f65c025b6a7de0d60cb82ff465 (no push; issue remains open for the orchestrator). The earlier comment here records the archived incident measurement: flamboyant_yalow's /var/lib/docker/containers/6cb572c1a80b837ac945acc045efb1cdd3e4d07483d4e3a416c4e558b02ffb4d/ was 28,048,968 KiB (26.75 GiB), with dockerd naming its *-json.log as the full-disk write path; four fixture directories totalled 85,749,580 KiB (81.78 GiB).

Every fixture container in crates/server/tests/stream_e2e.rs and crates/engine/tests now has infraternal.test, a 10 MiB single-file log bound (Docker json-file uses max-file=1; Podman uses its bounded k8s-file driver), and auto-remove where stopped-container inspection is not part of the test. Both suites sweep labelled containers older than one hour at start and explicitly skip infraternal.demo=1. The new server authorization regression's Docker and rootless Podman fixtures are also bounded, labelled, and auto-removed. scripts/provision-dev-vm now installs Docker daemon json-file defaults of 50m × 2. With no running Docker containers after the green gates, I applied that config, restarted Docker, and stopped the transient docker-log-guard.timer. A new probe container's actual inspection returned:

{"Type":"json-file","Config":{"max-file":"2","max-size":"50m"}}

The timer is inactive; /var/lib/docker/containers is 76 KiB and / is 18% used. Final-head scripts/verify fast, integration, and bench all passed; their verbatim outputs and the browser numbers are in #7. Docker documents the daemon and per-container log rotation settings: https://docs.docker.com/engine/logging/drivers/json-file/ .

#19 mitigation is complete in step 11 final fix `kayg/infraternal#7`, branch `stream`, head `976323658df9f6f65c025b6a7de0d60cb82ff465` (no push; issue remains open for the orchestrator). The earlier comment here records the archived incident measurement: `flamboyant_yalow`'s `/var/lib/docker/containers/6cb572c1a80b837ac945acc045efb1cdd3e4d07483d4e3a416c4e558b02ffb4d/` was 28,048,968 KiB (26.75 GiB), with dockerd naming its `*-json.log` as the full-disk write path; four fixture directories totalled 85,749,580 KiB (81.78 GiB). Every fixture container in `crates/server/tests/stream_e2e.rs` and `crates/engine/tests` now has `infraternal.test`, a 10 MiB single-file log bound (Docker `json-file` uses `max-file=1`; Podman uses its bounded `k8s-file` driver), and auto-remove where stopped-container inspection is not part of the test. Both suites sweep labelled containers older than one hour at start and explicitly skip `infraternal.demo=1`. The new server authorization regression's Docker and rootless Podman fixtures are also bounded, labelled, and auto-removed. `scripts/provision-dev-vm` now installs Docker daemon `json-file` defaults of 50m × 2. With no running Docker containers after the green gates, I applied that config, restarted Docker, and stopped the transient `docker-log-guard.timer`. A new probe container's actual inspection returned: ``` {"Type":"json-file","Config":{"max-file":"2","max-size":"50m"}} ``` The timer is inactive; `/var/lib/docker/containers` is 76 KiB and `/` is 18% used. Final-head `scripts/verify fast`, `integration`, and `bench` all passed; their verbatim outputs and the browser numbers are in #7. Docker documents the daemon and per-container log rotation settings: https://docs.docker.com/engine/logging/drivers/json-file/ .
Author
Owner

Leak found at 11:45 IST on 2026-09-25: infraternal-browser-logs-podman-1538784-1790264828668 (label infraternal.test=true, no run_id) had been running for 14 h after its owning browser-check process (pid 1538784) died. Its log was capped at 10 MB, so the impact was low, and I removed it. The browser-check Podman log fixture needs the same run-id label and cleanup on abnormal exit that the Rust tests got. Label: later.

Leak found at 11:45 IST on 2026-09-25: `infraternal-browser-logs-podman-1538784-1790264828668` (label `infraternal.test=true`, no `run_id`) had been running for 14 h after its owning browser-check process (pid 1538784) died. Its log was capped at 10 MB, so the impact was low, and I removed it. The browser-check Podman log fixture needs the same run-id label and cleanup on abnormal exit that the Rust tests got. Label: later.
Author
Owner

On 2026-09-25 the dev VM had 186 containers, mostly infraternal-bench-* busybox containers left in the Created state by benchmark runs, visible in the pages-shadcn screenshots. The benchmarks need run-id labels and cleanup on every exit path, the same fix the Rust integration tests got in #19. Label: later.

On 2026-09-25 the dev VM had 186 containers, mostly `infraternal-bench-*` busybox containers left in the Created state by benchmark runs, visible in the pages-shadcn screenshots. The benchmarks need run-id labels and cleanup on every exit path, the same fix the Rust integration tests got in #19. Label: later.
Author
Owner

Starting fixture hygiene on branch lp-fixtures, based on dev at 6f6fd896214f05d9ef19a47e43fb8be2561ab626. I am mapping benchmark container creation and cleanup helpers before editing; VM cleanup will be restricted to the requested names and infraternal.test labels, with infraternal.demo=1 excluded.

Starting fixture hygiene on branch `lp-fixtures`, based on `dev` at `6f6fd896214f05d9ef19a47e43fb8be2561ab626`. I am mapping benchmark container creation and cleanup helpers before editing; VM cleanup will be restricted to the requested names and `infraternal.test` labels, with `infraternal.demo=1` excluded.
Author
Owner

Finding: the real-container benchmarks are in crates/engine/benches/engine.rs, crates/infraternal/benches/containers.rs, and crates/infraternal/benches/stream.rs. Their existing labels are benchmark-specific (infraternal.bench*) and do not include the requested infraternal.test=bench plus infraternal.test.run_id=<unique> pair. Docker is invoked directly from Rust in those paths, so it bypasses the VM's required systemd-run --user --wait --pipe -q docker ... access path. The engine fixture already has an RAII resource holder, while the other two have guards that need to be registered before container creation can panic.

Finding: the real-container benchmarks are in `crates/engine/benches/engine.rs`, `crates/infraternal/benches/containers.rs`, and `crates/infraternal/benches/stream.rs`. Their existing labels are benchmark-specific (`infraternal.bench*`) and do not include the requested `infraternal.test=bench` plus `infraternal.test.run_id=<unique>` pair. Docker is invoked directly from Rust in those paths, so it bypasses the VM's required `systemd-run --user --wait --pipe -q docker ...` access path. The engine fixture already has an RAII resource holder, while the other two have guards that need to be registered before container creation can panic.
Author
Owner

Finding/decision: a read-only inspect on this VM returned Docker .Created as RFC3339 and Podman .Created as 2026-09-24 06:36:37.752245553 +0200 CEST. The shared sweep parser handles both forms, batch-inspects each runtime's labeled containers, and excludes infraternal.demo=1 before removal. Docker and Podman document inspect --format as a Go-template interface: https://docs.docker.com/reference/cli/docker/inspect/ and https://docs.podman.io/en/latest/markdown/podman-inspect.1.html. I added targeted parser and demo-exclusion tests; they are pending a clear verification slot.

Finding/decision: a read-only inspect on this VM returned Docker `.Created` as RFC3339 and Podman `.Created` as `2026-09-24 06:36:37.752245553 +0200 CEST`. The shared sweep parser handles both forms, batch-inspects each runtime's labeled containers, and excludes `infraternal.demo=1` before removal. Docker and Podman document `inspect --format` as a Go-template interface: https://docs.docker.com/reference/cli/docker/inspect/ and https://docs.podman.io/en/latest/markdown/podman-inspect.1.html. I added targeted parser and demo-exclusion tests; they are pending a clear verification slot.
Author
Owner

Additional fixture finding: scripts/verify bench runs the ignored stream_e2e fixture tests, including stream_priority_and_memory_smoke; their ContainerGuard was outside benches/, used direct runtime commands, and labeled infraternal.test=<suffix> plus infraternal.test.run=<suffix>. I updated that bench fixture helper too: one process-unique run ID, the required test=bench and test.run_id labels, the shared Docker/Podman wrapper, early RAII ownership by the unique name, and one signal cleanup guard for the process-wide fixture run.

Additional fixture finding: `scripts/verify bench` runs the ignored `stream_e2e` fixture tests, including `stream_priority_and_memory_smoke`; their `ContainerGuard` was outside `benches/`, used direct runtime commands, and labeled `infraternal.test=<suffix>` plus `infraternal.test.run=<suffix>`. I updated that bench fixture helper too: one process-unique run ID, the required `test=bench` and `test.run_id` labels, the shared Docker/Podman wrapper, early RAII ownership by the unique name, and one signal cleanup guard for the process-wide fixture run.
Author
Owner

Signal cleanup decision: runtime helper subprocesses now start in their own Unix process group. This prevents terminal SIGINT from interrupting an in-flight docker/systemd-run create before the benchmark's handler can wait for it and clean up by run ID. Rust documents CommandExt::process_group(0) as stable since 1.64 and gives Ctrl-C isolation as its example: https://doc.rust-lang.org/std/os/unix/process/trait.CommandExt.html#tymethod.process_group

Signal cleanup decision: runtime helper subprocesses now start in their own Unix process group. This prevents terminal SIGINT from interrupting an in-flight `docker`/`systemd-run` create before the benchmark's handler can wait for it and clean up by run ID. Rust documents `CommandExt::process_group(0)` as stable since 1.64 and gives Ctrl-C isolation as its example: https://doc.rust-lang.org/std/os/unix/process/trait.CommandExt.html#tymethod.process_group
Author
Owner

Review finding: Criterion's stream benchmark runs local and remote contexts sequentially in one process. A signal worker detached from the local context would still be alive when the remote context starts, so multiple workers could race to exit the process after cleaning only their own run ID. The stream benchmark now installs one process-level signal guard and shares its run ID across both contexts; normal RAII cleanup still removes each context as it finishes. Commit: 6a3c448.

Review finding: Criterion's stream benchmark runs local and remote contexts sequentially in one process. A signal worker detached from the local context would still be alive when the remote context starts, so multiple workers could race to exit the process after cleaning only their own run ID. The stream benchmark now installs one process-level signal guard and shares its run ID across both contexts; normal RAII cleanup still removes each context as it finishes. Commit: 6a3c448.
Author
Owner

Resumed on GPT 6.1 Sol. Branch lp-fixtures, base 6f6fd89621, current head a6beba7450. Worktree clean at restart; reviewing committed implementation and completing verification and the authorized leftover-container cleanup. Waiting for another scripts/verify fast process and load5 > 6 before starting gates or cleanup.

Resumed on GPT 6.1 Sol. Branch lp-fixtures, base 6f6fd896214f05d9ef19a47e43fb8be2561ab626, current head a6beba745058. Worktree clean at restart; reviewing committed implementation and completing verification and the authorized leftover-container cleanup. Waiting for another scripts/verify fast process and load5 > 6 before starting gates or cleanup.
Author
Owner

Continuation review found missing type annotations on eligibility-test closures and unchecked nonzero rm status in the shared stream benchmark fixture destructor; fixed in 3787a94. Added ignored real Docker/Podman subprocess regression covering normal exit, intentional panic, SIGINT, SIGTERM, and both signals while create_output still owns an in-flight creation permit. Static rustfmt and git diff --check pass. Runtime tests and final fast/merge gates remain pending another verification run and load5 > 6.

Continuation review found missing type annotations on eligibility-test closures and unchecked nonzero rm status in the shared stream benchmark fixture destructor; fixed in 3787a94. Added ignored real Docker/Podman subprocess regression covering normal exit, intentional panic, SIGINT, SIGTERM, and both signals while create_output still owns an in-flight creation permit. Static rustfmt and git diff --check pass. Runtime tests and final fast/merge gates remain pending another verification run and load5 > 6.
Author
Owner

Reviewed panic behavior against the workspace release profile (panic = "abort"). Cargo documents that tests and benchmarks ignore that panic setting and use unwinding for the test harness, so the benchmark RAII guards remain the panic cleanup path; no production panic-profile change is needed. Source: https://doc.rust-lang.org/cargo/reference/profiles.html#panic . The new real-runtime subprocess test exercises actual panic unwinding and requires both engine inventories to be empty for its exact run ID afterward.

Reviewed panic behavior against the workspace release profile (`panic = "abort"`). Cargo documents that tests and benchmarks ignore that panic setting and use unwinding for the test harness, so the benchmark RAII guards remain the panic cleanup path; no production panic-profile change is needed. Source: https://doc.rust-lang.org/cargo/reference/profiles.html#panic . The new real-runtime subprocess test exercises actual panic unwinding and requires both engine inventories to be empty for its exact run ID afterward.
Author
Owner

Helper unit tests compiled directly against this worktree’s already-built dependencies using rustc --deny warnings; no full Cargo build or gate was started while other verification jobs are active. Found time 0.3.55 deprecation and replaced parse() with its behavior-equivalent parse_borrowed::<1>() (7d08463). Official equivalence: https://docs.rs/time/latest/time/format_description/fn.parse.html .

Exact targeted output:


running 4 tests
test tests::parses_docker_rfc3339_created_time ... ok
test tests::run_cleanup_requires_exact_bench_run_and_protects_demo ... ok
test tests::stale_sweep_requires_bench_label_and_protects_demo ... ok
test tests::parses_podman_local_created_time ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Real engine exit-path tests and final scripts/verify fast and merge remain pending an idle verification slot and load5 <= 6.

Helper unit tests compiled directly against this worktree’s already-built dependencies using rustc --deny warnings; no full Cargo build or gate was started while other verification jobs are active. Found time 0.3.55 deprecation and replaced parse() with its behavior-equivalent parse_borrowed::<1>() (7d08463). Official equivalence: https://docs.rs/time/latest/time/format_description/fn.parse.html . Exact targeted output: ```text running 4 tests test tests::parses_docker_rfc3339_created_time ... ok test tests::run_cleanup_requires_exact_bench_run_and_protects_demo ... ok test tests::stale_sweep_requires_bench_label_and_protects_demo ... ok test tests::parses_podman_local_created_time ... ok test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` Real engine exit-path tests and final scripts/verify fast and merge remain pending an idle verification slot and load5 <= 6.
Author
Owner

Runtime verification/cleanup scheduling status at 19:57 UTC: lp-fixtures has waited since this continuation began at 19:33 UTC. Other scripts/verify fast processes remain active and load5 is 13.22, above this low-priority job’s limit of 6. No full Cargo build/gate or container deletion has been started by this continuation. Head a417f46; standalone helper unit tests (4 passed) and standalone pedantic Clippy with warnings denied pass; the real Docker/Podman exit-path subprocess test and final fast/merge gates remain queued. The exact one-time cleanup inventory is prepared and will be refreshed when the VM is idle.

Runtime verification/cleanup scheduling status at 19:57 UTC: lp-fixtures has waited since this continuation began at 19:33 UTC. Other scripts/verify fast processes remain active and load5 is 13.22, above this low-priority job’s limit of 6. No full Cargo build/gate or container deletion has been started by this continuation. Head a417f46; standalone helper unit tests (4 passed) and standalone pedantic Clippy with warnings denied pass; the real Docker/Podman exit-path subprocess test and final fast/merge gates remain queued. The exact one-time cleanup inventory is prepared and will be refreshed when the VM is idle.
Author
Owner

One-time cleanup phase 1: only authorized names/test labels created more than 24 hours ago. Recent fixtures of active jobs are preserved. Every infraternal.demo=1 container is protected.

docker: 64 containers before cleanup; 62 historical leftovers selected; 0 demo containers protected.

28219f93ed3b285f9822ff30c7827bb8add5f36c30e55de1ad969e4745496078 infraternal-bench-1790224597683388669-docker-61
d45d9f395710ce0deac8319e01adfb81b1e00dcbf25e05575ae3cd141e99f46e infraternal-bench-1790224597683388669-docker-60
1df9d69aaa8ee66f0fcfb07f12e8722e559454afb9b1d5e5496aa6f7fdd1ad59 infraternal-bench-1790224597683388669-docker-59
4775f55e1e65297cd2e13522daf9f747c34beb13842c371de210c30fe4c535fd infraternal-bench-1790224597683388669-docker-58
6c56d116cd524bcdb5524dfc56108ac6daa00b5577af43326efe6c8a7c7c0b1b infraternal-bench-1790224597683388669-docker-57
ee601cbd74a3fb73e28a4ff43e6a63d0b2753e355afe0c4403e87bc8bbbd2b7c infraternal-bench-1790224597683388669-docker-56
7d2f54ada3f10f536180c682b6bba891697a28c15284629edbe916486afe1f2c infraternal-bench-1790224597683388669-docker-55
6208737b7aa86eae489dc47be1b994c5f194566e5ef0cbfd864c9c50d811fed5 infraternal-bench-1790224597683388669-docker-54
a183b4de1c8e685898ebab66bcbc19b9e9f3bda1b8d3a23320e21ae2f530fe10 infraternal-bench-1790224597683388669-docker-53
d973c7ab0e89d75efdb012b13e8c10c51a7b0891c38e996b441016848f657a65 infraternal-bench-1790224597683388669-docker-52
19efa15841f45e1bb66b58cd000dbee3c0853a99304fab79bd6ea80e5bf7a22b infraternal-bench-1790224597683388669-docker-51
e3e236428048dda772bb2af9569b166b7a0dc2a8163c9d07bfda7d1efe0faa3a infraternal-bench-1790224597683388669-docker-50
b31d5e8c08b97fb93b22cd59340c3d526d0abf179cd7113816316a2a1c4bdf8d infraternal-bench-1790224597683388669-docker-49
528136c6fdb39651afe5b27849706d1d8c46fb3c04fc6a5f2a3e40a4c3467ccd infraternal-bench-1790224597683388669-docker-48
3bd5152ece2c17acbb588924a66fd0f9fd3fd0e1a4b39131413432fa280fae2f infraternal-bench-1790224597683388669-docker-47
939b3491231a95bbcec9be1f9078b4d9bd1d1e3df51164ed4cec77335fbbdeb1 infraternal-bench-1790224597683388669-docker-46
afa421b7a1f60b861d3378d87aca38dbb8ef76ccf8b20fa5f47effb65aaa221b infraternal-bench-1790224597683388669-docker-45
04756fc7c39a72fdef103def9eb35f829f111f3e6330680818a6f2c577ecc8ff infraternal-bench-1790224597683388669-docker-44
ffdc98bb696396bbf0e71ba391fc6bbc0a999a32ab950f69f184a06d11071400 infraternal-bench-1790224597683388669-docker-43
27334ed0cdef84f7460ce78ca1cf9dd3d39d1c9b928df9b275b6a351a1d1877e infraternal-bench-1790224597683388669-docker-42
2efd187b350314555e3096d0dc6a81e6a72a80c4eb7be5361737bf9225155dbc infraternal-bench-1790224597683388669-docker-41
9d8216d5dd6c2b220fd47c3bc03aa4fe8806059982fa24cb9b2a1e1f1a55b0ea infraternal-bench-1790224597683388669-docker-40
4e7e15b6dc0309f19061ba7be3efa184c70b93dc96d873dcfa547c14670cadce infraternal-bench-1790224597683388669-docker-39
2beabb38a3b936f6e9b64114b647514b785fc99066cf822ba59e49ef83847431 infraternal-bench-1790224597683388669-docker-38
f99c76687c85aa019605bc8f109e776e04f7fdb7e5b53c59e093d80f5b7cc88f infraternal-bench-1790224597683388669-docker-37
5446304c38e26d88fd6dcfb853726eecde16f97d7dbb750435fe3d2b49ab7ae1 infraternal-bench-1790224597683388669-docker-36
9386cf00fce2f4ef670569045e6dee00494e4b9112eb46af4ecb385a4eddcd4c infraternal-bench-1790224597683388669-docker-35
ea8ca05f2e7e3d5e98102403bddacc2db4d0c7e4d75e3676a476002cf0b672bd infraternal-bench-1790224597683388669-docker-34
82ede145a8f0eb1991c5d7bae6e3baccfd778502632e5ecb2e6b98c35a700f55 infraternal-bench-1790224597683388669-docker-33
33bfc05d44d54f15b73c361f626d9002a2bf752f56c169b38b30aa438a01367c infraternal-bench-1790224597683388669-docker-32
c6efac6646a3a3fd79275f776c1b520fdc26812fed84c438bd8ee079bc49a40b infraternal-bench-1790224597683388669-docker-31
db61950139a4a25d6934d425bf24d0dab7b8c8ac8d77499209ce5a928bf1e5e8 infraternal-bench-1790224597683388669-docker-30
374c62f2b902d6f3af77ac6cb3a432a13d145081de2b995b74b1019d18705775 infraternal-bench-1790224597683388669-docker-29
a62072ab6226ea8379e5af07e5f70048d3b9fde4fcc209ef7102f057c64762de infraternal-bench-1790224597683388669-docker-28
313a9cb5d79df7ecdb2feef9c73a9cc86db2942a6f4f299d1b5c5aa1d0470bb9 infraternal-bench-1790224597683388669-docker-27
6ba1f6c9cfb49933cf8da5e4234087cd4a28a98e33231427834400e61afe6a67 infraternal-bench-1790224597683388669-docker-26
8a1b220f7fcdcfe3773bcbf36719ff7055093386959a75771cde7c0fae8751db infraternal-bench-1790224597683388669-docker-25
e0ecfd8627f37c77189aec133a7e523e6d2d8cc47b1ed21cddf0629a9a27893c infraternal-bench-1790224597683388669-docker-24
d0d98c017da33f8c9d6bf0ced8c49ce76477d6403df490fbb5ce440d29e2fb47 infraternal-bench-1790224597683388669-docker-23
b6d5de53b45c6d5d265cc86f63a3c78f0cf8c25c58e7d08424e3ff6f105bf7f5 infraternal-bench-1790224597683388669-docker-22
1a291396f4857603cf68ef3d322ab0a1897fdd2e72a448b9b1915917a53e8e10 infraternal-bench-1790224597683388669-docker-21
c059dd6035515a9e93fc9956ab4e1322fbd23d082b58fe2644e508f280375a9d infraternal-bench-1790224597683388669-docker-20
1bcedcaa11d6133eed79d031db2d6291b4abc121147819e37df5eb5152dbea52 infraternal-bench-1790224597683388669-docker-19
43017f012d4f28d3703eeff96121a8076fbc2b7588b836d897159b3d447e2ad9 infraternal-bench-1790224597683388669-docker-18
73ce3c07c3f0953f9993402a13a6e2823f5395718f9e4c24102536f8a0b49814 infraternal-bench-1790224597683388669-docker-17
a95d1e35e13fa74c36ecaab5e9d35deedd52a4bcba1245e16c97c8af217a342f infraternal-bench-1790224597683388669-docker-16
f783dded3489f3091eff804f7e5f8a5f8fb1a247f20334c403c68b64d0be82f5 infraternal-bench-1790224597683388669-docker-15
79249b560201705f65b4868f075730aa002b05cefcfcc0864439a6860bcff3ea infraternal-bench-1790224597683388669-docker-14
709495e603c956ee706d628f90aacdeb59da3524e96ee094760bf05ddec3a9ca infraternal-bench-1790224597683388669-docker-13
1de160cf3a2d767d99853d561c9465b54d31ea798b062cdd8e204867a9d20ca2 infraternal-bench-1790224597683388669-docker-12
40df07d29747e3dfacd51465fc32aefed6c93324266ba08e21622df4b3a2fe98 infraternal-bench-1790224597683388669-docker-11
eb36c405e0ef494db458e92586086d59e69c8fc5404a9a4e92f5c4024fcc0320 infraternal-bench-1790224597683388669-docker-10
d6d7ba6349dd26c0b3d275879fb0975a190ba4d8db5e35e1f35af90a4a4fce3a infraternal-bench-1790224597683388669-docker-9
a93ec87de4a12e0e2de8e0cf6a38396a32f1b77d473226eb9c098ccc94a3a64c infraternal-bench-1790224597683388669-docker-8
b9930c21c00568e9c7140efc079b692f1c3b136cec44470aa3a2874075754f6e infraternal-bench-1790224597683388669-docker-7
408fd34804ec7ae7b0cb0ff9cd41c4ed4131a93f947347ef1464e3aaaca3d0fb infraternal-bench-1790224597683388669-docker-6
45e4ff24c00bd1029786ab021b477a1029ae0d8ce5d49ffd5a170c7078a79abe infraternal-bench-1790224597683388669-docker-5
72d7845f00693ade8aaa98779a2b66f706a3e365e941dce325486af6af1ae2df infraternal-bench-1790224597683388669-docker-4
8580c949729bea91db1bc76c0e70cdafcf116e5961bdbc8e768f74db02997df8 infraternal-bench-1790224597683388669-docker-3
6e00e0ab8514b7852ac11ca35759d495a7084a9856fba98228f11d3a37b7621c infraternal-bench-1790224597683388669-docker-2
c646f1ed15b0c1b33a894220dfc1c5ccb6db690fb3b98bc848b6b5f9072ddb0d infraternal-bench-1790224597683388669-docker-1
2dddb61a49c1a86fc55717d405d510f78694beb78a5036caab4aa2648f5bb4fa infraternal-bench-1790224597683388669-docker-0

docker: removed 62 containers; 6 remain; all 0 original demo containers remain.

podman: 110 containers before cleanup; 107 historical leftovers selected; 0 demo containers protected.

4bc6aed1ca4ef30ed5d627e32ffdcf936704cf3b2c3dca22573582390226104a infraternal-bench-1790224597683388669-podman-0
01c865495e43069ab16e0d4bc12620967c0b2dd79ee8a8e15c724634cbba1ef6 infraternal-bench-1790224597683388669-podman-1
af7e5b091715705a0af104808d6876306e1eace27c2d262600dc41b4897fa2a6 infraternal-bench-1790224597683388669-podman-2
c03c4f75ca00ebea9ab6e445e2d04b277458cafb1195d0de7c2d06e99775212c infraternal-bench-1790224597683388669-podman-3
36eb082f5e8da30c722c1772c39c2d4a6d8c3a90297e7be0091b2aaadb11be98 infraternal-bench-1790224597683388669-podman-4
597b6f48ba9e04b878eaa6bbbb45ed563a0e36959af0e010945acb9b07e9c197 infraternal-bench-1790224597683388669-podman-5
bb6eb1ee8d66496a77091ca6321b8d5cd05e57e5385d09e70e33ade36b1c2749 infraternal-bench-1790224597683388669-podman-6
b7d1deb0f2fdb5d24a2b03546bc6d7cffd8686dcba5a559045524f01a267b9c7 infraternal-bench-1790224597683388669-podman-7
8b8c14bcb5b38bfcb7808e68142c4e5d78fca2cd6bcb2f16e5d0ed9b28ef6890 infraternal-bench-1790224597683388669-podman-8
84009d0ca1876dd508c2dfc61b39dc484d7222047d6c37ba1375a524f099178f infraternal-bench-1790224597683388669-podman-9
fafc41daf9dd042ec6f8a4f71af1732238c6b120f024b23d8315102443bc09e4 infraternal-bench-1790224597683388669-podman-10
168cd8afecd3224ec3acb6b2dcced3b4b19c0133544bdff576965eb667dc4f9f infraternal-bench-1790224597683388669-podman-11
24b7abd6dadff71aeecb54056039040aebaa611a7dba68d13e573726d91c2850 infraternal-bench-1790224597683388669-podman-12
21086bad93d99b612ccf81175bfe980bdcf8da5dee36a8959f1ee465c5003ca2 infraternal-bench-1790224597683388669-podman-13
33ce8912230f5933e6968e61a148ed4315f9d3300863c6f48125ab3c31c9702c infraternal-bench-1790224597683388669-podman-14
00a7ad02955a7acc6cf14ea7e6d9d7e8871df548b3cf5c7cd2dc91ebbdb8ff76 infraternal-bench-1790224597683388669-podman-15
d0ebc6e2020c9ce3dfc2d937954bba4c9b521911b96e01654651e9643cf5ba99 infraternal-bench-1790224597683388669-podman-16
2ad494d35f0f37af8144ebf0f01ecbdea3469cb9ad1b001948671875e38ba459 infraternal-bench-1790224597683388669-podman-17
9fad9041c6c7c408752708ab6b31eea9191ed03e3edf02b8f7a31009f8c36e14 infraternal-bench-1790224597683388669-podman-18
16e1a81057bd4cdcd3cf90bcf22b765f0c3511d93b08fcf5a88154ab1def9747 infraternal-bench-1790224597683388669-podman-19
79a512a6a18978821a4b7ae9fb44eb861cf4c7e1eb3ce8c9f1e7e63758f6ff42 infraternal-bench-1790224597683388669-podman-20
88e1b454dbe438225ee2931db46917331841c79bd18fada65e6d5532d8a8e508 infraternal-bench-1790224597683388669-podman-21
c8110099a01efb99db8b933dea81f56140ce4bc4cf1007b8cfb6c7343c3e60dd infraternal-bench-1790224597683388669-podman-22
eef05e1d40001f08525869134768aea420132b990aa6287769cd1bf7bd04af9b infraternal-bench-1790224597683388669-podman-23
544cf91ca24439abc9fdd4055e9fad11c028d1615e51c59f4c8602fa745f1e0a infraternal-bench-1790224597683388669-podman-24
cc3e2c15d9929378a9cf924ac6f49123f4b0949834480e4799be0b1af13cf82a infraternal-bench-1790224597683388669-podman-25
6ce7c451afafb3d47a5b9ec9a09f70fd19ab2381abe7bcdc462a77a636ef6c15 infraternal-bench-1790224597683388669-podman-26
c6e5ce390166ab9a6e0f60a6deb0cb59cca43a9c7e0f10095dcc065bd9f055d1 infraternal-bench-1790224597683388669-podman-27
e8aaad1ae75769289bd5780b627357955d7044a2b74e7d212bef4d7ae8c4c525 infraternal-bench-1790224597683388669-podman-28
c48c3369ae77a11ca4175dad42e0233553dc4a6aa23eda2f86fea6378664b95b infraternal-bench-1790224597683388669-podman-29
47475ff3954df04b8b9be91cd2a9aedba8ca20d11f7089911427b76708f9058a infraternal-bench-1790224597683388669-podman-30
b6b63915fd2917afd0e802ac661da0cdf22a7850e18a497bbe8fd078748d9d52 infraternal-bench-1790224597683388669-podman-31
6867de6d5fd195bbeca5834fc4a1c9a9cb18dab51b9d04a3ad8083ed052895fe infraternal-bench-1790224597683388669-podman-32
b5e2fd06f876808a6be2daba3fcbf195f062d8eb5ca268dabaea113624e951b3 infraternal-bench-1790224597683388669-podman-33
5d114cc8cba18ebf846585932d28a5fc30f5861358a9b38f975b6824e8ab20ea infraternal-bench-1790224597683388669-podman-34
21545125b90eb50d37ef330a69051ce9d217448123d881f39317fb4b02cdeb1e infraternal-bench-1790224597683388669-podman-35
c1208986ebf5a0a80adda7ea175992d7ede0efc333aa38f4e4133ace0d8c25a0 infraternal-bench-1790224597683388669-podman-36
bd1431fa166b81cfdf3f357764f6262151ae4535b68a882a23f4d2003589e9e2 infraternal-bench-1790224597683388669-podman-37
51074c9e69739daed300c605ef6b5f0f0890d3e84b7f7a60698ce8b2b92df75b infraternal-bench-1790224597683388669-podman-38
6c08b6ca97fc6cdbf072428bd20a30581eb60d3f34e7efec3823a7502bd09823 infraternal-bench-1790224597683388669-podman-39
7562c9362e38eb5797bba190c96cb52ac81de6567f9f432b025033ebac87bdff infraternal-bench-1790224597683388669-podman-40
cb401db8c636ad1ce0401d7c38f83af9e64c45aa9431b87420fdcd50809d8aed infraternal-bench-1790224597683388669-podman-41
ad10db0ddc08834f6cc6b6728e2e92c10fca1ff456375cc0f0c264d2f4a91576 infraternal-bench-1790224597683388669-podman-42
a6c45350351f93b63d26c3e44d8b2f80bbec12db22ed48cdb379b14d7fc959ed infraternal-bench-1790224597683388669-podman-43
5800e8d157607569d0e856f39aa08120c8fd69dc6cc835fd9aa6966299e68472 infraternal-bench-1790224597683388669-podman-44
69681a92bc37a95abd39f77bd09cd5aa2ff28dd788f9f0aa3564ec6657c05adb infraternal-bench-1790224597683388669-podman-45
56331a96783260b93dfe0be4f38a951d2f9a01d47e52405f7e2e38532108e990 infraternal-bench-1790224597683388669-podman-46
ba7dded60645a31525de03ee5309e192d719f3d4228c905afa781647831e811f infraternal-bench-1790224597683388669-podman-47
2b3850bfc16804a7e12cc088c4121b75059e62a9db82122c405b4b588207f251 infraternal-bench-1790224597683388669-podman-48
d99894aa4c55d036ee977b1b4dadbf89f7ff4c311cfba3256945956446208119 infraternal-bench-1790224597683388669-podman-49
d6982a01fa8f70dda536e8c2df30718c71de3eee79b465877261c80595f590e5 infraternal-bench-1790224597683388669-podman-50
f18bacda885ee21108f48294f05cfd525167a5352b4df4ec89d66294b19eae62 infraternal-bench-1790224597683388669-podman-51
fc587f5612d82c646f2ea7df17c64d21f4ecb309776643d6d9b3f296961a6a14 infraternal-bench-1790224597683388669-podman-52
600b5876a62c36445ba2407a267f06f0d3b5c236586ee0757ef6a095f3b01b49 infraternal-bench-1790224597683388669-podman-53
c622078128ab401a4b85e1194150685897194b3696ca0e1384843790ddc5b70a infraternal-bench-1790224597683388669-podman-54
5838730ab7d574a54bbf3cb93f1827567c93b5d155cea7d3a8ad5b6eda2a4667 infraternal-bench-1790224597683388669-podman-55
14fc2058784ab72597cdf1a3ceff50489b48026d8d7b17f4ccccde3ece9cc3e7 infraternal-bench-1790224597683388669-podman-56
4df3ada5f7851f97da896e115fa971c022b008affb5e3815aed31233f25b0082 infraternal-bench-1790224597683388669-podman-57
96cf514ebaa33d5460eafff12fa23ecd57912c10f653ccae2c470051545c8784 infraternal-bench-1790224597683388669-podman-58
2e87cb2bd9c9c1ab59937a265f110caaad60bec80c965b5ca18dd9d67d71ca45 infraternal-bench-1790224597683388669-podman-59
90fafa30d28b7c5debeff2616cdae72ea193e327a9d94889fb9ef67202729376 infraternal-bench-1790224597683388669-podman-60
acd0df1fa26e88129736859f3bfe28212fe38af01c28e2ecb4c6da74d5ae570f infraternal-bench-1790224597683388669-podman-61
ab0ba635d90e55f8c06ef38b5f8934f4a6830bdcb94f3088503c72b60157f822 infraternal-bench-1790224597683388669-podman-62
81b1bc18059fc51bbf6d9996d9dadb5642486240ab5986c6537ee629caa919b8 infraternal-bench-1790224597683388669-podman-63
e87e9e37a9d44551c761dd14cb0fa3a8216285baa0b6094f791fc9abfe07ac93 infraternal-bench-1790224597683388669-podman-64
778e442dfd247b0be1f036b758bce9ef0f0d29e4b05aa6f9f1ba3a33836c4bc0 infraternal-bench-1790224597683388669-podman-65
5b43851327660a243183d4bd51c5f93fc74c10a6e2a98ffdcff3d4a57f9e646e infraternal-bench-1790224597683388669-podman-66
4b7db54a28cc371bc4bacd0af290178759b4fb88ff6aad3c9429c8af99176201 infraternal-bench-1790224597683388669-podman-67
faebe889268fa7a0d5efd5cd4c0d314b46a108ccc601e6a1d993e0db8af0f127 infraternal-bench-1790224597683388669-podman-68
c84d543026ca3867232381f6ab2d146c6adac550dbf639837cf796819c01ef95 infraternal-bench-1790224597683388669-podman-69
8f058135dc4b13528e132cb5c9e915e93c2beac27c429b4d36466ced74bf7d18 infraternal-bench-1790224597683388669-podman-70
dfe56bf7e17b4b7e8460a8dd0fbfeaa037538c93ba4616cc8fd7406d14e26a0a infraternal-bench-1790224597683388669-podman-71
e88c850646c0cc84c1d21e2a79f7ea8fcefa08e989a4252ad6626743b7adb441 infraternal-bench-1790224597683388669-podman-72
3c0abfb395fc8275401956b94489b0c2eeb6ad032b27bf441f8b3a3131aba7d4 infraternal-bench-1790224597683388669-podman-73
4c7bb2a9d83c93313be2af5615cf1cbc102d2e4c5e8c68a305b03a68b7bad525 infraternal-bench-1790224597683388669-podman-74
8be31791c9f7c181ee95166d4fc3a8e9c81e83d6771be22a700c3d50efa76957 infraternal-bench-1790224597683388669-podman-75
9be9ef206ad49622487d126bf429f6a8c8b028b39d965599315db8a8688d21bc infraternal-bench-1790224597683388669-podman-76
eaec148682e11fd69022df976c3c38ff30e2ed248e070dbf7971fb36f7b01f82 infraternal-bench-1790224597683388669-podman-77
8b627e6ec25d9d51aa608c5c112d32636aa16fc2583c72df759b4cc6be9d8a21 infraternal-bench-1790224597683388669-podman-78
9cb3ac1901aa3f4314c60369b0ee1a43c23236de9aaca2d44d3d886a462c3ad8 infraternal-bench-1790224597683388669-podman-79
a9e5bcf1268be43c8767e06b8e4e25cadc6bd2046ca85677bcff89d372e2b259 infraternal-bench-1790224597683388669-podman-80
3b7c5632b1126122cfb82cea4336be968f45a3bc5e6cd919a3ee1f8d58c73758 infraternal-bench-1790224597683388669-podman-81
99c69c92cb180e56d6d455a79bc0554d85a416652617325ca6d67248087f745d infraternal-bench-1790224597683388669-podman-82
e5c23312dc39256577175c4bfc4ca9fd2c11e536b4cbcaed1eb50b296622ea06 infraternal-bench-1790224597683388669-podman-83
b74d5fefed8c4298792f43d9e2b863b718f767c78f8e3e16e8d6c9fbb285a8b5 infraternal-bench-1790224597683388669-podman-84
91c88133b0e8ec7f1e8a2e15c74f1be208ef8da87954bc614d72d3715a06156d infraternal-bench-1790224597683388669-podman-85
33b4bc59eda891f6fc083c4fb8af35c672c821f94421f495a2b1a490882d80fa infraternal-bench-1790224597683388669-podman-86
61da169fc7b78a7a539bb2117f69be292b06a5b4652b5bff07ba91280834e87c infraternal-bench-1790224597683388669-podman-87
98217200da393e16a2d504ccd5fc821779b9c9ae0e633cf09bd4571331fc2cf5 infraternal-bench-1790224597683388669-podman-88
699576275fa153a6eb142fb4cbdcb44fc2b903b26bbb8a340ab4889b0b22f79c infraternal-bench-1790224597683388669-podman-89
b62ff112c6e0084895882c590a4b8c072a36021438a4423d6c205ee5a2c6fbac infraternal-bench-1790224597683388669-podman-90
73390980cd4fdbe9728188cf023fa6844f59639d07f333babeb3514acf9be36e infraternal-bench-1790224597683388669-podman-91
c789dedfaf01fc22a5444a2ee43904d18daed89aac3afac52e080bece34d7c3f infraternal-bench-1790224597683388669-podman-92
c587435d5bc26f2e3c4f1ed34f27b1e3ffab2946b522ebf22861ae4e6653b17c infraternal-bench-1790224597683388669-podman-93
9257f7474ce8703d184d1cf6b5d4d17f881495778d487360a801534c3ab8157c infraternal-bench-1790224597683388669-podman-94
ab3f304b5899d083540a8e77f1a5896255e3c609eada1e408c812a21278d1214 infraternal-bench-1790224597683388669-podman-95
fe206401118bb35b35da7eba2d3140d07421fd7c990250a4357026474d1a5db2 infraternal-cli-mcp-podman-1790331531839
ebb9fd6cb9c75719489f37e0f7f1a3251c1b9120f2cda0981ad7d959a2ec3644 infraternal-cli-mcp-podman-logs-1790331531839
5cf1e69a7ec779113b041b6091dfbb6b25f61cf02aa8a9e9ded5b5717596124a infraternal-cli-mcp-podman-large-logs-1790331531839
fb66db12c00ab0c316dcf37e9c9f38c246b82f9c416fdce4ac000f1626834944 infraternal-browser-logs-podman-3464534-1790361046193
21de4bfd6e7e92ecdc943d41cb32448640109181b2fcce8625ca4d94378b8807 infraternal-browser-logs-podman-3479337-1790361252344
f2e5056881f1334a3224a9f04e80d5fbe4725b183104619e4374b7ac9e73f623 infraternal-browser-logs-podman-3494911-1790361369674
859497e18d7901a70e977a07cac606f85401b26dc2ed6df9ba4536092569993a infraternal-browser-logs-podman-3521090-1790361571044
8e37c997d08dff094b56edc6286a4696e04b6458b9561d10eb0d19a90ad5575a infraternal-browser-logs-podman-3538951-1790361738066
eae7fafdbf7cea0b4c45d37243f8b3c551c6d9a6a9b33d2277903eb23a19af26 infraternal-engine-podman-740075-1790425477060
d508803be2648954374abe0277b81213c3aec534f435acb074ab6acefbca878a infraternal-compose-member-podman-740075-1790425477060
fc99afb8ccc3074393fc4f311d86c29064892b3f3000d0fd3a703a8dfd61cfc9 infraternal-browser-logs-podman-318200-1790443108024

podman: removed 107 containers; 8 remain; all 0 original demo containers remain.

One-time cleanup phase 1: only authorized names/test labels created more than 24 hours ago. Recent fixtures of active jobs are preserved. Every infraternal.demo=1 container is protected. docker: 64 containers before cleanup; 62 historical leftovers selected; 0 demo containers protected. ```text 28219f93ed3b285f9822ff30c7827bb8add5f36c30e55de1ad969e4745496078 infraternal-bench-1790224597683388669-docker-61 d45d9f395710ce0deac8319e01adfb81b1e00dcbf25e05575ae3cd141e99f46e infraternal-bench-1790224597683388669-docker-60 1df9d69aaa8ee66f0fcfb07f12e8722e559454afb9b1d5e5496aa6f7fdd1ad59 infraternal-bench-1790224597683388669-docker-59 4775f55e1e65297cd2e13522daf9f747c34beb13842c371de210c30fe4c535fd infraternal-bench-1790224597683388669-docker-58 6c56d116cd524bcdb5524dfc56108ac6daa00b5577af43326efe6c8a7c7c0b1b infraternal-bench-1790224597683388669-docker-57 ee601cbd74a3fb73e28a4ff43e6a63d0b2753e355afe0c4403e87bc8bbbd2b7c infraternal-bench-1790224597683388669-docker-56 7d2f54ada3f10f536180c682b6bba891697a28c15284629edbe916486afe1f2c infraternal-bench-1790224597683388669-docker-55 6208737b7aa86eae489dc47be1b994c5f194566e5ef0cbfd864c9c50d811fed5 infraternal-bench-1790224597683388669-docker-54 a183b4de1c8e685898ebab66bcbc19b9e9f3bda1b8d3a23320e21ae2f530fe10 infraternal-bench-1790224597683388669-docker-53 d973c7ab0e89d75efdb012b13e8c10c51a7b0891c38e996b441016848f657a65 infraternal-bench-1790224597683388669-docker-52 19efa15841f45e1bb66b58cd000dbee3c0853a99304fab79bd6ea80e5bf7a22b infraternal-bench-1790224597683388669-docker-51 e3e236428048dda772bb2af9569b166b7a0dc2a8163c9d07bfda7d1efe0faa3a infraternal-bench-1790224597683388669-docker-50 b31d5e8c08b97fb93b22cd59340c3d526d0abf179cd7113816316a2a1c4bdf8d infraternal-bench-1790224597683388669-docker-49 528136c6fdb39651afe5b27849706d1d8c46fb3c04fc6a5f2a3e40a4c3467ccd infraternal-bench-1790224597683388669-docker-48 3bd5152ece2c17acbb588924a66fd0f9fd3fd0e1a4b39131413432fa280fae2f infraternal-bench-1790224597683388669-docker-47 939b3491231a95bbcec9be1f9078b4d9bd1d1e3df51164ed4cec77335fbbdeb1 infraternal-bench-1790224597683388669-docker-46 afa421b7a1f60b861d3378d87aca38dbb8ef76ccf8b20fa5f47effb65aaa221b infraternal-bench-1790224597683388669-docker-45 04756fc7c39a72fdef103def9eb35f829f111f3e6330680818a6f2c577ecc8ff infraternal-bench-1790224597683388669-docker-44 ffdc98bb696396bbf0e71ba391fc6bbc0a999a32ab950f69f184a06d11071400 infraternal-bench-1790224597683388669-docker-43 27334ed0cdef84f7460ce78ca1cf9dd3d39d1c9b928df9b275b6a351a1d1877e infraternal-bench-1790224597683388669-docker-42 2efd187b350314555e3096d0dc6a81e6a72a80c4eb7be5361737bf9225155dbc infraternal-bench-1790224597683388669-docker-41 9d8216d5dd6c2b220fd47c3bc03aa4fe8806059982fa24cb9b2a1e1f1a55b0ea infraternal-bench-1790224597683388669-docker-40 4e7e15b6dc0309f19061ba7be3efa184c70b93dc96d873dcfa547c14670cadce infraternal-bench-1790224597683388669-docker-39 2beabb38a3b936f6e9b64114b647514b785fc99066cf822ba59e49ef83847431 infraternal-bench-1790224597683388669-docker-38 f99c76687c85aa019605bc8f109e776e04f7fdb7e5b53c59e093d80f5b7cc88f infraternal-bench-1790224597683388669-docker-37 5446304c38e26d88fd6dcfb853726eecde16f97d7dbb750435fe3d2b49ab7ae1 infraternal-bench-1790224597683388669-docker-36 9386cf00fce2f4ef670569045e6dee00494e4b9112eb46af4ecb385a4eddcd4c infraternal-bench-1790224597683388669-docker-35 ea8ca05f2e7e3d5e98102403bddacc2db4d0c7e4d75e3676a476002cf0b672bd infraternal-bench-1790224597683388669-docker-34 82ede145a8f0eb1991c5d7bae6e3baccfd778502632e5ecb2e6b98c35a700f55 infraternal-bench-1790224597683388669-docker-33 33bfc05d44d54f15b73c361f626d9002a2bf752f56c169b38b30aa438a01367c infraternal-bench-1790224597683388669-docker-32 c6efac6646a3a3fd79275f776c1b520fdc26812fed84c438bd8ee079bc49a40b infraternal-bench-1790224597683388669-docker-31 db61950139a4a25d6934d425bf24d0dab7b8c8ac8d77499209ce5a928bf1e5e8 infraternal-bench-1790224597683388669-docker-30 374c62f2b902d6f3af77ac6cb3a432a13d145081de2b995b74b1019d18705775 infraternal-bench-1790224597683388669-docker-29 a62072ab6226ea8379e5af07e5f70048d3b9fde4fcc209ef7102f057c64762de infraternal-bench-1790224597683388669-docker-28 313a9cb5d79df7ecdb2feef9c73a9cc86db2942a6f4f299d1b5c5aa1d0470bb9 infraternal-bench-1790224597683388669-docker-27 6ba1f6c9cfb49933cf8da5e4234087cd4a28a98e33231427834400e61afe6a67 infraternal-bench-1790224597683388669-docker-26 8a1b220f7fcdcfe3773bcbf36719ff7055093386959a75771cde7c0fae8751db infraternal-bench-1790224597683388669-docker-25 e0ecfd8627f37c77189aec133a7e523e6d2d8cc47b1ed21cddf0629a9a27893c infraternal-bench-1790224597683388669-docker-24 d0d98c017da33f8c9d6bf0ced8c49ce76477d6403df490fbb5ce440d29e2fb47 infraternal-bench-1790224597683388669-docker-23 b6d5de53b45c6d5d265cc86f63a3c78f0cf8c25c58e7d08424e3ff6f105bf7f5 infraternal-bench-1790224597683388669-docker-22 1a291396f4857603cf68ef3d322ab0a1897fdd2e72a448b9b1915917a53e8e10 infraternal-bench-1790224597683388669-docker-21 c059dd6035515a9e93fc9956ab4e1322fbd23d082b58fe2644e508f280375a9d infraternal-bench-1790224597683388669-docker-20 1bcedcaa11d6133eed79d031db2d6291b4abc121147819e37df5eb5152dbea52 infraternal-bench-1790224597683388669-docker-19 43017f012d4f28d3703eeff96121a8076fbc2b7588b836d897159b3d447e2ad9 infraternal-bench-1790224597683388669-docker-18 73ce3c07c3f0953f9993402a13a6e2823f5395718f9e4c24102536f8a0b49814 infraternal-bench-1790224597683388669-docker-17 a95d1e35e13fa74c36ecaab5e9d35deedd52a4bcba1245e16c97c8af217a342f infraternal-bench-1790224597683388669-docker-16 f783dded3489f3091eff804f7e5f8a5f8fb1a247f20334c403c68b64d0be82f5 infraternal-bench-1790224597683388669-docker-15 79249b560201705f65b4868f075730aa002b05cefcfcc0864439a6860bcff3ea infraternal-bench-1790224597683388669-docker-14 709495e603c956ee706d628f90aacdeb59da3524e96ee094760bf05ddec3a9ca infraternal-bench-1790224597683388669-docker-13 1de160cf3a2d767d99853d561c9465b54d31ea798b062cdd8e204867a9d20ca2 infraternal-bench-1790224597683388669-docker-12 40df07d29747e3dfacd51465fc32aefed6c93324266ba08e21622df4b3a2fe98 infraternal-bench-1790224597683388669-docker-11 eb36c405e0ef494db458e92586086d59e69c8fc5404a9a4e92f5c4024fcc0320 infraternal-bench-1790224597683388669-docker-10 d6d7ba6349dd26c0b3d275879fb0975a190ba4d8db5e35e1f35af90a4a4fce3a infraternal-bench-1790224597683388669-docker-9 a93ec87de4a12e0e2de8e0cf6a38396a32f1b77d473226eb9c098ccc94a3a64c infraternal-bench-1790224597683388669-docker-8 b9930c21c00568e9c7140efc079b692f1c3b136cec44470aa3a2874075754f6e infraternal-bench-1790224597683388669-docker-7 408fd34804ec7ae7b0cb0ff9cd41c4ed4131a93f947347ef1464e3aaaca3d0fb infraternal-bench-1790224597683388669-docker-6 45e4ff24c00bd1029786ab021b477a1029ae0d8ce5d49ffd5a170c7078a79abe infraternal-bench-1790224597683388669-docker-5 72d7845f00693ade8aaa98779a2b66f706a3e365e941dce325486af6af1ae2df infraternal-bench-1790224597683388669-docker-4 8580c949729bea91db1bc76c0e70cdafcf116e5961bdbc8e768f74db02997df8 infraternal-bench-1790224597683388669-docker-3 6e00e0ab8514b7852ac11ca35759d495a7084a9856fba98228f11d3a37b7621c infraternal-bench-1790224597683388669-docker-2 c646f1ed15b0c1b33a894220dfc1c5ccb6db690fb3b98bc848b6b5f9072ddb0d infraternal-bench-1790224597683388669-docker-1 2dddb61a49c1a86fc55717d405d510f78694beb78a5036caab4aa2648f5bb4fa infraternal-bench-1790224597683388669-docker-0 ``` docker: removed 62 containers; 6 remain; all 0 original demo containers remain. podman: 110 containers before cleanup; 107 historical leftovers selected; 0 demo containers protected. ```text 4bc6aed1ca4ef30ed5d627e32ffdcf936704cf3b2c3dca22573582390226104a infraternal-bench-1790224597683388669-podman-0 01c865495e43069ab16e0d4bc12620967c0b2dd79ee8a8e15c724634cbba1ef6 infraternal-bench-1790224597683388669-podman-1 af7e5b091715705a0af104808d6876306e1eace27c2d262600dc41b4897fa2a6 infraternal-bench-1790224597683388669-podman-2 c03c4f75ca00ebea9ab6e445e2d04b277458cafb1195d0de7c2d06e99775212c infraternal-bench-1790224597683388669-podman-3 36eb082f5e8da30c722c1772c39c2d4a6d8c3a90297e7be0091b2aaadb11be98 infraternal-bench-1790224597683388669-podman-4 597b6f48ba9e04b878eaa6bbbb45ed563a0e36959af0e010945acb9b07e9c197 infraternal-bench-1790224597683388669-podman-5 bb6eb1ee8d66496a77091ca6321b8d5cd05e57e5385d09e70e33ade36b1c2749 infraternal-bench-1790224597683388669-podman-6 b7d1deb0f2fdb5d24a2b03546bc6d7cffd8686dcba5a559045524f01a267b9c7 infraternal-bench-1790224597683388669-podman-7 8b8c14bcb5b38bfcb7808e68142c4e5d78fca2cd6bcb2f16e5d0ed9b28ef6890 infraternal-bench-1790224597683388669-podman-8 84009d0ca1876dd508c2dfc61b39dc484d7222047d6c37ba1375a524f099178f infraternal-bench-1790224597683388669-podman-9 fafc41daf9dd042ec6f8a4f71af1732238c6b120f024b23d8315102443bc09e4 infraternal-bench-1790224597683388669-podman-10 168cd8afecd3224ec3acb6b2dcced3b4b19c0133544bdff576965eb667dc4f9f infraternal-bench-1790224597683388669-podman-11 24b7abd6dadff71aeecb54056039040aebaa611a7dba68d13e573726d91c2850 infraternal-bench-1790224597683388669-podman-12 21086bad93d99b612ccf81175bfe980bdcf8da5dee36a8959f1ee465c5003ca2 infraternal-bench-1790224597683388669-podman-13 33ce8912230f5933e6968e61a148ed4315f9d3300863c6f48125ab3c31c9702c infraternal-bench-1790224597683388669-podman-14 00a7ad02955a7acc6cf14ea7e6d9d7e8871df548b3cf5c7cd2dc91ebbdb8ff76 infraternal-bench-1790224597683388669-podman-15 d0ebc6e2020c9ce3dfc2d937954bba4c9b521911b96e01654651e9643cf5ba99 infraternal-bench-1790224597683388669-podman-16 2ad494d35f0f37af8144ebf0f01ecbdea3469cb9ad1b001948671875e38ba459 infraternal-bench-1790224597683388669-podman-17 9fad9041c6c7c408752708ab6b31eea9191ed03e3edf02b8f7a31009f8c36e14 infraternal-bench-1790224597683388669-podman-18 16e1a81057bd4cdcd3cf90bcf22b765f0c3511d93b08fcf5a88154ab1def9747 infraternal-bench-1790224597683388669-podman-19 79a512a6a18978821a4b7ae9fb44eb861cf4c7e1eb3ce8c9f1e7e63758f6ff42 infraternal-bench-1790224597683388669-podman-20 88e1b454dbe438225ee2931db46917331841c79bd18fada65e6d5532d8a8e508 infraternal-bench-1790224597683388669-podman-21 c8110099a01efb99db8b933dea81f56140ce4bc4cf1007b8cfb6c7343c3e60dd infraternal-bench-1790224597683388669-podman-22 eef05e1d40001f08525869134768aea420132b990aa6287769cd1bf7bd04af9b infraternal-bench-1790224597683388669-podman-23 544cf91ca24439abc9fdd4055e9fad11c028d1615e51c59f4c8602fa745f1e0a infraternal-bench-1790224597683388669-podman-24 cc3e2c15d9929378a9cf924ac6f49123f4b0949834480e4799be0b1af13cf82a infraternal-bench-1790224597683388669-podman-25 6ce7c451afafb3d47a5b9ec9a09f70fd19ab2381abe7bcdc462a77a636ef6c15 infraternal-bench-1790224597683388669-podman-26 c6e5ce390166ab9a6e0f60a6deb0cb59cca43a9c7e0f10095dcc065bd9f055d1 infraternal-bench-1790224597683388669-podman-27 e8aaad1ae75769289bd5780b627357955d7044a2b74e7d212bef4d7ae8c4c525 infraternal-bench-1790224597683388669-podman-28 c48c3369ae77a11ca4175dad42e0233553dc4a6aa23eda2f86fea6378664b95b infraternal-bench-1790224597683388669-podman-29 47475ff3954df04b8b9be91cd2a9aedba8ca20d11f7089911427b76708f9058a infraternal-bench-1790224597683388669-podman-30 b6b63915fd2917afd0e802ac661da0cdf22a7850e18a497bbe8fd078748d9d52 infraternal-bench-1790224597683388669-podman-31 6867de6d5fd195bbeca5834fc4a1c9a9cb18dab51b9d04a3ad8083ed052895fe infraternal-bench-1790224597683388669-podman-32 b5e2fd06f876808a6be2daba3fcbf195f062d8eb5ca268dabaea113624e951b3 infraternal-bench-1790224597683388669-podman-33 5d114cc8cba18ebf846585932d28a5fc30f5861358a9b38f975b6824e8ab20ea infraternal-bench-1790224597683388669-podman-34 21545125b90eb50d37ef330a69051ce9d217448123d881f39317fb4b02cdeb1e infraternal-bench-1790224597683388669-podman-35 c1208986ebf5a0a80adda7ea175992d7ede0efc333aa38f4e4133ace0d8c25a0 infraternal-bench-1790224597683388669-podman-36 bd1431fa166b81cfdf3f357764f6262151ae4535b68a882a23f4d2003589e9e2 infraternal-bench-1790224597683388669-podman-37 51074c9e69739daed300c605ef6b5f0f0890d3e84b7f7a60698ce8b2b92df75b infraternal-bench-1790224597683388669-podman-38 6c08b6ca97fc6cdbf072428bd20a30581eb60d3f34e7efec3823a7502bd09823 infraternal-bench-1790224597683388669-podman-39 7562c9362e38eb5797bba190c96cb52ac81de6567f9f432b025033ebac87bdff infraternal-bench-1790224597683388669-podman-40 cb401db8c636ad1ce0401d7c38f83af9e64c45aa9431b87420fdcd50809d8aed infraternal-bench-1790224597683388669-podman-41 ad10db0ddc08834f6cc6b6728e2e92c10fca1ff456375cc0f0c264d2f4a91576 infraternal-bench-1790224597683388669-podman-42 a6c45350351f93b63d26c3e44d8b2f80bbec12db22ed48cdb379b14d7fc959ed infraternal-bench-1790224597683388669-podman-43 5800e8d157607569d0e856f39aa08120c8fd69dc6cc835fd9aa6966299e68472 infraternal-bench-1790224597683388669-podman-44 69681a92bc37a95abd39f77bd09cd5aa2ff28dd788f9f0aa3564ec6657c05adb infraternal-bench-1790224597683388669-podman-45 56331a96783260b93dfe0be4f38a951d2f9a01d47e52405f7e2e38532108e990 infraternal-bench-1790224597683388669-podman-46 ba7dded60645a31525de03ee5309e192d719f3d4228c905afa781647831e811f infraternal-bench-1790224597683388669-podman-47 2b3850bfc16804a7e12cc088c4121b75059e62a9db82122c405b4b588207f251 infraternal-bench-1790224597683388669-podman-48 d99894aa4c55d036ee977b1b4dadbf89f7ff4c311cfba3256945956446208119 infraternal-bench-1790224597683388669-podman-49 d6982a01fa8f70dda536e8c2df30718c71de3eee79b465877261c80595f590e5 infraternal-bench-1790224597683388669-podman-50 f18bacda885ee21108f48294f05cfd525167a5352b4df4ec89d66294b19eae62 infraternal-bench-1790224597683388669-podman-51 fc587f5612d82c646f2ea7df17c64d21f4ecb309776643d6d9b3f296961a6a14 infraternal-bench-1790224597683388669-podman-52 600b5876a62c36445ba2407a267f06f0d3b5c236586ee0757ef6a095f3b01b49 infraternal-bench-1790224597683388669-podman-53 c622078128ab401a4b85e1194150685897194b3696ca0e1384843790ddc5b70a infraternal-bench-1790224597683388669-podman-54 5838730ab7d574a54bbf3cb93f1827567c93b5d155cea7d3a8ad5b6eda2a4667 infraternal-bench-1790224597683388669-podman-55 14fc2058784ab72597cdf1a3ceff50489b48026d8d7b17f4ccccde3ece9cc3e7 infraternal-bench-1790224597683388669-podman-56 4df3ada5f7851f97da896e115fa971c022b008affb5e3815aed31233f25b0082 infraternal-bench-1790224597683388669-podman-57 96cf514ebaa33d5460eafff12fa23ecd57912c10f653ccae2c470051545c8784 infraternal-bench-1790224597683388669-podman-58 2e87cb2bd9c9c1ab59937a265f110caaad60bec80c965b5ca18dd9d67d71ca45 infraternal-bench-1790224597683388669-podman-59 90fafa30d28b7c5debeff2616cdae72ea193e327a9d94889fb9ef67202729376 infraternal-bench-1790224597683388669-podman-60 acd0df1fa26e88129736859f3bfe28212fe38af01c28e2ecb4c6da74d5ae570f infraternal-bench-1790224597683388669-podman-61 ab0ba635d90e55f8c06ef38b5f8934f4a6830bdcb94f3088503c72b60157f822 infraternal-bench-1790224597683388669-podman-62 81b1bc18059fc51bbf6d9996d9dadb5642486240ab5986c6537ee629caa919b8 infraternal-bench-1790224597683388669-podman-63 e87e9e37a9d44551c761dd14cb0fa3a8216285baa0b6094f791fc9abfe07ac93 infraternal-bench-1790224597683388669-podman-64 778e442dfd247b0be1f036b758bce9ef0f0d29e4b05aa6f9f1ba3a33836c4bc0 infraternal-bench-1790224597683388669-podman-65 5b43851327660a243183d4bd51c5f93fc74c10a6e2a98ffdcff3d4a57f9e646e infraternal-bench-1790224597683388669-podman-66 4b7db54a28cc371bc4bacd0af290178759b4fb88ff6aad3c9429c8af99176201 infraternal-bench-1790224597683388669-podman-67 faebe889268fa7a0d5efd5cd4c0d314b46a108ccc601e6a1d993e0db8af0f127 infraternal-bench-1790224597683388669-podman-68 c84d543026ca3867232381f6ab2d146c6adac550dbf639837cf796819c01ef95 infraternal-bench-1790224597683388669-podman-69 8f058135dc4b13528e132cb5c9e915e93c2beac27c429b4d36466ced74bf7d18 infraternal-bench-1790224597683388669-podman-70 dfe56bf7e17b4b7e8460a8dd0fbfeaa037538c93ba4616cc8fd7406d14e26a0a infraternal-bench-1790224597683388669-podman-71 e88c850646c0cc84c1d21e2a79f7ea8fcefa08e989a4252ad6626743b7adb441 infraternal-bench-1790224597683388669-podman-72 3c0abfb395fc8275401956b94489b0c2eeb6ad032b27bf441f8b3a3131aba7d4 infraternal-bench-1790224597683388669-podman-73 4c7bb2a9d83c93313be2af5615cf1cbc102d2e4c5e8c68a305b03a68b7bad525 infraternal-bench-1790224597683388669-podman-74 8be31791c9f7c181ee95166d4fc3a8e9c81e83d6771be22a700c3d50efa76957 infraternal-bench-1790224597683388669-podman-75 9be9ef206ad49622487d126bf429f6a8c8b028b39d965599315db8a8688d21bc infraternal-bench-1790224597683388669-podman-76 eaec148682e11fd69022df976c3c38ff30e2ed248e070dbf7971fb36f7b01f82 infraternal-bench-1790224597683388669-podman-77 8b627e6ec25d9d51aa608c5c112d32636aa16fc2583c72df759b4cc6be9d8a21 infraternal-bench-1790224597683388669-podman-78 9cb3ac1901aa3f4314c60369b0ee1a43c23236de9aaca2d44d3d886a462c3ad8 infraternal-bench-1790224597683388669-podman-79 a9e5bcf1268be43c8767e06b8e4e25cadc6bd2046ca85677bcff89d372e2b259 infraternal-bench-1790224597683388669-podman-80 3b7c5632b1126122cfb82cea4336be968f45a3bc5e6cd919a3ee1f8d58c73758 infraternal-bench-1790224597683388669-podman-81 99c69c92cb180e56d6d455a79bc0554d85a416652617325ca6d67248087f745d infraternal-bench-1790224597683388669-podman-82 e5c23312dc39256577175c4bfc4ca9fd2c11e536b4cbcaed1eb50b296622ea06 infraternal-bench-1790224597683388669-podman-83 b74d5fefed8c4298792f43d9e2b863b718f767c78f8e3e16e8d6c9fbb285a8b5 infraternal-bench-1790224597683388669-podman-84 91c88133b0e8ec7f1e8a2e15c74f1be208ef8da87954bc614d72d3715a06156d infraternal-bench-1790224597683388669-podman-85 33b4bc59eda891f6fc083c4fb8af35c672c821f94421f495a2b1a490882d80fa infraternal-bench-1790224597683388669-podman-86 61da169fc7b78a7a539bb2117f69be292b06a5b4652b5bff07ba91280834e87c infraternal-bench-1790224597683388669-podman-87 98217200da393e16a2d504ccd5fc821779b9c9ae0e633cf09bd4571331fc2cf5 infraternal-bench-1790224597683388669-podman-88 699576275fa153a6eb142fb4cbdcb44fc2b903b26bbb8a340ab4889b0b22f79c infraternal-bench-1790224597683388669-podman-89 b62ff112c6e0084895882c590a4b8c072a36021438a4423d6c205ee5a2c6fbac infraternal-bench-1790224597683388669-podman-90 73390980cd4fdbe9728188cf023fa6844f59639d07f333babeb3514acf9be36e infraternal-bench-1790224597683388669-podman-91 c789dedfaf01fc22a5444a2ee43904d18daed89aac3afac52e080bece34d7c3f infraternal-bench-1790224597683388669-podman-92 c587435d5bc26f2e3c4f1ed34f27b1e3ffab2946b522ebf22861ae4e6653b17c infraternal-bench-1790224597683388669-podman-93 9257f7474ce8703d184d1cf6b5d4d17f881495778d487360a801534c3ab8157c infraternal-bench-1790224597683388669-podman-94 ab3f304b5899d083540a8e77f1a5896255e3c609eada1e408c812a21278d1214 infraternal-bench-1790224597683388669-podman-95 fe206401118bb35b35da7eba2d3140d07421fd7c990250a4357026474d1a5db2 infraternal-cli-mcp-podman-1790331531839 ebb9fd6cb9c75719489f37e0f7f1a3251c1b9120f2cda0981ad7d959a2ec3644 infraternal-cli-mcp-podman-logs-1790331531839 5cf1e69a7ec779113b041b6091dfbb6b25f61cf02aa8a9e9ded5b5717596124a infraternal-cli-mcp-podman-large-logs-1790331531839 fb66db12c00ab0c316dcf37e9c9f38c246b82f9c416fdce4ac000f1626834944 infraternal-browser-logs-podman-3464534-1790361046193 21de4bfd6e7e92ecdc943d41cb32448640109181b2fcce8625ca4d94378b8807 infraternal-browser-logs-podman-3479337-1790361252344 f2e5056881f1334a3224a9f04e80d5fbe4725b183104619e4374b7ac9e73f623 infraternal-browser-logs-podman-3494911-1790361369674 859497e18d7901a70e977a07cac606f85401b26dc2ed6df9ba4536092569993a infraternal-browser-logs-podman-3521090-1790361571044 8e37c997d08dff094b56edc6286a4696e04b6458b9561d10eb0d19a90ad5575a infraternal-browser-logs-podman-3538951-1790361738066 eae7fafdbf7cea0b4c45d37243f8b3c551c6d9a6a9b33d2277903eb23a19af26 infraternal-engine-podman-740075-1790425477060 d508803be2648954374abe0277b81213c3aec534f435acb074ab6acefbca878a infraternal-compose-member-podman-740075-1790425477060 fc99afb8ccc3074393fc4f311d86c29064892b3f3000d0fd3a703a8dfd61cfc9 infraternal-browser-logs-podman-318200-1790443108024 ``` podman: removed 107 containers; 8 remain; all 0 original demo containers remain.
Author
Owner

79860b5 makes the new real fixture regression’s parent cleanup send SIGTERM and wait up to five seconds for its own child’s guarded cleanup before forcing a hung child to stop. This preserves in-flight-create cleanup on early test failure. Rustfmt and git diff --check pass; runtime execution remains queued. Historical cleanup is already complete and fully audited above: 62 Docker + 107 Podman (169 total). At 20:16 UTC other fast/e2e-remote/perf gates remain active and load5 is 10.97, so this job has still started no full gate.

79860b5 makes the new real fixture regression’s parent cleanup send SIGTERM and wait up to five seconds for its own child’s guarded cleanup before forcing a hung child to stop. This preserves in-flight-create cleanup on early test failure. Rustfmt and git diff --check pass; runtime execution remains queued. Historical cleanup is already complete and fully audited above: 62 Docker + 107 Podman (169 total). At 20:16 UTC other fast/e2e-remote/perf gates remain active and load5 is 10.97, so this job has still started no full gate.
Author
Owner

Real Docker/rootless Podman exit-path regression passed for all six modes: normal exit, intentional panic, SIGINT, SIGTERM, SIGINT during in-flight create, and SIGTERM during in-flight create. Each checks both runtimes for zero containers carrying its exact run ID before fallback cleanup. The intentional child panic is expected to exit 101; its FAILED line below is deliberately injected, while the parent regression passes.

Compiled the committed test source directly against this worktree’s cached Tokio/time libraries with rustc --deny warnings; standalone pedantic Clippy also passed. Readiness is an exclusive private run-ID directory, so this target needs no tempfile dependency. A prior attempt to select the dev-only tempfile dependency directly caused a Cargo resolver panic before compilation; no full Cargo build/gate was started.

Exact runtime output:


running 1 test
test real_fixture_exit_paths ... 
running 1 test
test real_fixture_child ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 1.07s

PASS real Docker and Podman fixture cleanup after normal

running 1 test

thread 'real_fixture_child' (1477252) panicked at crates/infraternal/tests/bench_runtime.rs:130:20:
intentional fixture panic for RAII regression
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test real_fixture_child ... FAILED

failures:

failures:
    real_fixture_child

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 5 filtered out; finished in 1.01s

PASS real Docker and Podman fixture cleanup after panic

running 1 test
PASS real Docker and Podman fixture cleanup after SIGINT

running 1 test
PASS real Docker and Podman fixture cleanup after SIGTERM

running 1 test
PASS real Docker and Podman fixture cleanup after SIGINT-inflight

running 1 test
PASS real Docker and Podman fixture cleanup after SIGTERM-inflight
ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 12.12s

Exact helper unit output:


running 6 tests
test real_fixture_child ... ignored, child entry point for real_fixture_exit_paths; requires real Docker and Podman
test real_fixture_exit_paths ... ignored, requires real Docker and rootless Podman; run serially
test bench_runtime::tests::parses_docker_rfc3339_created_time ... ok
test bench_runtime::tests::parses_podman_local_created_time ... ok
test bench_runtime::tests::run_cleanup_requires_exact_bench_run_and_protects_demo ... ok
test bench_runtime::tests::stale_sweep_requires_bench_label_and_protects_demo ... ok

test result: ok. 4 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s

Full fast/merge and the owned stream fixture workload remain pending the shared verification/load constraints.

Real Docker/rootless Podman exit-path regression passed for all six modes: normal exit, intentional panic, SIGINT, SIGTERM, SIGINT during in-flight create, and SIGTERM during in-flight create. Each checks both runtimes for zero containers carrying its exact run ID before fallback cleanup. The intentional child panic is expected to exit 101; its FAILED line below is deliberately injected, while the parent regression passes. Compiled the committed test source directly against this worktree’s cached Tokio/time libraries with rustc --deny warnings; standalone pedantic Clippy also passed. Readiness is an exclusive private run-ID directory, so this target needs no tempfile dependency. A prior attempt to select the dev-only tempfile dependency directly caused a Cargo resolver panic before compilation; no full Cargo build/gate was started. Exact runtime output: ```text running 1 test test real_fixture_exit_paths ... running 1 test test real_fixture_child ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 1.07s PASS real Docker and Podman fixture cleanup after normal running 1 test thread 'real_fixture_child' (1477252) panicked at crates/infraternal/tests/bench_runtime.rs:130:20: intentional fixture panic for RAII regression note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace test real_fixture_child ... FAILED failures: failures: real_fixture_child test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 5 filtered out; finished in 1.01s PASS real Docker and Podman fixture cleanup after panic running 1 test PASS real Docker and Podman fixture cleanup after SIGINT running 1 test PASS real Docker and Podman fixture cleanup after SIGTERM running 1 test PASS real Docker and Podman fixture cleanup after SIGINT-inflight running 1 test PASS real Docker and Podman fixture cleanup after SIGTERM-inflight ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 12.12s ``` Exact helper unit output: ```text running 6 tests test real_fixture_child ... ignored, child entry point for real_fixture_exit_paths; requires real Docker and Podman test real_fixture_exit_paths ... ignored, requires real Docker and rootless Podman; run serially test bench_runtime::tests::parses_docker_rfc3339_created_time ... ok test bench_runtime::tests::parses_podman_local_created_time ... ok test bench_runtime::tests::run_cleanup_requires_exact_bench_run_and_protects_demo ... ok test bench_runtime::tests::stale_sweep_requires_bench_label_and_protects_demo ... ok test result: ok. 4 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.02s ``` Full fast/merge and the owned stream fixture workload remain pending the shared verification/load constraints.
Author
Owner

Orchestrator, gate policy from 00:10 IST: with about 12 jobs running, waiting for 'no other scripts/verify run active' deadlocks. Jobs: run scripts/verify fast plus your targeted tests, then finish and report 'merge gate pending'. Do not wait for scripts/verify merge. The orchestrator runs merge gates centrally, one at a time, on ready branches.

Orchestrator, gate policy from 00:10 IST: with about 12 jobs running, waiting for 'no other scripts/verify run active' deadlocks. **Jobs: run `scripts/verify fast` plus your targeted tests, then finish and report 'merge gate pending'. Do not wait for `scripts/verify merge`.** The orchestrator runs merge gates centrally, one at a time, on ready branches.
Author
Owner

fda5ae3 strengthens the in-flight regression: readiness now precedes delayed real container creation, and the parent waits for a creation-completion marker before checking inventory. This detects a container becoming visible after a premature signal cleanup. Both signal cases and all six exit modes passed again on real Docker/rootless Podman; standalone pedantic Clippy and rustc with warnings denied also pass.

Exact updated output (the child panic is intentional; parent verifies its 101 exit and cleanup):


running 1 test
test real_fixture_exit_paths ... 
running 1 test
test real_fixture_child ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 0.66s

PASS real Docker and Podman fixture cleanup after normal

running 1 test

thread 'real_fixture_child' (1582803) panicked at crates/infraternal/tests/bench_runtime.rs:132:20:
intentional fixture panic for RAII regression
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test real_fixture_child ... FAILED

failures:

failures:
    real_fixture_child

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 5 filtered out; finished in 0.63s

PASS real Docker and Podman fixture cleanup after panic

running 1 test
PASS real Docker and Podman fixture cleanup after SIGINT

running 1 test
PASS real Docker and Podman fixture cleanup after SIGTERM

running 1 test
PASS real Docker and Podman fixture cleanup after SIGINT-inflight

running 1 test
PASS real Docker and Podman fixture cleanup after SIGTERM-inflight
ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 7.93s

At 20:39 UTC load5 was below 6, but another perf gate and full cargo release build remain active. Final fast/merge are still queued.

fda5ae3 strengthens the in-flight regression: readiness now precedes delayed real container creation, and the parent waits for a creation-completion marker before checking inventory. This detects a container becoming visible after a premature signal cleanup. Both signal cases and all six exit modes passed again on real Docker/rootless Podman; standalone pedantic Clippy and rustc with warnings denied also pass. Exact updated output (the child panic is intentional; parent verifies its 101 exit and cleanup): ```text running 1 test test real_fixture_exit_paths ... running 1 test test real_fixture_child ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 0.66s PASS real Docker and Podman fixture cleanup after normal running 1 test thread 'real_fixture_child' (1582803) panicked at crates/infraternal/tests/bench_runtime.rs:132:20: intentional fixture panic for RAII regression note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace test real_fixture_child ... FAILED failures: failures: real_fixture_child test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 5 filtered out; finished in 0.63s PASS real Docker and Podman fixture cleanup after panic running 1 test PASS real Docker and Podman fixture cleanup after SIGINT running 1 test PASS real Docker and Podman fixture cleanup after SIGTERM running 1 test PASS real Docker and Podman fixture cleanup after SIGINT-inflight running 1 test PASS real Docker and Podman fixture cleanup after SIGTERM-inflight ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out; finished in 7.93s ``` At 20:39 UTC load5 was below 6, but another perf gate and full cargo release build remain active. Final fast/merge are still queued.
Author
Owner

cb048b4: inspect rows now use JSON so arbitrary label text cannot shift the demo-protection field. Missing or non-string demo metadata fails closed. Added parser regressions for a run ID containing a delimiter and malformed demo metadata. No dependency changes: serde_json was already available in all importing crates.

The first live JSON-format check found Podman requires .ID inside json(), while Docker accepts .Id. The helper now accounts for that difference. Removed the exact fixture left by that failed check: Podman a1ce94923f5a8a19b5ecb5e4e0376e863b8c8993feb30881dbc23ed3970bf22d, run ID 1627881-1790967062931040677; inspected demo label was empty. This was recovery of this job’s own newly created fixture, separate from the 169 historical leftovers already audited.

Sources: https://docs.docker.com/engine/cli/formatting/ ; https://github.com/podman-container-tools/podman/blob/main/libpod/define/container_inspect.go ; https://pkg.go.dev/time#Time.MarshalJSON .

Standalone pedantic Clippy and rustc with warnings denied pass. Exact unit output:


running 8 tests
test bench_runtime::tests::malformed_demo_metadata_fails_closed ... ok
test bench_runtime::tests::parses_docker_rfc3339_created_time ... ok
test bench_runtime::tests::label_delimiters_cannot_bypass_demo_protection ... ok
test real_fixture_child ... ignored, child entry point for real_fixture_exit_paths; requires real Docker and Podman
test real_fixture_exit_paths ... ignored, requires real Docker and rootless Podman; run serially
test bench_runtime::tests::run_cleanup_requires_exact_bench_run_and_protects_demo ... ok
test bench_runtime::tests::stale_sweep_requires_bench_label_and_protects_demo ... ok
test bench_runtime::tests::parses_podman_local_created_time ... ok

test result: ok. 6 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

Exact successful live exit-path rerun (intentional child panic is expected):


running 1 test
test real_fixture_exit_paths ... 
running 1 test
test real_fixture_child ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 7 filtered out; finished in 0.86s

PASS real Docker and Podman fixture cleanup after normal

running 1 test

thread 'real_fixture_child' (1648421) panicked at crates/infraternal/tests/bench_runtime.rs:132:20:
intentional fixture panic for RAII regression
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
test real_fixture_child ... FAILED

failures:

failures:
    real_fixture_child

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 7 filtered out; finished in 0.97s

PASS real Docker and Podman fixture cleanup after panic

running 1 test
PASS real Docker and Podman fixture cleanup after SIGINT

running 1 test
PASS real Docker and Podman fixture cleanup after SIGTERM

running 1 test
PASS real Docker and Podman fixture cleanup after SIGINT-inflight

running 1 test
PASS real Docker and Podman fixture cleanup after SIGTERM-inflight
ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 7 filtered out; finished in 9.07s

Final fast/merge remain queued behind active verification.

cb048b4: inspect rows now use JSON so arbitrary label text cannot shift the demo-protection field. Missing or non-string demo metadata fails closed. Added parser regressions for a run ID containing a delimiter and malformed demo metadata. No dependency changes: serde_json was already available in all importing crates. The first live JSON-format check found Podman requires .ID inside json(), while Docker accepts .Id. The helper now accounts for that difference. Removed the exact fixture left by that failed check: Podman a1ce94923f5a8a19b5ecb5e4e0376e863b8c8993feb30881dbc23ed3970bf22d, run ID 1627881-1790967062931040677; inspected demo label was empty. This was recovery of this job’s own newly created fixture, separate from the 169 historical leftovers already audited. Sources: https://docs.docker.com/engine/cli/formatting/ ; https://github.com/podman-container-tools/podman/blob/main/libpod/define/container_inspect.go ; https://pkg.go.dev/time#Time.MarshalJSON . Standalone pedantic Clippy and rustc with warnings denied pass. Exact unit output: ```text running 8 tests test bench_runtime::tests::malformed_demo_metadata_fails_closed ... ok test bench_runtime::tests::parses_docker_rfc3339_created_time ... ok test bench_runtime::tests::label_delimiters_cannot_bypass_demo_protection ... ok test real_fixture_child ... ignored, child entry point for real_fixture_exit_paths; requires real Docker and Podman test real_fixture_exit_paths ... ignored, requires real Docker and rootless Podman; run serially test bench_runtime::tests::run_cleanup_requires_exact_bench_run_and_protects_demo ... ok test bench_runtime::tests::stale_sweep_requires_bench_label_and_protects_demo ... ok test bench_runtime::tests::parses_podman_local_created_time ... ok test result: ok. 6 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` Exact successful live exit-path rerun (intentional child panic is expected): ```text running 1 test test real_fixture_exit_paths ... running 1 test test real_fixture_child ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 7 filtered out; finished in 0.86s PASS real Docker and Podman fixture cleanup after normal running 1 test thread 'real_fixture_child' (1648421) panicked at crates/infraternal/tests/bench_runtime.rs:132:20: intentional fixture panic for RAII regression note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace test real_fixture_child ... FAILED failures: failures: real_fixture_child test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 7 filtered out; finished in 0.97s PASS real Docker and Podman fixture cleanup after panic running 1 test PASS real Docker and Podman fixture cleanup after SIGINT running 1 test PASS real Docker and Podman fixture cleanup after SIGTERM running 1 test PASS real Docker and Podman fixture cleanup after SIGINT-inflight running 1 test PASS real Docker and Podman fixture cleanup after SIGTERM-inflight ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 7 filtered out; finished in 9.07s ``` Final fast/merge remain queued behind active verification.
Author
Owner

Scheduling status at 22:10 UTC: source is committed and clean at 9fdc4dc. Historical cleanup is complete (169 containers, exact audit above). Six helper units and six real Docker/Podman exit modes pass on the current implementation; standalone pedantic Clippy and rustc warnings-denied compile pass. Full fast/merge remain queued because other verification runs or load5 > 6 have continuously blocked their start since this continuation began at 19:33 UTC. An own lightweight monitor, /tmp/lp-fixtures-wait-fast.sh, checks load and active verification/release/browser work every 20 seconds and will launch fast at low CPU/IO weight when allowed. No full gate has yet started for this job.

Scheduling status at 22:10 UTC: source is committed and clean at 9fdc4dc. Historical cleanup is complete (169 containers, exact audit above). Six helper units and six real Docker/Podman exit modes pass on the current implementation; standalone pedantic Clippy and rustc warnings-denied compile pass. Full fast/merge remain queued because other verification runs or load5 > 6 have continuously blocked their start since this continuation began at 19:33 UTC. An own lightweight monitor, /tmp/lp-fixtures-wait-fast.sh, checks load and active verification/release/browser work every 20 seconds and will launch fast at low CPU/IO weight when allowed. No full gate has yet started for this job.
Author
Owner

Continuation update (lp-fixtures, head 9893c3a, not pushed).

  • Merged origin/dev (merge commit ecbc38a, no conflicts).
  • 8f7d040: the shared bench helper's test module glob import is unused when Criterion benches build without the test harness. Allowed it, so cargo bench --no-run -p infraternal -p infraternal-engine now builds warning-free.
  • 9893c3a: pedantic clippy fixes (semicolon_if_nothing_returned in crates/infraternal/benches/containers.rs, manual_assert in crates/server/tests/stream_e2e.rs). These failed fast after the merge.
  • Cleanup guard: cargo test -p infraternal --test bench_runtime -- --include-ignored passes 8/8. That covers the parser and eligibility unit tests plus real Docker and Podman cleanup after a normal exit, a panic, SIGINT, SIGTERM, and SIGINT or SIGTERM during an in-flight create.
  • VM leftovers: the one-time cleanup was already done (62 Docker + 107 Podman = 169, audited above). Rechecking today found 0 eligible containers (no names starting with infraternal-bench-, infraternal-browser- or stream-, and none carrying the infraternal.test label), so nothing was removed in this pass. What remains belongs to other jobs: 250 Docker and 250 Podman perf-* containers from a perf run, infraternal-s2-stack-*, and infraternal-audit-perf-idle. I did not touch them.
  • Gate: INFRATERNAL_VERIFY_RUN_ID=sub-fixtures scripts/verify fast PASS at 9893c3a (all 16 steps). I did not run merge, integration or browser.
Continuation update (lp-fixtures, head `9893c3a`, not pushed). - Merged `origin/dev` (merge commit `ecbc38a`, no conflicts). - `8f7d040`: the shared bench helper's test module glob import is unused when Criterion benches build without the test harness. Allowed it, so `cargo bench --no-run -p infraternal -p infraternal-engine` now builds warning-free. - `9893c3a`: pedantic clippy fixes (`semicolon_if_nothing_returned` in `crates/infraternal/benches/containers.rs`, `manual_assert` in `crates/server/tests/stream_e2e.rs`). These failed `fast` after the merge. - Cleanup guard: `cargo test -p infraternal --test bench_runtime -- --include-ignored` passes 8/8. That covers the parser and eligibility unit tests plus real Docker and Podman cleanup after a normal exit, a panic, SIGINT, SIGTERM, and SIGINT or SIGTERM during an in-flight create. - VM leftovers: the one-time cleanup was already done (62 Docker + 107 Podman = 169, audited above). Rechecking today found **0** eligible containers (no names starting with `infraternal-bench-`, `infraternal-browser-` or `stream-`, and none carrying the `infraternal.test` label), so **nothing was removed** in this pass. What remains belongs to other jobs: 250 Docker and 250 Podman `perf-*` containers from a perf run, `infraternal-s2-stack-*`, and `infraternal-audit-perf-idle`. I did not touch them. - Gate: `INFRATERNAL_VERIFY_RUN_ID=sub-fixtures scripts/verify fast` **PASS** at `9893c3a` (all 16 steps). I did not run merge, integration or browser.
Author
Owner

lp-fixtures merged with origin/dev (972197f); head is now 8addce8. Not pushed.

Conflict in crates/engine/benches/engine.rs. Both sides are kept:

  • From dev: create_list_containers(..., &mut list_resources), the tracked fixture names (the provider A/B inspect cases need them), and the infraternal.test.run_id labels.
  • From lp-fixtures: BenchmarkResources::new(runtime, &run_id), the infraternal.test=bench label, and every ps/run/create/rm call goes through bench_runtime::{runtime_command, output, status, create_output}.
  • Cleanup: removing everything with the run's label is still the main path. Dev's chunked remove-by-name is kept as a fallback in case the label lookup fails.
  • One conflict the merge didn't flag: dev moved time and serde_json out of the engine crate, so they're added back as engine dev-dependencies for bench_runtime.rs.

Why the perf run leaked 500 containers. scripts/perf/run.mjs creates 250 Docker and 250 Podman list fixtures labeled infraternal.test.run=perf-<pid>-<ms>. They have no bench labels, and the only cleanup was a finally block. Node doesn't run finally when SIGINT, SIGTERM or SIGHUP kills the process, and sweep_stale_bench_containers only matched infraternal.test=bench, so nothing ever removed them.

Fix (8addce8):

  • run.mjs now removes this run's fixtures by label on SIGINT, SIGTERM and SIGHUP.
  • Before creating fixtures, run.mjs removes leftovers from earlier perf runs whose process is gone and that are over an hour old.
  • Each teardown step runs separately, so one failure can't skip the rest. If the label lookup fails, it falls back to the container IDs it recorded.
  • sweep_stale_bench_containers also removes perf-<pid>-<ms> fixtures over an hour old whose process is gone.
  • Containers labeled infraternal.demo=1 are never removed.
  • New unit tests, plus a real-runtime test showing the sweep reads the perf labels on both runtimes and leaves fresh fixtures alone.
  • Changing run.mjs changes the perf harness hash, so any existing dev-VM baseline needs recalibrating.

Leftovers removed: 500 (250 Docker, 250 Podman) from run perf-2137035-1790973242834, whose pid is gone. The extended sweep removed them during the bench_runtime test. No demo containers were present or touched.

Gates:

  • cargo bench --no-run -p infraternal -p infraternal-engine: builds with no warnings.
  • cargo test -p infraternal --test bench_runtime -- --include-ignored: 11/11 pass.
  • INFRATERNAL_VERIFY_RUN_ID=sub-fix3 scripts/verify fast: passes.
  • verify merge was not run.
lp-fixtures merged with origin/dev (972197f); head is now 8addce8. Not pushed. **Conflict in crates/engine/benches/engine.rs.** Both sides are kept: - From dev: `create_list_containers(..., &mut list_resources)`, the tracked fixture names (the provider A/B inspect cases need them), and the `infraternal.test.run_id` labels. - From lp-fixtures: `BenchmarkResources::new(runtime, &run_id)`, the `infraternal.test=bench` label, and every `ps`/`run`/`create`/`rm` call goes through `bench_runtime::{runtime_command, output, status, create_output}`. - Cleanup: removing everything with the run's label is still the main path. Dev's chunked remove-by-name is kept as a fallback in case the label lookup fails. - One conflict the merge didn't flag: dev moved `time` and `serde_json` out of the engine crate, so they're added back as engine dev-dependencies for `bench_runtime.rs`. **Why the perf run leaked 500 containers.** `scripts/perf/run.mjs` creates 250 Docker and 250 Podman list fixtures labeled `infraternal.test.run=perf-<pid>-<ms>`. They have no bench labels, and the only cleanup was a `finally` block. Node doesn't run `finally` when SIGINT, SIGTERM or SIGHUP kills the process, and `sweep_stale_bench_containers` only matched `infraternal.test=bench`, so nothing ever removed them. **Fix (8addce8):** - run.mjs now removes this run's fixtures by label on SIGINT, SIGTERM and SIGHUP. - Before creating fixtures, run.mjs removes leftovers from earlier perf runs whose process is gone and that are over an hour old. - Each teardown step runs separately, so one failure can't skip the rest. If the label lookup fails, it falls back to the container IDs it recorded. - `sweep_stale_bench_containers` also removes `perf-<pid>-<ms>` fixtures over an hour old whose process is gone. - Containers labeled `infraternal.demo=1` are never removed. - New unit tests, plus a real-runtime test showing the sweep reads the perf labels on both runtimes and leaves fresh fixtures alone. - Changing run.mjs changes the perf harness hash, so any existing dev-VM baseline needs recalibrating. **Leftovers removed:** 500 (250 Docker, 250 Podman) from run perf-2137035-1790973242834, whose pid is gone. The extended sweep removed them during the bench_runtime test. No demo containers were present or touched. **Gates:** - `cargo bench --no-run -p infraternal -p infraternal-engine`: builds with no warnings. - `cargo test -p infraternal --test bench_runtime -- --include-ignored`: 11/11 pass. - `INFRATERNAL_VERIFY_RUN_ID=sub-fix3 scripts/verify fast`: passes. - `verify merge` was not run.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal-v0#19
No description provided.