Skip to content

v0.2.3 — OTP Circuit Breaker

Choose a tag to compare

@thatsme thatsme released this 19 Mar 08:10

What's New

OTP Circuit Breaker

  • Per-skill circuit breaker — pure OTP implementation using GenServer + ETS, zero external dependencies
  • State machine:closed (normal) → :open (failing, calls rejected instantly) → :half_open (testing with one probe call)
  • Auto-recovery — after 3 consecutive failures the circuit opens; after 5 minutes a half-open probe tests if the skill has recovered
  • Telegram notifications — alerts on circuit open (with failure count and last error) and circuit closed (recovered)
  • Transparent wrapper — skills have zero awareness of the breaker, no changes to run/1 signatures or args
  • Dynamic skill lifecycle — breakers are cleaned up on skill unload, reset on skill reload (fresh code = fresh circuit)

Workflow Resilience Controls

  • Dead letter routing — per-step config for circuit open behavior: halt workflow, skip step (pass input through), or fallback to an alternative skill
  • Missing skill handling — per-step config: halt or skip when a skill is not loaded (e.g. dynamic skill unloaded)
  • Fallback skill — route to an alternative skill when the primary skill's circuit is open
  • All controls are visible dropdowns in the workflow step editor — no JSON editing required

Circuit Breaker Observability

  • Dedicated log severity:circuit_breaker events classified by [CircuitBreaker] prefix in log messages
  • Logs page filter — new "Circuit Breaker" button with blue "CB" badge in the real-time log viewer

UI Improvements

  • Tooltips on every field — all workflow and step editor fields now have ? tooltip balloons with contextual help
  • Extracted reusable tip component for consistent tooltip rendering across the UI

Testing

  • broken_skill.ex test fixture — always-failing dynamic skill for circuit breaker verification
  • Unit tests for all state transitions (closed → open → half_open → closed/open)

Circuit Breaker UI