From 83eba4bec5dff6d73658a1885a26666a781b873a Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sun, 24 May 2026 03:21:07 -0400 Subject: [PATCH] Resolve Client.Rust-021 Client.Rust-021 (Design adherence): RustClientDesign.md "Crate layout" section now describes the actual flat workspace structure instead of the aspirational nested form. The replacement text states that the workspace root is clients/rust/, the top-level crate zb-mom-ww-mxgateway-client is declared in clients/rust/Cargo.toml directly, and crates/mxgw-cli/ is the sole [workspace.members] entry. The accompanying tree lists the real files on disk (Cargo.toml, Cargo.lock, build.rs, README.md, RustClientDesign.md, src/{lib,client,session,galaxy,options,auth,error,value,version,generated}.rs plus the src/generated/ tonic-build output dir, tests/, and crates/mxgw-cli/). Doc-only change. cargo build --workspace + cargo test --workspace clean. Co-Authored-By: Claude Opus 4.7 (1M context) --- clients/rust/RustClientDesign.md | 43 ++++++++++++++++++---------- code-reviews/Client.Rust/findings.md | 6 ++-- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/clients/rust/RustClientDesign.md b/clients/rust/RustClientDesign.md index 7b54523..332431a 100644 --- a/clients/rust/RustClientDesign.md +++ b/clients/rust/RustClientDesign.md @@ -11,25 +11,38 @@ generated contract inputs. ## Crate Layout -Recommended layout: +The workspace is rooted at `clients/rust/`. The top-level crate +`zb-mom-ww-mxgateway-client` is declared by `clients/rust/Cargo.toml` itself +(flat layout — its `src/` sits directly under the workspace root, not nested +inside `crates/`). The only `[workspace.members]` entry is the `mxgw-cli` +binary subcrate under `crates/mxgw-cli/`. ```text clients/rust/ - Cargo.toml - build.rs - crates/ - zb-mom-ww-mxgateway-client/ - src/lib.rs - src/client.rs - src/session.rs - src/options.rs - src/auth.rs - src/value.rs - src/error.rs - src/generated/ - mxgw-cli/ - src/main.rs + Cargo.toml # workspace root + top-level crate `zb-mom-ww-mxgateway-client` + Cargo.lock + build.rs # tonic-build proto generation + README.md + RustClientDesign.md + src/ + lib.rs + client.rs + session.rs + galaxy.rs + options.rs + auth.rs + error.rs + value.rs + version.rs + generated.rs # `pub mod` wrappers around files under `src/generated/` + generated/ # tonic-build output (not hand-edited) tests/ + client_behavior.rs + proto_fixtures.rs + crates/ + mxgw-cli/ # sole workspace member — binary `mxgw` + Cargo.toml + src/main.rs ``` Expected dependencies: diff --git a/code-reviews/Client.Rust/findings.md b/code-reviews/Client.Rust/findings.md index e5d5bf3..b74cbec 100644 --- a/code-reviews/Client.Rust/findings.md +++ b/code-reviews/Client.Rust/findings.md @@ -7,7 +7,7 @@ | Review date | 2026-05-24 | | Commit reviewed | `d692232` | | Status | Reviewed | -| Open findings | 1 | +| Open findings | 0 | ## Checklist coverage @@ -420,10 +420,10 @@ The CLI integration in Client.Rust-014 works either way; this is solely about de | Severity | Low | | Category | Design-document adherence | | Location | `clients/rust/RustClientDesign.md:14-33` | -| Status | Open | +| Status | Resolved | **Description:** The crate-name change in commit `397d3c5` (top-level `mxgateway-client` → `zb-mom-ww-mxgateway-client`) is reflected in `Cargo.toml`, `Cargo.lock`, every `use zb_mom_ww_mxgateway_client::` import, and `build.rs`. The "Recommended layout" block in `RustClientDesign.md:21-33` shows a nested structure with a top-level `crates/zb-mom-ww-mxgateway-client/` subdirectory containing `src/lib.rs`, `src/client.rs`, etc. — but the actual layout on disk is flat: the top-level crate lives at `clients/rust/` directly (with `src/`, `Cargo.toml`, and `build.rs` at the workspace root) and `crates/mxgw-cli/` is the only nested member. A reader consulting the design to understand the layout will be misled into looking for `crates/zb-mom-ww-mxgateway-client/` that does not exist. `CLAUDE.md` requires design docs to track code changes. **Recommendation:** Update `RustClientDesign.md:14-33` to describe the actual flat layout: workspace root at `clients/rust/`, top-level crate `zb-mom-ww-mxgateway-client` (declared in `Cargo.toml`) with `src/lib.rs`, `src/client.rs`, etc. directly under it; `crates/mxgw-cli/` is the single member subcrate. Alternatively label the block as "Aspirational nested layout (not currently adopted)" and add a separate "Current layout" section. -**Resolution:** _(empty until closed)_ +**Resolution:** 2026-05-24 — Rewrote the "Crate Layout" section of `clients/rust/RustClientDesign.md` to describe the actual flat layout on disk instead of the aspirational nested form. The section now opens with a short paragraph stating that the workspace is rooted at `clients/rust/`, that `clients/rust/Cargo.toml` declares the top-level crate `zb-mom-ww-mxgateway-client` itself (flat layout — `src/` sits directly under the workspace root, not under `crates/`), and that the only `[workspace.members]` entry is the `mxgw-cli` binary subcrate under `crates/mxgw-cli/`. The accompanying tree replaces the fictitious `crates/zb-mom-ww-mxgateway-client/` subdirectory with the real files: `Cargo.toml`, `Cargo.lock`, `build.rs`, `README.md`, `RustClientDesign.md`, `src/{lib,client,session,galaxy,options,auth,error,value,version,generated}.rs` plus `src/generated/` (tonic-build output), `tests/{client_behavior,proto_fixtures}.rs`, and `crates/mxgw-cli/` annotated as the sole workspace member producing the `mxgw` binary. `cargo build --workspace` and `cargo test --workspace` are clean at HEAD (29 tests pass across the library, integration, and proto-fixture targets). `cargo clippy --workspace --all-targets -- -D warnings` reports three pre-existing errors at HEAD on this dev box (`options.rs:98,143` missing docs, `galaxy.rs:282` `clone_on_copy`, `session.rs:522` `enum_variant_names`) that exist independently of this doc-only change — verified by running clippy with the design-doc edit stashed; tracking those is out of scope for Client.Rust-021.