Files
Eric MeyandClaude Opus 5 4e69103983 Contain per-image archive failures and stop receipts from lying
The batch loop lost its per-image try/except, so one failure aborted the
whole prompt and discarded ui.archive for images already uploaded --
stranding exactly the asset IDs retry_archive needs. Per-image work moves
into _archive_image() with a single containment point in upload(). A
preview failure (rejected filename_prefix, unwritable output directory) is
now reported as a stage error while the image still reaches Immich.

Three receipts reported something other than what happened:

- _add_to_album raised on any non-list body, so a 204 or a body-stripping
  proxy turned a successful add into album: "failed". It now returns a
  confirmation flag and records album: "unconfirmed" instead.
- archive_png reported upload: "ok" on the --asset-id resume path, where
  nothing was uploaded. That is now upload: "reused".
- retry_archive defaulted a missing PNG prompt chunk to {}, archiving with
  an empty description and exiting 0. Missing, malformed and non-mapping
  graphs are now explicit errors on stderr with exit 1.

Also narrows archive_png's excepts so bugs in this node propagate instead
of surfacing as transport failures, and adds immich_nodes/retry_archive.py,
which was untracked while the tests imported it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-20 12:57:08 -04:00
..