Sprint SPRINT_20260417_019_JobEngine_truthful_webhook_rate_limiter_runtime. NoOpWebhookRateLimiter + RedisWebhookRateLimiter, service-collection wiring, WebhookRateLimiterRuntimeTests, SCHED-WEB-16-104-WEBHOOKS doc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
JobEngine
Container(s): stellaops-scheduler-web, stellaops-scheduler-worker, stellaops-packsregistry-web, stellaops-packsregistry-worker Slot: 19 (scheduler), 34 (packsregistry) | Port: 8080 | Consumer Group: scheduler, packsregistry Resource Tier: medium (scheduler), light (packsregistry)
Purpose
The JobEngine module provides scheduled scan orchestration and pack registry management. The Scheduler manages scan schedules (CRON-based), graph jobs, policy simulation runs, vulnerability resolver jobs, and failure signatures. The PacksRegistry stores and serves versioned task pack bundles.
Note: TaskRunner (Slot 18) was removed. The
task_runner_idDB columns remain as nullable legacy fields.Note: The legacy
StellaOps.JobEngine.Core,StellaOps.JobEngine.Infrastructure,StellaOps.JobEngine.Worker, andStellaOps.JobEngine.Testslibraries were removed (April 2026). Release-orchestrator now uses its ownStellaOps.ReleaseOrchestrator.Persistencelibrary. No active service depended on the old JobEngine libraries.
Module Structure
StellaOps.Scheduler.WebService/-- Scheduler HTTP API serviceStellaOps.Scheduler.Worker.Host/-- Scheduler background workerStellaOps.Scheduler.__Libraries/-- Scheduler shared libraries (persistence, etc.)StellaOps.Scheduler.__Tests/-- Scheduler testsStellaOps.PacksRegistry/-- PacksRegistry core and infrastructureStellaOps.PacksRegistry.__Libraries/-- PacksRegistry shared librariesStellaOps.PacksRegistry.__Tests/-- PacksRegistry testsStellaOps.JobEngine.WorkerSdk.Go/-- Go worker SDKStellaOps.JobEngine.WorkerSdk.Python/-- Python worker SDKplugins/-- Job engine plugins
API Surface
scheduler(via Router) -- schedule CRUD, run history, graph jobs, policy runs, policy simulations, failure signatures, event webhooks, scripts endpointpacksregistry(via Router) -- pack upload, download, version listing, approval workflow
Storage
PostgreSQL schema scheduler (Scheduler schedules, runs, audit, and persisted resolver-job state via scheduler.jobs); PostgreSQL for PacksRegistry; Valkey queue for job dispatch; seed-fs object store for artifacts
Background Workers
- Scheduler:
SchedulerWorkerHostedService-- picks up scheduled jobs from Valkey and dispatches scan runs - PacksRegistry: worker process for background pack processing