US07-03 — Harden Media and Metadata Edge Cases #40

Closed
opened 2026-07-13 13:10:52 +02:00 by domverse · 3 comments
Owner

Source specification: delivery_backlog/stories/US07-03-media-hardening.md

US07-03 — Harden Media and Metadata Edge Cases

Epic: E07

As a user, I want unusual or damaged media handled safely so one file cannot corrupt
metadata, exhaust resources, or stop the library workflow.

Acceptance criteria

  • Supported format/orientation/profile combinations have bounded decode behavior.
  • Corrupt, truncated, huge-dimension, unsupported, and malformed-metadata files become
    precise item errors without worker failure.
  • EXIF checkpoints preserve user fields and previous-stage fields, read back owned
    fields, and mark conflicts divergent rather than silently repairing them.
  • Cache regeneration/invalidation and temporary-file cleanup are safe and scoped.

Automated tests

  • Extended golden corpus covers all declared format, orientation, corruption, and EXIF
    cases with memory/time bounds and before/after metadata snapshots.

Dependencies

  • US07-01
Source specification: [delivery_backlog/stories/US07-03-media-hardening.md](https://git.domverse-berlin.eu/domverse/photoanalyzer/src/branch/main/delivery_backlog/stories/US07-03-media-hardening.md) # US07-03 — Harden Media and Metadata Edge Cases Epic: [E07](https://git.domverse-berlin.eu/domverse/photoanalyzer/src/branch/main/delivery_backlog/E07-hardening-release.md) As a user, I want unusual or damaged media handled safely so one file cannot corrupt metadata, exhaust resources, or stop the library workflow. ## Acceptance criteria - Supported format/orientation/profile combinations have bounded decode behavior. - Corrupt, truncated, huge-dimension, unsupported, and malformed-metadata files become precise item errors without worker failure. - EXIF checkpoints preserve user fields and previous-stage fields, read back owned fields, and mark conflicts divergent rather than silently repairing them. - Cache regeneration/invalidation and temporary-file cleanup are safe and scoped. ## Automated tests - Extended golden corpus covers all declared format, orientation, corruption, and EXIF cases with memory/time bounds and before/after metadata snapshots. ## Dependencies - US07-01
domverse added this to the E07 — Hardening and Release milestone 2026-07-13 13:10:52 +02:00
domverse added a new dependency 2026-07-13 13:11:32 +02:00
domverse added a new dependency 2026-07-13 13:11:34 +02:00
domverse added this to the Photo Analyzer Delivery project 2026-07-13 13:19:48 +02:00
domverse added the status/backlog label 2026-07-13 13:52:56 +02:00
domverse added status/in-progress and removed status/backlog labels 2026-08-16 23:09:19 +02:00
domverse self-assigned this 2026-08-16 23:09:19 +02:00
Author
Owner

Claimed for implementation on branch us/US07-03-harden-media-and-metadata-edge-cases.

Claimed for implementation on branch `us/US07-03-harden-media-and-metadata-edge-cases`.
domverse added status/review and removed status/in-progress labels 2026-08-17 01:12:44 +02:00
Author
Owner

Submitted for review: #85

Tests passed:

  • work_item/scripts/python -m unittest discover -s work_item/tests -v
  • work_item/scripts/python -m pytest tests -q
  • work_item/scripts/python -m pytest tests/integration/test_media_hardening.py tests/integration/test_exif_checkpoints.py -q
Submitted for review: https://git.domverse-berlin.eu/domverse/photoanalyzer/pulls/85 Tests passed: - `work_item/scripts/python -m unittest discover -s work_item/tests -v` - `work_item/scripts/python -m pytest tests -q` - `work_item/scripts/python -m pytest tests/integration/test_media_hardening.py tests/integration/test_exif_checkpoints.py -q`
domverse added status/done and removed status/review labels 2026-08-17 01:13:00 +02:00
Author
Owner

Completed and merged via PR #85.

Completed and merged via PR #85.
domverse moved this to Done in Photo Analyzer Delivery on 2026-08-17 09:56:24 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: domverse/photoanalyzer#40