Follow-up from PR #170 (versioned apps).
The unit tests added in #170 cover the continuity and consistency rules in isolation. We should add integration tests that exercise the new code paths through is_correct / run_all end-to-end, so that regressions get caught even when the failure mode lives in the seams between layers.
Failure modes worth covering:
Suggested layout: build small wasm fixtures (or compile a known app at multiple versions during cargo test) and drive them through ProveSpellTxImpl::validate_prove_request and charms_client::is_correct. Mock proving is fine — we're testing validation, not proof generation.
Referenced in PR #170 review comment: #170 (comment)
Follow-up from PR #170 (versioned apps).
The unit tests added in #170 cover the continuity and consistency rules in isolation. We should add integration tests that exercise the new code paths through
is_correct/run_allend-to-end, so that regressions get caught even when the failure mode lives in the seams between layers.Failure modes worth covering:
versioned_apps[vk].wasm_hash.__app_versionWasm export does not matchversioned_apps[vk].version.app.vk.app_signaturescontaining an entry whose vk is not referenced by any app inapp_public_inputs(extraneous signature).versioned_appscontaining an orphan vk that no app references (rejected byensure_no_orphan_versioned_apps).versioned_appsentry) with a signature inadvertently supplied for its vk.binarieskeyed bywasm_hashfor versioned apps vs byvkfor simple apps — mismatches in either direction.Suggested layout: build small wasm fixtures (or compile a known app at multiple versions during
cargo test) and drive them throughProveSpellTxImpl::validate_prove_requestandcharms_client::is_correct. Mock proving is fine — we're testing validation, not proof generation.Referenced in PR #170 review comment: #170 (comment)