# 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_id` DB columns remain as nullable legacy fields. > > **Note:** The legacy `StellaOps.JobEngine.Core`, `StellaOps.JobEngine.Infrastructure`, > `StellaOps.JobEngine.Worker`, and `StellaOps.JobEngine.Tests` libraries were removed > (April 2026). Release-orchestrator now uses its own `StellaOps.ReleaseOrchestrator.Persistence` > library. No active service depended on the old JobEngine libraries. ## Module Structure - `StellaOps.Scheduler.WebService/` -- Scheduler HTTP API service - `StellaOps.Scheduler.Worker.Host/` -- Scheduler background worker - `StellaOps.Scheduler.__Libraries/` -- Scheduler shared libraries (persistence, etc.) - `StellaOps.Scheduler.__Tests/` -- Scheduler tests - `StellaOps.PacksRegistry/` -- PacksRegistry core and infrastructure - `StellaOps.PacksRegistry.__Libraries/` -- PacksRegistry shared libraries - `StellaOps.PacksRegistry.__Tests/` -- PacksRegistry tests - `StellaOps.JobEngine.WorkerSdk.Go/` -- Go worker SDK - `StellaOps.JobEngine.WorkerSdk.Python/` -- Python worker SDK - `plugins/` -- Job engine plugins ## API Surface - `scheduler` (via Router) -- schedule CRUD, run history, graph jobs, policy runs, policy simulations, failure signatures, event webhooks, scripts endpoint - `packsregistry` (via Router) -- pack upload, download, version listing, approval workflow ## Storage PostgreSQL schema `scheduler` (Scheduler); 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