-- "Don't retry" markers for the CLIP drain. A permanent encode failure -- (bytes Apollo can't decode — corrupt or non-image files with an image -- extension) used to leave `clip_embedding` NULL, so the drain re-sent -- the file and logged the same 422 every pass. -- -- Keyed on the path, scoped to the bytes that failed: the drain skips a -- row only while its `content_hash` still matches, so replacing the file -- makes it eligible again with no cleanup. To retry everything (e.g. -- after an Apollo decoder upgrade): `DELETE FROM clip_failures;` CREATE TABLE clip_failures ( library_id INTEGER NOT NULL REFERENCES libraries(id) ON DELETE CASCADE, rel_path TEXT NOT NULL, content_hash TEXT NOT NULL, error TEXT NOT NULL, failed_at BIGINT NOT NULL, PRIMARY KEY (library_id, rel_path) );