Skip to content

Commit 945e5f9

Browse files
hyperpolymathclaude
andcommitted
fix(assail): skip .ipkg files in Idris ProofDrift; add Chapel detector
Two deferred follow-ups from the 2026-04-25 echidna chunked sweep: 1. .ipkg ProofDrift false-positive (echidnaabi.ipkg) Idris2 package manifests share the `idr`/`ipkg` extension family and route through `analyze_idris`, but `.ipkg` is a TOML-like build config — not source. String-literal mentions of banned pattern names (e.g. `brief = "...zero believe_me..."`) tripped the substring-based ProofDrift detector. Fix: short-circuit `analyze_idris` for files ending in `.ipkg`. Verified: src/abi sweep (echidna) drops to 0 ProofDrift findings. 2. Chapel language detector gap src/chapel returned `Could not detect language` because Chapel was missing from `Language` enum + extension map. Fix: add `Language::Chapel`, map `.chpl` extension, route through `analyze_generic` fallback (Chapel-specific patterns deferred — no Chapel-original code in echidna yet to dogfood against). Verified: src/chapel sweep (echidna) now produces a normal AssailReport with 6 Chapel-marked entries instead of erroring. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 71f38d4 commit 945e5f9

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

src/assail/analyzer.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3280,6 +3280,15 @@ impl Analyzer {
32803280
weak_points: &mut Vec<WeakPoint>,
32813281
file_path: &str,
32823282
) -> Result<()> {
3283+
// Idris package manifest files (`.ipkg`) share the `idr`/`ipkg`
3284+
// extension family but are TOML-like build configs, not Idris
3285+
// source. They legitimately contain string-literal mentions of
3286+
// banned-pattern names (e.g. `brief = "...zero believe_me..."`)
3287+
// that would false-fire the substring-based ProofDrift detector
3288+
// below. Skip them entirely.
3289+
if file_path.ends_with(".ipkg") {
3290+
return Ok(());
3291+
}
32833292
// Strip line ('--') and block ('{- -}') comments so that doc lines like
32843293
// `||| no believe_me required` (which start with `--` after the bar
32853294
// notation is normalised by lines()) and summary blocks do not produce

src/types.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ pub enum Language {
7373
Shell,
7474
Julia,
7575
Lua,
76+
Chapel,
7677

7778
// === Nextgen custom DSLs ===
7879
WokeLang,
@@ -159,6 +160,7 @@ impl Language {
159160
"sh" | "bash" | "zsh" | "fish" => Language::Shell,
160161
"jl" => Language::Julia,
161162
"lua" | "luau" => Language::Lua,
163+
"chpl" => Language::Chapel,
162164

163165
// Nextgen custom DSLs
164166
"woke" => Language::WokeLang,
@@ -201,6 +203,7 @@ impl Language {
201203
Language::Shell => "shell",
202204
Language::Julia => "julia",
203205
Language::Lua => "lua",
206+
Language::Chapel => "chapel",
204207
Language::Rust => "rust",
205208
Language::C | Language::Cpp => "c-family",
206209
Language::Go => "go",

0 commit comments

Comments
 (0)