v3.0.0
Headline: "Qualifiable + differentiated" — the strategic release. scry gains
an IEEE-754 float domain, proves its i32.add sound against the OFFICIAL
wrapping Wasm semantics, becomes the first sound analyzer to model
Component-Model handle lifetimes, and ships an assessor-facing tool-qualification
dossier. Four features (FEAT-047/048/049/050).
Added — FEAT-047 (REQ-015, AC-022) — IEEE-754 float domain
- New zero-dep crate
scry-sai-float: a sound f32/f64 abstraction (interval
[lo,hi]with±∞bounds + ananflag). Round-to-nearest-aware transfers
(add/sub/mul/neg/abs):f64needs no widening (RN monotone + exact
endpoints),f32snaps outward onto the f32 grid + coerces operands;±∞/NaN
via a 4-corner hull (incl. interior0·∞). Exhaustive γ-sweep at f32+f64;
admit-free RocqFloat.v(lattice). Straight-linecompute_float_factspass →
library-onlyAnalysisResult.float_facts. Closes the scope hole where float
arithmetic was un-analyzed.
Added — FEAT-048 (REQ-002, G-005, TE-004) — mechanized soundness vs official semantics
proofs/rocq/WrapAdd.v(admit-free): scry's shippedi32_addis sound
against the OFFICIAL two's-complement wraparound semantics ((z+2³¹) mod 2³² − 2³¹), INCLUDING the wrap case — closing the REQ-002 "no-wrap only" gap. The
widen-to-⊤ branch is sound because ⊤ = all i32; the exact branch because an
in-range sum cannot wrap. (Models the semantics WasmCert-Coq mechanizes; a
literal WasmCert-Coq import remains deferred, per the dossier's honesty note.)- The recorded-false Verus join proof is confirmed repaired to the semantic
γ-equality statement (CI-verified).
Added — FEAT-049 (REQ-003, MF-007) — Component-Model handle-state (the moat)
- New zero-dep crate
scry-sai-handle: an affine handle-state lattice
(Alive/Dropped/Top) with drop/use transitions; admit-free Rocq
Handle.v.compute_handle_findingstracks handle locals across the
canonical-ABI[resource-drop]/[method]call sites and reports DEFINITE
use-after-drop / double-drop onAnalysisResult.handle_findings. Conservative
at control flow (no false report). The first sound Component-Model
handle-lifetime analysis (MF-007).
Added — FEAT-050 (G-005, CA-011) — tool-qualification dossier
docs/qualification-dossier-v1.md: maps every DO-330 TQL-5 and ISO
26262-8 §11 (derives TCL1) objective to a concrete scry artifact — the 17
admit-free Rocq proofs, the semantic Verus proof, the MC/DC gate, the live
kill-criteria, and the FEAT-040 gap report as the per-artifact scope oracle.
Honesty-first: test-/γ-sweep-validated evidence is labelled distinctly from
mechanized proof; an adversarial overclaim audit caught and fixed three
config-row overstatements before merge.
Posture
- FEAT-047/049 are library-only
AnalysisResultfields (float_facts,
handle_findings);scry.wit+ the frozen v1 invariant-JSON contract are
unchanged. Two new crates (scry-sai-float,scry-sai-handle) join the
crates.ioscry-sai-*namespace. - Falsification statement. scry claims: every float interval
over-approximates the IEEE-754 result (incl. rounding/NaN/±∞);i32_addis
machine-proven sound vs the official wrapping semantics (WrapAdd.v); every
reported handle fault is a definite use-after-drop / double-drop; and the
qualification dossier cites only artifacts that exist and are admit-free. FALSE
if any concrete float op escapes its interval, ifWrapAdd.vdoes not hold, if
a handle fault is reported for a not-provably-dropped handle, or if any
dossier "mechanized" claim lacks a backing admit-free artifact. Each feature
passed an adversarial clean-room (FEAT-047's γ-sweep found four real numerical
bugs; the dossier audit found three overclaims — all fixed before merge).