Files
git.stella-ops.org/docs/features/checked/attestor/durable-submission-queue.md
2026-02-14 09:11:48 +02:00

2.4 KiB

Durable Submission Queue

Module

Attestor

Status

VERIFIED

Description

Durable Rekor submission queue with backend support, submission responses, and entry event tracking.

Implementation Details

  • Queue Interface: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Queue/IRekorSubmissionQueue.cs -- durable queue interface for Rekor submissions.
  • Queue Models: RekorQueueItem.cs -- queue item with payload, status, and retry metadata. RekorSubmissionStatus.cs -- status enum (Pending, Processing, Completed, Failed). QueueDepthSnapshot.cs -- queue depth metrics.
  • PostgreSQL Queue: StellaOps.Attestor.Infrastructure/Queue/PostgresRekorSubmissionQueue.cs -- PostgreSQL-backed durable queue using SKIP LOCKED for concurrent consumers.
  • Retry Worker: Infrastructure/Workers/RekorRetryWorker.cs -- background worker retrying failed submissions.
  • Queue Options: StellaOps.Attestor.Core/Options/RekorQueueOptions.cs -- queue configuration (batch size, retry interval, max retries).
  • Rekor Submission Response: Rekor/RekorSubmissionResponse.cs -- response model from Rekor API.
  • Entry Events: Rekor/RekorEntryEvent.cs -- events emitted on submission lifecycle changes.
  • Tests: StellaOps.Attestor.Tests/RekorSubmissionQueueTests.cs, RekorRetryWorkerTests.cs, Integration/PostgresRekorSubmissionQueueIntegrationTests.cs, __Tests/StellaOps.Attestor.Core.Tests/Rekor/RekorEntryEventTests.cs

E2E Test Plan

  • Enqueue 10 items to PostgresRekorSubmissionQueue and verify QueueDepthSnapshot shows 10 pending
  • Dequeue items using SKIP LOCKED and verify concurrent consumers do not process the same item
  • Process a queue item successfully and verify status changes to Completed
  • Simulate a submission failure and verify status changes to Failed with retry count incremented
  • Verify RekorRetryWorker picks up failed items after the retry interval and reprocesses them
  • Verify items exceeding max retries are not retried further
  • Verify RekorEntryEvent is emitted on each status transition
  • Verify queue survives process restart (items persist in PostgreSQL)

Verification

Check Result
Tier 0 - Source Verification PASS
Tier 1 - Build + Code Review PASS
Tier 2 - Behavioral Verification PASS
Verified Date 2026-02-13
Run ID run-001