Implement scenario-based fuzzing with state prefixes - #4513
Implement scenario-based fuzzing with state prefixes#4513dnkolegov-ar wants to merge 13 commits into
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
commonware-mcp | d017c60 | Aug 19 2026, 04:56 PM |
Benchmark resultsRegressions: ✅ `qmdb::merkleize/v=any::unordered::fixed::mmr k=10000 ch=false s=true cc=true` (2/2 gates passed)
✅ `qmdb::merkleize/v=current::ordered::fixed::mmb chunk=256 k=10000 ch=false s=true cc=true` (2/2 gates passed)
Baseline commit(s): |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 7caf292. Configure here.
| //! - **Simplex layer (3/4/5)** — [`start_simplex_disrupter`]: the real | ||
| //! [`Disrupter`] with `LiveScope` semantic mutation (mutate the proposal, then | ||
| //! re-sign), scheduled on the live window above the attack view. | ||
| //! - **Dissemination layer (2 + 1)** — [`start_dissemination_disrupter`]: as the |
There was a problem hiding this comment.
Non-ASCII in new comments
Low Severity
New module docs and comments use non-ASCII punctuation (—, →). Project style requires ASCII equivalents in // and /// comments (for example - or ->).
Additional Locations (1)
Triggered by learned rule: Avoid non-ASCII characters in code comments
Reviewed by Cursor Bugbot for commit 7caf292. Configure here.
| height_0.get(), | ||
| height_1.get(), | ||
| ); | ||
| } |
There was a problem hiding this comment.
Floor order oracle gap
Medium Severity
check_floor_started_order allows a contiguous genesis-rooted chain through heights below the floor. For a floor-started node, that means deliveries in (0, floor_height) pass even though set_floor is supposed to prune below the floor, so the PendingFloorAnchor safety oracle can miss a real prune/dispatch bug.
Reviewed by Cursor Bugbot for commit 7caf292. Configure here.
Deploying monorepo with
|
| Latest commit: |
d017c60
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://a43bc4e4.monorepo-eu0.pages.dev |
| Branch Preview URL: | https://denis-scenario-based-fuzzing.monorepo-eu0.pages.dev |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## fuzzing #4513 +/- ##
==========================================
Coverage ? 95.46%
==========================================
Files ? 606
Lines ? 273298
Branches ? 6576
==========================================
Hits ? 260915
Misses ? 10201
Partials ? 2182 Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|


The marshal standard tests in
consensus/src/marshal/standard/mod.rsencode hand-crafted event sequences (propose, notarize, finalize, report, restart) that drive marshal into interesting semantic states (missing candidate, pendingbackfill, open subscription, divergent same-height certificates, pending floor anchor). They can't be reused for fuzzing: they run on
StandardHarnesswith real BLS crypto, whereas fuzzing needs the fastSimplexCertificateMock, andconsensus/src/*must not be modified.This module reproduces chosen prefixes of those tests as deterministic scripts, stops at an interesting semantic point, then hands the cluster to a fuzzing phase (N4F1C3 adversarial or N4F0C4 honest) and checks safety, liveness, and per-scenario oracles.