Fix PR #44 review findings and pre-existing test failures - #46
Merged
Merged
Conversation
- EEVDF: ve heap feeds a deadline heap; a pick no longer pops every ineligible flow (5000 -> <=8 pops at 5000 flows). - Seed arms: record corpus parents only; ledgers trim to 2x live corpus. - Round robin (seed, op): set membership, O(n^2) -> O(n) per pick. - cuckoo_seed_filter read unguarded in corpus_manager (12 failing tests); cuckoo_seed_filter and swap_walk added to _HAIL_MARY_FLAGS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018hWd2HH1wGzqxL5wFju873
Reviewer's GuideThe PR fixes EEVDF’s ineligible-flow scan with a two-heap design, bounds seed-arm ledgers to live corpus entries, makes round-robin filtering linear via set membership, and repairs optional-feature compatibility and hail-mary flag wiring, with targeted regression coverage for each issue. Flow diagram for bounded seed-arm ledgersflowchart LR
Parent[Mutation parent] --> CorpusCheck{Parent in corpus?}
CorpusCheck -->|No| Skip[Skip arm recording]
CorpusCheck -->|Yes| Record[ArmCounts.record]
Record --> Trim[ArmCounts._trim on select_seed]
Trim --> Live[Keep only live corpus IDs\nwhen ledger exceeds 2x corpus plus slack]
Flow diagram for linear round-robin filteringflowchart LR
Seeds[Live seed IDs] --> BuildSet[Build set from seed IDs]
BuildSet --> Filter[Filter registered order by set membership]
Filter --> Pick[select_seed]
Ops[Live operators] --> BuildOpSet[Build set from operators]
BuildOpSet --> FilterOps[Filter registered order by set membership]
FilterOps --> PickOp[select_op]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
daedalus
marked this pull request as ready for review
October 1, 2026 00:33
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The corpus-only ledger guard uses seed_meta, which also contains non-corpus QEA inputs.
Review effort: Balanced
Findings: 1
Open (2)
What changed in this PR
Fixes scheduler performance, bounds seed-arm state, and restores optional-feature compatibility.
Changes:
- Adds two-heap EEVDF eligibility handling.
- Bounds seed ledgers and optimizes round-robin filtering.
- Fixes cuckoo-filter compatibility and hail-mary wiring.
| File | Description |
|---|---|
tests/test_regression_round_robin_quadratic.py |
Tests round-robin complexity and order. |
tests/test_os_net_schedulers.py |
Tests ledger bounds. |
tests/test_os_net_scheduler_wiring.py |
Tests outcome filtering. |
tests/test_fair_queue.py |
Tests EEVDF heap behavior. |
src/fuzzer_tool/services/fuzzer.py |
Filters seed-arm outcomes. |
src/fuzzer_tool/services/corpus_manager.py |
Guards optional cuckoo filtering. |
src/fuzzer_tool/core/schedulers/seed_stride.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/seed_sfq.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/seed_round_robin.py |
Uses set membership. |
src/fuzzer_tool/core/schedulers/seed_p2c.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/seed_mlfq.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/seed_eevdf.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/seed_codel.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/seed_bfq.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/seed_aimd.py |
Trims stale counts. |
src/fuzzer_tool/core/schedulers/op_round_robin.py |
Uses set membership. |
src/fuzzer_tool/core/schedulers/_arm_counts.py |
Adds bounded-ledger trimming. |
src/fuzzer_tool/core/fair_queue.py |
Implements dual EEVDF heaps. |
src/fuzzer_tool/cli/commands.py |
Extends hail-mary flags. |
docs/TODO.md |
Removes completed items. |
docs/DEEP_DIVE.md |
Documents scheduler fixes. |
CHANGELOG.md |
Records resolved defects. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+4531
to
+4532
| if not self._seed_os_arms or parent not in self.seed_meta: | ||
| return |
Comment on lines
+16
to
+19
| EEVDF cost O(log n)* lag-bounded, new flows join at V | ||
|
|
||
| (*) amortized: each flow crosses from the ve heap to the deadline heap once | ||
| per service. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Follow-up to #44. It fixes the two Copilot review findings and three bugs found earlier.
Review findings (#44)
vefeeds the deadline heap, and a pick costs amortized O(log n). Test:test_eevdf_pick_does_not_scan_ineligible_flows, which fails on the old code._record_seed_os_armsnow records only corpus parents, skipping Markov-generated inputs. Every seed arm also trims itsArmCountsledger to 2x the live corpus. Tests:test_regression_non_corpus_parent_not_recordedandtest_regression_ledger_bounded_by_corpus.Found earlier
seed_round_robin,op_round_robin): it checkedx in listonce per registered arm. It now uses set membership: 103 ms → 0.7 ms per pick at 5000 seeds. Test:tests/test_regression_round_robin_quadratic.py, which counts list-membership probes.corpus_manager.pyreadcuckoo_seed_filterwith no default. It now usesgetattr, like other optional features.cuckoo_seed_filterandswap_walkare added to_HAIL_MARY_FLAGS.Validation
🤖 Generated with Claude Code
https://claude.ai/code/session_018hWd2HH1wGzqxL5wFju873
Generated by Claude Code
Summary by Sourcery
Improve scheduler efficiency and state management while fixing optional-feature compatibility and restoring previously failing behavior.
Bug Fixes:
Enhancements:
Documentation:
Tests: