Context
The semantic pass runs after artifact finalization and currently returns an error that is treated as a warning so ingestion can complete. That protects ingestion availability but can leave semantic analysis without a durable retry/status contract.
Proposal
Create a durable analysis job state for semantic extraction/linking, with idempotent enqueueing, lease-based workers, retry/backoff, terminal failure, and per-artifact status. Ingestion should report that analysis is queued rather than implying it completed.
Acceptance criteria
- Artifact ingestion succeeds independently of semantic analyzer availability.
- Every accepted semantic job is recoverable after a process restart.
- Retries are bounded and terminal failures retain an actionable limitation.
- The API/CLI distinguishes queued, running, completed, partial, and failed analysis.
References
Context
The semantic pass runs after artifact finalization and currently returns an error that is treated as a warning so ingestion can complete. That protects ingestion availability but can leave semantic analysis without a durable retry/status contract.
Proposal
Create a durable analysis job state for semantic extraction/linking, with idempotent enqueueing, lease-based workers, retry/backoff, terminal failure, and per-artifact status. Ingestion should report that analysis is queued rather than implying it completed.
Acceptance criteria
References