Skip to content

fix: repair CI after soroban-sdk 22.0.0 upgrade#188

Merged
misrasamuelisiguzor-oss merged 2 commits into
mainfrom
fix/ci-soroban-sdk-22-fallout
Jul 1, 2026
Merged

fix: repair CI after soroban-sdk 22.0.0 upgrade#188
misrasamuelisiguzor-oss merged 2 commits into
mainfrom
fix/ci-soroban-sdk-22-fallout

Conversation

@misrasamuelisiguzor-oss

Copy link
Copy Markdown
Contributor

Summary

Every push/PR has failed all CI checks (Test, Lint, Format, WASM Build, Contract Size, Deny, Pre-commit, Coverage) for about the last 6 days, since the soroban-sdk 22.0.0 dependency bump merged without the fallout being fixed. This PR repairs the full chain:

  • Dependency conflict: derive_arbitrary =1.4.2 vs soroban-sdk 22's ~1.3.0 requirement — dropped the unused pin
  • compliance-client: compliance dep was dev-dependencies-only but used unconditionally in src/lib.rs (unresolved import on real builds) — moved to [dependencies]
  • soroban-sdk 22 breaking change: u8 no longer implements TryFromVal — switched compliance tier fields to u32
  • Syntax error left over from a partial edit in treasury/src/lib.rs
  • Test suite updated for signature changes introduced alongside the SDK bump (create_invoice, mark_paid, treasury.initialize, raise_dispute, block_address)
  • soroban-sdk 22 testutils behavior change: events no longer accumulate across separate top-level calls (fixed assertions to check per-call), and nested require_auth() inside cross-contract calls now needs mock_all_auths_allowing_non_root_auth()
  • Real bug fix: batch_create_invoice didn't reject duplicate merchant nonces within the same batch, only against existing storage
  • Stale test expectations: rotation approval-weight assertion and a cancel-settlement panic message string that no longer matched contract behavior
  • CI workflow bug: build.yml was missing the required toolchain input for dtolnay/rust-toolchain@master, causing an immediate failure before checkout even completed
  • WASM build: all three contract crates defaulted to the testutils feature, which pulls in std/serde_json/rand and breaks wasm32-unknown-unknown release builds; removed the default and added a size-optimized [profile.release] so treasury (the largest contract, ~62.6KB) fits under the 64KB contract-size limit

Test plan

  • cargo check --workspace clean
  • cargo test --workspace — all suites pass
  • cargo fmt --all -- --check clean
  • cargo clippy --workspace -- -D warnings clean
  • cargo build --target wasm32-unknown-unknown --release for all 3 contracts, all under the 64KB size limit
  • pre-commit run --all-files passes
  • Verified cargo-deny license/advisory results manually (sandbox couldn't complete the advisory-db clone, but all new transitive deps use already-allowed licenses)

🤖 Generated with Claude Code

samuelisi and others added 2 commits July 1, 2026 17:54
Every push/PR has failed all CI checks for the last ~6 days since the
soroban-sdk 22.0.0 dependency bump merged. This fixes the full chain of
fallout:

- Cargo.lock conflict: derive_arbitrary =1.4.2 vs soroban-sdk 22's ~1.3.0
  requirement (drop the unused derive_arbitrary pin)
- compliance-client's compliance dep was dev-only but used unconditionally
  (unresolved import on real builds)
- u8 is no longer TryFromVal-able in soroban-sdk 22; switch compliance
  tier fields to u32
- leftover syntax error in treasury/src/lib.rs from a partial edit
- test suite updated for signature changes (create_invoice, mark_paid,
  treasury.initialize, raise_dispute, block_address) introduced alongside
  the bump
- soroban-sdk 22 testutils no longer accumulates events across separate
  top-level calls, and requires mock_all_auths_allowing_non_root_auth
  for auth checks nested inside cross-contract calls
- fixed a real bug: batch_create_invoice didn't reject duplicate
  merchant nonces within the same batch, only against existing storage
- two stale test assertions/expectations left over from earlier contract
  changes (rotation weight test, cancel-settlement panic message)
- build.yml was missing the required toolchain input for
  dtolnay/rust-toolchain@master (immediate failure before checkout)
- all three contract crates defaulted to the testutils feature, breaking
  release wasm builds; removed the default and added a size-optimized
  release profile so treasury (the largest contract) fits under the
  64KB limit

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The four workspace crates (compliance, invoice, treasury, tests) never
set a license field, tripping cargo-deny's "unlicensed" check. Also
allowlist Unicode-3.0 (unicode-ident's license, pulled in transitively)
and ignore two unmaintained-status RustSec advisories (paste,
derivative) that come from soroban-env-host's own ark-*/soroban-wasmi
dependency tree and aren't actionable from this repo.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@misrasamuelisiguzor-oss
misrasamuelisiguzor-oss merged commit 813d008 into main Jul 1, 2026
8 checks passed
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.

2 participants