Files
photoanalyzer/delivery_backlog/README.md
domverse 792134c72d
Some checks failed
Test / suites (pull_request) Failing after 3m27s
Test / container (pull_request) Has been skipped
docs: add E09, the product documentation epic
Adds the installation manual, architecture overview, and illustrated user
manual as a five-story epic, plus the acceptance gate that keeps them true.

The documentation is markdown under docs/, so the same files are readable in
the repository and rendered by the deployed application at /app/#/docs. An
operator who was handed a URL and an access secret has no repository checkout
in front of them, and the network the application is deployed to is not
assumed to reach a CDN.

Two decisions are recorded in the epic rather than left to implementation:

- The renderer is vendored (marked), not written and not fetched.
- Diagrams are mermaid, rendered client-side, with script-src untouched.
  Whether mermaid needs 'unsafe-eval' was measured rather than assumed: its
  bundle contains no eval( and no new Function, and rendered under this
  application's exact CSP it produced an SVG with no script-src violation.
  What it does violate is style-src, which gains 'unsafe-inline'. With
  script-src, img-src, connect-src, and font-src all unchanged, that leaves
  defacement rather than execution or exfiltration. The alternative --
  pre-rendering diagrams to committed SVG with the already-installed
  Playwright -- is recorded as the migration if that trade is ever refused.

Screenshots are generated from the running application, never pasted, and
every documented setting, command, exit code, error code, and state is
cross-checked against the code that implements it, so stale documentation
fails a test instead of misleading an operator.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015csGY8XV1M92fHfKnMmjtu
2026-08-23 15:03:55 +02:00

2.7 KiB

Integrated Photo Pipeline Delivery Backlog

This backlog decomposes the phases in INTEGRATED_PIPELINE_CONCEPT.md into seven epics and small, independently verifiable user stories, plus two delivery-format epics: E08 packages the released application as a deployable container, and E09 documents it for the people who install, operate, and use it.

Numbering and file naming

  • Epics: E01 through E07, matching concept Phases A through G; E08 and E09 have no concept phase and must not change product scope.
  • Stories: US<epic>-<sequence>, for example US03-02.
  • Epic files: E01-<slug>.md.
  • Story files: stories/US01-01-<slug>.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
  2. E02 — Unified workflow shell
  3. E03 — Album proposals
  4. E04 — Guarded renaming
  5. E05 — Immich upload
  6. E06 — Archive lifecycle
  7. E07 — Hardening and release
  8. E08 — Container deployment
  9. E09 — Product documentation

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.