Client core: implement settings, errors, service composition, and cancellation #51

Closed
opened 2026-08-08 08:19:15 +00:00 by hugo · 1 comment
Owner

Objective

Implement validated configuration, typed lifecycle errors, GridClient construction, manager ownership, runtime boundaries, and cancellation primitives.

Deliverables

  • Port grouped settings/defaults and validate durations, limits, endpoints, logging, caches, and feature policies.
  • Use explicit constructors/traits instead of a service locator; libraries never create nested runtimes.
  • Define task ownership, shutdown ordering, cancellation, redacted Debug, and secret handling.

Validation

  • Settings/default/null-argument/GridClient tests pass.
  • Construct/drop performs no network side effect unless requested.
  • Public docs show ownership and runtime requirements.

Prerequisite

Wire codegen and the foundational implementation milestones are complete; the fixed API/test gates remain authoritative.

Project constraints

  • Native Rust networking only; no C# bridge, helper service, subprocess, or fallback.
  • Keep mapped APIs and translated assertions fixed, use bounded resources, and never log secrets.
  • Validate offline with deterministic fake servers before live-grid use and update docs/coverage evidence.
## Objective Implement validated configuration, typed lifecycle errors, GridClient construction, manager ownership, runtime boundaries, and cancellation primitives. ## Deliverables - Port grouped settings/defaults and validate durations, limits, endpoints, logging, caches, and feature policies. - Use explicit constructors/traits instead of a service locator; libraries never create nested runtimes. - Define task ownership, shutdown ordering, cancellation, redacted Debug, and secret handling. ## Validation - Settings/default/null-argument/GridClient tests pass. - Construct/drop performs no network side effect unless requested. - Public docs show ownership and runtime requirements. ## Prerequisite Wire codegen and the foundational implementation milestones are complete; the fixed API/test gates remain authoritative. ## Project constraints - Native Rust networking only; no C# bridge, helper service, subprocess, or fallback. - Keep mapped APIs and translated assertions fixed, use bounded resources, and never log secrets. - Validate offline with deterministic fake servers before live-grid use and update docs/coverage evidence.
hugo added this to the 08 - Networking and client lifecycle milestone 2026-08-08 08:19:15 +00:00
hugo added the enhancement label 2026-08-08 08:19:15 +00:00
Author
Owner

Implemented in b413cd6 and pushed to main.

The native Rust client core now provides the exact grouped C# Settings defaults, validation for endpoints/durations/limits/cache and feature policies, typed configuration and lifecycle errors, an explicit GridClientBuilder and ClientService ownership contract, injected clocks, executor-neutral cancellation futures and linked tokens, and deterministic idempotent shutdown in network/manager/HTTP/rate-limiter order. Construction performs no I/O and starts no runtime. Debug output redacts login endpoints, clocks, and service internals. Public ownership/runtime documentation is in docs/client-core.md.

Verified in isolation with all 48 libremetaverse-types tests, the 3 client_core tests, core_runtime_shims, world_manager_shims, scoped Clippy with warnings denied, generated shim and Rust mapping checks, the independent API compile fixture, rustdoc, and serial cargo test --workspace --no-run --no-default-features. The broader red-suite/parity baseline remains stale from already-landed milestone-07 packet/message passes; no #51 parity-case body was changed.

Implemented in b413cd6 and pushed to main. The native Rust client core now provides the exact grouped C# Settings defaults, validation for endpoints/durations/limits/cache and feature policies, typed configuration and lifecycle errors, an explicit GridClientBuilder and ClientService ownership contract, injected clocks, executor-neutral cancellation futures and linked tokens, and deterministic idempotent shutdown in network/manager/HTTP/rate-limiter order. Construction performs no I/O and starts no runtime. Debug output redacts login endpoints, clocks, and service internals. Public ownership/runtime documentation is in docs/client-core.md. Verified in isolation with all 48 libremetaverse-types tests, the 3 client_core tests, core_runtime_shims, world_manager_shims, scoped Clippy with warnings denied, generated shim and Rust mapping checks, the independent API compile fixture, rustdoc, and serial cargo test --workspace --no-run --no-default-features. The broader red-suite/parity baseline remains stale from already-landed milestone-07 packet/message passes; no #51 parity-case body was changed.
hugo closed this issue 2026-08-09 10:54:27 +00:00
Sign in to join this conversation.