# Integrated Photo Pipeline Delivery Backlog This backlog decomposes the phases in [`INTEGRATED_PIPELINE_CONCEPT.md`](../INTEGRATED_PIPELINE_CONCEPT.md) into seven epics and small, independently verifiable user stories, plus one delivery-format epic (E08) that packages the released application as a deployable container. ## Numbering and file naming - Epics: `E01` through `E07`, matching concept Phases A through G; `E08` has no concept phase and must not change product scope. - Stories: `US-`, for example `US03-02`. - Epic files: `E01-.md`. - Story files: `stories/US01-01-.md`. - IDs are permanent. Renaming or reordering a story must not reuse its ID. ## Delivery rules - Implement epics in numeric order unless an epic explicitly permits overlap. - A story should produce one coherent, reviewable outcome and be small enough for one focused implementation change. - Donor-first migration is mandatory: characterize and extract useful CLI behavior before replacing it. Record provenance in the donor ledger. - Every implementation story includes automated unit, property, golden, contract, or integration tests appropriate to its risk. - Every epic ends with a dedicated automated end-to-end story that exercises the real browser, API/SSE, worker, isolated database, and temporary fixture library. - A story is complete only when all acceptance criteria and automated tests pass with no unexplained skips. An epic is complete only when its cumulative regression suite and end-to-end gate pass. ## Epics 1. [E01 — Shared identity and inventory](E01-shared-identity-inventory.md) 2. [E02 — Unified workflow shell](E02-unified-workflow-shell.md) 3. [E03 — Album proposals](E03-album-proposals.md) 4. [E04 — Guarded renaming](E04-guarded-renaming.md) 5. [E05 — Immich upload](E05-immich-upload.md) 6. [E06 — Archive lifecycle](E06-archive-lifecycle.md) 7. [E07 — Hardening and release](E07-hardening-release.md) 8. [E08 — Container deployment](E08-container-deployment.md) ## Shared definition of done - Acceptance criteria are demonstrably satisfied. - Public API/schema changes are documented and contract-tested. - Database and filesystem mutations are restart-safe and idempotent where required. - Paths are constrained by the shared library policy. - No credentials or private image data appear in logs or browser responses. - Relevant donor-ledger rows and story-to-test traceability entries are current. - Automated tests pass locally and in CI; changed user behavior has an automated acceptance test.