Skip to content

[runtime] Model atomic blob crash recovery - #4492

Draft
patrick-ogrady wants to merge 1 commit into
atomic-blobs-unit-testsfrom
atomic-blobs-model-tests
Draft

[runtime] Model atomic blob crash recovery#4492
patrick-ogrady wants to merge 1 commit into
atomic-blobs-unit-testsfrom
atomic-blobs-model-tests

Conversation

@patrick-ogrady

@patrick-ogrady patrick-ogrady commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds two complementary bounded crash oracles above the production and unit-test layers:

  • model_tests.rs exhausts semantic publication and recovery histories, including three-generation slot reuse and overlapping successor groups.
  • scheduled_tests.rs drives the production encoder and recovery path with exact operation identities, retained-write masks, and independent recovery orders.

This is layer 5 of 6 in the atomic blob stack. It changes no production behavior and keeps model failures separate from the broader behavioral suite in #4491.

Review focus

  • Every accepted state is derived from a complete predecessor or candidate vector; the model never invents or contracts a ring.
  • Prepared-ring durability, hidden cleanup debt, rejected-slot consumption, and generation reuse are exercised as explicit state transitions.
  • Open-first and scan-first recovery evidence is derived independently before either path can repair the backing.

Diff size

  • Production code: +0 / -0 LOC
  • Tests and test infrastructure: +3220 / -0 LOC
  • Total: +3220 / -0 LOC

Counts are physical diff lines, including comments and blank lines. Test-only files, hooks, and lines inside #[cfg(test)] modules are counted as tests; everything else is counted as production code.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploying monorepo with  Cloudflare Pages  Cloudflare Pages

Latest commit: e66b230
Status: ✅  Deploy successful!
Preview URL: https://71f10125.monorepo-eu0.pages.dev
Branch Preview URL: https://atomic-blobs-model-tests.monorepo-eu0.pages.dev

View logs

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
commonware-mcp 190e6e1 Aug 14 2026, 09:05 PM

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

Benchmark results

Regressions: 0.

✅ `qmdb::merkleize/v=any::unordered::fixed::mmr k=10000 ch=false s=true cc=true` (2/2 gates passed)
Field Value
Package commonware-storage
Benchmark target qmdb_gungraun
Variant qmdb::merkleize/v=any::unordered::fixed::mmr k=10000 ch=false s=true cc=true
Filter *::bench_merkleize::any_unordered_fixed_mmr
Baseline suite commonware-storage
Gates EstimatedCycles should decrease; tolerance 10.00%; blob_reads should decrease; tolerance 10.00%
Cargo flags --features test-traits
Metric Baseline Current Delta Gate
Ir 13,159,318 13,119,853 -0.30% -
L1hits 16,819,414 16,757,707 -0.37% -
LLhits 94,113 98,841 +5.02% -
RamHits 11,467 11,006 -4.02% -
TotalRW 16,924,994 16,867,554 -0.34% -
EstimatedCycles 17,691,324 17,637,122 -0.31% EstimatedCycles should decrease; tolerance 10.00%
blob_reads 158 158 +0.00% blob_reads should decrease; tolerance 10.00%
✅ `qmdb::merkleize/v=current::ordered::fixed::mmb chunk=256 k=10000 ch=false s=true cc=true` (2/2 gates passed)
Field Value
Package commonware-storage
Benchmark target qmdb_gungraun
Variant qmdb::merkleize/v=current::ordered::fixed::mmb chunk=256 k=10000 ch=false s=true cc=true
Filter *::bench_merkleize::current_ordered_fixed_mmb_chunk_256
Baseline suite commonware-storage
Gates EstimatedCycles should decrease; tolerance 10.00%; blob_reads should decrease; tolerance 10.00%
Cargo flags --features test-traits
Metric Baseline Current Delta Gate
Ir 15,488,996 15,434,827 -0.35% -
L1hits 20,313,311 20,242,194 -0.35% -
LLhits 132,020 137,611 +4.23% -
RamHits 17,946 17,455 -2.74% -
TotalRW 20,463,277 20,397,260 -0.32% -
EstimatedCycles 21,601,521 21,541,174 -0.28% EstimatedCycles should decrease; tolerance 10.00%
blob_reads 235 235 +0.00% blob_reads should decrease; tolerance 10.00%

Baseline commit(s): f04a442f1c3c

@patrick-ogrady
patrick-ogrady force-pushed the atomic-blobs-model-tests branch from 190e6e1 to e66b230 Compare August 15, 2026 16:07
@codecov

codecov Bot commented Aug 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.54%. Comparing base (d826af2) to head (e66b230).

@@                     Coverage Diff                     @@
##           atomic-blobs-unit-tests    #4492      +/-   ##
===========================================================
- Coverage                    95.54%   95.54%   -0.01%     
===========================================================
  Files                          609      609              
  Lines                       280523   280523              
  Branches                      6944     6944              
===========================================================
- Hits                        268038   268035       -3     
- Misses                       10228    10233       +5     
+ Partials                      2257     2255       -2     
Files with missing lines Coverage Δ
runtime/src/atomic.rs 97.35% <ø> (ø)

... and 11 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d826af2...e66b230. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@patrick-ogrady patrick-ogrady added this to the v2026.9.0 milestone Aug 19, 2026
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