Implement missing-page detection and album gap display #25

Open
opened 2026-07-28 04:55:08 +00:00 by claude-bot · 0 comments

Context

Physical albums have pages, and pages go missing — a page skipped during scanning, a
photo that fell out years ago, a gap in the sequence numbers. The Phase 2 acceptance
criterion requires these gaps to be visible in the album view. A collection that looks
complete but is not is a quiet failure of the whole exercise.

Scope

Detect gaps in album sequences and surface them.

Implementation notes

  • Detect discontinuities in the sequence numbers parsed at ingest — missing numbers,
    unexpected jumps, and duplicated sequence values.
  • Distinguish a genuine gap from an intentional one. Not every album is numbered
    contiguously, so a reviewer must be able to mark a gap as expected and have it stay
    dismissed.
  • Render gaps inline in the album view at the position where the missing item belongs,
    rather than as a separate report — the point is that the gap is visible while browsing.
  • Feed gaps into constraint propagation carefully: a missing photo between two dated
    photos still bounds nothing on its own, but the gap should not break the derivation
    chain across it.
  • A summary per album (photos present, gaps outstanding) so scanning progress is trackable.
  • False positives here are cheap; missed gaps are the expensive case. Bias toward flagging.

Done when

  • Sequence gaps are detected per album
  • Gaps render inline in the album view at the right position
  • Expected gaps can be dismissed and stay dismissed
  • Each album reports a completeness summary
  • Gaps do not break constraint derivation across them

References

  • backend/app/services/filename_parser.py (sequence extraction)
  • docs/circa-spec.md Phase 2 acceptance criteria

Depends on: album ordering.

## Context Physical albums have pages, and pages go missing — a page skipped during scanning, a photo that fell out years ago, a gap in the sequence numbers. The Phase 2 acceptance criterion requires these gaps to be visible in the album view. A collection that looks complete but is not is a quiet failure of the whole exercise. ## Scope Detect gaps in album sequences and surface them. ## Implementation notes - Detect discontinuities in the sequence numbers parsed at ingest — missing numbers, unexpected jumps, and duplicated sequence values. - Distinguish a genuine gap from an intentional one. Not every album is numbered contiguously, so a reviewer must be able to mark a gap as expected and have it stay dismissed. - Render gaps inline in the album view at the position where the missing item belongs, rather than as a separate report — the point is that the gap is visible while browsing. - Feed gaps into constraint propagation carefully: a missing photo between two dated photos still bounds nothing on its own, but the gap should not break the derivation chain across it. - A summary per album (photos present, gaps outstanding) so scanning progress is trackable. - False positives here are cheap; missed gaps are the expensive case. Bias toward flagging. ## Done when - [ ] Sequence gaps are detected per album - [ ] Gaps render inline in the album view at the right position - [ ] Expected gaps can be dismissed and stay dismissed - [ ] Each album reports a completeness summary - [ ] Gaps do not break constraint derivation across them ## References - `backend/app/services/filename_parser.py` (sequence extraction) - `docs/circa-spec.md` Phase 2 acceptance criteria Depends on: album ordering.
claude-bot added this to the v0.4.0 milestone 2026-07-28 04:55:08 +00:00
Sign in to join this conversation.
No description provided.