Files
git.stella-ops.org/src/StellaOps.Concelier.Core/AGENTS.md
2025-10-18 20:46:16 +03:00

2.2 KiB

AGENTS

Role

Job orchestration and lifecycle. Registers job definitions, schedules execution, triggers runs, reports status for connectors and exporters.

Scope

  • Contracts: IJob (execute with CancellationToken), JobRunStatus, JobTriggerOutcome/Result.
  • Registration: JobSchedulerBuilder.AddJob(kind, cronExpression?, timeout?, leaseDuration?); options recorded in JobSchedulerOptions.
  • Plugin host integration discovers IJob providers via registered IDependencyInjectionRoutine implementations.
  • Coordination: start/stop, single-flight via storage locks/leases, run bookkeeping (status, timings, errors).
  • Triggering: manual/cron/API; parameterized runs; idempotent rejection if already running.
  • Surfacing: enumerate definitions, last run, recent runs, active runs to WebService endpoints.

Participants

  • WebService exposes REST endpoints for definitions, runs, active, and trigger.
  • Storage.Mongo persists job definitions metadata, run documents, and leases (locks collection).
  • Source connectors and Exporters implement IJob and are registered into the scheduler via DI and Plugin routines.
  • Models/Merge/Export are invoked indirectly through jobs.
  • Plugin host runtime loads dependency injection routines that register job definitions.

Interfaces & contracts

  • Kind naming: family:source:verb (e.g., nvd:fetch, redhat:map, export:trivy-db).
  • Timeout and lease duration enforce cancellation and duplicate-prevention.
  • TimeProvider used for deterministic timing in tests.

In/Out of scope

In: job lifecycle, registration, trigger semantics, run metadata. Out: business logic of connectors/exporters, HTTP handlers (owned by WebService).

Observability & security expectations

  • Metrics: job.run.started/succeeded/failed, job.durationMs, job.concurrent.rejected, job.alreadyRunning.
  • Logs: kind, trigger, params hash, lease holder, outcome; redact params containing secrets.
  • Honor CancellationToken early and often.

Tests

  • Author and review coverage in ../StellaOps.Concelier.Core.Tests.
  • Shared fixtures (e.g., MongoIntegrationFixture, ConnectorTestHarness) live in ../StellaOps.Concelier.Testing.
  • Keep fixtures deterministic; match new cases to real-world advisories or regression scenarios.