Summary
src/Proven/SafeCrypto/Proofs.idr declares two OWED sites that are NOT covered by the Family 3 (covering/totality) refactor track:
modernIsSecure (line 138) — securityLevel alg = Modern -> isSecure alg = True
standardIsSecure (line 148) — securityLevel alg = Standard -> isSecure alg = True
Both are classified DISCHARGE-after-totality in docs/proof-debt-triage-tier-a.md, but the actual blocker is NOT totality — it's an elaborator-level issue:
case is not eta-expanded under rewrite in Idris2 0.8.0.
The proof should be a straightforward rewrite + case + Refl per arm, but the elaborator fails to unfold the case scrutinee after the rewrite step. This is a known class of Idris2 0.8.0 limitations that may be fixed in 0.9.0.
Action
This issue tracks the Idris2 0.9.0 release timeline rather than requesting a local refactor:
Workaround (if discharge needed before 0.9.0)
Hand-write the inversion: instead of rewrite prf in case alg of ..., use with blocks or explicit pattern-match on alg first, then rewrite per arm. ~2-3h estimate; acceptable for a one-off but not pattern-worthy.
OWED sites tracked
src/Proven/SafeCrypto/Proofs.idr:138 — modernIsSecure
src/Proven/SafeCrypto/Proofs.idr:148 — standardIsSecure
Related
🤖 Filed by Claude during Phase 2 Days 11-14 of the proof-debt triage.
Summary
src/Proven/SafeCrypto/Proofs.idrdeclares two OWED sites that are NOT covered by the Family 3 (covering/totality) refactor track:modernIsSecure(line 138) —securityLevel alg = Modern -> isSecure alg = TruestandardIsSecure(line 148) —securityLevel alg = Standard -> isSecure alg = TrueBoth are classified
DISCHARGE-after-totalityindocs/proof-debt-triage-tier-a.md, but the actual blocker is NOT totality — it's an elaborator-level issue:The proof should be a straightforward
rewrite + case + Refl per arm, but the elaborator fails to unfold thecasescrutinee after the rewrite step. This is a known class of Idris2 0.8.0 limitations that may be fixed in 0.9.0.Action
This issue tracks the Idris2 0.9.0 release timeline rather than requesting a local refactor:
Workaround (if discharge needed before 0.9.0)
Hand-write the inversion: instead of
rewrite prf in case alg of ..., usewithblocks or explicit pattern-match onalgfirst, thenrewriteper arm. ~2-3h estimate; acceptable for a one-off but not pattern-worthy.OWED sites tracked
src/Proven/SafeCrypto/Proofs.idr:138—modernIsSecuresrc/Proven/SafeCrypto/Proofs.idr:148—standardIsSecureRelated
docs/proof-debt-triage.md§8.docs/proof-debt-triage-tier-a.md§ SafeCrypto.🤖 Filed by Claude during Phase 2 Days 11-14 of the proof-debt triage.