Repository navigation
Conversation
This comment has been minimized.
This comment has been minimized.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review: 2
Please check the settings in the CodeRabbit UI or the
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
[Medium impact] The PR appears safe to merge; no blocking defects were found. SummaryAdds the four Rust cargo-fuzz targets to ClusterFuzzLite while keeping Python and Rust in separate jobs.
Diagram%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[PR or daily workflow] --> B{Language matrix}
B --> C[Python job]
B --> D[Rust job]
C --> E[Build and smoke-test Python harnesses]
D --> F[Build and smoke-test cargo-fuzz targets]
E --> G[Run Python fuzzers]
F --> H[Run Rust fuzzers]
Reviews (1) · Last reviewed commit: "ci(fuzz): build and run the graph-rs car..." · Reviewed by Greptile |
c0dfe9c to
86a3418
Compare
…-fuzz-cflite # Conflicts: # rust/cgr_graph_rs/fuzz/Cargo.lock
005298e
into
pr-split/claude-cgr-graph-rs-fuzz/pr-4
Summary
rust/cgr_graph_rs/fuzz(cypher_parse,json_string,graph_algorithms,sqlite_graph). Each workflow (cflite_pr.ymlandcflite_batch.yml) gets alanguage: [python, rust]matrix, and each language runs as its own job with the existing budgets. Until now no build or workflow touched these targets. This is the runner half of the Codex P1 thread on test(graph-rs): add the graph procedures fuzz target #3443; test(graph-rs): add the fuzz package manifest #3445 added the package manifest.$OUTto the job'slanguage.python, it checks the<target>.pkgthat PyInstaller writes, which a native binary doesn't have. All four Rust targets fail that check:<target>.pkg ... cannot open, 4 of 4 broken.rust, a Python wrapper script would fail instead, because its sanitizer runtime comes in throughLD_PRELOAD..clusterfuzzlitedirectory. So both jobs build from one image, andbuild.shbuilds only the job's language, branching on$FUZZING_LANGUAGE.base-builder-rustpins:nightly-2025-09-05and0.13.2. OSS-Fuzz'scompilepasses-ZsanitizerthroughRUSTFLAGS, which only a nightly accepts, and OSS-Fuzz pairs that nightly with this image's clang 22.rust-src. Arustcompile copies the default toolchain's std sources and stops if they are missing.cargo fuzz build -O --debug-assertions, withclangas the linker (as inbase-builder-rust). The toolchain is selected throughRUSTUP_TOOLCHAINrather than+toolchain, so OSS-Fuzz's cargo wrapper still recognisesfuzz buildfor a coverage build. Each target is smoke-tested with-runs=1, as the Python targets are.Demo
No user-visible change: this only changes the fuzzing CI.
Type of Change
Related Issues
Follow-up to the Codex review thread on #3443. Stacked on #3445, so its base is
pr-split/claude-cgr-graph-rs-fuzz/pr-4.Test Plan
make test-paralleloruv run pytest -n auto -m "not integration")make test-integration, requires Docker)The ClusterFuzzLite workflows only trigger for pull requests into
main, so they won't run here until the stack retargets this PR. I reproduced their steps locally with Docker on 90743ad, using the OSS-Fuzz images:.clusterfuzzlite/Dockerfilewith one local-only extra layer that trusts this sandbox's TLS-intercepting proxy CA. That layer is not committed. The new layer installs the nightly and cargo-fuzz 0.13.2 and adds about 90 seconds to the image build.compilewithFUZZING_LANGUAGE=rust SANITIZER=address: built all 4 targets (3m 45s) and passed all 4 smoke tests.test_all.py, the bad-build check, inbase-runnerwithFUZZING_LANGUAGE=rust: exit 0, 4 targets checked.run_fuzzerfor 15 to 20 seconds per target found no crashes:cypher_parse: 294k runsjson_string: 292k runsgraph_algorithms: 57k runssqlite_graph: 5k runscompilewithFUZZING_LANGUAGE=pythonfroze and smoke-tested the 3 Python harnesses as before, andtest_all.pywithFUZZING_LANGUAGE=pythonexited 0. I ran this check on the previous stack tip. Nothing in the Python branch ofbuild.shor the image differs on this tip.python.test_all.pywithFUZZING_LANGUAGE=pythonover the Rust targets exits 1 withBroken fuzz targets 4. This is the failure the split job avoids.test_build_tls_trust.py,test_rust_extension_packaging.py,test_fuzz_harnesses.pyandtest_dependabot_config.py: 163 passed.actionlinton both workflows: clean.shellcheckonbuild.sh: two info-level SC2086 notes on the unchanged Python lines, which split words on purpose.bash -n: passed.main. Check job names change toFuzz (python, address)andFuzz (rust, address);All Checks Passdoesn't depend on them.Checklist
!in the title and its release notes inchanges/breaking/<PR number>.md(see Breaking changes)make pre-commit)# type: ignore,cast(),Any, orobjecttype hintsI didn't run the full
make pre-commitlocally. The hooks that apply to these files are YAML, whitespace and end-of-file. The YAML parses and there is no trailing whitespace.Generated by Claude Code