Events Reference
One topic exchange, datacore.resource-lifecycle, carries every lifecycle event. Full detail (including the Pipeline Router's internal timeout sweep) lives at specs/001-datacore-knowledge-warehouse/contracts/events.md.
Envelope
json
{ "event": "RESOURCE_CREATED", "resource_id": "uuid", "occurred_at": "ISO-8601", "payload": { } }Events
| Event | Routing key | Published when | Consumed by |
|---|---|---|---|
RESOURCE_CREATED | resource.created | A resource matches a pipeline at creation (or pending pickup) | Pipeline Router |
PIPELINE_STEP_DISPATCHED | pipeline.step.dispatched.<plugin_id> | The Router routes a step to a specific plugin | That plugin's worker(s) |
ARTIFACT_GENERATED | artifact.generated | A step's callback reports success | Reserved for future consumers (logging today) |
PIPELINE_STEP_COMPLETED | pipeline.step.completed | Right after ARTIFACT_GENERATED, once the next step is determined | Reserved for future consumers |
RESOURCE_FAILED | resource.failed | A step's retries (including timeout-triggered ones) are exhausted | Reserved for future consumers |
Retry, backoff, and timeout
Each pipeline step has its own max_attempts, backoff_seconds, and timeout_seconds. A step is retried (with delay) on explicit failure or if no callback arrives within timeout_seconds — both paths feed the same retry state machine, so a resource only reaches FAILED once a step's attempts are truly exhausted, never left hanging indefinitely.