Skip to content

Verus: proofs are model-only (no refinement link) and 2/4 aren't CI-run #280

Description

@avrabe

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions