Skip to content

fix: audit formal-verif honesty — relabel admits, run bazel test#99

Merged
avrabe merged 2 commits into
mainfrom
fix/audit-formal-honesty-2026-04-30
May 1, 2026
Merged

fix: audit formal-verif honesty — relabel admits, run bazel test#99
avrabe merged 2 commits into
mainfrom
fix/audit-formal-honesty-2026-04-30

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented Apr 29, 2026

Closes 4 of 5 originally-targeted findings + partial closure of C-7. No new proofs added — this PR is about honesty and gate clarity.

Findings closed in this PR

  • C-1 — Verus theorem_*-named functions ending in assume(false) are now annotated as SPECIFICATION ONLY in src/lib/src/verus_proofs/dsse_proofs.rs and merkle_proofs.rs. Doc comments above each admit explain what the open proof obligation is.
  • C-2lean/Ed25519.lean status table corrected. verification_equation_complete and basepoint_prime_order now marked as sorry / open. verification_equation_sound (proven) unchanged.
  • C-3 — New verification/rocq/README.md clearly states the directory holds Rust extraction stubs; no .v files have been written.
  • M-9rust.yml gains paths: filters so doc-only changes don't fire the cross-OS cargo + bazel matrix.

C-7 partial closure

Original plan was to remove continue-on-error: true from formal-verif jobs that "pass", and add bazel test //... to the Bazel CI step. CI showed the assumption was wrong: the formal-verif jobs were not passing — the previous greens were masking-as-success. The amendment commit (ci: amend audit C-7 — partial closure with explicit WIP labels) re-adds the mask per job with explicit comments tying each to its blocking audit finding:

  • Verus jobs: continue-on-error: true # WIP — see audit C-1
  • Kani matrix jobs: continue-on-error: true # WIP — see audit C-7 partial closure (varint and dsse pass; format/merkle/wasm_module fail; ungate selectively in a follow-up)
  • Rocq job: continue-on-error: true # WIP — see audit C-3 (unchanged from main)
  • New bazel test //... step in rust.yml: continue-on-error: true # WIP — see audit C-7 partial closure

Net audit C-7 effect: the mask is now per-job and documented, not blanket. Each masked job names which finding makes it WIP. Ungating becomes a tracked task per finding rather than a sea of red.

What this PR does NOT do

  • Does NOT discharge any Verus, Lean, or Rocq proof. Research-grade work measured in weeks.
  • Does NOT add any new theorems or specifications.
  • Does NOT remove the continue-on-error mask globally — only renames it from "blanket coverup" to "audited list of WIP items".

Test plan

  • cargo build --workspace --release clean
  • cargo test --workspace --no-run clean
  • CI: jobs that previously passed silently (or with mask) still report green; failing jobs are visible-but-non-blocking with audit-finding comments
  • CI: rust.yml does not fire on doc-only changes

Audit context: audit/2026-04-30/findings.md. Companion PRs: #96, #97, #98, #100. Capstone: #101.

Closes 5 findings from the 2026-04-30 audit. Does NOT discharge any proof
obligation; relabels existing admits as specifications and tightens the
CI gate so the next dishonesty is caught.

  C-1 — annotate Verus assume(false) sites as SPECIFICATION ONLY
  C-2 — fix Lean status table to match sorry'd proof bodies
  C-3 — add verification/rocq/README.md stating it's an unrealised stub
  C-7 — Bazel CI now runs bazel test //...; remove continue-on-error
        from formal-verif jobs that pass
  M-9 — add paths filter to rust.yml so docs-only PRs skip cargo/bazel

Fixes: C-1, C-2, C-3, C-7, M-9

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The original PR-D classified Verus + Kani matrix jobs as "passing" and
removed continue-on-error: true. CI showed they were not actually
passing — the previous greens were masking-as-success. Re-add the mask
on a per-job basis with explicit WIP comments tying each masked job to
its blocking audit finding (C-1 for Verus admits, C-7 for the new
bazel-test step). Rocq remains masked as before (audit C-3).

Net effect for audit C-7: partial closure. The mask is now per-job and
documented; ungating happens as proofs are discharged. Honesty is in
the labelling, not yet in the gate strength.

Trace: skip

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Apr 30, 2026
Bumps Cargo.toml, MODULE.bazel, src/cli/BUILD.bazel, and Cargo.lock
to 0.8.1. Adds CHANGELOG.md (new file, repo did not have one) with
the full release notes.

This release closes 26 of 33 findings from the 2026-04-30
14-perspective audit. Specific fix-PRs are #96 (STPA-Sec / docs),
#97 (hygiene), #98 (parser hardness), #99 (formal-verif honesty +
CI), #100 (keyless / OIDC hardening). Two findings (cert-pinning
enforcement, no_std verifier) are deferred to issue #95 and issue
#79 respectively.

Note on H-8 (version drift): MODULE.bazel and src/cli/BUILD.bazel
were at 0.2.7 on main; this commit takes them straight to 0.8.1.
PR #97 also bumps these to 0.8.0 as part of its H-8 fix; whichever
PR merges last has a trivial conflict that resolves to 0.8.1.

Trace: skip

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 30, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit 02e3f54 into main May 1, 2026
17 checks passed
@avrabe avrabe deleted the fix/audit-formal-honesty-2026-04-30 branch May 1, 2026 06:09
avrabe added a commit that referenced this pull request May 1, 2026
Bumps Cargo.toml, MODULE.bazel, src/cli/BUILD.bazel, and Cargo.lock
to 0.8.1. Adds CHANGELOG.md (new file, repo did not have one) with
the full release notes.

This release closes 26 of 33 findings from the 2026-04-30
14-perspective audit. Specific fix-PRs are #96 (STPA-Sec / docs),
#97 (hygiene), #98 (parser hardness), #99 (formal-verif honesty +
CI), #100 (keyless / OIDC hardening). Two findings (cert-pinning
enforcement, no_std verifier) are deferred to issue #95 and issue
#79 respectively.

Note on H-8 (version drift): MODULE.bazel and src/cli/BUILD.bazel
were at 0.2.7 on main; this commit takes them straight to 0.8.1.
PR #97 also bumps these to 0.8.0 as part of its H-8 fix; whichever
PR merges last has a trivial conflict that resolves to 0.8.1.

Trace: skip

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request May 1, 2026
Bumps Cargo.toml, MODULE.bazel, src/cli/BUILD.bazel, and Cargo.lock
to 0.8.1. Adds CHANGELOG.md (new file, repo did not have one) with
the full release notes.

This release closes 26 of 33 findings from the 2026-04-30
14-perspective audit. Specific fix-PRs are #96 (STPA-Sec / docs),
#97 (hygiene), #98 (parser hardness), #99 (formal-verif honesty +
CI), #100 (keyless / OIDC hardening). Two findings (cert-pinning
enforcement, no_std verifier) are deferred to issue #95 and issue
#79 respectively.

Note on H-8 (version drift): MODULE.bazel and src/cli/BUILD.bazel
were at 0.2.7 on main; this commit takes them straight to 0.8.1.
PR #97 also bumps these to 0.8.0 as part of its H-8 fix; whichever
PR merges last has a trivial conflict that resolves to 0.8.1.

Trace: skip

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant