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) <noreply@anthropic.com>
This commit is contained in:
@@ -11,25 +11,38 @@ generated contract inputs.
|
|||||||
|
|
||||||
## Crate Layout
|
## 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
|
```text
|
||||||
clients/rust/
|
clients/rust/
|
||||||
Cargo.toml
|
Cargo.toml # workspace root + top-level crate `zb-mom-ww-mxgateway-client`
|
||||||
build.rs
|
Cargo.lock
|
||||||
crates/
|
build.rs # tonic-build proto generation
|
||||||
zb-mom-ww-mxgateway-client/
|
README.md
|
||||||
src/lib.rs
|
RustClientDesign.md
|
||||||
src/client.rs
|
src/
|
||||||
src/session.rs
|
lib.rs
|
||||||
src/options.rs
|
client.rs
|
||||||
src/auth.rs
|
session.rs
|
||||||
src/value.rs
|
galaxy.rs
|
||||||
src/error.rs
|
options.rs
|
||||||
src/generated/
|
auth.rs
|
||||||
mxgw-cli/
|
error.rs
|
||||||
src/main.rs
|
value.rs
|
||||||
|
version.rs
|
||||||
|
generated.rs # `pub mod` wrappers around files under `src/generated/`
|
||||||
|
generated/ # tonic-build output (not hand-edited)
|
||||||
tests/
|
tests/
|
||||||
|
client_behavior.rs
|
||||||
|
proto_fixtures.rs
|
||||||
|
crates/
|
||||||
|
mxgw-cli/ # sole workspace member — binary `mxgw`
|
||||||
|
Cargo.toml
|
||||||
|
src/main.rs
|
||||||
```
|
```
|
||||||
|
|
||||||
Expected dependencies:
|
Expected dependencies:
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
| Review date | 2026-05-24 |
|
| Review date | 2026-05-24 |
|
||||||
| Commit reviewed | `d692232` |
|
| Commit reviewed | `d692232` |
|
||||||
| Status | Reviewed |
|
| Status | Reviewed |
|
||||||
| Open findings | 1 |
|
| Open findings | 0 |
|
||||||
|
|
||||||
## Checklist coverage
|
## Checklist coverage
|
||||||
|
|
||||||
@@ -420,10 +420,10 @@ The CLI integration in Client.Rust-014 works either way; this is solely about de
|
|||||||
| Severity | Low |
|
| Severity | Low |
|
||||||
| Category | Design-document adherence |
|
| Category | Design-document adherence |
|
||||||
| Location | `clients/rust/RustClientDesign.md:14-33` |
|
| 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.
|
**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.
|
**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.
|
||||||
|
|||||||
Reference in New Issue
Block a user