Commit bd7bb5f
ArghDA M4 follow-on: Idris2 totality-hole + partial lint (M4 → 100%) (#48)
## What
The Idris2 escape-hatch lint now flags the two remaining totality
opt-outs, closing M4 (→ 100%):
- a **per-definition `partial` modifier** (distinct from the
already-handled file-wide `%default partial` directive), and
- **totality holes `?name`** (incomplete terms/proofs).
Both ride under the shared `escape-hatch` rule name, so the reasoning
graph caps a hit at amber — exactly like `believe_me`.
## How (`src/lint/idris2.rs`)
- `holes()` matches a `?` that begins a token (start of line / after
whitespace / `([{,;=`) followed by an identifier — so a hole `?goal`
matches, but a user operator `<?>` (with `?` between symbol chars) does
not.
- `strip_strings()` blanks double-quoted literals (honouring `\"`)
first, so a `"?x"` inside a string is not a false hole.
## Verification (actually run)
- `cargo fmt --check` — clean
- `cargo clippy --all-targets -- -D warnings` — clean
- `cargo test` — **173 pass** (+5 idris2 lint units: per-def `partial`,
hole, hole-in-string ignored, `<?>` not a hole, `total` not flagged)
- `bash scripts/check-spdx.sh .` — OK
**Dogfooded vs real idris2 0.7.0** on a file with `partial loop` + `f =
?rhs`:
| step | result |
|---|---|
| `idris2 --check --source-dir …` | exits **0** — the silent-failure
class |
| `arghda scan --backend idris2` | flags both `partial` and `?rhs` |
| `arghda reason --check --backend idris2` | `Holey` → self=`admitted`,
effective=`admitted`, evidence `"prover: proven; escape-hatch →
admitted"` — the green exit correctly capped to amber |
## Scope
M4 complete. The only remaining roadmap item is **M7** (real Echidna
HTTP client) — gated on confirming Echidna's API actually exists; if it
doesn't, the honest `Unavailable` stub stays.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7
---
_Generated by [Claude
Code](https://claude.ai/code/session_012MpYSh6Wy8YMBH2E3qVyT7)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent b944e39 commit bd7bb5f
2 files changed
Lines changed: 147 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
117 | 133 | | |
118 | 134 | | |
119 | 135 | | |
| |||
392 | 408 | | |
393 | 409 | | |
394 | 410 | | |
395 | | - | |
| 411 | + | |
396 | 412 | | |
397 | 413 | | |
398 | 414 | | |
399 | 415 | | |
400 | | - | |
| 416 | + | |
401 | 417 | | |
402 | 418 | | |
403 | 419 | | |
| |||
406 | 422 | | |
407 | 423 | | |
408 | 424 | | |
409 | | - | |
410 | | - | |
411 | | - | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
412 | 429 | | |
413 | 430 | | |
414 | 431 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
| |||
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
48 | | - | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
49 | 53 | | |
50 | 54 | | |
51 | 55 | | |
52 | 56 | | |
53 | 57 | | |
54 | 58 | | |
55 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
56 | 70 | | |
57 | | - | |
58 | | - | |
| 71 | + | |
59 | 72 | | |
60 | 73 | | |
61 | 74 | | |
| |||
66 | 79 | | |
67 | 80 | | |
68 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
69 | 93 | | |
70 | 94 | | |
71 | 95 | | |
72 | 96 | | |
73 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
74 | 156 | | |
75 | 157 | | |
76 | 158 | | |
| |||
137 | 219 | | |
138 | 220 | | |
139 | 221 | | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
140 | 256 | | |
0 commit comments