Repository navigation
refactor: move library crates into crates/ directory - #676
Conversation
Move 13 library crates (auth, data_connector, grpc_client, kv_index, mcp, mesh, multimodal, protocols, reasoning_parser, tokenizer, tool_parser, wasm, workflow) from repo root into crates/ subdirectory. Update all path references in: - Root Cargo.toml workspace members and dependency paths - bindings/python, bindings/golang, clients/openapi-gen Cargo.toml - 7 CI workflows (path triggers, cache keys, proto copy paths) - Scripts (check_release_versions.sh, ci_install_vllm.sh) - Documentation (development.md, grpc_servicer/DEVELOPMENT.md) This follows standard Rust workspace conventions and reduces root-level clutter from 18+ directories to a cleaner layout. Signed-off-by: Chang Su <chang.s.su@oracle.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughRepository-wide path refactor: updated many workspace, CI workflow, binding, client, test, and script paths to the Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Comment |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request implements a significant refactoring of the repository's directory structure by consolidating numerous library crates into a dedicated Highlights
Changelog
Ignored Files
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/nightly-benchmark.yml:
- Line 51: The cache key in the nightly-benchmark workflow is missing the
openapi-gen workspace, so changes to generated client types won't invalidate the
cache; update the hashFiles list used in the key (the key line that starts with
key: nightly-wheel-${{ runner.os }}-${{ hashFiles(...) }}) to include
'clients/openapi-gen/src/**' so modifications to the openapi-gen crate (which
generates clients/python/smg_client/types/_generated.py) are included in the
cache fingerprint.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 4d6ee304-17d0-44bf-b873-e4453877a8e2
⛔ Files ignored due to path filters (10)
crates/multimodal/tests/fixtures/images/grayscale.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/large.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/odd_dims.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/small.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/square.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/tall.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/tiny.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/very_tall.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/very_wide.jpgis excluded by!**/*.jpgcrates/multimodal/tests/fixtures/images/wide.jpgis excluded by!**/*.jpg
📒 Files selected for processing (290)
.github/workflows/benchmark-radix-tree.yml.github/workflows/benchmark-tokenizer.yml.github/workflows/benchmark-tool-parser.yml.github/workflows/nightly-benchmark.yml.github/workflows/pr-test-rust.yml.github/workflows/release-crates.yml.github/workflows/release-grpc.ymlCargo.tomlbindings/golang/Cargo.tomlbindings/python/Cargo.tomlclients/openapi-gen/Cargo.tomlcrates/auth/Cargo.tomlcrates/auth/src/audit.rscrates/auth/src/config.rscrates/auth/src/jwks.rscrates/auth/src/jwt.rscrates/auth/src/lib.rscrates/auth/src/middleware.rscrates/data_connector/Cargo.tomlcrates/data_connector/README.mdcrates/data_connector/src/common.rscrates/data_connector/src/config.rscrates/data_connector/src/context.rscrates/data_connector/src/core.rscrates/data_connector/src/factory.rscrates/data_connector/src/hooked.rscrates/data_connector/src/hooks.rscrates/data_connector/src/lib.rscrates/data_connector/src/memory.rscrates/data_connector/src/noop.rscrates/data_connector/src/oracle.rscrates/data_connector/src/oracle_migrations.rscrates/data_connector/src/postgres.rscrates/data_connector/src/postgres_migrations.rscrates/data_connector/src/redis.rscrates/data_connector/src/schema.rscrates/data_connector/src/versioning.rscrates/grpc_client/Cargo.tomlcrates/grpc_client/build.rscrates/grpc_client/proto/common.protocrates/grpc_client/proto/sglang_encoder.protocrates/grpc_client/proto/sglang_scheduler.protocrates/grpc_client/proto/trtllm_service.protocrates/grpc_client/proto/vllm_engine.protocrates/grpc_client/python/.gitignorecrates/grpc_client/python/README.mdcrates/grpc_client/python/pyproject.tomlcrates/grpc_client/python/setup.pycrates/grpc_client/python/smg_grpc_proto/__init__.pycrates/grpc_client/python/smg_grpc_proto/protocrates/grpc_client/src/lib.rscrates/grpc_client/src/sglang_scheduler.rscrates/grpc_client/src/tokenizer_bundle.rscrates/grpc_client/src/trtllm_service.rscrates/grpc_client/src/vllm_engine.rscrates/kv_index/Cargo.tomlcrates/kv_index/benches/throughput_bench.rscrates/kv_index/src/common.rscrates/kv_index/src/event_tree.rscrates/kv_index/src/lib.rscrates/kv_index/src/string_tree.rscrates/kv_index/src/token_tree.rscrates/mcp/Cargo.tomlcrates/mcp/README.mdcrates/mcp/src/annotations.rscrates/mcp/src/approval/audit.rscrates/mcp/src/approval/manager.rscrates/mcp/src/approval/mod.rscrates/mcp/src/approval/policy.rscrates/mcp/src/core/config.rscrates/mcp/src/core/handler.rscrates/mcp/src/core/metrics.rscrates/mcp/src/core/mod.rscrates/mcp/src/core/oauth.rscrates/mcp/src/core/orchestrator.rscrates/mcp/src/core/pool.rscrates/mcp/src/core/proxy.rscrates/mcp/src/core/reconnect.rscrates/mcp/src/core/session.rscrates/mcp/src/error.rscrates/mcp/src/inventory/index.rscrates/mcp/src/inventory/mod.rscrates/mcp/src/inventory/types.rscrates/mcp/src/lib.rscrates/mcp/src/responses_bridge.rscrates/mcp/src/tenant.rscrates/mcp/src/transform/mod.rscrates/mcp/src/transform/transformer.rscrates/mcp/src/transform/types.rscrates/mesh/Cargo.tomlcrates/mesh/build.rscrates/mesh/src/README.mdcrates/mesh/src/consistent_hash.rscrates/mesh/src/controller.rscrates/mesh/src/crdt_kv/crdt.rscrates/mesh/src/crdt_kv/kv_store.rscrates/mesh/src/crdt_kv/mod.rscrates/mesh/src/crdt_kv/operation.rscrates/mesh/src/crdt_kv/replica.rscrates/mesh/src/crdt_kv/tests.rscrates/mesh/src/flow_control.rscrates/mesh/src/incremental.rscrates/mesh/src/lib.rscrates/mesh/src/metrics.rscrates/mesh/src/mtls.rscrates/mesh/src/node_state_machine.rscrates/mesh/src/partition.rscrates/mesh/src/ping_server.rscrates/mesh/src/proto/gossip.protocrates/mesh/src/rate_limit_window.rscrates/mesh/src/service.rscrates/mesh/src/stores.rscrates/mesh/src/sync.rscrates/mesh/src/tests/comprehensive.rscrates/mesh/src/tests/mod.rscrates/mesh/src/tests/test_utils.rscrates/mesh/src/topology.rscrates/mesh/src/tree_ops.rscrates/multimodal/Cargo.tomlcrates/multimodal/scripts/generate_vision_golden.pycrates/multimodal/src/error.rscrates/multimodal/src/hasher.rscrates/multimodal/src/lib.rscrates/multimodal/src/media.rscrates/multimodal/src/registry/llama4.rscrates/multimodal/src/registry/llava.rscrates/multimodal/src/registry/mod.rscrates/multimodal/src/registry/phi3_v.rscrates/multimodal/src/registry/qwen3_vl.rscrates/multimodal/src/registry/qwen_vl.rscrates/multimodal/src/registry/traits.rscrates/multimodal/src/tracker.rscrates/multimodal/src/types.rscrates/multimodal/src/vision/image_processor.rscrates/multimodal/src/vision/mod.rscrates/multimodal/src/vision/preprocessor_config.rscrates/multimodal/src/vision/processors/llama4_vision.rscrates/multimodal/src/vision/processors/llava.rscrates/multimodal/src/vision/processors/mod.rscrates/multimodal/src/vision/processors/phi3_vision.rscrates/multimodal/src/vision/processors/phi4_vision.rscrates/multimodal/src/vision/processors/pixtral.rscrates/multimodal/src/vision/processors/qwen2_vl.rscrates/multimodal/src/vision/processors/qwen3_vl.rscrates/multimodal/src/vision/processors/qwen_vl_base.rscrates/multimodal/src/vision/transforms.rscrates/multimodal/tests/multimodal_tracker_test.rscrates/multimodal/tests/vision_golden_tests.rscrates/protocols/Cargo.tomlcrates/protocols/src/builders/chat/mod.rscrates/protocols/src/builders/chat/response.rscrates/protocols/src/builders/chat/stream_response.rscrates/protocols/src/builders/mod.rscrates/protocols/src/builders/realtime/client_event.rscrates/protocols/src/builders/realtime/mod.rscrates/protocols/src/builders/realtime/response.rscrates/protocols/src/builders/realtime/server_event.rscrates/protocols/src/builders/responses/mod.rscrates/protocols/src/builders/responses/response.rscrates/protocols/src/chat.rscrates/protocols/src/classify.rscrates/protocols/src/common.rscrates/protocols/src/completion.rscrates/protocols/src/embedding.rscrates/protocols/src/event_types.rscrates/protocols/src/generate.rscrates/protocols/src/interactions.rscrates/protocols/src/lib.rscrates/protocols/src/messages.rscrates/protocols/src/model_card.rscrates/protocols/src/model_type.rscrates/protocols/src/parser.rscrates/protocols/src/realtime_conversation.rscrates/protocols/src/realtime_events.rscrates/protocols/src/realtime_response.rscrates/protocols/src/realtime_session.rscrates/protocols/src/rerank.rscrates/protocols/src/responses.rscrates/protocols/src/sampling_params.rscrates/protocols/src/tokenize.rscrates/protocols/src/validated.rscrates/protocols/src/worker.rscrates/reasoning_parser/Cargo.tomlcrates/reasoning_parser/README.mdcrates/reasoning_parser/src/README.mdcrates/reasoning_parser/src/factory.rscrates/reasoning_parser/src/lib.rscrates/reasoning_parser/src/parsers/base.rscrates/reasoning_parser/src/parsers/cohere_cmd.rscrates/reasoning_parser/src/parsers/deepseek_r1.rscrates/reasoning_parser/src/parsers/glm45.rscrates/reasoning_parser/src/parsers/kimi.rscrates/reasoning_parser/src/parsers/minimax.rscrates/reasoning_parser/src/parsers/mod.rscrates/reasoning_parser/src/parsers/nano_v3.rscrates/reasoning_parser/src/parsers/qwen3.rscrates/reasoning_parser/src/parsers/step3.rscrates/reasoning_parser/src/traits.rscrates/tokenizer/Cargo.tomlcrates/tokenizer/README.mdcrates/tokenizer/benches/stop_sequence_search.rscrates/tokenizer/src/cache/fingerprint.rscrates/tokenizer/src/cache/l0.rscrates/tokenizer/src/cache/l1.rscrates/tokenizer/src/cache/mod.rscrates/tokenizer/src/chat_template.rscrates/tokenizer/src/factory.rscrates/tokenizer/src/hub.rscrates/tokenizer/src/huggingface.rscrates/tokenizer/src/lib.rscrates/tokenizer/src/mock.rscrates/tokenizer/src/registry.rscrates/tokenizer/src/sequence.rscrates/tokenizer/src/stop.rscrates/tokenizer/src/stream.rscrates/tokenizer/src/tests.rscrates/tokenizer/src/tiktoken.rscrates/tokenizer/src/traits.rscrates/tokenizer/tests/chat_template_format_detection.rscrates/tokenizer/tests/chat_template_integration.rscrates/tokenizer/tests/chat_template_loading.rscrates/tokenizer/tests/common/mod.rscrates/tokenizer/tests/tiktoken_integration.rscrates/tokenizer/tests/tokenizer_cache_correctness_test.rscrates/tokenizer/tests/tokenizer_integration.rscrates/tool_parser/Cargo.tomlcrates/tool_parser/README.mdcrates/tool_parser/src/errors.rscrates/tool_parser/src/factory.rscrates/tool_parser/src/lib.rscrates/tool_parser/src/parsers/cohere.rscrates/tool_parser/src/parsers/deepseek.rscrates/tool_parser/src/parsers/glm4_moe.rscrates/tool_parser/src/parsers/helpers.rscrates/tool_parser/src/parsers/json.rscrates/tool_parser/src/parsers/kimik2.rscrates/tool_parser/src/parsers/llama.rscrates/tool_parser/src/parsers/minimax_m2.rscrates/tool_parser/src/parsers/mistral.rscrates/tool_parser/src/parsers/mod.rscrates/tool_parser/src/parsers/passthrough.rscrates/tool_parser/src/parsers/pythonic.rscrates/tool_parser/src/parsers/qwen.rscrates/tool_parser/src/parsers/qwen_coder.rscrates/tool_parser/src/parsers/step3.rscrates/tool_parser/src/partial_json.rscrates/tool_parser/src/tests.rscrates/tool_parser/src/traits.rscrates/tool_parser/src/types.rscrates/tool_parser/tests/common/mod.rscrates/tool_parser/tests/tool_parser_cohere.rscrates/tool_parser/tests/tool_parser_deepseek.rscrates/tool_parser/tests/tool_parser_edge_cases.rscrates/tool_parser/tests/tool_parser_fallback.rscrates/tool_parser/tests/tool_parser_glm47_moe.rscrates/tool_parser/tests/tool_parser_glm4_moe.rscrates/tool_parser/tests/tool_parser_json.rscrates/tool_parser/tests/tool_parser_kimik2.rscrates/tool_parser/tests/tool_parser_llama.rscrates/tool_parser/tests/tool_parser_minimax_m2.rscrates/tool_parser/tests/tool_parser_mistral.rscrates/tool_parser/tests/tool_parser_mixed_edge_cases.rscrates/tool_parser/tests/tool_parser_partial_json.rscrates/tool_parser/tests/tool_parser_pythonic.rscrates/tool_parser/tests/tool_parser_qwen.rscrates/tool_parser/tests/tool_parser_qwen_coder.rscrates/tool_parser/tests/tool_parser_step3.rscrates/wasm/Cargo.tomlcrates/wasm/README.mdcrates/wasm/src/config.rscrates/wasm/src/errors.rscrates/wasm/src/interface/spec.witcrates/wasm/src/interface/storage/storage-hooks.witcrates/wasm/src/lib.rscrates/wasm/src/module.rscrates/wasm/src/module_manager.rscrates/wasm/src/runtime.rscrates/wasm/src/spec.rscrates/wasm/src/storage_hook.rscrates/wasm/src/storage_spec.rscrates/wasm/src/types.rscrates/wasm/tests/fixtures/build_fixtures.shcrates/wasm/tests/storage_hook_integration.rscrates/workflow/Cargo.tomlcrates/workflow/README.mdcrates/workflow/src/definition.rscrates/workflow/src/engine.rscrates/workflow/src/event.rscrates/workflow/src/executor.rscrates/workflow/src/lib.rs
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a463d7dc45
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| run: | | ||
| source "$HOME/.cargo/env" | ||
| bash wasm/tests/fixtures/build_fixtures.sh | ||
| bash crates/wasm/tests/fixtures/build_fixtures.sh |
There was a problem hiding this comment.
Update WASM fixture script for new crates/ path
This workflow step now invokes crates/wasm/tests/fixtures/build_fixtures.sh, but that script still computes REPO_ROOT via ../../.. and then reads examples from $REPO_ROOT/examples/wasm; from the new location this resolves to <repo>/crates/examples/wasm, which does not exist. As a result, whenever the wheel cache is cold and this step runs, fixture generation fails and blocks the Rust PR pipeline.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in 4d44546 — updated REPO_ROOT to use ../../../.. and FIXTURES_DIR to use crates/wasm/tests/fixtures.
| "smg-wasm|wasm|smg-wasm" | ||
| "smg-mesh|mesh|smg-mesh" | ||
| "smg-grpc-client|grpc_client|smg-grpc-client" | ||
| "openai-protocol|crates/protocols|openai-protocol" |
There was a problem hiding this comment.
Preserve version checks across pre-move tags
Switching the crate registry entries to crates/... paths causes get_crate_version_at_ref to miss Cargo.toml in tags created before this refactor, so moved crates are misclassified as "new crate" and version-bump enforcement is skipped. In practice, running scripts/check_release_versions.sh against a pre-move ref now reports all moved crates as new and exits cleanly despite code changes, weakening release validation until a new post-move tag exists.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Valid observation. This is a transient issue — git show $TAG:crates/X/Cargo.toml will miss for pre-move tags. In practice this only affects the first release after merge: moved crates would be misclassified as 'new' and skip bump enforcement. Once a post-move tag exists, it resolves itself. Acceptable tradeoff for a structural refactor — no pre-move tags need version checking going forward.
There was a problem hiding this comment.
Updated in 963f80f — added fallback logic that tries the legacy path (without crates/ prefix) when git show $TAG:crates/X/Cargo.toml fails. This makes the version checker work correctly against both pre-move and post-move tags.
There was a problem hiding this comment.
Code Review
This pull request refactors the repository structure by moving library crates into a crates/ directory, with correct path updates in the Cargo.toml files. No security vulnerabilities were detected, as the changes are purely structural and do not introduce new risks. For improved maintainability, consider consistently using workspace dependencies to avoid hardcoding relative paths.
Signed-off-by: Chang Su <chang.s.su@oracle.com>
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/wasm/tests/fixtures/build_fixtures.sh (1)
4-5:⚠️ Potential issue | 🟡 MinorUpdate the usage comment to reflect the new path.
The comment still references the old path
./wasm/tests/fixtures/build_fixtures.sh, but the script is now located atcrates/wasm/tests/fixtures/build_fixtures.sh.📝 Proposed fix
# Run from the repository root: -# ./wasm/tests/fixtures/build_fixtures.sh +# ./crates/wasm/tests/fixtures/build_fixtures.sh🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/wasm/tests/fixtures/build_fixtures.sh` around lines 4 - 5, Update the top-of-file usage comment in build_fixtures.sh to point to the script's new location; replace the old path reference "./wasm/tests/fixtures/build_fixtures.sh" with the correct "crates/wasm/tests/fixtures/build_fixtures.sh" in the comment near the file header so the usage instructions match the current file location.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@crates/wasm/tests/fixtures/build_fixtures.sh`:
- Around line 4-5: Update the top-of-file usage comment in build_fixtures.sh to
point to the script's new location; replace the old path reference
"./wasm/tests/fixtures/build_fixtures.sh" with the correct
"crates/wasm/tests/fixtures/build_fixtures.sh" in the comment near the file
header so the usage instructions match the current file location.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 641196d1-ff65-4949-a80b-dc07864a3106
📒 Files selected for processing (1)
crates/wasm/tests/fixtures/build_fixtures.sh
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4d44546d37
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…allback in version checker Signed-off-by: Chang Su <chang.s.su@oracle.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 963f80fa78
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…al, pre-commit) Signed-off-by: Chang Su <chang.s.su@oracle.com>
- Add clients/openapi-gen/src/** to nightly-benchmark cache key so changes to the OpenAPI generator invalidate the cached wheel and generated types - Switch llm-tokenizer and tool-parser in bindings/golang to workspace = true - Switch smg-auth and tool-parser in bindings/python to workspace = true - Switch openai-protocol in clients/openapi-gen to workspace = true Signed-off-by: Chang Su <chang.s.su@oracle.com>
Description
Problem
The repo root contains 18+ crate directories alongside docs, scripts, docker, etc., making it difficult to navigate and index.
Solution
Move 13 library crates into a
crates/subdirectory, following standard Rust workspace conventions (tokio, bevy, etc.).Changes
git mv13 library crates (auth, data_connector, grpc_client, kv_index, mcp, mesh, multimodal, protocols, reasoning_parser, tokenizer, tool_parser, wasm, workflow) intocrates/Cargo.tomlworkspace members and dependency pathsbindings/python,bindings/golang,clients/openapi-genCargo.tomlrelative pathsscripts/check_release_versions.shandscripts/ci_install_vllm.shdocs/contributing/development.mdproject structure andgrpc_servicer/DEVELOPMENT.mdWhat stays at root:
model_gateway/,bindings/,clients/,grpc_servicer/What does NOT change: Crate names, package names, Rust source code, published crate names on crates.io
Test Plan
cargo checkpasses — all workspace paths resolve correctlycargo clippy --all-targets --all-features -- -D warningspasses (verified by pre-commit hook)cargo +nightly fmtpasses (verified by pre-commit hook)crates/pathsChecklist
cargo +nightly fmtpassescargo clippy --all-targets --all-features -- -D warningspassesSummary by CodeRabbit