Skip to content

Show confirmed deletions while pruning - #7364

Draft
robmoss2k wants to merge 1 commit into
docker:masterfrom
robmoss2k:32193-prune-progress
Draft

robmoss2k wants to merge 1 commit into
docker:masterfrom
robmoss2k:32193-prune-progress

Conversation

@robmoss2k

@robmoss2k robmoss2k commented Oct 8, 2026 •

Copy link
Copy Markdown

Related to: moby/moby#32193

Summary

Print confirmed deletions while container, network, volume, image, builder, and system prune commands run. Keep headings and object output once, and derive reclaimed-space totals from the final API reports.

Use the SDK's optional progress callbacks on supported API versions. Retain ordinary report output for older daemons and authorization-plugin fallback, without repeating a destructive request.

Dependent draft: requires moby/moby#53894 to merge, followed by publication of the updated client module. A normal full-module vendoring build is verified locally, but the release-based dependency update is outstanding. This branch does not compile against the currently pinned SDK; do not merge this companion independently. Update vendor.mod, vendor.sum, and the complete vendored SDK through the repository scripts once the upstream module is available.

AI assistance: Codex drafted most of the changes, tests, and this description, reviewed the implementation, and ran the automated checks. The human contributor reviewed and approved the work and ran the elevated live Windows validation; Codex monitored that run and independently verified its evidence.

Validation and limits

Submission refresh: base e7df01fe6e0d, feature commit f4e0874187c4, with the companion SDK from Moby commit 017c45f3befb on base 6b7a995e3453. Passed the full CLI unit selection and official Docker lint build with Go 1.26.9, the current HTTP dependencies, a normally resolved whole-module SDK fixture, and no replace directive. Rebuilt Windows CLI and focused tests, which passed natively. Populated container runs cover both image stores, authorization, proxy/Swarm behavior, and direct mutual TLS against the updated daemon. The final SDK dependency bumps also pass full units, lint, Windows builds/tests, and real direct-TLS pruning. The private fixture version v0.6.2-pruneprogress.017c45f3befb.0 is unpublished and is absent from this branch.

The wider validation below includes earlier runs. Live Windows daemon validation used Moby base 02a344f1d047; focused Windows tests are refreshed, but that live daemon test has not been repeated with the rebased binary.

The full CLI unit package selection passed with the whole local SDK normally vendored and a Linux-only PATH. Actual system prune passed against two rootful image stores, rootless daemons with and without systemd/cgroup v2, and emulated ARM64 daemon/CLI binaries, checking populated BuildKit cache, progress before completion, exact final totals, no duplicate output, filtering, and preservation controls. Authorization fallback and an unmodified same-version daemon each made one destructive request. Buffering, throttled delivery, and verified TLS proxy tests passed. The CLI compiled for Windows; focused progress/printer and prompt-filter tests passed natively there. Existing prompt-cancellation tests fail in this harness on the modified and unmodified code.

Live Windows 11 Pro build 26200 validation with process isolation, windowsfilter, and Windows Server Core ltsc2022 passed all 12 checks: container/network/volume/image API and CLI pruning, API 1.55 compatibility through API and CLI, SDK callback cancellation, and fixture cleanup. CLI output preceded completion by 1.78 seconds for containers, 12.73 seconds for networks, 0.93 seconds for volumes, and 9.59 seconds for images. All 2,625 evidence-file hashes were independently verified. Combined Windows system prune, populated Windows BuildKit cache, unread named-pipe deadlines, Windows authorization plugins, and other Windows configurations remain untested.

Normal module resolution and the repository vendoring scripts also pass with an unpublished private SDK package, without a replace directive. The resulting CLI passes the full unit selection, CLI golangci-lint with its repository configuration, and the unmodified-daemon runtime fallback test. The fixture version is not an upstream release.

Release notes (optional)

Show confirmed deletions while prune commands run.

Created with: Codex

Use SDK progress callbacks to print successful removals as prune commands
run. Print each heading and object once, retain final reclaimed-space
totals, and preserve report output for older daemons and JSON fallback.

Requires the companion Moby prune-progress SDK change and an upstream
client module dependency update before this change can build or merge.

Related to: moby/moby#32193

Signed-off-by: Rob Moss <15984835+robmoss2k@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant