Repository navigation
CI for ruff_r2il, and build it against the current r2il - #122
Conversation
The r2sleigh `r2il` crate added `AddressSpace::aliases` and the
`SpaceId::Unresolved` variant, a space the lifter could not name. Every
unresolved space compares equal, so it has no stable identity to project.
- `facet::project` refuses an unresolved space with the new
`FacetOverflow::UnresolvedSpace` instead of assigning it a discriminant, which
would merge spaces that may be distinct.
- The furnace records such a varnode as the new `ResidualReason::UnresolvedSpace`
(anchored at the enclosing block, like an unknown custom space), and the
ledger sink writes and parses it.
- The oracle's permissive arch builds its custom spaces with `aliases: None`
("not known to alias anything").
- The corpus profile counts unresolved-space projections separately.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017HJA9obVWqSQYNtXGnMGLd
`ruff_r2il` is excluded from the workspace because it path-depends on the `r2sleigh` and `a2ui-rs` checkouts next to this repository, so the workspace-wide fmt, clippy and test jobs never built it, and it had stopped compiling against the current `r2il` without any check noticing. The new `cargo (ruff_r2il)` job checks out both siblings beside this repository, then runs `cargo fmt --check`, clippy with warnings denied (with and without the `lift` feature) and `cargo test`, all `--locked` on the repository's toolchain. It is part of the "all required checks passed" gate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017HJA9obVWqSQYNtXGnMGLd
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
`cargo hawk` reports public items that nothing in the workspace outside the crate uses. The fork's SPO/transcode crates are libraries whose public API is consumed outside this workspace (OGAR and the transcode consumers), so every one of their exported items was reported: 455 findings, all in these nine crates. Each is now listed as a `[[production]]` library, which tells hawk its public API is an external boundary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017HJA9obVWqSQYNtXGnMGLd
Declaring the nine fork SPO/transcode crates as `[[production]]` lib targets did not help. Hawk still audits a production library: a public item with no use inside the workspace is reported as dead or unnecessarily public, so 422 findings remained. These crates are called from outside this workspace (OGAR and the transcode consumers), which a closed-world analysis cannot see. Hawk's documented mechanism for that case is `--exclude-crate`: the crates are still compiled, but their public declarations are not reported. Revert the `[[production]]` entries and pass the flag for each crate in the CI step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017HJA9obVWqSQYNtXGnMGLd
The fork of r2sleigh was replayed onto radareorg/r2sleigh master. There, the lifter depends on `r2source` and `roxmltree` and no longer on `thiserror`, so the `--locked` builds in the `cargo (ruff_r2il)` job refused the old lockfile. This records the minimal update cargo makes against the replayed tree; no other version moves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017HJA9obVWqSQYNtXGnMGLd
|
Add Carrot credits or activate Agent usage billing to use Autofix |
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. |
Summary
ruff_r2ilis excluded from the workspace because it path-depends on ther2sleighanda2ui-rscheckouts next to this repository. None of the workspace-wide CI jobs (fmt, clippy, tests) built it, so it stopped compiling against the currentr2ilwithout any check noticing. Every other fork crate is a workspace member and already runs through those jobs.Changes
ruff_r2ilbuilds against the currentr2il. Ther2ilcrate addedAddressSpace::aliasesand aSpaceId::Unresolvedvariant for spaces the lifter could not name.facet::projectrefuses an unresolved space with a newFacetOverflow::UnresolvedSpace. Every unresolved space compares equal, so assigning one a discriminant would merge spaces that may be distinct.ResidualReason::UnresolvedSpace, keeping the crate's "no catch-all reason" rule. The ledger sink writes and parses it.aliases: None.New CI job,
cargo (ruff_r2il).AdaWorldAPI/r2sleighandAdaWorldAPI/a2ui-rs(both public) beside this repository, matching the../../../<sibling>paths incrates/ruff_r2il/Cargo.toml.cargo fmt --check, clippy with warnings denied (with and without theliftfeature) andcargo test, all--lockedon the repository's Rust 1.99.0 toolchain.Test plan
r2sleighanda2ui-rs, all on 1.99.0:cargo fmt --check, both clippy runs andcargo test --locked(73 tests) pass forruff_r2il.unresolved_space_is_refused_rather_than_given_a_discriminant. It fails whenSpaceId::Unresolvedis mapped to a discriminant instead of refused, and passes with the fix.ResidualReason's exhaustive no-catch-all test now lists 12 reasons.🤖 Generated with Claude Code
https://claude.ai/code/session_017HJA9obVWqSQYNtXGnMGLd
Generated by Claude Code