This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Summary
AI summaryReference-counted DAG store enables immediate cascade deletion of unreferenced nodes while preserving shared layers.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds pullrun rmi for cascading subtree deletion on last tag removal. Adds pullrun rmi for cascading subtree deletion on last tag removal. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Introduces reference-counted DAG store with per-node refcount sidecar files. Introduces reference-counted DAG store with per-node refcount sidecar files. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Adds crash recovery via recompute_all_refcounts on daemon startup. Adds crash recovery via recompute_all_refcounts on daemon startup. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Updates ListImages to return actual tagged-image data with total blob sizes. Updates ListImages to return actual tagged-image data with total blob sizes. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Adds compute_image_size() to BFS-walk DAG and sum blob sizes. Adds compute_image_size() to BFS-walk DAG and sum blob sizes. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Low |
Adds 8 new refcount tests covering roundtrip, shared-layer cascade, and size computation. Adds 8 new refcount tests covering roundtrip, shared-layer cascade, and size computation. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Fixes recompute_all_refcounts to use HashMap accumulator and overwrite prior state. Fixes recompute_all_refcounts to use HashMap accumulator and overwrite prior state. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Fixes remove_image to decrement refcount before removing tag entries, preventing orphaned data. Fixes remove_image to decrement refcount before removing tag entries, preventing orphaned data. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Changes put() and put_blocking() to warn on refcount increment failure instead of silently dropping errors. Changes put() and put_blocking() to warn on refcount increment failure instead of silently dropping errors. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Low |
Switches pullrun-init and pullrun-vsock to set version.workspace = true. Switches pullrun-init and pullrun-vsock to set version.workspace = true. Source: llm_adapter@2026-07-15 Confidence: high |
— |
Full changelog
v0.6.0 — Reference-Counted rmi with Cascade Subtree Deletion
Per-node refcounts enable immediate cascade deletion when the last tag
referencing a root is removed. Shared layers are preserved — a child
node is only deleted when every parent referencing it has been removed.
Features
- pullrun rmi — remove an image by tag or digest. Cascading BFS
subtree deletion on last-tag removal. Shared layers preserved
(cascade stops at refcount > 0). - Reference-counted DAG store — per-node
node.refcountsidecar
files (u64 LE, crash-atomic via write-then-rename). - Crash recovery —
recompute_all_refcountson daemon startup
rebuilds refcounts from all tagged image and workload roots. - ListImages — now returns actual tagged-image data with
DAG-walked total blob sizes (was empty stub). - Compute image size —
compute_image_size()BFS-walks the
DAG and sums all blob.raw file sizes.
Fixes
recompute_all_refcounts— uses HashMap accumulator instead of
incrementing on stale files. Completely overwrites prior state.remove_image— decrements refcount BEFORE removing tag entries
(crash between the two no longer orphans data forever).put()/put_blocking()— warn on refcount increment failure
instead of silently dropping the error.pullrun-initandpullrun-vsock— switched to
version.workspace = true(were hardcoded).
Tests
- 8 new refcount tests covering roundtrip, shared-layer cascade,
multi-tag roots, stale-state recompute, missing-node handling,
directory cleanup, and image size computation. - 175 total passing tests (was 159).
Breaking Changes
- None. The refcount system is additive and fully backward-compatible
with existing stores. Nodes without refcount files read as 0.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Pullrun
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]