Expected standard (the "full circle"): a formal-verification asset should be (1) wired into CI, (2) gating — not continue-on-error — so a regression actually blocks the merge, and (3) complete — no sorry/axioms standing in for proofs. When any link is missing, the proof exists but cannot stop a regression, so the loop is open. Maybe there is a reason here; if so it should be documented — otherwise it should follow the standard.
Found: Verus is the only formal method gating kiln CI (job verus_verification in ci.yml), but: (1) it proves an abstract model (VerifiedStaticVec in kiln-foundation/src/verus_proofs/static_vec_proofs.rs) with no refinement link to the production StaticVec — "mirrors the production logic but lives entirely in the proof world"; (2) static_string_verify and the safe_memory proof have Bazel targets but are not in the CI job (only static_vec + static_queue run).
So the proven model isn't tied to shipped code, and 2 of 4 written proofs don't gate.
Recommend: add the two missing targets to verus_verification, and add a refinement obligation (or explicitly document the model↔impl gap). Relates to #237 (disabled Kani/Miri — kiln's 22 Kani harnesses don't run in CI).
From a verification-corpus audit across the toolchain.
Expected standard (the "full circle"): a formal-verification asset should be (1) wired into CI, (2) gating — not
continue-on-error— so a regression actually blocks the merge, and (3) complete — nosorry/axioms standing in for proofs. When any link is missing, the proof exists but cannot stop a regression, so the loop is open. Maybe there is a reason here; if so it should be documented — otherwise it should follow the standard.Found: Verus is the only formal method gating kiln CI (job
verus_verificationinci.yml), but: (1) it proves an abstract model (VerifiedStaticVecinkiln-foundation/src/verus_proofs/static_vec_proofs.rs) with no refinement link to the productionStaticVec— "mirrors the production logic but lives entirely in the proof world"; (2)static_string_verifyand thesafe_memoryproof have Bazel targets but are not in the CI job (onlystatic_vec+static_queuerun).So the proven model isn't tied to shipped code, and 2 of 4 written proofs don't gate.
Recommend: add the two missing targets to
verus_verification, and add a refinement obligation (or explicitly document the model↔impl gap). Relates to #237 (disabled Kani/Miri — kiln's 22 Kani harnesses don't run in CI).From a verification-corpus audit across the toolchain.