This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Summary
AI summaryAdds DAG store garbage collection with crash‑atomic writes and operation locks.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds crash‑atomic writes using write‑then‑rename with parent fsync. Adds crash‑atomic writes using write‑then‑rename with parent fsync. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Adds operation locks to protect in‑flight pull/build/commit/import from GC. Adds operation locks to protect in‑flight pull/build/commit/import from GC. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Adds kernel_image_digest pinning to preserve stopped VMs' kernel layers. Adds kernel_image_digest pinning to preserve stopped VMs' kernel layers. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Medium |
Adds DAG store garbage collection with mark-and-sweep and CLI integration. Adds DAG store garbage collection with mark-and-sweep and CLI integration. Source: llm_adapter@2026-07-15 Confidence: low |
— |
| Feature | Medium |
Factors walk_reachable into pullrun‑store for shared use by dag_export.rs and GC crate. Factors walk_reachable into pullrun‑store for shared use by dag_export.rs and GC crate. Source: llm_adapter@2026-07-15 Confidence: low |
— |
| Feature | Low |
Adds 25 new tests, increasing total test count from 134 to 159. Adds 25 new tests, increasing total test count from 134 to 159. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Feature | Low |
Adds DAG store garbage collection with mark-and-sweep, BFS reachability walk, op-lock protection, and CLI commands `pullrun gc`/`pullrun gc --apply`. Adds DAG store garbage collection with mark-and-sweep, BFS reachability walk, op-lock protection, and CLI commands `pullrun gc`/`pullrun gc --apply`. Source: granite4.1:30b@2026-07-15-audit Confidence: low |
— |
| Bugfix | Medium |
Fixes enumerate_gc_roots data‑loss bug by using blocking read().await. Fixes enumerate_gc_roots data‑loss bug by using blocking read().await. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Causes BFS to abort on corrupted nodes, preventing silent subtree deletion. Causes BFS to abort on corrupted nodes, preventing silent subtree deletion. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | Medium |
Updates 90% safety guard to measure unreachable bytes instead of node count. Updates 90% safety guard to measure unreachable bytes instead of node count. Source: llm_adapter@2026-07-15 Confidence: high |
— |
Full changelog
v0.4.0 — DAG Store Garbage Collection
Features
- DAG store garbage collection (
pullrun gc,pullrun gc --apply).
Mark-and-sweep GC with BFS reachability walk, 90% safety guard, op-lock
protection, and CLI integration. - Crash-atomic writes (write-then-rename with parent
fsync). - Operation locks protect in-flight pull/build/commit/import from GC.
kernel_image_digestpinning — stopped VMs' kernel layers preserved.walk_reachablefactored into pullrun-store and shared by
dag_export.rsand the GC crate.
Fixes
enumerate_gc_rootsdata-loss bug fixed. Changedtry_read()to
blockingread().awaitto guarantee root set completeness.- BFS aborts on corrupted nodes (prevents silent subtree deletion).
- 90% safety guard measures unreachable bytes, not node count.
Tests
- 25 new tests across PRs 1–5 (134 → 159 total).
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]