Category: ci
Problem
.github/workflows/ci.yml's final two steps are:
- name: wasm build
run: cargo wasm-build
- name: Upload WASM artifacts
uses: actions/upload-artifact@v4
with:
name: wasm-contracts
path: |
contracts/paylink/target/wasm32v1-none/release/paylink.wasm
contracts/cheese_pay/target/wasm32v1-none/release/cheese_pay.wasm
cargo wasm-build is not a real subcommand available in this workspace (no cargo-wasm-build alias is defined anywhere in .cargo/config.toml or Cargo.toml), and neither contracts/paylink nor contracts/cheese_pay exist among the 14 real member contracts under dabdub_contracts/contracts/. The Codecov step just above it is also still named name: cheese-contracts. This is leftover boilerplate from a different project template that was never adapted when this repo's actual contracts (payment_escrow, merchant_registry, etc.) were added.
Impact
CI's WASM build/upload step silently does not build or validate WASM output for any of this workspace's real 14 contracts — it either fails outright (since the referenced paths don't exist) or, if cargo wasm-build happens to resolve to something unintended, produces artifacts nobody can use. Critically, ci.yml never invokes make check-wasm-size, so the documented 64KB WASM size budget (Makefile, WASM_SIZE_LIMIT := 65536) is enforced only in deploy.yml, on the push: main/tag path — a pull request that grows a contract's WASM past the 64KB Soroban deploy limit would not be caught until (or unless) it merges.
Suggested fix
Replace the stale steps with cargo build --target wasm32v1-none --release across the real workspace and make check-wasm-size, uploading the actual per-contract .wasm files under dabdub_contracts/target/wasm32v1-none/release/*.wasm, so pull requests get the same 64KB budget gate that deploy.yml already enforces on main.
Category: ci
Problem
.github/workflows/ci.yml's final two steps are:cargo wasm-buildis not a real subcommand available in this workspace (nocargo-wasm-buildalias is defined anywhere in.cargo/config.tomlorCargo.toml), and neithercontracts/paylinknorcontracts/cheese_payexist among the 14 real member contracts underdabdub_contracts/contracts/. The Codecov step just above it is also still namedname: cheese-contracts. This is leftover boilerplate from a different project template that was never adapted when this repo's actual contracts (payment_escrow,merchant_registry, etc.) were added.Impact
CI's WASM build/upload step silently does not build or validate WASM output for any of this workspace's real 14 contracts — it either fails outright (since the referenced paths don't exist) or, if
cargo wasm-buildhappens to resolve to something unintended, produces artifacts nobody can use. Critically,ci.ymlnever invokesmake check-wasm-size, so the documented 64KB WASM size budget (Makefile,WASM_SIZE_LIMIT := 65536) is enforced only indeploy.yml, on thepush: main/tag path — a pull request that grows a contract's WASM past the 64KB Soroban deploy limit would not be caught until (or unless) it merges.Suggested fix
Replace the stale steps with
cargo build --target wasm32v1-none --releaseacross the real workspace andmake check-wasm-size, uploading the actual per-contract.wasmfiles underdabdub_contracts/target/wasm32v1-none/release/*.wasm, so pull requests get the same 64KB budget gate thatdeploy.ymlalready enforces onmain.