Skip to content

fix: use live Codecov badge instead of hardcoded coverage %#27

Merged
Milerius merged 15 commits intomainfrom
docs/strategy-readme-progress
Apr 6, 2026
Merged

fix: use live Codecov badge instead of hardcoded coverage %#27
Milerius merged 15 commits intomainfrom
docs/strategy-readme-progress

Conversation

@Milerius
Copy link
Copy Markdown
Owner

@Milerius Milerius commented Apr 6, 2026

Summary by CodeRabbit

  • Chores
    • Lowered minimum Rust version requirement to 1.93.0
    • Enhanced GitHub Actions workflows with improved test reporting and automatic cancellation of redundant runs
    • Updated project README badges to display live CI and coverage status

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 6, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR updates CI/CD workflows with enhanced reporting and concurrency management, downgrades the MSRV from 1.95.0 to 1.93.0, modernizes project badges via dynamic Codecov integration, and excludes test suites from Miri execution due to inline assembly dependencies.

Changes

Cohort / File(s) Summary
CI/CD Workflows
.github/workflows/nightly.yml, .github/workflows/ci.yml
Enhanced nightly workflow with summary reporting for mutation testing and stricter Kani output parsing; added concurrency configuration to ci.yml to cancel overlapping runs.
Configuration & Documentation
Cargo.toml, README.md
Downgraded MSRV from 1.95.0 to 1.93.0; replaced five hard-coded status badges with dynamic Codecov coverage and GitHub Actions nightly workflow badges.
Miri Test Exclusions
crates/queue/src/copy_ring/engine.rs, crates/queue/src/engine.rs, crates/queue/src/handle.rs, crates/queue/src/presets.rs, crates/queue/tests/spsc_basic.rs, crates/queue/tests/spsc_copy_basic.rs, crates/queue/tests/spsc_stress.rs
Added #[cfg(all(test, not(miri)))] attributes to prevent test modules from compiling under Miri due to queue's inline assembly usage (cold_path, prefetch).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 Hop! Our tests now wisely shy,
From Miri's gaze on assembly code high;
With badges dynamic and runners that dance,
Our CI finds flow in the concurrency trance!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title specifically describes replacing a hardcoded coverage badge with a live Codecov badge, which is the primary change evident in README.md. However, the changeset also includes significant modifications to workflow files (nightly.yml, ci.yml) and test exclusions for Miri across multiple files, which are not reflected in the title.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/strategy-readme-progress

Comment @coderabbitai help to get the list of available commands and usage tips.

@pull-request-size pull-request-size bot added size/S and removed size/XS labels Apr 6, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 6, 2026

Codecov Report

❌ Patch coverage is 99.73568% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.84%. Comparing base (cdfb259) to head (8cf8901).
⚠️ Report is 17 commits behind head on main.

Files with missing lines Patch % Lines
crates/events/src/event.rs 96.00% 3 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main      #27      +/-   ##
==========================================
+ Coverage   94.20%   95.84%   +1.63%     
==========================================
  Files          75       75              
  Lines        8048     9183    +1135     
  Branches     8048     9183    +1135     
==========================================
+ Hits         7582     8801    +1219     
+ Misses        422      338      -84     
  Partials       44       44              
Files with missing lines Coverage Δ
crates/events/src/body.rs 94.27% <100.00%> (+4.74%) ⬆️
crates/events/src/control.rs 93.10% <100.00%> (+11.28%) ⬆️
crates/events/src/flags.rs 97.00% <100.00%> (+2.26%) ⬆️
crates/events/src/market.rs 94.17% <100.00%> (+4.01%) ⬆️
crates/fixed/src/convert.rs 96.63% <100.00%> (+5.88%) ⬆️
crates/fixed/src/mul_div.rs 99.76% <100.00%> (+1.49%) ⬆️
crates/market-state/src/book/array_book.rs 99.49% <100.00%> (+6.05%) ⬆️
crates/market-state/src/engine.rs 98.61% <100.00%> (+24.76%) ⬆️
crates/queue/src/copy_ring/engine.rs 99.68% <ø> (+0.31%) ⬆️
crates/queue/src/engine.rs 100.00% <ø> (ø)
... and 4 more

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Around line 26-27: The current README badges use static images that always
show "clean/proven"; replace those hardcoded badge URLs for the Miri and Kani
badges with GitHub Actions workflow status badge URLs for the respective
workflows (nightly.yml and verify.yml) so the images reflect live build status;
update the two badge image src values referenced by the existing links with the
standard GitHub Actions badge path for each workflow (keep the existing anchor
and alt text "Miri clean" and "Kani proven" to preserve semantics).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0337d58b-6db9-4bc2-96ec-ab7a3d76638f

📥 Commits

Reviewing files that changed from the base of the PR and between c63f711 and 89887e5.

📒 Files selected for processing (2)
  • .github/workflows/nightly.yml
  • README.md

README.md Outdated
Comment on lines +26 to +27
<a href="https://github.com/Milerius/Mantis/actions/workflows/nightly.yml"><img src="https://img.shields.io/badge/miri-clean-2ea44f?style=for-the-badge" alt="Miri clean"></a>
<a href="https://github.com/Milerius/Mantis/actions/workflows/verify.yml"><img src="https://img.shields.io/badge/kani-proven-2ea44f?style=for-the-badge" alt="Kani proven"></a>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Miri/Kani badges are hardcoded green, not live status.

On Line 26 and Line 27, the badge URLs are static status labels, so they can show “clean/proven” even when workflows fail. Use GitHub Actions workflow-status badge URLs instead.

Suggested diff
-  <a href="https://github.com/Milerius/Mantis/actions/workflows/nightly.yml"><img src="https://img.shields.io/badge/miri-clean-2ea44f?style=for-the-badge" alt="Miri clean"></a>
-  <a href="https://github.com/Milerius/Mantis/actions/workflows/verify.yml"><img src="https://img.shields.io/badge/kani-proven-2ea44f?style=for-the-badge" alt="Kani proven"></a>
+  <a href="https://github.com/Milerius/Mantis/actions/workflows/nightly.yml"><img src="https://img.shields.io/github/actions/workflow/status/Milerius/Mantis/nightly.yml?branch=main&style=for-the-badge&label=miri-clean" alt="Miri clean"></a>
+  <a href="https://github.com/Milerius/Mantis/actions/workflows/verify.yml"><img src="https://img.shields.io/github/actions/workflow/status/Milerius/Mantis/verify.yml?branch=main&style=for-the-badge&label=kani-proven" alt="Kani proven"></a>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<a href="https://github.com/Milerius/Mantis/actions/workflows/nightly.yml"><img src="https://img.shields.io/badge/miri-clean-2ea44f?style=for-the-badge" alt="Miri clean"></a>
<a href="https://github.com/Milerius/Mantis/actions/workflows/verify.yml"><img src="https://img.shields.io/badge/kani-proven-2ea44f?style=for-the-badge" alt="Kani proven"></a>
<a href="https://github.com/Milerius/Mantis/actions/workflows/nightly.yml"><img src="https://img.shields.io/github/actions/workflow/status/Milerius/Mantis/nightly.yml?branch=main&style=for-the-badge&label=miri-clean" alt="Miri clean"></a>
<a href="https://github.com/Milerius/Mantis/actions/workflows/verify.yml"><img src="https://img.shields.io/github/actions/workflow/status/Milerius/Mantis/verify.yml?branch=main&style=for-the-badge&label=kani-proven" alt="Kani proven"></a>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 26 - 27, The current README badges use static images
that always show "clean/proven"; replace those hardcoded badge URLs for the Miri
and Kani badges with GitHub Actions workflow status badge URLs for the
respective workflows (nightly.yml and verify.yml) so the images reflect live
build status; update the two badge image src values referenced by the existing
links with the standard GitHub Actions badge path for each workflow (keep the
existing anchor and alt text "Miri clean" and "Kani proven" to preserve
semantics).

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 6, 2026

Benchmark Report

Commit: 87ad94d5e8e537cdb8305657254a9369f2075722

Linux

CPU: AMD EPYC 7763 64-Core Processor | Arch: x86_64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

Latency (ns/op, lower is better)

Single Push+Pop

Element crossbeam drogalis-cpp mantis/copy mantis/general mantis/inline rigtorp-cpp rtrb
msg48 22.96 10.08 9.44 🏆 31.72 31.72 9.88 21.07
msg64 7.72 5.96 3.71 🏆 18.01 17.86 6.03 6.04
u64 5.19 4.07 2.5 🏆 - 3.75 4.73 3.41

Burst 100

Element crossbeam drogalis-cpp mantis/copy mantis/inline rigtorp-cpp rtrb
msg48 2986.25 1813.08 242.97 🏆 2646.73 1780.05 2328.49
msg64 1037.08 737.45 247.61 🏆 1491.64 848.72 748.83
u64 789.92 386.99 176.92 🏆 375.44 493.35 335.85

Burst 1000

Element crossbeam drogalis-cpp mantis/copy mantis/inline rigtorp-cpp rtrb
msg48 29950.17 18292.19 2436.01 🏆 26121.7 17887.1 23379.13
msg64 11509.51 7606.7 2156.72 🏆 15663.28 8372.58 7926.76
u64 7854.23 4068.49 1656.67 🏆 3743.47 5828.1 3092.84

Batch 100

Element mantis/copy
msg48 122.28 🏆
u64 16 🏆

Batch 1000

Element mantis/copy
msg48 993.69 🏆
u64 198.38 🏆

Full Drain

Element mantis/inline
u64 1638.4 🏆
Instructions per Op (lower is better)
Full results (all fields)
Workload ns/op p50 p99 cycles insns bmiss l1d llc
spsc/inline/single_item/u64 3.75 3.7 3.9 11.9 - - - -
spsc/inline/single_item/msg48 31.72 31.7 32 107.9 - - - -
spsc/inline/single_item/msg64 17.86 17.8 18.5 64.6 - - - -
spsc/inline/burst_100/u64 375.44 374.9 381.3 1131.7 - - - -
spsc/inline/burst_100/msg48 2646.73 2646.3 2653.6 11205.9 - - - -
spsc/inline/burst_100/msg64 1491.64 1489.4 1519.3 4568.7 - - - -
spsc/inline/burst_1000/u64 3743.47 3737.9 3803.9 13039.8 - - - -
spsc/inline/burst_1000/msg48 26121.7 26099.8 26366 87699.4 - - - -
spsc/inline/burst_1000/msg64 15663.28 15657.1 15774.4 56851.1 - - - -
spsc/inline/full_drain/u64 1638.4 1636 1667.5 5246.8 - - - -
copy/single/u64 2.5 2.5 2.6 9.6 - - - -
copy/single/msg48 9.44 9.4 9.5 35.1 - - - -
copy/single/msg64 3.71 3.7 3.8 11.7 - - - -
general/single/msg48 31.72 31.7 31.9 107.7 - - - -
general/single/msg64 18.01 18 18.4 65.8 - - - -
copy/burst/100/u64 176.92 175.3 198.1 749.5 - - - -
copy/burst/100/msg48 242.97 242.7 247 828.7 - - - -
copy/burst/100/msg64 247.61 247.3 251.5 854.9 - - - -
copy/burst/1000/u64 1656.67 1654.4 1681.8 5348 - - - -
copy/burst/1000/msg48 2436.01 2431.7 2513.7 9793.5 - - - -
copy/burst/1000/msg64 2156.72 2151.1 2230.3 8057.5 - - - -
copy/batch/100/u64 16 15.8 17.2 44.8 - - - -
copy/batch/100/msg48 122.28 121.9 124.3 402.3 - - - -
copy/batch/1000/u64 198.38 198.3 199.2 604.9 - - - -
copy/batch/1000/msg48 993.69 993 1004.3 3505.6 - - - -
spsc/rtrb/single_item/u64 3.41 3.4 3.5 10.2 - - - -
spsc/rtrb/single_item/msg48 21.07 20.7 22.9 61.4 - - - -
spsc/rtrb/single_item/msg64 6.04 5.6 7.2 23.5 - - - -
spsc/rtrb/burst_100/u64 335.85 336.3 343.4 1406.8 - - - -
spsc/rtrb/burst_100/msg48 2328.49 2382.7 2553.9 9556.9 - - - -
spsc/rtrb/burst_100/msg64 748.83 784.6 967.1 2810.5 - - - -
spsc/rtrb/burst_1000/u64 3092.84 3091.6 3135.5 9764.4 - - - -
spsc/rtrb/burst_1000/msg48 23379.13 23869.4 25603.3 77460.4 - - - -
spsc/rtrb/burst_1000/msg64 7926.76 7099.6 10194.3 24916.3 - - - -
spsc/crossbeam/single_item/u64 5.19 5.2 5.2 20.3 - - - -
spsc/crossbeam/single_item/msg48 22.96 22.9 23.3 64.6 - - - -
spsc/crossbeam/single_item/msg64 7.72 7.7 7.9 25.2 - - - -
spsc/crossbeam/burst_100/u64 789.92 789.4 797.7 2455.4 - - - -
spsc/crossbeam/burst_100/msg48 2986.25 2984.1 3012.9 9249.9 - - - -
spsc/crossbeam/burst_100/msg64 1037.08 1030.5 1060.5 3719.1 - - - -
spsc/crossbeam/burst_1000/u64 7854.23 7847.3 7941.2 28314.8 - - - -
spsc/crossbeam/burst_1000/msg48 29950.17 29945.1 30027.7 106460.3 - - - -
spsc/crossbeam/burst_1000/msg64 11509.51 11429.4 11781 51888.8 - - - -
spsc/rigtorp/single_item/u64 4.73 4.7 4.8 17.5 - - - -
spsc/rigtorp/single_item/msg48 9.88 9.9 10.1 36.8 - - - -
spsc/rigtorp/single_item/msg64 6.03 6.1 6.7 16.1 - - - -
spsc/rigtorp/burst_100/u64 493.35 417.6 884.7 1520.4 - - - -
spsc/rigtorp/burst_100/msg48 1780.05 1759.6 1977.9 6752.2 - - - -
spsc/rigtorp/burst_100/msg64 848.72 844.9 1205.1 3960.4 - - - -
spsc/rigtorp/burst_1000/u64 5828.1 5613.9 8805.6 21083.6 - - - -
spsc/rigtorp/burst_1000/msg48 17887.1 17539.5 20225.7 79977.4 - - - -
spsc/rigtorp/burst_1000/msg64 8372.58 7655.9 12277.8 41304.5 - - - -
spsc/drogalis/single_item/u64 4.07 4.1 4.1 13.6 - - - -
spsc/drogalis/single_item/msg48 10.08 10.1 10.3 38.8 - - - -
spsc/drogalis/single_item/msg64 5.96 6.2 6.5 16.1 - - - -
spsc/drogalis/burst_100/u64 386.99 386 400.1 1175.2 - - - -
spsc/drogalis/burst_100/msg48 1813.08 1787.9 1999.3 6821.9 - - - -
spsc/drogalis/burst_100/msg64 737.45 798.8 921.9 2539.6 - - - -
spsc/drogalis/burst_1000/u64 4068.49 4060.5 4179.8 14831.8 - - - -
spsc/drogalis/burst_1000/msg48 18292.19 18044 20218.5 80874.4 - - - -
spsc/drogalis/burst_1000/msg64 7606.7 6931.9 9364.4 23967.8 - - - -
macOS

CPU: Apple M1 (Virtual) | Arch: aarch64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

Latency (ns/op, lower is better)

Single Push+Pop

Element crossbeam drogalis-cpp mantis/copy mantis/general mantis/inline rigtorp-cpp rtrb
msg48 10.28 9.63 8.5 9.79 10.43 9.8 8.42 🏆
msg64 10.8 9.41 8.39 🏆 9.96 11.16 9.89 9.26
u64 8.64 8.36 6.96 - 8.14 8.38 6.54 🏆

Burst 100

Element crossbeam drogalis-cpp mantis/copy mantis/inline rigtorp-cpp rtrb
msg48 1794.18 1867.6 316.8 🏆 541.69 1772.47 684.46
msg64 2104.06 1855.84 381.83 🏆 649.36 1786.89 740.33
u64 1688.02 1460.71 270.71 264.54 🏆 1545.57 583.67

Burst 1000

Element crossbeam drogalis-cpp mantis/copy mantis/inline rigtorp-cpp rtrb
msg48 18967.57 18730 4102.7 🏆 5318.52 18029.72 7020.86
msg64 19136.08 32033.74 4600.96 🏆 6831.43 31655.18 20677.1
u64 19416.71 15537.23 3247.13 2789.27 🏆 15620.69 6235.95

Batch 100

Element mantis/copy
msg48 87.96 🏆
u64 20.14 🏆

Batch 1000

Element mantis/copy
msg48 854.85 🏆
u64 124.75 🏆

Full Drain

Element mantis/inline
u64 4138.88 🏆
Instructions per Op (lower is better)
Full results (all fields)
Workload ns/op p50 p99 cycles insns bmiss l1d llc
spsc/inline/single_item/u64 8.14 8 9.4 0.3 - - - -
spsc/inline/single_item/msg48 10.43 10.3 12.2 0.4 - - - -
spsc/inline/single_item/msg64 11.16 10.9 14.8 0.4 - - - -
spsc/inline/burst_100/u64 264.54 264.9 311.5 9.3 - - - -
spsc/inline/burst_100/msg48 541.69 542 609.5 19.5 - - - -
spsc/inline/burst_100/msg64 649.36 641.8 779.7 26.2 - - - -
spsc/inline/burst_1000/u64 2789.27 2599.1 5139.7 106.5 - - - -
spsc/inline/burst_1000/msg48 5318.52 5314.8 5735.2 232.9 - - - -
spsc/inline/burst_1000/msg64 6831.43 6838.4 7602.6 229.2 - - - -
spsc/inline/full_drain/u64 4138.88 4104 4767 147.1 - - - -
copy/single/u64 6.96 6.9 7.8 0.2 - - - -
copy/single/msg48 8.5 8.5 9.7 0.3 - - - -
copy/single/msg64 8.39 8.4 9.1 0.3 - - - -
general/single/msg48 9.79 9.7 10.8 0.4 - - - -
general/single/msg64 9.96 9.9 10.3 0.4 - - - -
copy/burst/100/u64 270.71 270 278 10 - - - -
copy/burst/100/msg48 316.8 315.6 328.2 12.5 - - - -
copy/burst/100/msg64 381.83 380.4 391.8 11.3 - - - -
copy/burst/1000/u64 3247.13 3385.5 3810 101 - - - -
copy/burst/1000/msg48 4102.7 4089.9 4203.2 148.8 - - - -
copy/burst/1000/msg64 4600.96 4570.9 4786.9 177.4 - - - -
copy/batch/100/u64 20.14 19.8 22.2 0.8 - - - -
copy/batch/100/msg48 87.96 86.7 102.3 3.6 - - - -
copy/batch/1000/u64 124.75 123.2 140.7 4.1 - - - -
copy/batch/1000/msg48 854.85 867.2 948.9 26.5 - - - -
spsc/rtrb/single_item/u64 6.54 6.5 6.8 0.2 - - - -
spsc/rtrb/single_item/msg48 8.42 8.3 8.9 0.3 - - - -
spsc/rtrb/single_item/msg64 9.26 9.2 9.5 0.3 - - - -
spsc/rtrb/burst_100/u64 583.67 582.8 589.9 22.4 - - - -
spsc/rtrb/burst_100/msg48 684.46 680.8 711.7 29.6 - - - -
spsc/rtrb/burst_100/msg64 740.33 740.3 754 22.2 - - - -
spsc/rtrb/burst_1000/u64 6235.95 6108.7 6754.2 193 - - - -
spsc/rtrb/burst_1000/msg48 7020.86 6959.6 7435.6 233.6 - - - -
spsc/rtrb/burst_1000/msg64 20677.1 20621 21367.9 871.8 - - - -
spsc/crossbeam/single_item/u64 8.64 8.4 10.2 0.3 - - - -
spsc/crossbeam/single_item/msg48 10.28 10.2 10.7 0.4 - - - -
spsc/crossbeam/single_item/msg64 10.8 10.7 11.4 0.4 - - - -
spsc/crossbeam/burst_100/u64 1688.02 1692.2 1836.8 54 - - - -
spsc/crossbeam/burst_100/msg48 1794.18 1797.5 1907.1 56.4 - - - -
spsc/crossbeam/burst_100/msg64 2104.06 2010.4 2705.3 72.2 - - - -
spsc/crossbeam/burst_1000/u64 19416.71 18696 23778.3 808.1 - - - -
spsc/crossbeam/burst_1000/msg48 18967.57 18789 21564.6 770 - - - -
spsc/crossbeam/burst_1000/msg64 19136.08 19019.6 20916.6 762.5 - - - -
spsc/rigtorp/single_item/u64 8.38 8.3 8.9 0.3 - - - -
spsc/rigtorp/single_item/msg48 9.8 9.7 10.4 0.4 - - - -
spsc/rigtorp/single_item/msg64 9.89 10 10.7 0.4 - - - -
spsc/rigtorp/burst_100/u64 1545.57 1519.3 1659.7 46.8 - - - -
spsc/rigtorp/burst_100/msg48 1772.47 1733.1 1966.4 57.7 - - - -
spsc/rigtorp/burst_100/msg64 1786.89 1774.5 1953.3 58.6 - - - -
spsc/rigtorp/burst_1000/u64 15620.69 15527.4 16749.8 559.9 - - - -
spsc/rigtorp/burst_1000/msg48 18029.72 17715.9 19281.7 713.1 - - - -
spsc/rigtorp/burst_1000/msg64 31655.18 31434 33129.8 1139.7 - - - -
spsc/drogalis/single_item/u64 8.36 8.3 9.1 0.3 - - - -
spsc/drogalis/single_item/msg48 9.63 9.5 10.3 0.4 - - - -
spsc/drogalis/single_item/msg64 9.41 9.3 10.1 0.3 - - - -
spsc/drogalis/burst_100/u64 1460.71 1463.2 1542.3 43.1 - - - -
spsc/drogalis/burst_100/msg48 1867.6 1840.2 2070.2 61.7 - - - -
spsc/drogalis/burst_100/msg64 1855.84 1811.8 2197.7 63.7 - - - -
spsc/drogalis/burst_1000/u64 15537.23 15342.2 17323.6 554.6 - - - -
spsc/drogalis/burst_1000/msg48 18730 18776.4 19695.3 752 - - - -
spsc/drogalis/burst_1000/msg64 32033.74 32004.9 33240.5 1183.5 - - - -

Sequence Lock (mantis-seqlock)

Linux

CPU: AMD EPYC 7763 64-Core Processor | Arch: x86_64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

seqlock_read_contended

Variant ns/op
u64 114.58
msg64 383.1

seqlock_read_uncontended

Variant ns/op
u64 0.63
msg64 1.43
msg128 2.5

seqlock_write

Variant ns/op
u64 1.56
msg64 1.87
msg128 3.12
macOS

CPU: Apple M1 (Virtual) | Arch: arm64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

seqlock_read_contended

Variant ns/op
msg64 48.63
u64 201.67

seqlock_read_uncontended

Variant ns/op
u64 1.32
msg64 2.04
msg128 4.24

seqlock_write

Variant ns/op
u64 6.76
msg64 6.94
msg128 7.56

Fixed-Point Arithmetic (mantis-fixed)

Linux

CPU: AMD EPYC 7763 64-Core Processor | Arch: x86_64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

fixed_checked_add

Variant ns/op
FixedI64_6_ 1.25
raw_i64 1.25

fixed_checked_div

Variant ns/op
trunc 4.99
round 5.84

fixed_checked_mul_trunc

Variant ns/op
D=4 3.91
D=8 4.31
D=6 4.35
D=2 4.6

fixed_display

Variant ns/op
FixedI64_6_ 50.88

fixed_mul_round_vs_trunc

Variant ns/op
trunc 4.35
round 13.66

fixed_parse

Variant ns/op
short 19.01
integer_only 24.59
full_precision 34.52

fixed_rescale

Variant ns/op
D2_to_D8_widen 0.63
D6_to_D2_trunc 0.91
macOS

CPU: Apple M1 (Virtual) | Arch: arm64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

fixed_checked_add

Variant ns/op
raw_i64 1.55
FixedI64_6_ 1.64

fixed_checked_div

Variant ns/op
trunc 3.4
round 4.43

fixed_checked_mul_trunc

Variant ns/op
D=6 2.02
D=4 2.03
D=8 2.03
D=2 2.17

fixed_display

Variant ns/op
FixedI64_6_ 37.2

fixed_mul_round_vs_trunc

Variant ns/op
trunc 2.01
round 2.38

fixed_parse

Variant ns/op
short 11.79
integer_only 17.6
full_precision 24.94

fixed_rescale

Variant ns/op
D6_to_D2_trunc 0.5
D2_to_D8_widen 0.51

Market-State Engine (mantis-market-state)

Linux

CPU: AMD EPYC 7763 64-Core Processor | Arch: x86_64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

market_state_array_book

Variant ns/op
best_bid 0.94
apply_delta 1.87

market_state_engine

Variant ns/op
micro_price 3.12
process_delta_mid_batch 4.06
process_delta_batch_end 20.05
book_imbalance_5 158.99
macOS

CPU: Apple M1 (Virtual) | Arch: arm64 | Compiler: rustc 1.96.0-nightly (9602bda1d 2026-04-05)

market_state_array_book

Variant ns/op
best_bid 0.69
apply_delta 1.07

market_state_engine

Variant ns/op
micro_price 2.06
process_delta_mid_batch 2.81
process_delta_batch_end 30.74
book_imbalance_5 137.23

- Kani: add set -o pipefail so tee doesn't swallow failures
- Kani: add continue-on-error with comment explaining MSRV incompatibility
  (Kani 0.67.0 bundles rustc 1.93.0, our MSRV is 1.95.0)
- Kani: include "error" in summary grep pattern
- Mutants: add step summary with caught/missed counts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@pull-request-size pull-request-size bot added size/M and removed size/S labels Apr 6, 2026
Sztergbaum Roman and others added 2 commits April 6, 2026 12:56
…fix pipefail

- MSRV 1.95 → 1.93: matches Kani 0.67.0's bundled rustc
- Kani: remove continue-on-error, add set -o pipefail so failures propagate
- CI: add concurrency group — new pushes cancel previous PR runs
- Mutants: add step summary with caught/missed counts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@crates/queue/src/raw/slot.rs`:
- Line 61: The module-level attribute #[cfg(all(test, not(miri)))] in the slot
tests disables all tests under this module for Miri; remove that module-level
gating and instead annotate only the specific incompatible tests with
#[cfg(not(miri))] or #[ignore] (or a feature gate) so Miri still runs the rest
of the test suite. Locate the attribute on the slot test module (the
#[cfg(all(test, not(miri)))] line in slot.rs) and replace it with #[cfg(test)]
(or remove it), then for each test function inside (or any helper test modules)
that require std, timing, or other non-Miri behavior, add #[cfg(not(miri))] or
#[ignore] to that test function symbol (or use a cargo feature gate) so only
those tests are skipped under Miri. Ensure similar changes are applied to the
other affected test modules (storage, handle, presets, engine, copy_ring) rather
than excluding entire modules.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1a72c470-26db-414b-b347-1eda777dc343

📥 Commits

Reviewing files that changed from the base of the PR and between a55d7b6 and c5ea65c.

📒 Files selected for processing (12)
  • .github/workflows/ci.yml
  • .github/workflows/nightly.yml
  • Cargo.toml
  • crates/queue/src/copy_ring/engine.rs
  • crates/queue/src/engine.rs
  • crates/queue/src/handle.rs
  • crates/queue/src/presets.rs
  • crates/queue/src/raw/slot.rs
  • crates/queue/src/storage.rs
  • crates/queue/tests/spsc_basic.rs
  • crates/queue/tests/spsc_copy_basic.rs
  • crates/queue/tests/spsc_stress.rs
✅ Files skipped from review due to trivial changes (7)
  • crates/queue/src/presets.rs
  • crates/queue/tests/spsc_stress.rs
  • crates/queue/tests/spsc_basic.rs
  • .github/workflows/ci.yml
  • Cargo.toml
  • crates/queue/src/handle.rs
  • crates/queue/tests/spsc_copy_basic.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/nightly.yml

}

#[cfg(test)]
#[cfg(all(test, not(miri)))]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check how broadly Miri is being excluded in queue tests.
rg -n --type=rust '#\[cfg\(all\(test,\s*not\(miri\)\)\)\]|#!\[cfg\(not\(miri\)\)\]' crates/queue

Repository: Milerius/Mantis

Length of output: 669


Enable Miri for queue tests by gating individual incompatible tests instead of entire modules.

This module and six others in crates/queue/src/ exclude all tests from Miri using #[cfg(all(test, not(miri)))], and three integration test files use #![cfg(not(miri))] at the crate root, eliminating memory-safety coverage for unsafe code paths in slot, storage, handle, presets, engine, and copy_ring. Instead of excluding whole test modules, use #[ignore] or feature gates on specific tests that are incompatible with Miri (e.g., tests requiring std or timing-sensitive assertions).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@crates/queue/src/raw/slot.rs` at line 61, The module-level attribute
#[cfg(all(test, not(miri)))] in the slot tests disables all tests under this
module for Miri; remove that module-level gating and instead annotate only the
specific incompatible tests with #[cfg(not(miri))] or #[ignore] (or a feature
gate) so Miri still runs the rest of the test suite. Locate the attribute on the
slot test module (the #[cfg(all(test, not(miri)))] line in slot.rs) and replace
it with #[cfg(test)] (or remove it), then for each test function inside (or any
helper test modules) that require std, timing, or other non-Miri behavior, add
#[cfg(not(miri))] or #[ignore] to that test function symbol (or use a cargo
feature gate) so only those tests are skipped under Miri. Ensure similar changes
are applied to the other affected test modules (storage, handle, presets,
engine, copy_ring) rather than excluding entire modules.

Sztergbaum Roman and others added 7 commits April 6, 2026 13:22
…ptest

- Exclude queue unit tests from Miri (cold_path + prefetch use inline asm)
- Exclude integration tests from Miri via #![cfg(not(miri))]
- Exclude proptest module from Miri (getcwd not available in isolation)
- Fix doc backticks in integration test comments

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… asm)

- CI + nightly: cargo miri test -p mantis-queue --lib (skip integration tests)
- CI: add Miri for strategy, events, types, market-state (safe crates)
- Revert integration test cfg(not(miri)) — handled by --lib flag instead
- Nightly Miri extended: also --lib only

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add 57 new targeted tests across convert.rs and mul_div.rs to kill
missed mutants: operator-swap coverage (+ vs *, / vs -), sign handling
(neg*neg, pos*neg), trunc-vs-round distinction at tie and above/below
tie points, overflow boundaries (MIN, MAX, widen/narrow overflow),
exact-vs-lossy rescale, and zero/identity edge cases.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… mutants

Add targeted tests to cover 20 previously-missed mutants across
mantis-market-state (array_book.rs: out-of-bounds price, zero-qty
removal, Change action, clear_side per-side, depth ordering/clamping,
level_count decrement, total_depth ask path, empty-buffer guard) and
mantis-events (flags.rs: raw bit values, contains/is_empty edge cases,
with immutability; market.rs: Ask side and Delete action on
BookDeltaPayload, Bid aggressor on TradePayload; event.rs: header field
propagation, snapshot flags, counter round-trip, seq distinctness;
control.rs: all TimerKind reprs, boundary counter values; body.rs:
discriminant uniqueness, kind mapping cross-checks).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add 40 new tests covering spread(), last_trade(), is_stale(),
is_ready(), micro_price(), check_bbo_price_change(), and the
Trade/TopOfBook arms of process() — targeting the 73 missed mutations
identified across operator replacements and deleted match arms.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ok, events

656 → 797 tests (+141). Targeting mutation testing gaps:

- market-state/engine.rs (40 tests): spread, last_trade, is_stale,
  is_ready, micro_price, check_bbo_price_change, process Trade/TopOfBook
- fixed/convert.rs (24 tests): trunc vs round, widen/narrow, sign handling,
  exact rescale, overflow, anti-mutation assertions
- fixed/mul_div.rs (33 tests): sign combos, rounding bias, div overflow,
  scalar ops, saturating ops, boundary values
- market-state/book/array_book.rs (13 tests): delta edge cases, clear,
  empty book, depth buffer, level count
- events (31 tests): flags bit ops, market payloads, event constructors,
  timer/heartbeat, EventKind distinctness

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Milerius Milerius merged commit d48029a into main Apr 6, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant