2.0 KiB
2.0 KiB
Implementation Spec: Round 3
New Features (4)
1. ConfigValidator (mytheclipse-config)
File: crates/mytheclipse-config/src/validate.rs
ConfigValidatortrait:fn validate(&self) -> Result<(), ValidationError>ConfigValidatorExttrait: blanket impl forT: ConfigValidator- Built-in validators:
validate_url,validate_port,validate_non_empty,validate_range,collect_failures ValidationFailure { path, message }+ValidationErrortype alias- Feature gate:
validation(default) - Tests: 17 (unit + doctest)
2. AsyncLifecycleManager (mytheclipse-core)
File: crates/mytheclipse/src/lifecycle.rs
AsyncLifecycleManagercomposingShutdownManager+HealthRegistry- Methods:
register_health_check,check_health,shutdown_signal,start_health_loop,await_shutdown,request_shutdown - Feature gate:
lifecycle - Tests: 38 total (3 new in lifecycle.rs)
3. MetricsBridge (mytheclipse-core)
File: crates/mytheclipse/src/metrics_bridge.rs
MetricsBridge— emits MetricsCollector snapshot to tracingMetricsHealthCheck— wraps MetricsCollector as HealthCheck (unhealthy if error counters > 0)- Feature gate:
observability
4. ServiceBuilder RateLimiter API (mytheclipse-core)
File: crates/mytheclipse/src/service_builder.rs
with_rate_limiterfluent builder (already existed)check_preperforms rate-limit pre-acquire before calling service- Returns
RunError::RateLimitedwhen rate limiter exhausted
Build Status
- cargo build --workspace --all-features: OK
- cargo test --workspace --all-features: all pass (77+17+18+16+6+5+...)
- cargo clippy: 0 warnings on new code (pre-existing warnings in crypto/base64/cli only)
- Committed + pushed
Notes
Arc<HealthRegistry>in AsyncLifecycleManager because HealthRegistry doesn't impl Clone- Doctest marked
ignore(async runtime not available in doctest context) - Lint checker false-positives on
async fn(edition 2015 phantom) but actual cargo build/tests pass