open-standards/wai/wai-ops/Cargo.toml
Transaction Science 446865697c WIV1 and WIR1 gate 5 (WIP, committed before running): the 32-bit form behind a feature, held to the exact form
A stage-only decode has no fast kernel behind an interpreter. What a faster
fabric runs instead is E9's 32-bit form (§5E E9, Width): the form D3b's
integer GPU legs take. Gate 5 holds it to the exact form.

- wai-ops: residual_step_i32 and i32_form_fits behind the new i32_forms
  feature (and cfg(test), cfg(kani), so the unit tests and K29 keep them);
  residual_step_by_i32, E9 through its 32-bit form for a driver whose
  operands are i64. wai-verify declares the feature name its included
  sources test.
- wai-rs i32_forms: int_video::ops::{decode_typed_i32,
  decode_pframes_typed_i32} and staged::wir1::ops::apply_unit_i32, the
  drivers with E9 as a parameter.
- Parity: every committed clip and layer through the 32-bit form as through
  the exact form (tests/int_video_ops.rs, tests/wir1_ops.rs), changed
  streams too; the differential compares the 32-bit form on every random
  case; byte-exact-conformance (i32_forms on by default) decodes WIV1 and the
  staged sets through it to the pinned digests on every leg.
- CI: the fast-kernel steps carry i32_forms, appended so gate.sh's grep
  still finds them.

Gate 4's falsification, for the record: ops::frame's block grid taken as
w / block, which only a grid with a partial last column reaches (every
committed clip's sides are multiples of its block). Gates 1 to 3 stayed
green (int_video_ops 5, wir1_ops 5); int_video_random_clips_decode_alike
failed at seed 3372 (h 5, w 3, block 4). Timed 300 s, seed 20261017: debug
2,402,935 clips and 408,439 layers, release 11,948,953 and 3,322,036,
alike.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 11:28:23 -04:00

44 lines
1.8 KiB
TOML

# The reference implementation of `wai-ops/1`, the integer operator set
# (`extensions/integer-operators.md`): the `WHG1` graph form, the load and run-time
# plans, the interpreter, the stage operators, the canonical lowerings of the
# registered integer network forms, the bounds pass with its certificate (load step
# 8), and the conformance vectors of `../ops-conformance/`.
#
# `no_std` with `alloc`, and no dependencies, so that a model checker can include
# its sources by `#[path]` the way `wai-verify` includes the other integer sources.
[package]
name = "wai-ops"
version = "0.1.0"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
publish = false
description = "WAI integer operator set wai-ops/1: WHG1 graphs, plans, interpreter, stage operators, lowerings, bounds certificates and conformance vectors"
[lib]
name = "wai_ops"
path = "src/lib.rs"
# The tool that drives this library (the certifier, the lowerings and the corpus) is
# `wai-verify`, a binary of `../wai-verify` behind its `cli` feature.
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ["cfg(kani)"] }
[dependencies]
# none
[features]
# `i32_forms`: the 32-bit forms of the stage operators that have one by identity, E9's
# (`stage::residual_step_i32`, `stage::i32_form_fits`, §5E E9 *Width*), the arithmetic a
# 32-bit fabric runs. For the integer GPU legs and the parity tests that hold those
# forms to the exact ones; this crate's tests and the model checker compile them
# without it. Never on a decode's default path.
i32_forms = []
# `bounds_oracle`: the bounds pass as it stood before its closed forms, for another
# crate's tests to hold `bounds::pass` to (wai-rs's random-set differential). This
# crate's own tests see it without the feature. Never on a decode's path.
oracle = []
[profile.release]
debug = false