Context
The IngestJob is the (potentially long) process Source → Assets in a Batch.
Deliverables
- State machine
pending → running → (completed | failed); failure captures a structured
error report (per-file errors + fatal cause).
- Progress: processed/total counters queryable mid-run (SDK polling contract that the API
and UI will reuse).
- Idempotency: same source + same params ⇒ same content hashes ⇒ no duplicate assets or
blobs; re-running a failed job resumes/redoes safely.
- Runs synchronously in-process for the beta (background execution arrives with the server;
keep the service API future-proof for that).
Acceptance criteria
Context
The IngestJob is the (potentially long) process Source → Assets in a Batch.
Deliverables
pending → running → (completed | failed); failure captures a structurederror report (per-file errors + fatal cause).
and UI will reuse).
blobs; re-running a failed job resumes/redoes safely.
keep the service API future-proof for that).
Acceptance criteria