{ "_comment": "Maps each delivered story to the automated tests that exercise it. Verified by tests/e2e/test_traceability.py: every mapped story maps to existing test files, every test file is claimed by a story (no unexercised tests), and all Phase A (E01) stories US01-01..US01-07 are present.", "stories": { "US01-01": [ "tests/characterization/test_donor_ledger.py", "tests/characterization/test_pa_discovery.py", "tests/characterization/test_pa_hashing_dedup.py", "tests/characterization/test_pa_imaging.py", "tests/characterization/test_pa_exif.py", "tests/characterization/test_pa_db.py", "tests/characterization/test_pa_album.py", "tests/characterization/test_pa_config.py", "tests/characterization/test_pa_variants.py", "tests/characterization/test_nsfwtag.py", "tests/characterization/test_webapp_query.py" ], "US01-02": [ "tests/integration/test_app_lifecycle.py", "tests/integration/test_migrations.py", "tests/unit/test_config.py", "tests/unit/test_env_file.py" ], "US01-03": [ "tests/unit/test_path_policy.py", "tests/unit/test_hashing.py", "tests/integration/test_inventory_reconcile.py" ], "US01-04": [ "tests/unit/test_phash.py", "tests/integration/test_duplicate_engine.py" ], "US01-05": [ "tests/unit/test_thumbnail_cache_key.py", "tests/integration/test_thumbnails.py" ], "US01-06": [ "tests/integration/test_review_api.py", "tests/e2e/test_review_ui.py" ], "US01-07": [ "tests/e2e/test_phase_a_pipeline.py", "tests/e2e/test_traceability.py" ], "US02-01": [ "tests/unit/test_safety.py", "tests/unit/test_design_tokens.py", "tests/integration/test_safety_parity.py" ], "US02-02": [ "tests/unit/test_job_state_machine.py", "tests/integration/test_jobs.py" ], "US02-03": [ "tests/unit/test_lock_order.py", "tests/integration/test_worker.py", "tests/e2e/test_worker_kill.py" ], "US02-04": [ "tests/integration/test_jobs_api.py", "tests/integration/test_jobs_sse.py" ], "US02-05": [ "tests/e2e/test_frontend_shell.py" ], "US02-06": [ "tests/integration/test_safety_analysis.py", "tests/e2e/test_workflow_views.py" ], "US02-07": [ "tests/e2e/test_phase_b_pipeline.py", "tests/e2e/test_analysis_browser.py" ], "US03-01": [ "tests/unit/test_album_evidence.py", "tests/integration/test_album_evidence_repo.py" ], "US03-02": [ "tests/unit/test_naming_policy.py" ], "US03-03": [ "tests/integration/test_album_proposals.py" ], "US03-04": [ "tests/e2e/test_albums_ui.py" ], "US03-05": [ "tests/e2e/test_phase_c_pipeline.py" ], "US04-01": [ "tests/integration/test_rename_plans.py" ], "US04-02": [ "tests/unit/test_rename_journal_states.py", "tests/integration/test_rename_journal.py" ], "US04-03": [ "tests/integration/test_rename_apply.py" ], "US04-04": [ "tests/integration/test_rename_recovery.py" ], "US04-05": [ "tests/e2e/test_renames_ui.py" ], "US04-06": [ "tests/e2e/test_phase_d_pipeline.py" ], "US05-01": [ "tests/integration/test_upload_preflight.py" ], "US05-02": [ "tests/integration/test_upload_batches.py" ], "US05-03": [ "tests/unit/test_immich_go_report.py", "tests/integration/test_upload_reports.py" ], "US05-04": [ "tests/unit/test_immich_bulk_check.py", "tests/integration/test_upload_verification.py" ], "US05-05": [ "tests/e2e/test_uploads_ui.py" ], "US05-06": [ "tests/e2e/test_phase_e_pipeline.py" ], "US06-01": [ "tests/integration/test_archive_preflight.py" ], "US06-02": [ "tests/unit/test_archive_journal_states.py", "tests/integration/test_archive_transfer.py", "tests/integration/test_archive_recovery.py" ], "US06-03": [ "tests/integration/test_offline_assets.py" ], "US06-04": [ "tests/integration/test_restore.py" ], "US06-05": [ "tests/e2e/test_archive_ui.py" ], "US06-06": [ "tests/e2e/test_phase_f_pipeline.py" ], "US07-01": [ "tests/unit/test_legacy_archive.py", "tests/integration/test_legacy_import.py" ], "US07-02": [ "tests/unit/test_security_policy.py", "tests/integration/test_security_boundaries.py", "tests/e2e/test_security.py" ], "US07-03": [ "tests/integration/test_media_hardening.py", "tests/integration/test_exif_checkpoints.py" ], "US07-04": [ "tests/unit/test_fault_artifacts.py", "tests/integration/test_concurrency_races.py", "tests/integration/test_fault_matrix.py", "tests/e2e/test_crash_recovery.py" ], "US07-05": [ "tests/integration/test_backup_recovery.py", "tests/integration/test_diagnostics.py" ], "US07-06": [ "tests/integration/test_performance_budgets.py" ], "US07-07": [ "tests/e2e/test_release_gate.py", "tests/e2e/test_release_journey.py" ] }, "planned": [ "US08-01", "US08-02", "US08-03", "US08-04", "US08-05" ], "_planned_comment": "Accepted backlog stories that are not implemented yet. The release gate (US07-07) requires every story file to be either mapped to tests or listed here, so an unimplemented story is a visible decision rather than a hole in the matrix." }