Context
The pipeline that IngestJob executes, gluing MediaProcessor + BlobStore + metadata.
Deliverables
- Per item: decode/validate → SHA-256 →
BlobStore.put (skip if exists) → Asset row with
modality=image, dimensions, format, content_hash, origin (source + frame index/timestamp)
→ membership in the target draft Batch.
- Asset identity = content hash: the same image in two sources yields one blob and
hash-stable asset identity (document the Asset-vs-blob identity decision in the model
docstrings).
- Batch is created in
draft by the ingest (or an existing draft batch is targeted).
Acceptance criteria
Context
The pipeline that IngestJob executes, gluing MediaProcessor + BlobStore + metadata.
Deliverables
BlobStore.put(skip if exists) → Asset row withmodality=image, dimensions, format, content_hash, origin (source + frame index/timestamp)
→ membership in the target draft Batch.
hash-stable asset identity (document the Asset-vs-blob identity decision in the model
docstrings).
draftby the ingest (or an existing draft batch is targeted).Acceptance criteria