Skip to content

verify(falcon): v1.129 → P05 + OCI-P01 verified - #322

Merged
avrabe merged 3 commits into
mainfrom
verify/mathf32-p05-cos
Jul 29, 2026
Merged

verify(falcon): v1.129 → P05 + OCI-P01 verified#322
avrabe merged 3 commits into
mainfrom
verify/mathf32-p05-cos

Conversation

@avrabe

@avrabe avrabe commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Two-commit rule — the code-free verify half of v1.129

Implementations landed in #320 (cos approximation proof + OCI trace), #318 (per-component publish), #314 (WASI-free rate + through-wasm closed-loop proof), with the Rocq + Gappa gate green on CI. This PR contains no source changes — it promotes the two requirements to verified and adds their verification artifacts.

FV-FALCON-MATHF32-005 → verifies P05 (the cosine proof pair)

bound teeth (negative test)
rounding (Gappa) ≤ 2⁻²³ coqc rejects 1b-28
approximation (Coq-Interval) ≤ 1e-9 fails 1e-10 at i_degree 20

Coefficients byte-identical between the two proofs → the layers compose. Both run under the required rocq.yml gate. Notes the finding that cosine is ~10× more accurate than sine (exact 1 − 0.5·z terms, only the residual is fitted).

FV-FALCON-OCI-001 → verifies OCI-P01 (the jess contract)

  • (a) signed per-component publish — validated end-to-end on v1.127/v1.128: the real step conclusion (it's continue-on-error, so the run being green is not the evidence) plus an anonymous pull confirming vnd.wasm.config.v0+json and the .sig tag.
  • (b) WASI-free — verified by disassembly: imports 10 → 1, no wasi:*. Corroborated by jess's sweep, where the mixer stage lowered to the M7 with 0 skips / 0 WASI.
  • (c) loop-complete — the loop closes through the wasm seam: converges 0.193 s, steady-state |err| 0.0059 rad/s. Banked by jess as the SIL differential baseline for their on-target run.

Honest scope (in both artifacts)

P05 delivers the two ingredients, not the composition (P06). OCI-P01's WASI-free property is verified for rate; the other stages still link std until each gets the same mechanical conversion.

rivet validate: PASS. All four artifacts in the falcon-v1.129.0 scope are now verified — the release is cuttable.

🤖 Generated with Claude Code

…onent publish)

Two-commit rule, second commit (code-free). The implementations landed in #320
(cos approximation proof + OCI trace), #318 (per-component publish), #314
(WASI-free rate + through-wasm closed-loop proof), with the Rocq + Gappa gate
green on CI. This promotes both requirements to `verified` and adds their
verification artifacts.

FV-FALCON-MATHF32-005 (verifies P05) — the cosine proof pair, both halves
machine-checked and CI-enforced: rounding <= 2^-23 (Gappa, rejects 1b-28) and
approximation <= 1e-9 (Coq-Interval, fails 1e-10 at i_degree 20). Coefficients
byte-identical between them, so the layers compose. Records that the cosine core
is ~10x more accurate than the sine core because cos_poly carries the exact
`1 - 0.5*z` terms and only fits the residual.

FV-FALCON-OCI-001 (verifies OCI-P01) — the jess consumption contract: (a)
per-component signed publish, validated end-to-end on v1.127/v1.128 (the
continue-on-error step's REAL conclusion, plus an anonymous pull confirming the
wasm config media type and .sig tag); (b) WASI-free build, verified by
disassembly (10 imports -> 1, no wasi:*) and corroborated by jess's mixer stage
lowering with 0 skips/0 WASI; (c) loop-complete evidence — the loop closes
THROUGH the wasm seam (converges 0.193 s, |err| 0.0059 rad/s), banked by jess as
the SIL differential baseline.

Both artifacts state their scope honestly: P05 delivers the two ingredients, not
the composition (P06); OCI-P01's WASI-free property is verified for `rate`, with
the other stages pending the same mechanical conversion.

rivet validate: PASS. No source changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
@avrabe
avrabe enabled auto-merge (squash) July 29, 2026 09:01
avrabe and others added 2 commits July 29, 2026 12:18
The verification gate correctly rejected this artifact:

    error: package(s) `rate-loop-proof` not found in workspace

tests/rate-loop-proof is a STANDALONE crate (its own [workspace], so pulling in
wasmtime does not bloat the root workspace), so `cargo run -p rate-loop-proof`
cannot resolve from the repo root. Cite the runnable `cd <dir> && ...` form
instead, and mark the three steps `# bench-only` — cargo-component, wasm-tools
and wasmtime are not installed on the gate runner, and the loop proof needs a
pre-built .wasm argument the gate cannot supply. Each step is the exact command
that produced the recorded evidence; the CI-enforced half of this requirement is
the release workflow's own publish + guard steps.

Caught by the gate, not by me — exactly the "verify every cited command actually
runs" discipline. (The P05 artifact's bazel targets were separately confirmed
present in proofs/{rocq,gappa}/BUILD.bazel.)

rivet validate: PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
…-proof are bench-only

Second gate rejection, second real bug of mine — and it corrected a wrong
assumption: I marked the OCI evidence steps `# bench-only` expecting the comment
to be honoured, but the runner explicitly does NOT read that marker ("rivet
strips shell `# bench-only` comments at the YAML->JSON boundary, so we identify
bench-only steps by command shape"). It matches BENCH_PATTERNS by command shape,
and the list is designed to be extended as new infra-needs appear. So the gate
ran them anyway: `wasm-tools: not found`, `cannot open path-to`.

- scripts/run-falcon-verification.py: add three patterns for tools the gate
  runner genuinely lacks — `wasm-tools`, `cargo component` (wasm32-wasip2), and
  `rate-loop-proof` (a standalone crate whose proof needs a pre-built .wasm
  argument the gate cannot supply). Verified all three cited commands now match.
- FV-FALCON-OCI-001: replace the `<path-to>` placeholder with a real
  copy-pasteable command (it is the recorded evidence; a placeholder that cannot
  run anywhere is not evidence).

Two-commit rule unaffected: the independence check scopes "implementation" to
.rs files under crates/ and examples/; this is gate tooling.

rivet validate: PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
@avrabe
avrabe merged commit bb5b810 into main Jul 29, 2026
11 checks passed
@avrabe
avrabe deleted the verify/mathf32-p05-cos branch July 29, 2026 11:51
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