Add PREPROCESS_TIMEOUT config (default 120s). Expose read_meta() and use
one read per job in list_jobs() instead of read_status + read_manifest.
Co-authored-by: Cursor <cursoragent@cursor.com>
Centralize read_json/write_json_atomic used by pipeline meta I/O and
worker processed.json bookkeeping. Preserves corrupt-file warning in
load_processed().
Co-authored-by: Cursor <cursoragent@cursor.com>
Ruff auto-fixes import order and line wrapping. Gitignore covers
build artifacts and coverage output from future test runs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pin Python 3.11 for parity with the Docker image. Dev deps live in
requirements-dev.txt for local lint/test without rembg/onnxruntime.
Co-authored-by: Cursor <cursoragent@cursor.com>