OqronKitOqronKit

Changelog

Release notes and version history for OqronKit

Changelog

All notable changes to OqronKit are documented here. The format follows Keep a Changelog and Semantic Versioning.


v0.0.2 — 2026-05-06

Hardening release — 19 crash-safety, consistency, and correctness fixes across Queue, Worker, Webhook, Scheduler, and Manager engines.

Execution Ownership

FixImpact
Container claimBlocking forwardingPrevents CPU-burning polling when broker supports blocking claims
Stall handler cleanupZombie jobs no longer consume permanent concurrency slots
Worker stall filterJobs with failed lock renewals are now properly recovered
Batch cancellation checkCancelled batch jobs can no longer race to "completed" status

Stuck Job Prevention

FixImpact
Webhook held-job releaseresumeDispatcher() now releases "hold" jobs accumulated while paused
Queue resume dependency checkHeld jobs with unmet dependsOn deps route to "waiting-children", not "waiting"
Manager loop safety capHeld-job release loop capped at 2000 jobs to prevent infinite loops
Retry/rerun priority passthroughretryJob() and rerunJob() preserve opts.priority through to the broker

Correctness & Consistency

FixImpact
Retry runAt timestampDelayed retries now set job.runAt — visible in dashboards and reconciliation
Default priority persistenceQueue-level config.priority is persisted on job.opts.priority at creation time
Cancel writes tombstonecancelJob() writes a "cancelled" status instead of deleting — full audit trail
Schedule run-all missed firemissedFire: "run-all" now enumerates all missed occurrences, not just one
Cron type stampPrevents namespace corruption in multi-module manager lookups

Hardening & Polish

  • logger: false now correctly disables all logging (was inverted)
  • stop() timeout no longer leaks — handle is .unref()'d and cleared
  • Signal handler bindingSIGINT/SIGTERM handlers now bind correctly
  • Webhook cancel aborts HTTP — cancellation immediately aborts in-flight delivery requests
  • MemoryStore falsey valuesget() correctly returns 0, false, "" instead of null
  • MemoryBroker extendLock — O(1) direct lookup instead of O(n) scan
  • Redis claimBlocking pause re-check — items returned during pause are pushed back
  • UI auth validation — partial auth config (only username or only password) is now rejected
  • Webhook resend — clears runAt and opts.delay for immediate re-dispatch

Test Suite

  • 741 tests passing across 83 test files
  • Updated cancel tests to assert tombstone pattern
  • Updated webhook tests for new abort signal parameter
  • Fixed mock IOqronModule implementations with enable/disable stubs

v0.0.1 — 2026-03-30

Initial Release

OqronKit launches with 12 enterprise modules for background computation:

  • Task Queue — Unified monolithic queue
  • Distributed Worker — Decoupled publisher/consumer architecture
  • Scheduler — Cron expressions, intervals, recurring schedules, and RRule support
  • Rate Limiter — Sliding-window and token-bucket algorithms
  • Webhook — Fan-out dispatch with HMAC signing and circuit breakers
  • Batch — Accumulator buffering with maxSize / maxWaitMs
  • Workflow (DAG) — Complex dependency grids with dependsOn
  • Saga — Distributed transactions with compensation chains
  • Pipeline — Streaming ETL with backpressure
  • PubSub — Durable topics and fan-out consumer groups
  • Cache — Stampede-protected hierarchical memory tiers
  • Ingest — Event-driven step functions (step.run, step.sleep, step.invoke)

Infrastructure:

  • Adapter-driven architecture (Memory, Redis, Postgres)
  • Crash-safe execution via heartbeat locks and stall detection
  • Built-in Admin UI dashboard with basic auth
  • Graceful shutdown with drain timeout
  • AbortController-based job cancellation

On this page