-
src/abi/*.idr: 5 files —
Types.idr,PatternCompleteness.idr(PA1 ✅ 2026-04-11),ClassificationSoundness.idr(PA2 ✅ 2026-04-11),Stripping.idr(PROOF-PROGRAMME Layer 1.0 line-comment slice ✅ 2026-06-02 — multi-comment semantics + slash-slash closure both Qed via mutual-recursivebodyIsFixedPoint),AttestationUnforgeability.idr(PROOF-PROGRAMME §3.2 ✅ 2026-06-04 — conditional unforgeability from Ed25519 EUF-CMA + chain-hash collision-resistance hypotheses) -
Dangerous patterns: 0 in own code (3 references are in the analyzer that DETECTS believe_me in other repos); 282
unwrap()calls -
LOC: ~31,700 (Rust)
-
ABI layer: Idris2 with completeness + soundness proofs + Layer-1.0 stripping foundation
| Proof | File | What it proves |
|---|---|---|
PA1 Pattern detection completeness |
|
All 49 |
PA2 Classification soundness |
|
Severity (Low/Medium/High/Critical) is totally ordered ( |
Layer 1.0 line-comment idempotence |
|
2026-06-02 close-out (issue #113): corrects PR #111’s single-comment
model to multi-comment via mutual recursion
( |
Attestation chain unforgeability |
|
PROOF-PROGRAMME §3.2
(2026-06-04, issue #123): models the intent→evidence→seal chain
( |
Hexad↔Octad persistence round-trip |
|
PROOF-PROGRAMME §3.1 (2026-06-04, #122):
|
| Component | What | Why |
|---|---|---|
Layer 1.0 — stripBlockComments + Strings + Composition |
Block-comment ( |
Four slices: |
Bridge reachability soundness |
Reachability analysis is sound (no reachable dep wrongly classified as phantom) |
Unreachable code marked reachable wastes effort; reachable missed = security gap |
Kanren taint analysis |
Taint propagation tracks all tainted data flows |
Missed taint flow means missed vulnerability |
Idris2 — Already in use. Taint analysis correctness proofs could use Agda with relational semantics. The 282 unwrap() calls are a significant debt (but separate from the proof obligations).