Files
mytheclipse/.hermes/plans/mytheclipse-round4-spec.md
asepharyana 717e6905cd
CI / Rustfmt (push) Canceled after 0s
CI / Clippy (push) Canceled after 0s
CI / Test (workspace all features) (push) Canceled after 0s
CI / Test (workspace default features) (push) Canceled after 0s
CI / Test (mytheclipse / bg only) (push) Canceled after 0s
CI / Test (mytheclipse / compute only) (push) Canceled after 0s
CI / Test (mytheclipse / io only) (push) Canceled after 0s
CI / Test (mytheclipse / lifecycle only) (push) Canceled after 0s
CI / Test (mytheclipse / observability only) (push) Canceled after 0s
CI / Test (mytheclipse / resiliency only) (push) Canceled after 0s
CI / Test (mytheclipse / traffic only) (push) Canceled after 0s
CI / Test (mytheclipse-cache / l2-redis) (push) Canceled after 0s
CI / Test (mytheclipse-cache / l1-moka) (push) Canceled after 0s
CI / Test (mytheclipse-cache / default) (push) Canceled after 0s
CI / Test (mytheclipse-config / default) (push) Canceled after 0s
CI / Test (mytheclipse-crypto / default) (push) Canceled after 0s
CI / Test (mytheclipse-event / amqp) (push) Canceled after 0s
CI / Test (mytheclipse-event / nats) (push) Canceled after 0s
CI / Test (mytheclipse-event / default (mem)) (push) Canceled after 0s
CI / Test (mytheclipse-storage / gcs) (push) Canceled after 0s
CI / Test (mytheclipse-storage / s3) (push) Canceled after 0s
CI / Test (mytheclipse-storage / default (local)) (push) Canceled after 0s
CI / Run mytheclipse example (push) Canceled after 0s
CI / Docs check (push) Canceled after 0s
CI / Cargo package dry-run (mytheclipse) (push) Canceled after 0s
CI / Cargo package dry-run (mytheclipse-cache) (push) Canceled after 0s
CI / Cargo package dry-run (mytheclipse-config) (push) Canceled after 0s
CI / Cargo package dry-run (mytheclipse-crypto) (push) Canceled after 0s
CI / Cargo package dry-run (mytheclipse-event) (push) Canceled after 0s
CI / Cargo package dry-run (mytheclipse-storage) (push) Canceled after 0s
Release / Semantic Release (push) Canceled after 0s
feat: round-4 metrics for circuit breaker + retry stats + lifecycle fixes
2026-08-29 17:40:39 +07:00

1.4 KiB

Implementation Spec: Round 4

Status: COMPLETE

New Features

1. CircuitBreakerMetrics (circuit_breaker.rs)

  • Added CircuitSnapshot { state: CircuitState, failures: u64, successes: u64 } struct
  • Added CircuitBreaker::snapshot() -> CircuitSnapshot method (atomic load)
  • Test: snapshot_reflects_state_and_counts

2. RetryStats (retry.rs)

  • Added RetryStats { attempts: u32, retries: u32, last_error: Option<String> }
  • Added retry_with_stats() returning (Result, RetryStats) (parallel to retry())
  • Tests: 2 new

3. AsyncLifecycleManager (lifecycle.rs) — Round 3 carryover, verified

  • Composes ShutdownManager + HealthRegistry + health loop
  • Tests: 3

4. MetricsBridge (metrics_bridge.rs) — Round 3 carryover

  • MetricsBridge emits MetricsCollector → tracing
  • MetricsHealthCheck wraps collector as HealthCheck
  • Tests: 2

Fixes in round 4

  • HealthRegistry wrapped in Arc in AsyncLifecycleManager (not Clone)
  • Removed unused span/Instrument import in lifecycle.rs
  • Fixed op_ref mutability in service_builder.rs
  • Fixed last_error assertion (None on success) in retry test
  • Fixed snapshot test assertions (successes not incremented in Closed state)

Build Status

  • cargo build --workspace --all-features: OK (2 pre-existing warnings in crypto/cli)
  • cargo test --workspace --all-features: ALL PASS
  • cargo clippy: 0 warnings on round-4 code (pre-existing in crypto/cli only)
  • Committed + pushed