Problem
explorer and ticket are separate crates with no shared root workspace (ticket/Cargo.toml even declares its own empty [workspace]). Consequently cargo build, cargo test, cargo clippy, and cargo fmt must be run separately per crate, build-and-deploy.sh iterates directories manually, and there is no shared lockfile or lint configuration. This makes CI and local development more error-prone.
What needs to be done
- Add a root
Cargo.toml defining a workspace with explorer and ticket as members (removing the standalone [workspace] from ticket/Cargo.toml).
- Verify per-crate
[profile.release] settings are preserved at the workspace level where required for Soroban (e.g. panic = "abort", overflow-checks, lto).
- Confirm
wasm32-unknown-unknown builds still produce the same artifacts, and update build-and-deploy.sh to use workspace-aware commands.
Files
- new root
Cargo.toml
explorer/Cargo.toml, ticket/Cargo.toml
build-and-deploy.sh
Acceptance deliverables
cargo build/test/clippy/fmt run across both crates from the repository root.
- wasm artifacts are unchanged and still deploy successfully.
Tests to pass
cargo test at the workspace root runs both crates' tests.
- The release wasm build for both crates succeeds.
Problem
explorerandticketare separate crates with no shared root workspace (ticket/Cargo.tomleven declares its own empty[workspace]). Consequentlycargo build,cargo test,cargo clippy, andcargo fmtmust be run separately per crate,build-and-deploy.shiterates directories manually, and there is no shared lockfile or lint configuration. This makes CI and local development more error-prone.What needs to be done
Cargo.tomldefining a workspace withexplorerandticketas members (removing the standalone[workspace]fromticket/Cargo.toml).[profile.release]settings are preserved at the workspace level where required for Soroban (e.g.panic = "abort",overflow-checks,lto).wasm32-unknown-unknownbuilds still produce the same artifacts, and updatebuild-and-deploy.shto use workspace-aware commands.Files
Cargo.tomlexplorer/Cargo.toml,ticket/Cargo.tomlbuild-and-deploy.shAcceptance deliverables
cargo build/test/clippy/fmtrun across both crates from the repository root.Tests to pass
cargo testat the workspace root runs both crates' tests.