Ironflow v0.24.0
Ironflow v0.24.0 ships the DB-backed capacity system — a complete rewrite of how push and pull workers are admitted, fenced, and scheduled — alongside circuit breaker state migrated to the database for cluster-safe consistency, and a set of targeted security and reliability fixes.
Breaking Changes
Section titled “Breaking Changes”PENDINGrun status retired: runs now enterWAITING(capacity queue) rather thanPENDINGbefore execution. Clients checking forPENDINGshould update toWAITING(#1225)- Proto fields dropped: several capacity-related proto fields removed in the clean-break (#1221); regenerate client stubs with
make proto
Features
Section titled “Features”- DB-backed capacity system (ADR 0037): push and pull workers are now admitted through a database-backed queue with round-robin fairness, execution fencing, session-expiry scanning, and lease lifecycle management (#1206 T7–T14, #1207–#1217, #1221–#1227, #1229–#1230, #1235, #1242, #1245)
- Circuit breaker → database: circuit breaker state migrated from NATS KV to
circuit_breaker_statestable, making breaker state consistent across cluster nodes (#1231) - Capacity observability: metrics, audit events, and structured alerts for queue activity (#1232)
- Capacity admin CLI + REST:
ironflow circuit-breakeradmin commands and REST endpoints for capacity management (#1235) - SDK fence-echo: REST worker fence-echo protocol for capacity pull workers (#1215)
- Dashboard: run list gated on capacity-native
WAITINGstates; dev-mode auth-disabled indicator in sidebar (#1205, #1227)
- Security: credential headers redacted in request inspector buffer (#1236)
- RBAC: self-lockout preflight fails closed on CEL eval error instead of allowing the operation (#1244)
- Outbox:
next_retry_atstamped from the DB clock on PG, eliminating app↔DB clock-skew dispatch delays (#1250) - Capacity: cancelled circuit-breaker probe now released immediately (#1248)
- Capacity:
execution_seqstaleness enforced atActivateLeasechokepoint (#1245) - Capacity: single-probe circuit breaker enforced via stored
half_openstate (#1247) - Capacity: push retry responsiveness restored (dispatcher kick on capacity release) (#1229)