open-standards/proof/proof-rs/crates/proof-solvers/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science fa88c5c9d2
Some checks failed
standards workspaces build + test / aac-rs (pull_request) Successful in 51s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Failing after 1m7s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 49s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 1m2s
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 1m37s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m49s
standards workspaces build + test / map-rs (pull_request) Successful in 1m11s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m14s
standards workspaces build + test / mesh-rs (pull_request) Successful in 1m18s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m11s
standards workspaces build + test / openpay (pull_request) Successful in 2m4s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m2s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 54s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 50s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 45s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 2m31s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 14s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 29s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 14s
standards workspaces build + test / joule-ui-rs (pull_request) Has been cancelled
standards workspaces build + test / jouledesk-rs (pull_request) Has been cancelled
standards workspaces build + test / joulehook-rs (pull_request) Has been cancelled
standards workspaces build + test / sense-rs (pull_request) Has been cancelled
standards workspaces build + test / arl-rs (pull_request) Has been cancelled
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 3m22s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 15m26s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 2m23s
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · windows (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · windows (pull_request) Has been cancelled
Merge origin/main into ar-1-on-main — reconcile the two stand-in markers
Main landed PR #62's soundness work (`Solver::is_reference_stub`,
`CascadeResult::closed_by_stub`, `require_substantive_proof`, and
proof-conformance's `soundness.rs`) after this branch diverged. That work and
the ladder fix here address the same defect from opposite ends:

  * main **detects** a fabricated proof — the stand-ins declare themselves, the
    result is marked, the cache does not launder the marker, and a relying
    party can refuse it.
  * this branch **prevents** it — the real ladders hold decision procedures
    only, so a solverless machine yields Unproved instead of escalating into a
    rung that proves anything.

Both are wanted, but two overlapping markers are worse than one. Resolution:

  * Dropped `is_decision_procedure` in favour of main's published
    `is_reference_stub`, and re-expressed `ladder_is_sound` in its terms. The
    marker I added had the safer default (a new stand-in is excluded unless it
    claims to be checkable) but a second trait method meaning nearly the same
    thing is a worse outcome than losing that default.
  * Recovered the safety that default was buying at the ladder instead:
    `ladder_is_sound` now also pins the real ladders' exact tiers, so a
    stand-in that forgets to override `is_reference_stub` still cannot slip in
    unnoticed. Documented on the trait so the two halves are findable together.
  * `soundness.rs`'s `a_stand_in_proof_is_detectable_before_it_is_trusted`
    proved an open conjecture through `real_ladder()` to demonstrate detection.
    That premise is gone — it now exercises `reference_ladder()`, where
    stand-ins legitimately live, and the property it tests is unchanged.
  * Added `the_real_ladder_never_reaches_a_stand_in` as its companion. Detection
    is a last line of defence that only works if the relying party remembers to
    call it; not reaching a stand-in at all does not depend on anyone
    remembering.

Note the defect was still live on main: main's `real_ladder()` still ends in
`FrontierModel`, and main's own `joulecontract-proof` test asserts the SMT rung
returns Unproved when no solver is present — which fails there on any machine
without `z3`.

402 tests pass across proof-rs, joule-code and joulecontract, both with and
without `z3` on PATH. The conformance vector pack is byte-identical.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-29 05:13:10 -04:00
..
lib.rs Merge origin/main into ar-1-on-main — reconcile the two stand-in markers 2026-08-29 05:13:10 -04:00
prop.rs Add the proof open standard — a carrier for verified work 2026-06-07 15:30:07 -04:00