[
  "backend/tests/core/test_build_opik_metadata.py::test_base_metadata_with_context",
  "backend/tests/core/test_build_opik_metadata.py::test_both_extra_params",
  "backend/tests/core/test_build_opik_metadata.py::test_empty_context",
  "backend/tests/core/test_build_opik_metadata.py::test_extra_metadata_merged",
  "backend/tests/core/test_build_opik_metadata.py::test_extra_metadata_none_ignored",
  "backend/tests/core/test_build_opik_metadata.py::test_extra_metadata_protects_reserved_keys",
  "backend/tests/core/test_build_opik_metadata.py::test_extra_tags_appended",
  "backend/tests/core/test_build_opik_metadata.py::test_extra_tags_none_ignored",
  "backend/tests/core/test_consumes_downstream_integration.py::test_catalog_helper_returns_manifest_declaration",
  "backend/tests/core/test_consumes_downstream_integration.py::test_consumes_downstream_targets_are_actual_downstream",
  "backend/tests/core/test_consumes_downstream_integration.py::test_get_consumers_of_reverse_lookup",
  "backend/tests/core/test_consumes_downstream_integration.py::test_legacy_preserve_flag_fully_removed",
  "backend/tests/core/test_consumes_downstream_integration.py::test_scene_detail_declares_shot_dependency_t2i_as_consumed",
  "backend/tests/core/test_consumes_downstream_integration.py::test_scene_detail_force_preserves_shot_dependency_t2i_real_manifest",
  "backend/tests/core/test_location_consistency.py::test_all_attempts_fail_returns_entity_detail_fallback",
  "backend/tests/core/test_location_consistency.py::test_all_attempts_fail_without_entity_detail_counted_as_failed",
  "backend/tests/core/test_location_consistency.py::test_llm_returns_empty_falls_back_to_gpt",
  "backend/tests/core/test_location_consistency.py::test_location_id_enforced_from_input_not_llm",
  "backend/tests/core/test_location_consistency.py::test_missing_entity_merge_raises",
  "backend/tests/core/test_location_consistency.py::test_no_locations_returns_empty",
  "backend/tests/core/test_location_consistency.py::test_processes_all_locations_with_llm_success",
  "backend/tests/core/test_location_consistency.py::test_resume_mode_skips_completed_locations",
  "backend/tests/core/test_low_freq_skip.py::test_get_skip_file_path_structure",
  "backend/tests/core/test_low_freq_skip.py::test_load_corrupt_json_warns_and_returns_empty",
  "backend/tests/core/test_low_freq_skip.py::test_load_returns_empty_when_file_missing",
  "backend/tests/core/test_low_freq_skip.py::test_save_creates_parent_dirs",
  "backend/tests/core/test_low_freq_skip.py::test_save_dedupes_input",
  "backend/tests/core/test_low_freq_skip.py::test_save_empty_then_load_empty",
  "backend/tests/core/test_low_freq_skip.py::test_save_then_load_round_trip",
  "backend/tests/core/test_name_matcher.py::TestBuildNameIndex::test_base_and_variant_coexist_without_collision",
  "backend/tests/core/test_name_matcher.py::TestBuildNameIndex::test_conflict_first_wins",
  "backend/tests/core/test_name_matcher.py::TestBuildNameIndex::test_identity_default",
  "backend/tests/core/test_name_matcher.py::TestBuildNameIndex::test_raw_preserved_when_same_as_normalized",
  "backend/tests/core/test_name_matcher.py::TestBuildNameIndex::test_skips_empty_names",
  "backend/tests/core/test_name_matcher.py::TestBuildNameIndex::test_value_fn",
  "backend/tests/core/test_name_matcher.py::TestBuildNameIndex::test_variant_does_not_register_bare_key",
  "backend/tests/core/test_name_matcher.py::TestLookupName::test_exact_raw_match",
  "backend/tests/core/test_name_matcher.py::TestLookupName::test_full_width_paren_query",
  "backend/tests/core/test_name_matcher.py::TestLookupName::test_miss_returns_none",
  "backend/tests/core/test_name_matcher.py::TestLookupName::test_normalization_fallback",
  "backend/tests/core/test_name_matcher.py::TestLookupName::test_query_with_paren_matched_via_norm",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_collapse_internal_whitespace",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_empty_or_none",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_no_changes_for_plain_names",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_paren_with_surrounding_whitespace",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_preserves_case",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_preserves_josa",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_strip_paren_suffix_full_width",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_strip_paren_suffix_half_width",
  "backend/tests/core/test_name_matcher.py::TestNormalizeName::test_strip_whitespace",
  "backend/tests/core/test_presync_manifest_field.py::test_expected_steps_have_presync_flag",
  "backend/tests/core/test_presync_manifest_field.py::test_no_route_hardcoded_presync_tuple",
  "backend/tests/core/test_scene_analysis_dto.py::test_dto_defaults_are_empty",
  "backend/tests/core/test_scene_analysis_dto.py::test_loader_fixed_elements_mapping",
  "backend/tests/core/test_scene_analysis_dto.py::test_loader_loads_segments_and_director",
  "backend/tests/core/test_scene_analysis_dto.py::test_loader_no_checkpoints_returns_empty_context",
  "backend/tests/core/test_scene_analysis_dto.py::test_loader_outlook_phase3_preferred_over_extraction",
  "backend/tests/core/test_scene_analysis_dto.py::test_loader_scene_dependency_fallback_when_shot_empty",
  "backend/tests/core/test_scene_analysis_dto.py::test_loader_shot_dependency_preferred_over_scene_dependency",
  "backend/tests/core/test_scene_analysis_dto.py::test_loader_shot_selection_filters_shots",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_auto_assigns_fixed_outfit",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_cleans_double_spaces",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_forcibly_removes_ids_when_retry_also_violates",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_injects_fixed_elements_into_user_prompt",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_leaves_clean_representative_moment_intact",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_legacy_no_shot_info",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_removes_outfit_for_non_visible_character",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_replaces_bare_cid_with_composite",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_replaces_violation_via_shot_director_vr",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_retries_on_ve_violation",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_returns_none_on_llm_exception",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_returns_scene_and_shot_index",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_skips_fixed_elements_when_shot_not_in_applies",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_strips_violations_from_representative_moment",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_strips_violations_from_still_frame_prompt",
  "backend/tests/core/test_scene_detail_analyze_one.py::test_analyze_one_uses_fallback_when_no_entities",
  "backend/tests/core/test_shot_validator.py::test_validator_keeps_original_for_missing_shot_index_in_llm_response",
  "backend/tests/core/test_shot_validator.py::test_validator_loads_scene_text_from_segments",
  "backend/tests/core/test_shot_validator.py::test_validator_passes_through_empty_scene",
  "backend/tests/core/test_shot_validator.py::test_validator_preserves_original_on_llm_failure",
  "backend/tests/core/test_shot_validator.py::test_validator_preserves_original_when_all_three_fail",
  "backend/tests/core/test_shot_validator.py::test_validator_preserves_shot_validator_config_keys_in_fallback",
  "backend/tests/core/test_shot_validator.py::test_validator_preserves_unchanged_shot",
  "backend/tests/core/test_shot_validator.py::test_validator_raises_when_no_shot_extract",
  "backend/tests/core/test_shot_validator.py::test_validator_raises_when_scene_index_is_none",
  "backend/tests/core/test_shot_validator.py::test_validator_retries_same_on_transient_exception",
  "backend/tests/core/test_shot_validator.py::test_validator_returns_fan_out_counts",
  "backend/tests/core/test_shot_validator.py::test_validator_rewrites_and_backs_up_original",
  "backend/tests/core/test_shot_validator.py::test_validator_skips_empty_revision",
  "backend/tests/core/test_shot_validator.py::test_validator_skips_retry_on_empty_response_jumps_to_gpt",
  "backend/tests/core/test_shot_validator.py::test_validator_skips_retry_same_when_safety_keyword_in_exception",
  "backend/tests/core/test_shot_validator.py::test_validator_skips_when_revised_equals_original",
  "backend/tests/core/test_shot_validator.py::test_validator_sorts_scenes_by_index",
  "backend/tests/core/test_step_contract_isolation.py::test_step_runner_does_not_import_STEP_MANIFEST_dict",
  "backend/tests/core/test_step_contract_isolation.py::test_steps_route_does_not_import_STEP_MANIFEST_dict",
  "backend/tests/core/test_step_runner_consumes_downstream.py::test_consumed_downstream_file_preserved",
  "backend/tests/core/test_step_runner_consumes_downstream.py::test_delete_checkpoints_false_preserves_all",
  "backend/tests/core/test_step_runner_consumes_downstream.py::test_empty_consumes_list_deletes_all",
  "backend/tests/core/test_step_runner_consumes_downstream.py::test_no_consumes_declaration_deletes_all",
  "backend/tests/core/test_step_runner_consumes_downstream.py::test_no_downstream_no_commit",
  "backend/tests/core/test_step_runner_consumes_downstream.py::test_target_step_id_override_reads_from_ref",
  "backend/tests/core/test_step_runner_editorial_cascade.py::test_editorial_cascade_when_flag_true",
  "backend/tests/core/test_step_runner_editorial_cascade.py::test_editorial_no_cascade_when_flag_absent",
  "backend/tests/core/test_step_runner_editorial_cascade.py::test_editorial_no_cascade_when_flag_false",
  "backend/tests/core/test_step_runner_editorial_cascade.py::test_editorial_no_cascade_when_modifies_checkpoints_empty",
  "backend/tests/core/test_step_runner_preserve_flag.py::test_no_downstream_no_commit",
  "backend/tests/core/test_step_runner_preserve_flag.py::test_preserve_flag_false_deletes_file",
  "backend/tests/core/test_step_runner_preserve_flag.py::test_preserve_flagged_downstream_keeps_file",
  "backend/tests/core/test_step_runner_preserve_flag.py::test_preserve_respects_delete_checkpoints_false",
  "backend/tests/core/test_step_runner_preserve_flag.py::test_target_step_id_override",
  "backend/tests/pipeline/test_outlook_dedup.py::test_apply_outlook_merge_commits_on_success",
  "backend/tests/pipeline/test_outlook_dedup.py::test_apply_outlook_merge_counts_successful_merges",
  "backend/tests/pipeline/test_outlook_dedup.py::test_apply_outlook_merge_rollbacks_on_exception",
  "backend/tests/pipeline/test_outlook_dedup.py::test_merge_single_outlook_deletes_canon_last",
  "backend/tests/pipeline/test_outlook_dedup.py::test_merge_single_outlook_skips_self_merge",
  "backend/tests/pipeline/test_outlook_dedup.py::test_merge_single_outlook_skips_when_resolve_fails",
  "backend/tests/pipeline/test_outlook_dedup.py::test_migrate_entity_aliases_deletes_duplicates_on_keep",
  "backend/tests/pipeline/test_outlook_dedup.py::test_migrate_entity_aliases_handles_empty_remove_set",
  "backend/tests/pipeline/test_outlook_dedup.py::test_migrate_entity_aliases_moves_unique_aliases_to_keep",
  "backend/tests/pipeline/test_outlook_dedup.py::test_migrate_entity_episode_links_merges_counts_on_collision",
  "backend/tests/pipeline/test_outlook_dedup.py::test_migrate_entity_episode_links_updates_when_no_collision",
  "backend/tests/pipeline/test_outlook_dedup.py::test_migrate_relation_participants_update_and_role_aware_dedup",
  "backend/tests/pipeline/test_outlook_dedup.py::test_resolve_outlook_id_returns_id_for_matching_name",
  "backend/tests/pipeline/test_outlook_dedup.py::test_resolve_outlook_id_returns_none_when_not_found",
  "backend/tests/pipeline/test_outlook_dedup.py::test_rewrite_scene_still_no_change_when_name_absent",
  "backend/tests/pipeline/test_outlook_dedup.py::test_rewrite_scene_still_replaces_marker_in_all_prompt_fields",
  "backend/tests/services/test_analysis_dispatch_service.py::test_dispatch_category_run_and_reanalysis_block_each_other",
  "backend/tests/services/test_analysis_dispatch_service.py::test_dispatch_category_run_job_key_conflict_raises",
  "backend/tests/services/test_analysis_dispatch_service.py::test_dispatch_category_run_raises_when_already_running",
  "backend/tests/services/test_analysis_dispatch_service.py::test_dispatch_category_run_submits_job_and_returns_job_key",
  "backend/tests/services/test_analysis_dispatch_service.py::test_dispatch_scene_reanalysis_uses_force_mode",
  "backend/tests/services/test_analysis_dispatch_service.py::test_get_step_runner_raises_for_unknown_step_id",
  "backend/tests/services/test_analysis_dispatch_service.py::test_get_step_runner_returns_instance_for_valid_step_id",
  "backend/tests/services/test_analysis_dispatch_service.py::test_load_project_llm_config_parses_valid_json",
  "backend/tests/services/test_analysis_dispatch_service.py::test_load_project_llm_config_returns_empty_on_corrupt_json",
  "backend/tests/services/test_analysis_dispatch_service.py::test_load_project_llm_config_returns_empty_when_no_settings",
  "backend/tests/services/test_analysis_dispatch_service.py::test_recover_episode_status_handles_missing_episode",
  "backend/tests/services/test_analysis_dispatch_service.py::test_recover_episode_status_noop_if_not_analyzing",
  "backend/tests/services/test_analysis_dispatch_service.py::test_recover_episode_status_resets_analyzing_to_error",
  "backend/tests/services/test_analysis_dispatch_service.py::test_recover_episode_status_truncates_long_message",
  "backend/tests/services/test_analysis_dispatch_service.py::test_run_steps_batch_final_sync_failure_triggers_recovery",
  "backend/tests/services/test_analysis_dispatch_service.py::test_run_steps_batch_gate_blocked_continues",
  "backend/tests/services/test_analysis_dispatch_service.py::test_run_steps_batch_mid_sync_before_scene_director",
  "backend/tests/services/test_analysis_dispatch_service.py::test_run_steps_batch_step_crashed_triggers_recovery",
  "backend/tests/services/test_analysis_dispatch_service.py::test_run_steps_batch_step_failed_triggers_recovery",
  "backend/tests/services/test_analysis_dispatch_service.py::test_select_scene_reanalysis_returns_ordered_by_step_order",
  "backend/tests/services/test_analysis_dispatch_service.py::test_select_scene_reanalysis_starts_at_scene_segmentation",
  "backend/tests/services/test_analysis_dispatch_service.py::test_select_scene_reanalysis_steps_contains_scene_save_and_downstream",
  "backend/tests/services/test_analysis_dispatch_service.py::test_select_steps_for_category_all_includes_image",
  "backend/tests/services/test_analysis_dispatch_service.py::test_select_steps_for_category_analysis_returns_active_analysis_only",
  "backend/tests/services/test_analysis_dispatch_service.py::test_select_steps_for_category_invalid_raises",
  "backend/tests/services/test_analysis_dispatch_service.py::test_select_steps_for_category_planning_doc_inclusion",
  "backend/tests/services/test_checkpoint_sync_services.py::test_base_sync_propagates_corrupt_manifest",
  "backend/tests/services/test_checkpoint_sync_services.py::test_entity_sync_no_checkpoint_returns_skipped",
  "backend/tests/services/test_checkpoint_sync_services.py::test_entity_sync_not_completed_returns_skipped",
  "backend/tests/services/test_checkpoint_sync_services.py::test_episode_projection_returns_appearance_updated",
  "backend/tests/services/test_checkpoint_sync_services.py::test_episode_projection_uses_shared_now",
  "backend/tests/services/test_checkpoint_sync_services.py::test_outlook_sync_no_checkpoint_returns_zero",
  "backend/tests/services/test_checkpoint_sync_services.py::test_relation_sync_empty_relations_returns_skipped",
  "backend/tests/services/test_checkpoint_sync_services.py::test_relation_sync_no_checkpoint_returns_skipped",
  "backend/tests/services/test_checkpoint_sync_services.py::test_scene_still_sync_no_checkpoint_returns_zero",
  "backend/tests/services/test_image_service_helpers.py::test_auto_set_primary_composite_entity",
  "backend/tests/services/test_image_service_helpers.py::test_auto_set_primary_non_composite_entity",
  "backend/tests/services/test_image_service_helpers.py::test_auto_set_primary_still_id_always_competes",
  "backend/tests/services/test_image_service_helpers.py::test_build_lineage_fields_fallback_to_non_primary",
  "backend/tests/services/test_image_service_helpers.py::test_build_lineage_fields_no_refs",
  "backend/tests/services/test_image_service_helpers.py::test_build_lineage_fields_with_refs",
  "backend/tests/services/test_image_service_helpers.py::test_get_latest_world_guide_handles_invalid_json",
  "backend/tests/services/test_image_service_helpers.py::test_get_latest_world_guide_parses_json",
  "backend/tests/services/test_image_service_helpers.py::test_get_latest_world_guide_returns_empty_when_none",
  "backend/tests/services/test_image_service_helpers.py::test_image_to_dict_includes_all_fields",
  "backend/tests/services/test_image_service_helpers.py::test_image_to_dict_null_reference_image_ids_becomes_empty_list",
  "backend/tests/services/test_image_service_helpers.py::test_image_to_dict_null_review_notes_becomes_empty_string",
  "backend/tests/services/test_outlook_delta_sync.py::test_character_outlook_delta_dedups_duplicate_rows",
  "backend/tests/services/test_outlook_delta_sync.py::test_character_outlook_delta_deletes_gone_pairs",
  "backend/tests/services/test_outlook_delta_sync.py::test_character_outlook_delta_inserts_new_pairs",
  "backend/tests/services/test_outlook_delta_sync.py::test_character_outlook_delta_noop_when_identical",
  "backend/tests/services/test_prompt_service.py::test_build_final_scene_prompt_deterministic_snapshot_no_korean",
  "backend/tests/services/test_prompt_service.py::test_build_final_scene_prompt_image_service_wrapper_matches_module",
  "backend/tests/services/test_prompt_service.py::test_build_final_scene_prompt_pipeline_smoke",
  "backend/tests/services/test_prompt_service.py::test_build_scene_text_composes_in_expected_order",
  "backend/tests/services/test_prompt_service.py::test_build_scene_text_strips_duplicate_photorealistic_prefix",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_composite_fallback_to_char_entity_text",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_falls_back_to_entity_text_map_when_no_ref",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_handles_standalone_prop_with_ref",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_mixed_composite_and_standalone",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_multiple_refs_numbered_correctly",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_removes_in_oxx_tail",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_standalone_location_outside_bracket",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_strips_bracketed_location_descriptor",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_strips_camera_angle_prefix",
  "backend/tests/services/test_prompt_service.py::test_replace_entity_ids_substitutes_composite_id_with_ref_num",
  "backend/tests/services/test_prompt_service.py::test_resolve_ref_roles_background_label_uses_architecture",
  "backend/tests/services/test_prompt_service.py::test_resolve_ref_roles_character_label_generates_appearance_instruction",
  "backend/tests/services/test_prompt_service.py::test_resolve_ref_roles_empty_returns_no_reference_marker",
  "backend/tests/services/test_prompt_service.py::test_resolve_ref_roles_outfit_label_generates_standalone_instruction",
  "backend/tests/services/test_prompt_service.py::test_resolve_ref_roles_previous_scene_limits_to_atmosphere",
  "backend/tests/services/test_prompt_service.py::test_resolve_ref_roles_previous_shot_same_room_keeps_background",
  "backend/tests/services/test_prompt_service.py::test_translate_if_korean_handles_empty_version_dir",
  "backend/tests/services/test_prompt_service.py::test_translate_if_korean_handles_missing_prompt_dir",
  "backend/tests/services/test_prompt_service.py::test_translate_if_korean_invokes_llm_when_korean_detected",
  "backend/tests/services/test_prompt_service.py::test_translate_if_korean_passes_english_unchanged",
  "backend/tests/services/test_prompt_service.py::test_translate_if_korean_returns_original_on_llm_failure",
  "backend/tests/services/test_reference_image_service.py::test_generate_base_references_default_mode_resume",
  "backend/tests/services/test_reference_image_service.py::test_generate_base_references_delegates_with_skip_composite_true",
  "backend/tests/services/test_reference_image_service.py::test_generate_base_references_signature",
  "backend/tests/services/test_reference_image_service.py::test_generate_composite_image_raises_when_entity_missing",
  "backend/tests/services/test_reference_image_service.py::test_generate_composite_image_raises_when_face_missing",
  "backend/tests/services/test_reference_image_service.py::test_generate_composite_image_raises_when_outlook_is_o00",
  "backend/tests/services/test_reference_image_service.py::test_generate_composite_image_signature",
  "backend/tests/services/test_reference_image_service.py::test_generate_composites_delegates_with_skip_composite_false",
  "backend/tests/services/test_reference_image_service.py::test_generate_composites_full_mode_passthrough",
  "backend/tests/services/test_reference_image_service.py::test_generate_composites_signature",
  "backend/tests/services/test_reference_image_service.py::test_generate_reference_images_only_preserved_signature",
  "backend/tests/services/test_reference_image_service.py::test_generate_single_entity_image_signature",
  "backend/tests/services/test_reference_image_service.py::test_image_service_auto_set_primary_shim_passthrough",
  "backend/tests/services/test_reference_image_service.py::test_image_service_build_lineage_fields_shim_passthrough",
  "backend/tests/services/test_reference_image_service.py::test_image_service_get_latest_world_guide_shim_passthrough",
  "backend/tests/services/test_reference_image_service.py::test_image_service_image_to_dict_shim_passthrough",
  "backend/tests/services/test_reference_image_service.py::test_regenerate_composites_character_iterates_outlooks",
  "backend/tests/services/test_reference_image_service.py::test_regenerate_composites_character_skips_o00_outlook",
  "backend/tests/services/test_reference_image_service.py::test_regenerate_composites_for_entity_signature",
  "backend/tests/services/test_reference_image_service.py::test_regenerate_composites_o00_outlook_entity_returns_empty",
  "backend/tests/services/test_reference_image_service.py::test_regenerate_composites_outlook_entity_iterates_characters",
  "backend/tests/services/test_reference_image_service.py::test_regenerate_composites_unknown_entity_returns_empty",
  "backend/tests/services/test_reference_image_service.py::test_validate_reference_exception_returns_none",
  "backend/tests/services/test_reference_image_service.py::test_validate_reference_high_score_keeps_status",
  "backend/tests/services/test_reference_image_service.py::test_validate_reference_low_score_flags_needs_fix",
  "backend/tests/services/test_reference_image_service.py::test_validate_reference_missing_file_returns_unchanged",
  "backend/tests/services/test_relation_delta_sync.py::test_delta_deletes_gone_relations",
  "backend/tests/services/test_relation_delta_sync.py::test_delta_inserts_new_when_empty_existing",
  "backend/tests/services/test_relation_delta_sync.py::test_delta_mixed_scenario",
  "backend/tests/services/test_relation_delta_sync.py::test_delta_noop_when_reason_matches",
  "backend/tests/services/test_relation_delta_sync.py::test_delta_skips_existing_with_missing_participant",
  "backend/tests/services/test_relation_delta_sync.py::test_delta_skips_unknown_short_id",
  "backend/tests/services/test_relation_delta_sync.py::test_delta_updates_reason_only_when_identity_preserved",
  "backend/tests/services/test_scene_image_service.py::test_generate_images_signature",
  "backend/tests/services/test_scene_image_service.py::test_generate_scene_with_variations_signature",
  "backend/tests/services/test_scene_image_service.py::test_generate_single_scene_image_signature",
  "backend/tests/services/test_scene_image_service.py::test_generate_variations_only_signature",
  "backend/tests/services/test_scene_image_service.py::test_get_reference_image_map_empty_list",
  "backend/tests/services/test_scene_image_service.py::test_get_reference_image_map_missing_primary_fallback",
  "backend/tests/services/test_scene_image_service.py::test_get_visible_entities_invalid_json_returns_empty",
  "backend/tests/services/test_scene_image_service.py::test_get_visible_entities_none_returns_empty",
  "backend/tests/services/test_scene_image_service.py::test_get_visible_entities_parses_list_of_dicts",
  "backend/tests/services/test_scene_image_service.py::test_get_visible_entities_parses_list_of_ids",
  "backend/tests/services/test_scene_image_service.py::test_recommend_variations_no_openai_key_raises",
  "backend/tests/services/test_scene_image_service.py::test_recommend_variations_signature",
  "backend/tests/services/test_scene_image_service.py::test_recommend_variations_still_not_found_raises",
  "backend/tests/services/test_scene_image_service.py::test_regenerate_variation_signature",
  "backend/tests/services/test_scene_image_service.py::test_select_original_image_not_found_raises",
  "backend/tests/services/test_scene_image_service.py::test_select_original_signature",
  "backend/tests/services/test_scene_image_service.py::test_select_original_still_not_found_raises",
  "backend/tests/services/test_scene_image_service.py::test_select_variant_signature",
  "backend/tests/services/test_scene_image_service.py::test_select_variant_still_not_found_raises",
  "backend/tests/services/test_scene_image_service.py::test_set_variant_primary_signature",
  "backend/tests/services/test_scene_image_service.py::test_validate_scene_exception_returns_none",
  "backend/tests/services/test_scene_image_service.py::test_validate_scene_high_score_keeps_status",
  "backend/tests/services/test_scene_image_service.py::test_validate_scene_low_score_flags_needs_fix",
  "backend/tests/services/test_scene_image_service.py::test_validate_scene_missing_file_returns_unchanged",
  "backend/tests/services/test_shot_selection_service.py::test_toggle_acquires_advisory_lock",
  "backend/tests/services/test_shot_selection_service.py::test_toggle_add_rejected_when_episode_max_exceeded",
  "backend/tests/services/test_shot_selection_service.py::test_toggle_backfills_selected_shots_from_v3_checkpoint",
  "backend/tests/services/test_shot_selection_service.py::test_toggle_corrupt_manifest_propagates_decode_error",
  "backend/tests/services/test_shot_selection_service.py::test_toggle_deselect_always_allowed_even_over_cap",
  "backend/tests/services/test_shot_selection_service.py::test_toggle_missing_checkpoint_raises",
  "backend/tests/services/test_shot_selection_service.py::test_toggle_missing_scene_raises",
  "backend/tests/services/test_snapshot_service.py::test_list_versions_ignores_prerestore",
  "backend/tests/services/test_snapshot_service.py::test_list_versions_no_dir_empty",
  "backend/tests/services/test_snapshot_service.py::test_restore_missing_version_raises",
  "backend/tests/services/test_snapshot_service.py::test_restore_no_checkpoint_dir_raises",
  "backend/tests/services/test_snapshot_service.py::test_save_snapshot_no_checkpoint_dir_raises",
  "backend/tests/test_activity_logger.py::test_log_creates_entry",
  "backend/tests/test_activity_logger.py::test_log_does_not_raise_on_failure",
  "backend/tests/test_api_endpoint_decorator.py::test_app_error_reraised",
  "backend/tests/test_api_endpoint_decorator.py::test_dict_response_gets_warnings_key",
  "backend/tests/test_api_endpoint_decorator.py::test_existing_warnings_preserved",
  "backend/tests/test_api_endpoint_decorator.py::test_function_metadata_preserved",
  "backend/tests/test_api_endpoint_decorator.py::test_non_dict_response_unchanged",
  "backend/tests/test_api_endpoint_decorator.py::test_unhandled_exception_wrapped_to_app_error",
  "backend/tests/test_applicability.py::test_always_returns_true",
  "backend/tests/test_applicability.py::test_disabled_returns_false",
  "backend/tests/test_applicability.py::test_known_if_rules_present_in_registry",
  "backend/tests/test_applicability.py::test_on_demand_returns_true",
  "backend/tests/test_applicability.py::test_registry_does_not_have_always_or_disabled",
  "backend/tests/test_applicability.py::test_unknown_rule_raises_value_error",
  "backend/tests/test_auth_api.py::test_login_fail",
  "backend/tests/test_auth_api.py::test_login_success",
  "backend/tests/test_auth_api.py::test_logout",
  "backend/tests/test_auth_api.py::test_me_with_session",
  "backend/tests/test_auth_api.py::test_me_without_session",
  "backend/tests/test_checkpoint_io.py::test_atomic_write_creates_parent",
  "backend/tests/test_checkpoint_io.py::test_atomic_write_no_tmp_leftover",
  "backend/tests/test_checkpoint_io.py::test_atomic_write_preserves_utf8",
  "backend/tests/test_checkpoint_io.py::test_atomic_write_replaces_existing",
  "backend/tests/test_checkpoint_io.py::test_atomic_write_unique_tmp_across_calls",
  "backend/tests/test_checkpoint_io.py::test_read_json_safe_returns_none_for_invalid",
  "backend/tests/test_checkpoint_io.py::test_read_json_safe_returns_none_for_missing",
  "backend/tests/test_checkpoint_io.py::test_read_json_safe_roundtrip",
  "backend/tests/test_entities_api.py::test_analyze_episode_not_found",
  "backend/tests/test_entities_api.py::test_analyze_no_api_key",
  "backend/tests/test_entities_api.py::test_analyze_no_text",
  "backend/tests/test_entities_api.py::test_get_entity_detail",
  "backend/tests/test_entities_api.py::test_get_entity_not_found",
  "backend/tests/test_entities_api.py::test_list_entities",
  "backend/tests/test_entities_api.py::test_list_entities_filter_by_type",
  "backend/tests/test_entities_api.py::test_list_stills",
  "backend/tests/test_entities_api.py::test_list_stills_empty",
  "backend/tests/test_entities_api.py::test_update_entity",
  "backend/tests/test_entities_api.py::test_update_entity_not_found",
  "backend/tests/test_entity_dependency.py::test_character_character_identity_dependency",
  "backend/tests/test_entity_dependency.py::test_character_character_transformation",
  "backend/tests/test_entity_dependency.py::test_character_location_ignored",
  "backend/tests/test_entity_dependency.py::test_character_prop_possession_dependency",
  "backend/tests/test_entity_dependency.py::test_circular_dependency_handled",
  "backend/tests/test_entity_dependency.py::test_empty_entities_empty_batches",
  "backend/tests/test_entity_dependency.py::test_location_location_identity",
  "backend/tests/test_entity_dependency.py::test_location_location_transformation",
  "backend/tests/test_entity_dependency.py::test_multiple_independent_entities_same_batch",
  "backend/tests/test_entity_dependency.py::test_no_relations_single_batch",
  "backend/tests/test_entity_dependency.py::test_non_visual_relation_family_ignored",
  "backend/tests/test_entity_dependency.py::test_single_participant_relation_skipped",
  "backend/tests/test_entity_dependency.py::test_topological_sort_valid_ordering",
  "backend/tests/test_entity_dependency.py::test_unknown_entity_in_participant_skipped",
  "backend/tests/test_entity_dependency.py::test_visual_reference_rules_structure",
  "backend/tests/test_entity_extract_v4.py::test_extract_all_entities_calls_three_types",
  "backend/tests/test_entity_extract_v4.py::test_extract_all_entities_passes_params",
  "backend/tests/test_entity_extract_v4.py::test_extract_by_type_calls_call_structured_with_correct_step",
  "backend/tests/test_entity_extract_v4.py::test_extract_by_type_location_uses_correct_root_key",
  "backend/tests/test_entity_extract_v4.py::test_extract_by_type_prop_uses_correct_root_key",
  "backend/tests/test_entity_extract_v4.py::test_filter_keeps_entity_with_exactly_two_scenes",
  "backend/tests/test_entity_extract_v4.py::test_filter_removes_entity_with_duplicate_single_scene",
  "backend/tests/test_entity_extract_v4.py::test_filter_removes_entity_with_single_scene",
  "backend/tests/test_entity_filter.py::TestFilterLowFrequencyEntities::test_collects_only_low_freq_entities",
  "backend/tests/test_entity_filter.py::TestFilterLowFrequencyEntities::test_empty_low_freq_returns_unchanged",
  "backend/tests/test_entity_filter.py::TestFilterLowFrequencyEntities::test_high_freq_entities_not_sent_to_llm",
  "backend/tests/test_entity_filter.py::TestFilterLowFrequencyEntities::test_keep_decisions_preserved",
  "backend/tests/test_entity_filter.py::TestFilterLowFrequencyEntities::test_remove_decisions_applied",
  "backend/tests/test_entity_review_v4.py::test_entity_review_step_filters_unnecessary",
  "backend/tests/test_entity_review_v4.py::test_review_entities_calls_call_structured_with_step",
  "backend/tests/test_entity_review_v4.py::test_review_entities_formats_entities",
  "backend/tests/test_entity_review_v4.py::test_review_entities_loads_external_prompt",
  "backend/tests/test_episode_summary.py::test_summarize_episode_calls_call_structured_with_step",
  "backend/tests/test_episode_summary.py::test_summarize_episode_loads_external_prompt",
  "backend/tests/test_episode_summary.py::test_summarize_episode_respects_max_length",
  "backend/tests/test_episode_summary.py::test_summarize_episode_returns_string",
  "backend/tests/test_episodes_api.py::test_delete_episode",
  "backend/tests/test_episodes_api.py::test_duplicate_episode_number",
  "backend/tests/test_episodes_api.py::test_episode_not_found",
  "backend/tests/test_episodes_api.py::test_get_episode",
  "backend/tests/test_episodes_api.py::test_list_episodes",
  "backend/tests/test_episodes_api.py::test_update_episode",
  "backend/tests/test_episodes_api.py::test_upload_episode",
  "backend/tests/test_exports_api.py::test_download_export_not_found",
  "backend/tests/test_exports_api.py::test_generate_webbook_no_key",
  "backend/tests/test_exports_api.py::test_list_exports_empty",
  "backend/tests/test_exports_api.py::test_render_pdf_no_webbook",
  "backend/tests/test_i18n.py::test_t_returns_key_for_missing",
  "backend/tests/test_i18n.py::test_t_returns_korean_string",
  "backend/tests/test_image_validator.py::test_get_validation_no_result",
  "backend/tests/test_image_validator.py::test_get_validation_with_result",
  "backend/tests/test_image_validator.py::test_image_response_includes_validation_fields",
  "backend/tests/test_image_validator.py::test_validate_endpoint_image_not_found",
  "backend/tests/test_image_validator.py::test_validate_endpoint_no_openai_key",
  "backend/tests/test_image_validator.py::test_validation_schema_has_required_fields",
  "backend/tests/test_images_api.py::test_compose_prompts_no_openai_key",
  "backend/tests/test_images_api.py::test_compose_prompts_still_not_found",
  "backend/tests/test_images_api.py::test_generate_images_no_gemini_key",
  "backend/tests/test_images_api.py::test_get_composer_prompt_empty",
  "backend/tests/test_images_api.py::test_get_image_detail",
  "backend/tests/test_images_api.py::test_get_image_not_found",
  "backend/tests/test_images_api.py::test_image_file_not_found",
  "backend/tests/test_images_api.py::test_image_file_serve",
  "backend/tests/test_images_api.py::test_image_response_includes_lineage_fields",
  "backend/tests/test_images_api.py::test_image_response_includes_sanitization_fields",
  "backend/tests/test_images_api.py::test_image_response_lineage_defaults",
  "backend/tests/test_images_api.py::test_image_review_invalid_status",
  "backend/tests/test_images_api.py::test_image_review_update",
  "backend/tests/test_images_api.py::test_list_images_empty",
  "backend/tests/test_images_api.py::test_list_images_includes_sanitization_fields",
  "backend/tests/test_images_api.py::test_list_images_with_filter",
  "backend/tests/test_images_api.py::test_regenerate_needs_fix_none_marked",
  "backend/tests/test_images_api.py::test_regenerate_single_image",
  "backend/tests/test_images_api.py::test_scene_still_response_includes_t2i_fields",
  "backend/tests/test_images_api.py::test_update_and_get_composer_prompt",
  "backend/tests/test_images_api.py::test_update_composer_prompt_partial",
  "backend/tests/test_images_api.py::test_update_still_t2i_prompts",
  "backend/tests/test_manifest_fields.py::test_active_steps_count_matches_baseline",
  "backend/tests/test_manifest_fields.py::test_all_steps_have_lifecycle",
  "backend/tests/test_manifest_fields.py::test_all_steps_have_step_type",
  "backend/tests/test_manifest_fields.py::test_asset_steps_exact_list",
  "backend/tests/test_manifest_fields.py::test_deprecated_steps_declare_replaced_by_or_disabled",
  "backend/tests/test_manifest_fields.py::test_editorial_cascade_disabled_by_default",
  "backend/tests/test_manifest_fields.py::test_editorial_modifies_references_are_valid",
  "backend/tests/test_manifest_fields.py::test_editorial_steps_declare_modifies_checkpoints",
  "backend/tests/test_manifest_fields.py::test_image_steps_are_asset",
  "backend/tests/test_manifest_fields.py::test_lifecycle_values_are_known",
  "backend/tests/test_manifest_fields.py::test_removed_steps_are_disabled",
  "backend/tests/test_manifest_fields.py::test_replaced_by_targets_are_valid",
  "backend/tests/test_manifest_fields.py::test_resume_sensitive_is_bool",
  "backend/tests/test_manifest_fields.py::test_resume_sensitive_steps_are_shot_more_cohort",
  "backend/tests/test_manifest_fields.py::test_set_design_applicability_is_gated",
  "backend/tests/test_manifest_fields.py::test_step_catalog_exposes_invalidate_downstream_on_edit",
  "backend/tests/test_manifest_fields.py::test_step_type_distribution",
  "backend/tests/test_manifest_fields.py::test_step_type_values_are_known",
  "backend/tests/test_manifest_fields.py::test_t2i_review_modifies_entity_t2i_and_scene_detail",
  "backend/tests/test_models.py::test_create_all_tables",
  "backend/tests/test_models.py::test_insert_user_account",
  "backend/tests/test_moderation.py::TestGenerationTraceModel::test_trace_model_fields",
  "backend/tests/test_moderation.py::TestGenerationTracker::test_get_prompt_evolution",
  "backend/tests/test_moderation.py::TestGenerationTracker::test_get_rejection_stats",
  "backend/tests/test_moderation.py::TestGenerationTracker::test_get_traces",
  "backend/tests/test_moderation.py::TestGenerationTracker::test_record_blocked_trace",
  "backend/tests/test_moderation.py::TestGenerationTracker::test_record_creates_trace",
  "backend/tests/test_moderation.py::TestModerationError::test_check_moderation_block_no_block",
  "backend/tests/test_moderation.py::TestModerationError::test_check_moderation_block_prompt_feedback",
  "backend/tests/test_moderation.py::TestModerationError::test_check_moderation_block_safety_finish",
  "backend/tests/test_moderation.py::TestModerationError::test_moderation_error_attributes",
  "backend/tests/test_moderation.py::TestModerationError::test_moderation_error_is_exception",
  "backend/tests/test_moderation.py::TestPromptSanitizerSchema::test_attempt_to_strategy_mapping",
  "backend/tests/test_moderation.py::TestPromptSanitizerSchema::test_sanitize_prompts_exist",
  "backend/tests/test_moderation.py::TestPromptSanitizerSchema::test_sanitize_schema_structure",
  "backend/tests/test_moderation.py::TestPromptSanitizerSchema::test_sanitize_system_prompt_content",
  "backend/tests/test_moderation.py::TestPromptSanitizerSchema::test_sanitize_user_prompt_has_placeholders",
  "backend/tests/test_moderation.py::TestPromptSanitizerSchema::test_strategies_defined",
  "backend/tests/test_moderation.py::TestTraceAPI::test_image_traces",
  "backend/tests/test_moderation.py::TestTraceAPI::test_list_traces_empty",
  "backend/tests/test_moderation.py::TestTraceAPI::test_list_traces_pagination",
  "backend/tests/test_moderation.py::TestTraceAPI::test_list_traces_with_data",
  "backend/tests/test_moderation.py::TestTraceAPI::test_rejection_stats_empty",
  "backend/tests/test_moderation.py::TestTraceAPI::test_rejection_stats_with_data",
  "backend/tests/test_outlook_v2.py::test_build_scene_block_limits_text_to_400_chars",
  "backend/tests/test_outlook_v2.py::test_build_scene_block_multiple_scenes",
  "backend/tests/test_outlook_v2.py::test_build_scene_block_uses_defaults_for_missing_fields",
  "backend/tests/test_outlook_v2.py::test_phase1_calls_call_structured_with_correct_step",
  "backend/tests/test_outlook_v2.py::test_phase1_includes_character_block_in_user_prompt",
  "backend/tests/test_outlook_v2.py::test_phase1_includes_scene_block",
  "backend/tests/test_outlook_v2.py::test_phase1_passes_project_config_and_opik",
  "backend/tests/test_outlook_v2.py::test_phase1_returns_empty_outlooks",
  "backend/tests/test_outlook_v2.py::test_phase2_builds_char_outlook_lines",
  "backend/tests/test_outlook_v2.py::test_phase2_calls_call_structured_with_correct_step",
  "backend/tests/test_outlook_v2.py::test_phase2_matches_by_character_name",
  "backend/tests/test_outlook_v2.py::test_phase2_passes_project_config_and_opik",
  "backend/tests/test_outlook_v2.py::test_phase2_sets_temp_short_id_on_outlooks",
  "backend/tests/test_pipeline_e2e.py::TestPipelineE2E::test_create_project",
  "backend/tests/test_pipeline_e2e.py::TestPipelineE2E::test_full_pipeline",
  "backend/tests/test_pipeline_e2e.py::TestPipelineE2E::test_health_check",
  "backend/tests/test_pipeline_v3_e2e.py::TestCheckpointFlow::test_checkpoint_creation_after_step",
  "backend/tests/test_pipeline_v3_e2e.py::TestCheckpointFlow::test_scene_save_loads_segmentation_checkpoint",
  "backend/tests/test_pipeline_v3_e2e.py::TestCheckpointFlow::test_three_step_checkpoint_chain",
  "backend/tests/test_pipeline_v3_e2e.py::TestDependencyGraph::test_scene_detail_blocked_without_all_deps",
  "backend/tests/test_pipeline_v3_e2e.py::TestDependencyGraph::test_scene_segmentation_blocked_without_text_cleanup",
  "backend/tests/test_pipeline_v3_e2e.py::TestDependencyGraph::test_scene_segmentation_passes_with_text_cleanup_completed",
  "backend/tests/test_pipeline_v3_e2e.py::TestDependencyGraph::test_text_cleanup_has_no_gate",
  "backend/tests/test_pipeline_v3_e2e.py::TestForceMode::test_force_invalidates_downstream",
  "backend/tests/test_pipeline_v3_e2e.py::TestForceMode::test_force_reruns_completed_step",
  "backend/tests/test_pipeline_v3_e2e.py::TestResumeMode::test_completed_step_is_skipped",
  "backend/tests/test_pipeline_v3_e2e.py::TestResumeMode::test_pending_step_runs_in_resume",
  "backend/tests/test_pipeline_v3_e2e.py::TestStepClassesCompleteness::test_all_classes_inherit_step_runner",
  "backend/tests/test_pipeline_v3_e2e.py::TestStepClassesCompleteness::test_all_manifest_ids_have_class_or_legacy",
  "backend/tests/test_pipeline_v3_e2e.py::TestStepClassesCompleteness::test_step_classes_count_at_least_19",
  "backend/tests/test_pipeline_v3_e2e.py::TestStepOrdering::test_analysis_order_matches",
  "backend/tests/test_pipeline_v3_e2e.py::TestStepOrdering::test_image_steps_after_analysis",
  "backend/tests/test_pipeline_v3_e2e.py::TestStepOrdering::test_order_values_are_sequential",
  "backend/tests/test_pipeline_v3_e2e.py::TestSyncIntegration::test_sync_updates_episode_status",
  "backend/tests/test_pipeline_v3_e2e.py::TestSyncIntegration::test_sync_writes_vah_to_scene_still",
  "backend/tests/test_pipeline_v3_e2e.py::TestVAHManifest::test_scene_director_checkpoint_has_vah_fields",
  "backend/tests/test_pipeline_v3_e2e.py::TestVAHManifest::test_scene_director_manifest_label",
  "backend/tests/test_pipeline_v3_e2e.py::TestVAHManifest::test_scene_still_model_has_vah_columns",
  "backend/tests/test_progress.py::test_multiple_operations_per_episode",
  "backend/tests/test_progress.py::test_pipeline_progress_model",
  "backend/tests/test_progress.py::test_progress_endpoint_empty",
  "backend/tests/test_progress.py::test_progress_endpoint_with_data",
  "backend/tests/test_progress.py::test_progress_persists_across_queries",
  "backend/tests/test_progress.py::test_progress_tracker_complete",
  "backend/tests/test_progress.py::test_progress_tracker_create",
  "backend/tests/test_progress.py::test_progress_tracker_fail",
  "backend/tests/test_progress.py::test_progress_tracker_update",
  "backend/tests/test_project_export_import.py::test_export_import_round_trip_data_integrity",
  "backend/tests/test_project_export_import.py::test_export_includes_member",
  "backend/tests/test_project_export_import.py::test_export_lists_are_serialisable",
  "backend/tests/test_project_export_import.py::test_export_nonexistent_project",
  "backend/tests/test_project_export_import.py::test_export_project_fields",
  "backend/tests/test_project_export_import.py::test_export_requires_auth",
  "backend/tests/test_project_export_import.py::test_export_returns_valid_json",
  "backend/tests/test_project_export_import.py::test_import_creates_new_project",
  "backend/tests/test_project_export_import.py::test_import_invalid_format",
  "backend/tests/test_project_export_import.py::test_import_remaps_ids",
  "backend/tests/test_project_export_import.py::test_import_requires_auth",
  "backend/tests/test_project_export_import.py::test_import_with_new_name",
  "backend/tests/test_projects_api.py::test_access_denied",
  "backend/tests/test_projects_api.py::test_add_member",
  "backend/tests/test_projects_api.py::test_cannot_remove_owner",
  "backend/tests/test_projects_api.py::test_create_project",
  "backend/tests/test_projects_api.py::test_delete_project",
  "backend/tests/test_projects_api.py::test_get_project",
  "backend/tests/test_projects_api.py::test_list_projects_as_admin",
  "backend/tests/test_projects_api.py::test_list_projects_as_creator",
  "backend/tests/test_projects_api.py::test_member_role_change",
  "backend/tests/test_projects_api.py::test_project_activities",
  "backend/tests/test_projects_api.py::test_remove_member",
  "backend/tests/test_projects_api.py::test_update_project",
  "backend/tests/test_provenance.py::TestOperationLogModel::test_operation_log_fields",
  "backend/tests/test_provenance.py::TestOperationLogModel::test_operation_log_insert",
  "backend/tests/test_provenance.py::TestOperationLogModel::test_operation_log_table_created",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_get_operation_detail",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_get_operation_not_found",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_list_operations_empty",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_list_operations_filter_by_type",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_list_operations_pagination",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_list_operations_with_data",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_operations_response_schema",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_operations_summary_empty",
  "backend/tests/test_provenance.py::TestOperationsAPI::test_operations_summary_with_data",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_context_manager_records_error",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_explicit_fail",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_get_operation_by_id",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_get_operation_not_found",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_get_operations_filter",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_get_summary",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_module_version_from_registry",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_prompt_hash_computation",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_start_operation_creates_log",
  "backend/tests/test_provenance.py::TestProvenanceRecorder::test_token_usage_recorded",
  "backend/tests/test_provenance.py::TestVersionRegistry::test_get_module_info_known",
  "backend/tests/test_provenance.py::TestVersionRegistry::test_get_module_info_unknown",
  "backend/tests/test_provenance.py::TestVersionRegistry::test_provenance_in_registry",
  "backend/tests/test_scene_dependency_v2.py::TestDirectorStepClasses::test_registry_contains_all_steps",
  "backend/tests/test_scene_dependency_v2.py::TestDirectorStepClasses::test_registry_maps_to_correct_classes",
  "backend/tests/test_scene_dependency_v2.py::TestExtractDependencies::test_calls_structured_with_correct_step",
  "backend/tests/test_scene_dependency_v2.py::TestExtractDependencies::test_handles_empty_director_result",
  "backend/tests/test_scene_dependency_v2.py::TestExtractDependencies::test_handles_empty_entities",
  "backend/tests/test_scene_dependency_v2.py::TestExtractDependencies::test_loads_correct_prompts",
  "backend/tests/test_scene_dependency_v2.py::TestExtractDependencies::test_returns_dependencies",
  "backend/tests/test_scene_dependency_v2.py::TestExtractDependencies::test_user_prompt_includes_entity_and_scene_info",
  "backend/tests/test_scene_dependency_v2.py::TestFormatEntities::test_format_all_types",
  "backend/tests/test_scene_dependency_v2.py::TestFormatEntities::test_format_empty",
  "backend/tests/test_scene_dependency_v2.py::TestFormatEntities::test_format_uses_name_fallback_when_no_short_id",
  "backend/tests/test_scene_dependency_v2.py::TestSceneCinematographyStep::test_execute_calls_llm_and_updates_db",
  "backend/tests/test_scene_dependency_v2.py::TestSceneCinematographyStep::test_falls_back_to_segmentation",
  "backend/tests/test_scene_dependency_v2.py::TestSceneCinematographyStep::test_raises_when_no_segments",
  "backend/tests/test_scene_dependency_v2.py::TestSceneCinematographyStep::test_shot_types_from_db_in_prompt",
  "backend/tests/test_scene_dependency_v2.py::TestSceneDependencyStep::test_execute_calls_extract_dependencies",
  "backend/tests/test_scene_dependency_v2.py::TestSceneDependencyStep::test_falls_back_entity_to_detail_batch",
  "backend/tests/test_scene_dependency_v2.py::TestSceneDependencyStep::test_falls_back_to_segmentation",
  "backend/tests/test_scene_dependency_v2.py::TestSceneDependencyStep::test_handles_missing_director_and_entity",
  "backend/tests/test_scene_dependency_v2.py::TestSceneDependencyStep::test_raises_when_no_segments",
  "backend/tests/test_scene_detail_v3.py::TestSceneDetailStep::test_all_segments_processed",
  "backend/tests/test_scene_detail_v3.py::TestSceneDetailStep::test_dependency_info_in_user_prompt",
  "backend/tests/test_scene_detail_v3.py::TestSceneDetailStep::test_failed_scenes_counted",
  "backend/tests/test_scene_detail_v3.py::TestSceneDetailStep::test_no_segments_returns_empty",
  "backend/tests/test_scene_detail_v3.py::TestSceneDetailStep::test_results_sorted_by_scene_index",
  "backend/tests/test_scene_detail_v3.py::TestSceneDetailStep::test_summary_included_in_user_prompt",
  "backend/tests/test_scene_detail_v3.py::TestSceneDetailStep::test_visible_entities_from_director_not_llm",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_calls_call_structured_with_correct_step",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_enum_injection_with_entities",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_loads_prompt_and_schema_for_scene_director",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_no_enum_injection_when_entities_empty",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_returns_proper_structure",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_schema_has_vah_fields",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_schema_not_mutated_across_calls",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_user_prompt_contains_entity_lines",
  "backend/tests/test_scene_director_v2.py::TestDirectScenes::test_user_prompt_contains_scene_headings",
  "backend/tests/test_scene_director_v2.py::TestSceneDirectorStep::test_execute_calls_direct_scenes",
  "backend/tests/test_scene_director_v2.py::TestSceneDirectorStep::test_execute_empty_entities",
  "backend/tests/test_scene_director_v2.py::TestSceneDirectorStep::test_execute_falls_back_to_scene_save",
  "backend/tests/test_scene_steps_v3.py::TestSceneSaveStep::test_counts_match_segment_count",
  "backend/tests/test_scene_steps_v3.py::TestSceneSaveStep::test_falls_back_to_segmentation",
  "backend/tests/test_scene_steps_v3.py::TestSceneSaveStep::test_falls_back_when_split_has_empty_segments",
  "backend/tests/test_scene_steps_v3.py::TestSceneSaveStep::test_picks_scene_split_over_segmentation",
  "backend/tests/test_scene_steps_v3.py::TestSceneSaveStep::test_raises_when_no_input",
  "backend/tests/test_scene_steps_v3.py::TestSceneSegmentationStep::test_calls_segment_scenes",
  "backend/tests/test_scene_steps_v3.py::TestSceneSegmentationStep::test_uses_cleaned_text_when_available",
  "backend/tests/test_scene_steps_v3.py::TestSceneSplitStep::test_check_applicability_false_when_no_checkpoint",
  "backend/tests/test_scene_steps_v3.py::TestSceneSplitStep::test_check_applicability_false_when_no_large_scenes",
  "backend/tests/test_scene_steps_v3.py::TestSceneSplitStep::test_check_applicability_true_when_large_scenes",
  "backend/tests/test_scene_steps_v3.py::TestSceneSplitStep::test_execute_fallback_on_split_error",
  "backend/tests/test_scene_steps_v3.py::TestSceneSplitStep::test_execute_splits_large_scenes",
  "backend/tests/test_scene_summary.py::test_summarize_scene_calls_call_structured_with_correct_step",
  "backend/tests/test_scene_summary.py::test_summarize_scene_includes_all_context_in_user_prompt",
  "backend/tests/test_scene_summary.py::test_summarize_scene_loads_external_prompt",
  "backend/tests/test_scene_summary.py::test_summarize_scene_returns_empty_on_missing_key",
  "backend/tests/test_scene_summary.py::test_summarize_scene_returns_string",
  "backend/tests/test_scene_summary.py::test_summarize_scenes_handles_failure_gracefully",
  "backend/tests/test_scene_summary.py::test_summarize_scenes_prev_3_context",
  "backend/tests/test_scene_summary.py::test_summarize_scenes_returns_list_sorted_by_index",
  "backend/tests/test_scene_summary.py::test_summarize_scenes_uses_threadpool",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyApplicability::test_false_when_no_detail_checkpoint",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyApplicability::test_false_when_only_single_char_scenes",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyApplicability::test_false_when_scenes_empty",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyApplicability::test_true_when_applicability_always",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyApplicability::test_true_when_multi_char_scenes_exist",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyExecution::test_empty_scenes_returns_empty",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyExecution::test_prev_2_scenes_context_in_prompt",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyExecution::test_results_sorted_by_scene_index",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyExecution::test_scene_1_has_no_prev_context",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyExecution::test_single_entity_scenes_skipped",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyExecution::test_verification_added_to_scene",
  "backend/tests/test_scene_verify_v2.py::TestSceneVerifyExecution::test_verify_failure_does_not_crash",
  "backend/tests/test_security.py::test_create_session_token_is_unique",
  "backend/tests/test_security.py::test_hash_and_verify_password",
  "backend/tests/test_security.py::test_is_session_expired_false",
  "backend/tests/test_security.py::test_is_session_expired_true",
  "backend/tests/test_security.py::test_session_expires_at_is_future",
  "backend/tests/test_security.py::test_verify_wrong_password",
  "backend/tests/test_settings_registry.py::test_get_model_for_step_fallback",
  "backend/tests/test_settings_registry.py::test_get_model_for_step_manifest_default",
  "backend/tests/test_settings_registry.py::test_get_model_for_step_project_override",
  "backend/tests/test_settings_registry.py::test_is_feature_enabled_fal_ai_from_env",
  "backend/tests/test_settings_registry.py::test_is_feature_enabled_set_design_from_env",
  "backend/tests/test_settings_registry.py::test_is_feature_enabled_unknown_feature_false",
  "backend/tests/test_step_catalog.py::test_catalog_entries_are_frozen",
  "backend/tests/test_step_catalog.py::test_catalog_has_all_manifest_steps",
  "backend/tests/test_step_catalog.py::test_get_active_entries_count",
  "backend/tests/test_step_catalog.py::test_get_active_entries_filtered_by_category",
  "backend/tests/test_step_catalog.py::test_get_all_downstream_recursive_matches_manifest",
  "backend/tests/test_step_catalog.py::test_get_depends_on_matches_manifest",
  "backend/tests/test_step_catalog.py::test_get_downstream_steps_matches_manifest",
  "backend/tests/test_step_catalog.py::test_get_entry_returns_frozen_entry",
  "backend/tests/test_step_catalog.py::test_get_modifiers_of_independent_step_empty",
  "backend/tests/test_step_catalog.py::test_get_modifiers_of_t2i_review_targets",
  "backend/tests/test_step_catalog.py::test_ordered_entries_monotonic",
  "backend/tests/test_step_catalog.py::test_resume_sensitive_step_ids_exact",
  "backend/tests/test_step_catalog.py::test_runner_cls_bound_for_active_autorun_steps",
  "backend/tests/test_step_manifest_v3.py::test_analysis_steps_count",
  "backend/tests/test_step_manifest_v3.py::test_applicability_values_are_known",
  "backend/tests/test_step_manifest_v3.py::test_auxiliary_order_range",
  "backend/tests/test_step_manifest_v3.py::test_auxiliary_steps_count",
  "backend/tests/test_step_manifest_v3.py::test_dependency_graph_no_cycles",
  "backend/tests/test_step_manifest_v3.py::test_downstream_of_text_cleanup",
  "backend/tests/test_step_manifest_v3.py::test_entity_extract_character_depends_on_entity_all_character",
  "backend/tests/test_step_manifest_v3.py::test_entity_extract_location_depends_on_entity_all_location",
  "backend/tests/test_step_manifest_v3.py::test_entity_extract_prop_depends_on_entity_all_prop",
  "backend/tests/test_step_manifest_v3.py::test_entity_filter_depends_on_entity_relation",
  "backend/tests/test_step_manifest_v3.py::test_image_order_range",
  "backend/tests/test_step_manifest_v3.py::test_image_steps_count",
  "backend/tests/test_step_manifest_v3.py::test_order_is_unique",
  "backend/tests/test_step_manifest_v3.py::test_order_monotonic",
  "backend/tests/test_step_manifest_v3.py::test_scene_detail_depends_on_shot_pipeline",
  "backend/tests/test_step_manifest_v3.py::test_scene_director_depends_on_scene_save_and_entity_t2i",
  "backend/tests/test_step_manifest_v3.py::test_scene_director_label_is_physical_presence",
  "backend/tests/test_step_manifest_v3.py::test_scene_segmentation_depends_on_text_cleanup",
  "backend/tests/test_step_manifest_v3.py::test_scene_summary_depends_on_scene_save_and_episode_summary",
  "backend/tests/test_step_manifest_v3.py::test_text_cleanup_has_no_dependencies",
  "backend/tests/test_step_manifest_v3.py::test_total_step_count",
  "backend/tests/test_step_manifest_v3.py::test_v4_core_steps_exist",
  "backend/tests/test_sync_v3.py::TestGetStepRunner::test_returns_v3_class_for_scene_director",
  "backend/tests/test_sync_v3.py::TestGetStepRunner::test_returns_v3_class_for_text_cleanup",
  "backend/tests/test_sync_v3.py::TestGetStepRunner::test_unknown_step_raises_error",
  "backend/tests/test_sync_v3.py::TestSceneSummarySync::test_scene_summary_updates_scene_still",
  "backend/tests/test_sync_v3.py::TestStepClassesRegistry::test_all_classes_are_step_runner_subclasses",
  "backend/tests/test_sync_v3.py::TestStepClassesRegistry::test_at_least_18_analysis_entries",
  "backend/tests/test_sync_v3.py::TestStepClassesRegistry::test_core_analysis_keys_present",
  "backend/tests/test_sync_v3.py::TestStepClassesRegistry::test_image_steps_present",
  "backend/tests/test_sync_v3.py::TestStepClassesRegistry::test_scene_director_maps_to_correct_class",
  "backend/tests/test_sync_v3.py::TestStepClassesRegistry::test_text_cleanup_maps_to_correct_class",
  "backend/tests/test_sync_v3.py::TestVAHSync::test_scene_director_updates_audio_and_hallucination",
  "backend/tests/test_text_cleanup.py::test_clean_text_loads_external_prompt",
  "backend/tests/test_text_cleanup.py::test_clean_text_passes_fulltext_to_prompt",
  "backend/tests/test_text_cleanup.py::test_clean_text_removes_page_numbers",
  "backend/tests/test_users_api.py::test_cannot_deactivate_last_admin",
  "backend/tests/test_users_api.py::test_create_user",
  "backend/tests/test_users_api.py::test_creator_cannot_access",
  "backend/tests/test_users_api.py::test_deactivate_user",
  "backend/tests/test_users_api.py::test_duplicate_username",
  "backend/tests/test_users_api.py::test_get_user",
  "backend/tests/test_users_api.py::test_list_users",
  "backend/tests/test_users_api.py::test_update_user",
  "backend/tests/test_variation_pipeline.py::TestGeminiI2IEditorMocked::test_camera_diagram_creation",
  "backend/tests/test_variation_pipeline.py::TestGeminiI2IEditorMocked::test_camera_diagram_various_angles",
  "backend/tests/test_variation_pipeline.py::TestGeminiI2IEditorMocked::test_edit_angle_and_color_chains",
  "backend/tests/test_variation_pipeline.py::TestGeminiI2IEditorMocked::test_edit_angle_calls_api",
  "backend/tests/test_variation_pipeline.py::TestGeminiI2IEditorMocked::test_edit_color_calls_api",
  "backend/tests/test_variation_pipeline.py::TestImageResponseSchema::test_image_response_includes_variant_fields",
  "backend/tests/test_variation_pipeline.py::TestImageResponseSchema::test_image_response_variant_defaults",
  "backend/tests/test_variation_pipeline.py::TestImageResponseSchema::test_list_images_includes_variant_fields",
  "backend/tests/test_variation_pipeline.py::TestSceneStillResponseSchema::test_still_response_includes_variation_fields",
  "backend/tests/test_variation_pipeline.py::TestSceneStillResponseSchema::test_still_response_variation_defaults",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_original_image_not_found",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_original_still_not_found",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_original_success",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_variant_a",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_variant_b",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_variant_invalid",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_variant_original",
  "backend/tests/test_variation_pipeline.py::TestSelectVariantEndpoints::test_select_variant_still_not_found",
  "backend/tests/test_variation_pipeline.py::TestStillImagesGrouped::test_get_still_images_empty",
  "backend/tests/test_variation_pipeline.py::TestStillImagesGrouped::test_get_still_images_with_variants",
  "backend/tests/test_variation_pipeline.py::TestVariationAPIEndpoints::test_edit_angle_image_not_found",
  "backend/tests/test_variation_pipeline.py::TestVariationAPIEndpoints::test_edit_color_image_not_found",
  "backend/tests/test_variation_pipeline.py::TestVariationAPIEndpoints::test_generate_with_variations_no_gemini_key",
  "backend/tests/test_variation_pipeline.py::TestVariationAPIEndpoints::test_generate_with_variations_still_not_found",
  "backend/tests/test_variation_pipeline.py::TestVariationAPIEndpoints::test_get_still_images_not_found",
  "backend/tests/test_variation_pipeline.py::TestVariationAPIEndpoints::test_recommend_variations_no_openai_key",
  "backend/tests/test_variation_pipeline.py::TestVariationAPIEndpoints::test_recommend_variations_still_not_found",
  "backend/tests/test_variation_pipeline.py::TestVariationRecommenderSchema::test_recommender_angle_plus_color",
  "backend/tests/test_variation_pipeline.py::TestVariationRecommenderSchema::test_recommender_calls_llm_with_correct_params",
  "backend/tests/test_variation_pipeline.py::TestVariationRecommenderSchema::test_recommender_none_variations",
  "backend/tests/test_variation_pipeline.py::TestVariationRecommenderSchema::test_recommender_returns_expected_schema",
  "backend/tests/test_variation_pipeline.py::TestVersionRegistry::test_gemini_i2i_editor_in_registry",
  "backend/tests/test_variation_pipeline.py::TestVersionRegistry::test_image_service_version_bumped",
  "backend/tests/test_variation_pipeline.py::TestVersionRegistry::test_variation_recommender_in_registry",
  "backend/tests/test_visual_world_rules.py::test_extract_visual_rules_loads_external_prompt",
  "backend/tests/test_visual_world_rules.py::test_extract_visual_rules_passes_episode_summary",
  "backend/tests/test_visual_world_rules.py::test_extract_visual_rules_returns_dict_with_rules"
]