Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
release-manifest-verify / verify (push) Has been cancelled
- Implement comprehensive tests for PackRunAttestationService, covering attestation generation, verification, and event emission. - Add tests for SealedInstallEnforcer to validate sealed install requirements and enforcement logic. - Introduce a MonacoLoaderService stub for testing purposes to prevent Monaco workers/styles from loading during Karma runs.
Scheduler Queue — Sprint 16 Coordination Notes
Queue work now has concrete contracts from StellaOps.Scheduler.Models:
- Planner inputs reference
ScheduleandImpactSetsamples (samples/api/scheduler/). - Runner segment payloads should carry
runId,scheduleId?,tenantId, and the impacted digest list (mirrorsRun.Deltas). - Notify fanout relies on the
DeltaSummaryshape already emitted by the model layer.
Action items for SCHED-QUEUE-16-401..403
- Reference
StellaOps.Scheduler.Modelsso adapters can serialiseRun/DeltaSummarywithout bespoke DTOs. - Use the canonical serializer for queue messages to keep ordering consistent with API payloads.
- Coverage: add fixture-driven tests that enqueue the sample payloads, then dequeue and re-serialise to verify byte-for-byte stability.
- Expose queue depth/lease metrics with the identifiers provided by the models (
Run.Id,Schedule.Id).
JetStream failover notes
SchedulerQueueOptions.Kind = "nats"will spin upNatsSchedulerPlannerQueue/NatsSchedulerRunnerQueueinstances backed by JetStream.SchedulerQueueHealthCheckpings both planner and runner transports; register viaAddSchedulerQueueHealthCheck()to surface in/healthz.- Planner defaults:
scheduler: queue: kind: nats deadLetterEnabled: true nats: url: "nats://nats:4222" planner: stream: SCHEDULER_PLANNER subject: scheduler.planner durableConsumer: scheduler-planners deadLetterStream: SCHEDULER_PLANNER_DEAD deadLetterSubject: scheduler.planner.dead runner: stream: SCHEDULER_RUNNER subject: scheduler.runner durableConsumer: scheduler-runners redis: deadLetterStream: scheduler:planner:dead idempotencyKeyPrefix: scheduler:planner:idemp: - Retry / dead-letter semantics mirror the Redis adapter: attempts beyond
MaxDeliveryAttemptsare shipped to the configured dead-letter stream with headers describingrunId,scheduleId, and failure reasons. SetdeadLetterEnabled: falseto drop exhausted messages instead. - Depth metrics surface through
scheduler_queue_depth{transport,queue}; both transports publish lightweight counters to drive alerting dashboards.
These notes unblock the queue guild now that SCHED-MODELS-16-102 is complete.