-
-
Notifications
You must be signed in to change notification settings - Fork 0
proofs(Layer 3 follow-up): port proven SafePath + SafeUrl into panic-attack #115
Copy link
Copy link
Open
Labels
choreRoutine maintenance with no behaviour changeRoutine maintenance with no behaviour changemigrationPorting between languages or toolchains (e.g. -> AffineScript)Porting between languages or toolchains (e.g. -> AffineScript)priority:p2Normal - queue itNormal - queue itproofsFormal verification: Agda, Coq, Idris, Lean, Z3/SMT, axiom debtFormal verification: Agda, Coq, Idris, Lean, Z3/SMT, axiom debtscope:repoConfined to this repositoryConfined to this repositorystatus:readyFully specified and ready to be picked upFully specified and ready to be picked up
Description
Activity
Metadata
Metadata
Assignees
Labels
choreRoutine maintenance with no behaviour changeRoutine maintenance with no behaviour changemigrationPorting between languages or toolchains (e.g. -> AffineScript)Porting between languages or toolchains (e.g. -> AffineScript)priority:p2Normal - queue itNormal - queue itproofsFormal verification: Agda, Coq, Idris, Lean, Z3/SMT, axiom debtFormal verification: Agda, Coq, Idris, Lean, Z3/SMT, axiom debtscope:repoConfined to this repositoryConfined to this repositorystatus:readyFully specified and ready to be picked upFully specified and ready to be picked up
Context
The 2026-06-02
hyperpolymath/provencross-fit survey (recorded in PROOF-PROGRAMME.md) identified two leaf-validator modules as semantic-equivalent + perf-neutral candidates:SafePath::has_traversal+sanitize_filenamesrc/abduct/mod.rs:123,266;src/main.rs:2314,2377(fs::canonicalize(..).unwrap_or_else)SafeUrl::parsesrc/storage/mod.rs:1071VERISIMDB_URL(currently rawString, no scheme/host validation before HTTP POST)url::Url+ proptest scheme-required invariantNOT via FFI —
libproven.sodylib build dep too heavy forcargo install panic-attack's distribution model.Why these two
Both are leaves with clear soundness statements (traversal-rejection + RFC-3986 scheme/host parse) AND clear panic-attack failure modes (silent fallback on canonicalize fail; unvalidated env-var concatenated into POST URL).
The skip list (semantic mismatch or already-total):
SafeJson(serde already total + typed),SafeRegex(regex is RE2-lineage),SafeDateTime(chrono total on emit),SafeCommand(Command::newdoesn't shell-interpolate),SafeEnv(env keys are compile-time literals),SafeUUID(we use deterministic-timestamp UUIDs by design).Acceptance per swap
src/safe/or similar.src/Proven/SafePath.idr/SafeUrl.idr).libproven.solink.Refs