188 lines
5.5 KiB
JSON
188 lines
5.5 KiB
JSON
{
|
|
"_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."
|
|
}
|