Commit 897159a
## Summary
Two layered refinements on top of #76 (phantom-declared /
phantom-transitive split). Same three-way
Mitigable/Unmitigable/Informational output, but the Informational tier
now produces an accurate \`action\` field for two cohorts where the
generic message was misleading.
Closes #74 in part (build-script-only /
vendored-pin name-list portion).
Closes #75.
## Cohort E-3 — build-script-only / vendored-pin (#74, partial)
A naive \`cargo machete --fix\` strip of certain phantom-declared crates
breaks the build inscrutably (cross-compile TLS, native-lib resolution,
build-time codegen). New \`is_build_script_only_or_vendored_pin(name)\`
predicate covers crates that **have no \`use\` site by design**:
- Build-script side-effect crates: \`pkg-config\`, \`cc\`, \`bindgen\`,
\`cmake\`, \`autocfg\`, \`vcpkg\`, \`winres\`, \`embed-resource\`
- Canonical vendored-pin: \`openssl-src\`
When a phantom-declared crate matches, the action flips from \"Strip
from Cargo.toml\" to \"DO NOT STRIP — load-bearing via build.rs
side-effects or native-lib linkage\".
**Future follow-up**: feature-based detection (e.g. \`openssl-sys = {
features = [\"vendored\"] }\`) needs feature-set plumbing through
\`ReachabilityEvidence\` — left out of scope.
## Cohort E-2 — Dioxus/GTK transitive (#75)
Phantom-transitive advisories where the parent is in the Dioxus desktop
family (\`wry\`, \`dioxus-desktop\`, \`dioxus\`) and the affected crate
is in the GTK/webkit family now get a Cohort E-2 message naming the
no-local-fix path (wait for parent release, or swap the desktop
renderer). Sub-rule covers \`printpdf\`→\`kuchiki\`.
GTK/webkit family matched: \`atk*\`, \`gdk*\`, \`gtk*\`, \`glib\`,
\`glib-sys\`, \`gio\`, \`gio-sys\`, \`gobject-sys\`, \`gtk3-macros\`,
\`proc-macro-error\`, \`paste\`, \`fxhash\`, \`webkit2gtk\`,
\`webkit2gtk-sys\`.
## Bonus repair: src/assail/analyzer.rs test-module corruption
The squash-merge sequence of PRs #71 (Julia) → #77 (refile of #72
vendored-snapshot) → #73 (flake.lock) left \`src/assail/analyzer.rs\`
with an unclosed-delimiter at line 7962:
- \`count_julia_dce\` had \`flake_findings\` body
- \`julia_ext_jl_dce_is_exempt\` was missing closing braces
- Two flake tests (\`flake_without_lock_is_low_severity\`,
\`flake_with_narhash_has_no_finding\`) had landed inside the Julia
section
\`cargo test --lib\` was failing to compile on main as a result. This PR
reassembles each section in its intended location; no test logic
changed.
## Test plan
- [x] \`cargo test --features http --lib bridge::classify::\` — 14/14
pass (5 new + 9 existing)
- [x] \`cargo test --features http --lib\` — 343 lib tests pass (was
previously failing to compile)
- [x] \`cargo check --features http\` — green
## Changes
- \`src/bridge/classify.rs\`: +268 / -29 lines (3 predicate fns + 2
cohort override branches + 5 regression tests)
- \`src/assail/analyzer.rs\`: +/-109 lines, net wash (reassemble
corrupted test sections)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 5266c4b commit 897159a
2 files changed
Lines changed: 317 additions & 60 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7794 | 7794 | | |
7795 | 7795 | | |
7796 | 7796 | | |
7797 | | - | |
7798 | | - | |
7799 | | - | |
7800 | | - | |
7801 | | - | |
7802 | 7797 | | |
7803 | 7798 | | |
7804 | 7799 | | |
| |||
7817 | 7812 | | |
7818 | 7813 | | |
7819 | 7814 | | |
7820 | | - | |
7821 | | - | |
7822 | | - | |
7823 | | - | |
7824 | | - | |
7825 | | - | |
7826 | | - | |
7827 | | - | |
7828 | | - | |
7829 | | - | |
7830 | | - | |
7831 | | - | |
7832 | | - | |
7833 | | - | |
7834 | | - | |
7835 | | - | |
7836 | | - | |
7837 | | - | |
7838 | | - | |
7839 | | - | |
7840 | | - | |
7841 | | - | |
7842 | | - | |
7843 | | - | |
7844 | | - | |
7845 | | - | |
7846 | | - | |
7847 | | - | |
7848 | | - | |
7849 | | - | |
7850 | | - | |
7851 | | - | |
7852 | | - | |
7853 | | - | |
7854 | | - | |
7855 | | - | |
7856 | | - | |
7857 | | - | |
7858 | | - | |
7859 | | - | |
7860 | | - | |
7861 | 7815 | | |
7862 | 7816 | | |
7863 | 7817 | | |
| |||
7880 | 7834 | | |
7881 | 7835 | | |
7882 | 7836 | | |
| 7837 | + | |
| 7838 | + | |
| 7839 | + | |
| 7840 | + | |
7883 | 7841 | | |
7884 | 7842 | | |
7885 | 7843 | | |
| |||
7944 | 7902 | | |
7945 | 7903 | | |
7946 | 7904 | | |
| 7905 | + | |
| 7906 | + | |
| 7907 | + | |
| 7908 | + | |
| 7909 | + | |
| 7910 | + | |
| 7911 | + | |
| 7912 | + | |
| 7913 | + | |
| 7914 | + | |
| 7915 | + | |
| 7916 | + | |
| 7917 | + | |
| 7918 | + | |
| 7919 | + | |
| 7920 | + | |
| 7921 | + | |
| 7922 | + | |
| 7923 | + | |
| 7924 | + | |
| 7925 | + | |
| 7926 | + | |
| 7927 | + | |
| 7928 | + | |
| 7929 | + | |
| 7930 | + | |
| 7931 | + | |
| 7932 | + | |
| 7933 | + | |
| 7934 | + | |
| 7935 | + | |
| 7936 | + | |
| 7937 | + | |
| 7938 | + | |
| 7939 | + | |
| 7940 | + | |
| 7941 | + | |
| 7942 | + | |
| 7943 | + | |
| 7944 | + | |
| 7945 | + | |
| 7946 | + | |
| 7947 | + | |
| 7948 | + | |
| 7949 | + | |
| 7950 | + | |
| 7951 | + | |
| 7952 | + | |
| 7953 | + | |
| 7954 | + | |
| 7955 | + | |
| 7956 | + | |
| 7957 | + | |
| 7958 | + | |
| 7959 | + | |
| 7960 | + | |
| 7961 | + | |
| 7962 | + | |
| 7963 | + | |
7947 | 7964 | | |
7948 | 7965 | | |
7949 | 7966 | | |
| |||
0 commit comments