Files
mytheclipse/.hermes/plans/mytheclipse-round5-spec.md

1.5 KiB

Implementation Spec: Round 5

Status: COMPLETE

New Features

1. CircuitBreakerHealthCheck (mytheclipse-core, observability+resiliency)

  • CircuitBreakerHealthCheck di metrics_bridge.rs — HealthCheck impl yang memetakan CircuitBreaker snapshot state → HealthStatus (Open→Unhealthy, HalfOpen→Degraded, Closed→Ok)
  • Gated #[cfg(feature="resiliency")]; re-export gated #[cfg(all(observability, resiliency))]
  • observability feature now implies lifecycle (needed for crate::health module access)

2. TypedKeyRegistry (mytheclipse-crypto, password)

  • TypedKeyRegistry<K,V> di key_registry.rs — ID-based key lookup + rotation + revoke, wraps KeyRing
  • key_for(id) -> Option<&K>, rotate_with_id(id, key), revoke(id)

3. MetricsHttpHandler (mytheclipse-http, metrics-http)

  • new feature metrics-http (axum + tower + mytheclipse/observability)
  • metrics_routes(collector) → Router serving /metrics (Prometheus text) + /
  • added tower dep (util), ServiceExt import in test module
  • 1 test via ServiceExt::oneshot

4. BatchProcessor (mytheclipse-queue, in-memory)

  • BatchJobHandler trait — handle Vec atomically
  • BatchConfig { batch_size, batch_timeout, concurrency }
  • BatchProcessor<Q> — accumulates jobs per topic, flushes on size/timeout
  • 2 tests: flush_on_batch_size, flush_on_timeout

Verification

  • cargo build --workspace --all-features → exit 0
  • cargo test --workspace --all-features → all pass (160+ tests)
  • cargo clippy --workspace --all-features → no new warnings
  • commit + push: f02a1ce