Model public inputs per AIR in multi-AIR statements
- Dominant language
- Rust
- Stars
- 772
- Forks
- 352
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 93
Description
Multi-AIR currently exposes one public-input slice to every AIR, forcing all AIRs to declare the same public-input count. In Miden, this means Chiplets and Poseidon2 pretend to have 32 public values even though only Core uses stack I/O.
This works, but leaves several warts:
- AIR metadata does not reflect actual dependencies.
- Unused public inputs are threaded through unrelated AIRs.
- Shared-input assumptions leak into validation, proof ordering, and ACE layout.
- Miden-specific code must compensate for the generic representation.
Store one public-input vector per AIR while keeping the `LiftedAir` interface unchanged. For Miden, the resulting public-input counts are `[32, 0, 0]`.
This is primarily a cleanup: it makes ownership explicit, removes unused inputs and special cases, and leaves native and recursive verification behavior unchanged.
Contributor guide
Assessment
This issue has not been assessed yet.