Skip to content

Pullrun

v0.6.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Summary

AI summary

Reference-counted DAG store enables immediate cascade deletion of unreferenced nodes while preserving shared layers.

Changes in this release

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.refcount sidecar
    files (u64 LE, crash-atomic via write-then-rename).
  • Crash recoveryrecompute_all_refcounts on 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 sizecompute_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-init and pullrun-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

Track Pullrun

Get notified when new releases ship.

Sign up free

About Pullrun

All releases →

Related context

Beta — feedback welcome: [email protected]