[
  "tests/integration/test_dummy_data_load.py::test_no_fixture_contains_forbidden_real_markers",
  "tests/integration/test_dummy_data_load.py::test_synthetic_fixtures_load",
  "tests/integration/test_end_to_end_dummy_portfolio.py::test_end_to_end_placeholder_until_ledger_tasks",
  "tests/test_postfinance_sprint13.py::test_existing_same_day_canonical_projection_is_blocked_during_preview",
  "tests/test_postfinance_sprint13.py::test_immutable_postfinance_source_and_snapshot_rows",
  "tests/test_postfinance_sprint13.py::test_preview_confirm_and_reparse_are_atomic_idempotent_and_keep_roles_separate",
  "tests/test_postfinance_sprint13.py::test_provider_and_computed_cost_basis_are_separate",
  "tests/test_postfinance_sprint13.py::test_same_snapshot_with_different_original_source_is_blocked",
  "tests/test_postfinance_sprint13.py::test_sell_consumes_documented_fifo_lot_before_cost_basis_persistence",
  "tests/test_truewealth_sprint12.py::test_confirm_rollback_removes_new_archive",
  "tests/test_truewealth_sprint12.py::test_immutable_source_tables_reject_update_and_delete",
  "tests/test_truewealth_sprint12.py::test_legacy_manual_value_is_never_labelled_as_official",
  "tests/test_truewealth_sprint12.py::test_manual_non_finite_values_are_rejected",
  "tests/test_truewealth_sprint12.py::test_manual_value_is_not_hard_deleted_or_overwritten",
  "tests/test_truewealth_sprint12.py::test_newer_manual_value_wins_without_changing_positions_and_can_be_reversed",
  "tests/test_truewealth_sprint12.py::test_official_confirm_is_idempotent_preserves_legacy_and_archives",
  "tests/test_truewealth_sprint12.py::test_older_official_import_cannot_displace_newer_manual",
  "tests/test_truewealth_sprint12.py::test_platform_spelling_without_space_and_empty_account_bootstrap",
  "tests/test_truewealth_sprint12.py::test_preview_and_get_are_side_effect_free",
  "tests/test_truewealth_sprint12.py::test_same_date_different_official_source_is_blocked",
  "tests/test_truewealth_sprint12.py::test_same_day_official_has_priority_over_manual",
  "tests/test_truewealth_sprint12.py::test_text_parser_extracts_official_rows_without_inventing_values",
  "tests/unit/test_api_cors_origins.py::test_build_local_origins_accepts_runtime_tailnet_ports",
  "tests/unit/test_api_cors_origins.py::test_build_local_origins_ignores_invalid_origins",
  "tests/unit/test_api_cors_origins.py::test_build_local_origins_includes_defaults",
  "tests/unit/test_api_write_security.py::test_local_only_mode_blocks_tailnet_and_allows_loopback",
  "tests/unit/test_api_write_security.py::test_runtime_status_redacts_local_paths",
  "tests/unit/test_api_write_security.py::test_test_mode_is_restricted_to_testclient_source",
  "tests/unit/test_api_write_security.py::test_unknown_write_mode_fails_closed",
  "tests/unit/test_api_write_security.py::test_write_mode_defaults_fail_closed_for_remote_clients",
  "tests/unit/test_audit.py::test_confirmed_transaction_requires_audit_entry",
  "tests/unit/test_broker_mapping_import_wizard.py::test_audit_log_created_when_manual_mapping_confirmed",
  "tests/unit/test_broker_mapping_import_wizard.py::test_broker_import_dry_run_stores_summary_without_productive_positions",
  "tests/unit/test_broker_mapping_import_wizard.py::test_data_quality_center_reports_missing_isin_fx_and_prices",
  "tests/unit/test_broker_mapping_import_wizard.py::test_import_wizard_manual_review_and_data_quality_pages_import_and_render",
  "tests/unit/test_broker_mapping_import_wizard.py::test_instrument_mapping_can_be_created_and_auto_maps_by_isin",
  "tests/unit/test_broker_mapping_import_wizard.py::test_manual_review_queue_loads_open_mapping_problems",
  "tests/unit/test_broker_mapping_import_wizard.py::test_missing_isin_creates_needs_manual_review",
  "tests/unit/test_broker_mapping_import_wizard.py::test_name_without_isin_or_ticker_is_not_automapped",
  "tests/unit/test_broker_mapping_import_wizard.py::test_no_real_files_created_in_repo",
  "tests/unit/test_broker_mapping_import_wizard.py::test_platform_account_mapping_for_postfinance_and_true_wealth_and_raiffeisen_cash",
  "tests/unit/test_broker_mapping_import_wizard.py::test_read_only_mode_blocks_commit_actions",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_aggregate_only_remains_blocked_for_instrument_import",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_data_quality_readiness_counts_and_productive_import_disabled",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_dry_run_session_archive_discard_current_writes_audit",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_ignore_requires_note_and_mark_resolved_requires_ready",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_instrument_mapping_with_isin_can_be_ready_for_import_for_equity",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_isin_ticker_exchange_updates_write_audit_and_name_only_not_mapped",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_ready_for_import_for_cash",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_ready_for_import_for_etf_and_account_mapping_audit",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_review_queue_filters_by_source_dry_run_and_quality_flag",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_b4_ticker_without_exchange_stays_review_needed",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_data_quality_includes_blocked_aggregate_only_review_flags",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_dry_run_pipeline_writes_summary_and_review_items_without_productive_positions",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_manual_review_queue_and_data_quality_aggregate_review_flags",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_name_without_isin_stays_needs_manual_review_via_review_item",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_no_real_broker_files_in_repo",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_raiffeisen_aggregate_only_is_blocked_not_productive_position",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_review_item_mapping_confirmation_writes_audit",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_safe_mode_default_read_only_and_commit_disabled",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_synthetic_postfinance_parser_recognizes_candidates_and_quality_flags",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_synthetic_raiffeisen_parser_recognizes_cash_and_aggregate_control_snapshot",
  "tests/unit/test_broker_parser_dry_run_pipeline.py::test_synthetic_true_wealth_parser_recognizes_candidates_and_missing_fx",
  "tests/unit/test_budget_analytics_dashboard_v2.py::test_budget_dashboard_cockpit_is_monthly_and_excludes_candidates_transfers_and_2025",
  "tests/unit/test_budget_analytics_dashboard_v2.py::test_budget_status_rows_are_operational_category_control_with_monthly_detail",
  "tests/unit/test_budget_analytics_dashboard_v2.py::test_budget_vs_actual_analysis_is_separate_chart_viewmodel",
  "tests/unit/test_budget_analytics_data_explorer_v1.py::test_budget_deviation_analysis_reports_over_under_and_without_budget",
  "tests/unit/test_budget_analytics_data_explorer_v1.py::test_category_analysis_top10_other_and_trend",
  "tests/unit/test_budget_analytics_data_explorer_v1.py::test_data_explorer_counts_only_confirmed_income_expense_and_excludes_candidates_transfers",
  "tests/unit/test_budget_analytics_data_explorer_v1.py::test_data_explorer_filters_and_merchant_analysis",
  "tests/unit/test_budget_analytics_data_explorer_v1.py::test_monthly_comparison_has_savings_cumulative_and_detail_links",
  "tests/unit/test_budget_categories_cleanup_duplicates.py::test_category_crud_delete_archives_when_references_and_writes_audit",
  "tests/unit/test_budget_categories_cleanup_duplicates.py::test_duplicate_detection_auto_ignores_safe_duplicates_and_keeps_possible_duplicates_separate",
  "tests/unit/test_budget_categories_cleanup_duplicates.py::test_final_expense_categories_preview_and_confirm_preserves_income_and_sorts",
  "tests/unit/test_budget_categories_cleanup_duplicates.py::test_reorder_categories_is_idempotent_and_dropdown_order_uses_sort_order",
  "tests/unit/test_budget_categories_ux_fix.py::test_categories_are_listed_active_by_type_and_sort_order_without_archived_dropdown_noise",
  "tests/unit/test_budget_categories_ux_fix.py::test_income_plan_items_have_sort_order_reorder_and_audit",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_batch_confirm_skips_duplicates_and_reports_per_candidate_error",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_duplicate_override_requires_reason_and_audits_explicit_booking",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_migros_receipt_key_import_is_idempotent_across_reimports_and_article_rows_are_detail_only",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_normal_confirm_guard_blocks_duplicate_and_covered_statuses[covered_by_migros]",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_normal_confirm_guard_blocks_duplicate_and_covered_statuses[duplicate_blocked]",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_normal_confirm_guard_blocks_duplicate_and_covered_statuses[duplicate_candidate]",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_normal_confirm_guard_blocks_duplicate_and_covered_statuses[ignored]",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_normal_confirm_guard_blocks_duplicate_and_covered_statuses[possible_duplicate]",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_normal_confirm_guard_blocks_duplicate_and_covered_statuses[superseded]",
  "tests/unit/test_budget_duplicate_handling_hotfix.py::test_normal_review_and_migros_tab_exclude_duplicates_but_duplicates_tab_shows_them",
  "tests/unit/test_budget_import_production_v1.py::test_duplicate_detection_flags_near_date_same_amount_similar_merchant_and_protects_covered_source",
  "tests/unit/test_budget_import_production_v1.py::test_merchant_alias_detects_candidates_sets_default_category_and_audits",
  "tests/unit/test_budget_import_production_v1.py::test_merchant_merge_repoints_aliases_and_candidates_with_audit",
  "tests/unit/test_budget_import_production_v1.py::test_rule_manager_updates_prioritizes_tests_and_applies_without_booking",
  "tests/unit/test_budget_import_production_v2.py::test_bank_import_classifies_transfers_true_wealth_credit_card_payment_and_income",
  "tests/unit/test_budget_import_production_v2.py::test_bank_income_recognition_patterns_and_negative_guards",
  "tests/unit/test_budget_import_production_v2.py::test_dry_run_parses_all_profiles_without_writing_candidates",
  "tests/unit/test_budget_import_production_v2.py::test_import_is_idempotent_and_marks_already_processed_rows",
  "tests/unit/test_budget_import_production_v2.py::test_import_marks_existing_confirmed_transaction_as_duplicate_existing",
  "tests/unit/test_budget_import_production_v2.py::test_import_profiles_detect_real_drive_csv_columns",
  "tests/unit/test_budget_import_production_v2.py::test_migros_import_creates_one_receipt_candidate_and_detail_line_items",
  "tests/unit/test_budget_import_production_v2.py::test_reclassify_existing_akb_raiffeisen_candidates_without_confirming",
  "tests/unit/test_budget_import_status_audit_v1.py::test_akb_raiffeisen_audit_reports_presence_without_fake_importing",
  "tests/unit/test_budget_import_status_audit_v1.py::test_import_status_summary_counts_sources_statuses_and_quality_without_amounts",
  "tests/unit/test_budget_import_upload_ux_v1.py::test_upload_confirm_creates_candidates_idempotently_and_links_review_filter",
  "tests/unit/test_budget_import_upload_ux_v1.py::test_upload_preview_detects_supported_profiles_without_writing_candidates",
  "tests/unit/test_budget_import_upload_ux_v1.py::test_upload_unknown_csv_returns_understandable_error",
  "tests/unit/test_budget_import_upload_ux_v1.py::test_user_candidate_counts_exclude_legacy_and_match_monthly_dashboard",
  "tests/unit/test_budget_internal_transfer_hotfix.py::test_candidate_confirm_uses_pair_and_never_creates_income_or_expense",
  "tests/unit/test_budget_internal_transfer_hotfix.py::test_legacy_reclassify_entry_point_uses_generic_pairing",
  "tests/unit/test_budget_internal_transfer_hotfix.py::test_unmatched_swisslos_candidate_cannot_be_productively_confirmed",
  "tests/unit/test_budget_monthly_import_rule_learning_v1.py::test_monthly_import_classification_dashboard_and_review_link_filters",
  "tests/unit/test_budget_monthly_import_rule_learning_v1.py::test_monthly_import_confirm_creates_candidates_and_second_run_is_idempotent",
  "tests/unit/test_budget_monthly_import_rule_learning_v1.py::test_monthly_import_drive_scan_detects_profiles_and_writes_dry_run_session",
  "tests/unit/test_budget_monthly_import_rule_learning_v1.py::test_rule_learning_suggests_rule_from_manual_category_change_and_applies_without_booking",
  "tests/unit/test_budget_monthly_import_rule_learning_v1.py::test_schema_version_32_grocery_optimizer_tables_exist",
  "tests/unit/test_budget_overview_plans.py::test_budget_overview_includes_confirmed_budget_plan_with_zero_actuals",
  "tests/unit/test_budget_phase1.py::test_budget_accounts_preview_confirm_archive_and_list",
  "tests/unit/test_budget_phase1.py::test_budget_api_endpoints_preview_confirm_and_overview",
  "tests/unit/test_budget_phase1.py::test_budget_categories_tree_create_and_archive",
  "tests/unit/test_budget_phase1.py::test_budget_phase1_tables_seeds_and_text_decimal_columns_are_created_idempotently",
  "tests/unit/test_budget_phase1.py::test_manual_income_expense_transfer_reversal_and_overview_write_audit",
  "tests/unit/test_budget_phase11.py::test_budget_phase11_api_tags_and_plans",
  "tests/unit/test_budget_phase11.py::test_budget_phase11_tables_tags_and_plan_items_are_created",
  "tests/unit/test_budget_phase11.py::test_budget_plan_preview_confirm_decimal_text_and_category_link",
  "tests/unit/test_budget_phase11.py::test_excel_budget_seed_structural_dry_run_extracts_candidates_without_values",
  "tests/unit/test_budget_phase11.py::test_tags_preview_confirm_archive_and_audit",
  "tests/unit/test_budget_phase110_2026_core.py::test_phase110_budgetstatus_monthly_matrix_forecast_ampel_and_charts_are_2026_only",
  "tests/unit/test_budget_phase110_2026_core.py::test_phase110_bulk_assignment_confirm_ignore_reports_per_candidate_errors",
  "tests/unit/test_budget_phase110_2026_core.py::test_phase110_category_tree_grouped_and_cleanup_canonicalises_duplicates_and_uat",
  "tests/unit/test_budget_phase110_2026_core.py::test_phase110_review_and_transactions_default_to_budget_year_2026_and_block_2025_confirm",
  "tests/unit/test_budget_phase111_migros_monthly_analytics.py::test_budgetstatus_monthly_analytics_and_month_detail_groupings",
  "tests/unit/test_budget_phase111_migros_monthly_analytics.py::test_credit_card_migros_stays_covered_and_is_not_confirmed_as_duplicate_expense",
  "tests/unit/test_budget_phase111_migros_monthly_analytics.py::test_migros_receipts_are_always_food_household_and_can_be_confirmed_with_audit_without_article_transactions",
  "tests/unit/test_budget_phase111_status_income_formatting.py::test_income_annual_plan_preview_sets_monthly_average_and_due_month",
  "tests/unit/test_budget_phase111_status_income_formatting.py::test_income_template_seed_renames_legacy_lohn_marcel_to_erne_without_duplicate",
  "tests/unit/test_budget_phase111_status_income_formatting.py::test_income_templates_are_seeded_without_amounts_and_later_editable_with_audit",
  "tests/unit/test_budget_phase111_status_income_formatting.py::test_phase111_budgetstatus_includes_actual_only_and_plan_only_but_not_empty_categories",
  "tests/unit/test_budget_phase111_status_income_formatting.py::test_phase111_income_plan_helpers_calculate_monthly_and_annual_and_overview_uses_income",
  "tests/unit/test_budget_phase111_status_income_formatting.py::test_phase111_subcategory_bookings_are_visible_and_parent_aggregates",
  "tests/unit/test_budget_phase12_seed_review.py::test_budget_overview_shows_plan_values_without_actual_transactions",
  "tests/unit/test_budget_phase12_seed_review.py::test_budget_seed_review_api_lists_previews_confirms_and_ignores",
  "tests/unit/test_budget_phase12_seed_review.py::test_clear_categories_and_budget_plans_can_be_taken_over_idempotently",
  "tests/unit/test_budget_phase12_seed_review.py::test_excel_dry_run_persists_seed_candidates_without_productive_budget_plans",
  "tests/unit/test_budget_phase12_seed_review.py::test_ignored_candidate_can_be_reopened_and_audited",
  "tests/unit/test_budget_phase12_seed_review.py::test_income_candidates_from_2026_sheet_are_detected",
  "tests/unit/test_budget_phase12_seed_review.py::test_manual_income_and_expense_update_actual_values_and_audit",
  "tests/unit/test_budget_phase12_seed_review.py::test_phase12_schema_has_requested_budget_seed_candidates_table",
  "tests/unit/test_budget_phase12_seed_review.py::test_seed_candidate_category_budget_plan_ignore_confirm_and_audit",
  "tests/unit/test_budget_phase12_seed_review.py::test_unclean_range_can_be_converted_to_category_and_budget_plan_candidates",
  "tests/unit/test_budget_phase14_workview.py::test_phase14_budget_status_month_year_forecast_and_traffic_lights_for_expense_and_income",
  "tests/unit/test_budget_phase14_workview.py::test_phase14_category_update_and_unclean_conversion_to_income_and_transaction_candidate",
  "tests/unit/test_budget_phase14_workview.py::test_phase14_confirm_transaction_candidate_writes_transaction_and_audit",
  "tests/unit/test_budget_phase14_workview.py::test_phase14_row_click_backing_filters_and_transaction_update_audit_no_amount_overwrite",
  "tests/unit/test_budget_phase14_workview.py::test_phase14_transaction_candidate_schema_and_csv_dry_run_no_productive_booking",
  "tests/unit/test_budget_phase15_source_aware_imports.py::test_bank_income_internal_transfer_and_unclear_payment_classification",
  "tests/unit/test_budget_phase15_source_aware_imports.py::test_cleanup_migros_article_candidates_marks_superseded_and_audits",
  "tests/unit/test_budget_phase15_source_aware_imports.py::test_credit_card_rules_subscriptions_galaxus_migros_covered_and_duplicate_detection",
  "tests/unit/test_budget_phase15_source_aware_imports.py::test_migros_article_rows_are_aggregated_to_receipts_with_line_items_and_threshold_rules",
  "tests/unit/test_budget_phase15_source_aware_imports.py::test_review_actions_category_split_ignore_transfer_and_batch_confirm_safe_candidates",
  "tests/unit/test_budget_phase16_user_rules.py::test_phase16_migros_and_review_filters_keep_confirm_boundary_and_edits",
  "tests/unit/test_budget_phase16_user_rules.py::test_phase16_schema_adds_rule_name_and_applies_card_category_rules",
  "tests/unit/test_budget_phase17_ux_workflow.py::test_phase17_category_tree_delete_empty_archive_non_empty_and_merge",
  "tests/unit/test_budget_phase17_ux_workflow.py::test_phase17_effective_expenses_filters_and_no_amount_mutation",
  "tests/unit/test_budget_phase17_ux_workflow.py::test_phase17_import_review_bulk_category_ignore_reopen_and_safe_preview",
  "tests/unit/test_budget_phase18_core_flow.py::test_phase18_category_change_audit_and_budget_status_row_click_backing",
  "tests/unit/test_budget_phase18_core_flow.py::test_phase18_confirm_candidate_creates_productive_transaction_and_hides_candidate",
  "tests/unit/test_budget_phase18_core_flow.py::test_phase18_confirm_validates_required_fields",
  "tests/unit/test_budget_phase18_core_flow.py::test_phase18_effective_expenses_exclude_test_seed_candidates_and_archive_uat12",
  "tests/unit/test_budget_phase18_core_flow.py::test_phase18_ignore_reopen_keeps_candidate_visible_again",
  "tests/unit/test_budget_phase19_review_productivity.py::test_phase19_batch_preview_required_before_confirm_and_actions",
  "tests/unit/test_budget_phase19_review_productivity.py::test_phase19_budgetstatus_row_click_backing_after_recategorise",
  "tests/unit/test_budget_phase19_review_productivity.py::test_phase19_category_from_review_and_rule_mvp_apply_only_suggestions",
  "tests/unit/test_budget_phase19_review_productivity.py::test_phase19_review_summary_filter_and_sort_counts",
  "tests/unit/test_budget_phase19_review_productivity.py::test_phase19_split_sum_blocks_and_confirm_creates_linked_transactions",
  "tests/unit/test_budget_planning_forecast_v1.py::test_categories_without_budget_or_previous_year_are_explicitly_visible",
  "tests/unit/test_budget_planning_forecast_v1.py::test_forecast_matrix_uses_confirmed_expenses_only_and_excludes_candidates_and_transfers",
  "tests/unit/test_budget_planning_forecast_v1.py::test_negative_budget_values_and_non_expense_categories_are_blocked",
  "tests/unit/test_budget_planning_forecast_v1.py::test_preview_and_confirm_budget_values_store_decimal_text_baselines_and_audit",
  "tests/unit/test_budget_planning_forecast_v1.py::test_yearly_budget_derives_monthly_and_monthly_previous_year_sums_to_year",
  "tests/unit/test_budget_planning_usability_v2.py::test_audit_timeline_shows_readable_field_changes_for_budget_and_previous_year",
  "tests/unit/test_budget_planning_usability_v2.py::test_batch_preview_and_confirm_collect_multiple_budget_changes_with_audit",
  "tests/unit/test_budget_planning_usability_v2.py::test_batch_preview_blocks_invalid_negative_values_before_confirm",
  "tests/unit/test_budget_planning_usability_v2.py::test_excel_template_preview_is_prepared_without_productive_mutation",
  "tests/unit/test_budget_planning_usability_v2.py::test_plausibility_checks_surface_budget_vs_previous_year_actual_and_forecast_risks",
  "tests/unit/test_budget_review_bulk_assign_confirm.py::test_bulk_category_assignment_updates_only_editable_candidates_and_reports_partial_errors",
  "tests/unit/test_budget_review_bulk_assign_confirm.py::test_bulk_confirm_creates_transactions_sets_candidate_links_and_removes_from_open_review",
  "tests/unit/test_budget_review_bulk_assign_confirm.py::test_bulk_confirm_preview_blocks_duplicates_covered_transfer_and_missing_categories",
  "tests/unit/test_budget_review_bulk_assign_confirm.py::test_bulk_ignore_and_reopen_multiple_candidates_with_audit",
  "tests/unit/test_budget_ux_foundation_v3.py::test_category_monthly_and_budget_vs_actual_return_analytics_envelope",
  "tests/unit/test_budget_ux_foundation_v3.py::test_data_explorer_returns_analytics_envelope_and_legacy_keys",
  "tests/unit/test_budget_ux_v2.py::test_budget_vs_actual_still_uses_confirmed_transactions_not_candidates",
  "tests/unit/test_budget_ux_v2.py::test_category_analysis_uses_confirmed_transactions_only_and_calculates_share_and_links",
  "tests/unit/test_budget_ux_v2.py::test_category_buckets_and_merge_preview_detect_duplicate_like_names_without_merging",
  "tests/unit/test_budget_ux_v2.py::test_effective_expenses_returns_confirmed_expenses_only_with_display_metadata_and_tags",
  "tests/unit/test_budget_ux_v2.py::test_monthly_comparison_returns_2026_income_expense_net_and_drilldown_metadata",
  "tests/unit/test_budget_workflow_help_ux.py::test_credit_card_and_true_wealth_transfers_are_not_expenses_and_true_wealth_cash_can_be_previewed",
  "tests/unit/test_budget_workflow_help_ux.py::test_transfer_review_marks_true_wealth_target_and_writes_audit_without_productive_booking",
  "tests/unit/test_budget_workflow_help_ux.py::test_transfers_do_not_count_as_income_or_expense_and_are_listed_with_cashflow_accounts",
  "tests/unit/test_cash_truewealth_management.py::test_canonical_cash_accounts_are_present_with_expected_modes_and_audit",
  "tests/unit/test_cash_truewealth_management.py::test_csv_calculated_account_uses_calculated_value_and_manual_as_control_difference",
  "tests/unit/test_cash_truewealth_management.py::test_duplicate_cash_accounts_return_consolidation_preview_without_silent_merge",
  "tests/unit/test_cash_truewealth_management.py::test_manual_cash_snapshot_preview_confirm_audit_and_dashboard_value_for_manual_account",
  "tests/unit/test_cash_truewealth_management.py::test_portfolio_uses_cash_balance_modes_without_double_counting_truewealth",
  "tests/unit/test_cash_truewealth_management.py::test_truewealth_manual_value_history_and_position_block",
  "tests/unit/test_coingecko_provider.py::test_coingecko_client_429_after_retries_returns_stale_not_crash",
  "tests/unit/test_coingecko_provider.py::test_coingecko_client_retries_429_and_returns_quote_without_float",
  "tests/unit/test_crypto.py::test_crypto_placeholder_until_task_17",
  "tests/unit/test_crypto_core.py::test_coin_fee_reduces_balance_and_fiat_fee_creates_ledger_fee_without_double_counting",
  "tests/unit/test_crypto_core.py::test_crypto_asset_with_and_without_coingecko_and_symbol_conflict_warning",
  "tests/unit/test_crypto_core.py::test_crypto_buy_missing_fx_is_incomplete_and_fee_unclear_warns",
  "tests/unit/test_crypto_core.py::test_crypto_buy_with_fiat_creates_ledger_link_and_increases_wallet",
  "tests/unit/test_crypto_core.py::test_crypto_sell_with_fiat_creates_ledger_link_and_reduces_wallet",
  "tests/unit/test_crypto_core.py::test_initial_crypto_holdings_multiple_wallets_aggregate_and_legacy_values_not_current",
  "tests/unit/test_crypto_core.py::test_transfer_between_wallets_with_coin_fee_and_audit",
  "tests/unit/test_crypto_core.py::test_transfer_same_wallet_and_overdraft_are_rejected_or_critical",
  "tests/unit/test_crypto_core.py::test_wallet_create_read_update_deactivate_and_duplicate_name_blocked",
  "tests/unit/test_crypto_manage.py::test_add_coin_without_coingecko_id_creates_warning_and_preserves_decimal_text",
  "tests/unit/test_crypto_manage.py::test_add_initial_snapshot_addition_creates_asset_holding_and_audit",
  "tests/unit/test_crypto_manage.py::test_crypto_management_options_include_manual_review_list",
  "tests/unit/test_crypto_manage.py::test_manual_adjustment_requires_note_and_records_old_new_values",
  "tests/unit/test_crypto_manage.py::test_manual_adjustment_transaction_type_is_used_by_holding_calculation",
  "tests/unit/test_crypto_manage.py::test_reduce_to_zero_preserves_holding_row_without_delete_and_blocks_negative",
  "tests/unit/test_crypto_manage.py::test_transfer_between_wallets_via_manage_helper_is_audited",
  "tests/unit/test_crypto_manage.py::test_validations_reject_bad_amounts_wallets_and_unconfirmed_writes",
  "tests/unit/test_crypto_price_update.py::test_429_backoff_is_used_by_provider",
  "tests/unit/test_crypto_price_update.py::test_batch_request_updates_multiple_assets_in_one_provider_call",
  "tests/unit/test_crypto_price_update.py::test_cli_update_crypto_prices_command_uses_provider_factory",
  "tests/unit/test_crypto_price_update.py::test_crypto_report_uses_local_prices_and_improves_missing_price_status",
  "tests/unit/test_crypto_price_update.py::test_dashboard_reads_local_prices_without_provider_api_call",
  "tests/unit/test_crypto_price_update.py::test_dry_run_does_not_write_prices_or_alerts",
  "tests/unit/test_crypto_price_update.py::test_fresh_cache_prevents_refetch_and_stale_price_is_marked",
  "tests/unit/test_crypto_price_update.py::test_missing_coingecko_id_is_skipped_and_warned_without_duplicate_alerts",
  "tests/unit/test_crypto_price_update.py::test_missing_local_price_alert_is_deduped_for_failed_refreshes",
  "tests/unit/test_crypto_price_update.py::test_only_missing_refreshes_assets_without_any_fresh_price",
  "tests/unit/test_crypto_price_update.py::test_only_stale_refreshes_only_stale_local_prices",
  "tests/unit/test_crypto_price_update.py::test_only_symbol_and_limit_constrain_refresh_scope",
  "tests/unit/test_crypto_price_update.py::test_rate_limit_after_retries_marks_batch_stale_and_backoff_is_capped",
  "tests/unit/test_crypto_price_update.py::test_refresh_crypto_prices_loads_active_assets_and_stores_chf_price",
  "tests/unit/test_crypto_report.py::test_crypto_report_context_from_synthetic_db_aggregates_coins_and_wallets",
  "tests/unit/test_crypto_report.py::test_crypto_report_context_preserves_decimal_text_and_ignores_legacy_snapshot_values",
  "tests/unit/test_crypto_report.py::test_crypto_report_context_warns_for_missing_price_and_missing_coingecko_id",
  "tests/unit/test_crypto_report.py::test_crypto_report_context_warns_for_unverified_wallet_and_negative_holding",
  "tests/unit/test_crypto_report.py::test_crypto_report_export_markdown_fallback_when_pdf_renderer_unavailable",
  "tests/unit/test_crypto_report.py::test_crypto_report_export_writes_runtime_report_metadata_and_audit",
  "tests/unit/test_crypto_trader_bridge.py::test_crypto_trader_api_routes_registered",
  "tests/unit/test_crypto_trader_bridge.py::test_crypto_trader_bridge_builds_read_only_snapshot_from_runtime",
  "tests/unit/test_csv_importers_extended.py::test_crypto_transactions_import_transfer_and_buy_create_audit_and_no_float_rounding",
  "tests/unit/test_csv_importers_extended.py::test_crypto_wallet_and_holding_import_dry_run_commit_existing_and_precision",
  "tests/unit/test_csv_importers_extended.py::test_watchlist_and_cash_balance_importers",
  "tests/unit/test_dashboard_functional_actions_v2.py::test_crypto_transfer_blocks_negative_or_oversized_quantity",
  "tests/unit/test_dashboard_functional_actions_v2.py::test_crypto_transfer_moves_between_wallets_preserves_total_minus_fee_and_audits",
  "tests/unit/test_dashboard_functional_actions_v2.py::test_equity_dividend_writes_income_cash_net_tax_fields_and_audit_without_quantity_change",
  "tests/unit/test_dashboard_functional_actions_v2.py::test_equity_inline_buy_reuses_position_confirm_with_prefilled_instrument_and_audit",
  "tests/unit/test_dashboard_functional_actions_v2.py::test_equity_sale_partial_full_and_oversell_rules_with_audit_and_cash",
  "tests/unit/test_dashboard_functional_actions_v2.py::test_inline_account_and_wallet_creation_refresh_targets_and_audit",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_alert_text_resolves_instrument_name_and_ticker",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_auto_streamlit_page_stubs_are_not_present",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_command_center_has_visible_add_position_action",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_correction_and_transfer_flows_write_audit_events",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_crypto_selection_is_saved_and_actions_prefill_manage_context",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_crypto_sort_filter_and_chart_order",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_position_add_page_is_user_mode_wizard_without_technical_ids",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_price_update_button_uses_provider_service_only_on_click",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_read_only_disables_coin_and_wallet_action_buttons_but_edit_mode_enables",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_report_button_generates_runtime_report",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_reports_page_has_real_crypto_report_action_not_dead_button",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_user_mode_hides_internal_ids_and_import_notes",
  "tests/unit/test_dashboard_functional_ux_stabilization.py::test_watchlist_hidden_from_user_mode_until_functional",
  "tests/unit/test_dashboard_mvp.py::test_alert_lifecycle_data_loaded_readably",
  "tests/unit/test_dashboard_mvp.py::test_coin_wallet_drilldown_and_wallet_summary_are_user_friendly",
  "tests/unit/test_dashboard_mvp.py::test_command_center_summary_includes_user_overview_fields",
  "tests/unit/test_dashboard_mvp.py::test_crypto_dashboard_reads_cached_db_prices_without_api_calls",
  "tests/unit/test_dashboard_mvp.py::test_crypto_summary_cards_and_coin_aggregation_across_wallets",
  "tests/unit/test_dashboard_mvp.py::test_dashboard_modules_import_and_page_render_smoke",
  "tests/unit/test_dashboard_mvp.py::test_dashboard_preserves_decimal_crypto_quantity_format",
  "tests/unit/test_dashboard_mvp.py::test_dashboard_reader_functions_return_expected_dummy_data",
  "tests/unit/test_dashboard_mvp.py::test_dashboard_runtime_path_inside_repo_remains_blocked",
  "tests/unit/test_dashboard_mvp.py::test_user_mode_hides_technical_fields_and_admin_mode_can_show_them",
  "tests/unit/test_dashboard_mvp_regressions.py::test_cash_asset_choice_renders_cash_entry_and_writes_audited_snapshot",
  "tests/unit/test_dashboard_mvp_regressions.py::test_command_center_price_refresh_updates_crypto_and_equity",
  "tests/unit/test_dashboard_mvp_regressions.py::test_crypto_detail_exposes_cache_source_and_timestamp_without_raw_ids",
  "tests/unit/test_dashboard_mvp_regressions.py::test_equity_page_refreshes_valuation_from_mapped_provider",
  "tests/unit/test_dashboard_mvp_regressions.py::test_manual_position_uses_cached_historical_fx_without_manual_rate",
  "tests/unit/test_dashboard_mvp_regressions.py::test_position_add_user_mode_hides_internal_fx_status_values_for_foreign_currency",
  "tests/unit/test_dashboard_real_ui_acceptance.py::test_alert_page_uses_unique_button_keys_and_hides_admin_table_in_user_mode",
  "tests/unit/test_dashboard_real_ui_acceptance.py::test_crypto_detail_contains_minimal_coingecko_link_without_raw_ids",
  "tests/unit/test_dashboard_real_ui_acceptance.py::test_equity_page_does_not_refresh_prices_on_plain_render",
  "tests/unit/test_dashboard_real_ui_acceptance.py::test_equity_page_renders_user_summary_selection_actions_and_no_raw_ids",
  "tests/unit/test_dashboard_real_ui_acceptance.py::test_review_docx_equity_cleanup_preserves_manual_dashboard_positions",
  "tests/unit/test_dashboard_real_ui_acceptance.py::test_user_navigation_is_short_and_admin_keeps_review_tools",
  "tests/unit/test_dashboard_usability_simplification.py::test_command_center_is_quiet_and_has_max_three_clean_hints",
  "tests/unit/test_dashboard_usability_simplification.py::test_crypto_detail_actions_open_inline_forms_immediately_in_edit_mode",
  "tests/unit/test_dashboard_usability_simplification.py::test_crypto_page_uses_compact_position_columns_and_detail_panel",
  "tests/unit/test_dashboard_usability_simplification.py::test_equity_etf_not_prominently_shown_as_zero_when_unvalued",
  "tests/unit/test_dashboard_usability_simplification.py::test_portfolio_empty_state_has_add_button_and_routes_to_wizard",
  "tests/unit/test_dashboard_usability_simplification.py::test_position_add_page_is_visible_wizard_and_does_not_call_provider_on_render",
  "tests/unit/test_dashboard_usability_simplification.py::test_provider_status_visible_without_secrets_or_crash",
  "tests/unit/test_dashboard_usability_simplification.py::test_read_only_disables_writes_but_keeps_verlauf_available",
  "tests/unit/test_dashboard_usability_simplification.py::test_reports_page_stays_minimal_and_crypto_report_action_works",
  "tests/unit/test_dashboard_usability_simplification.py::test_user_mode_navigation_is_radically_reduced_and_streamlit_autopages_absent",
  "tests/unit/test_dashboard_usability_simplification.py::test_wallet_page_is_compact_and_hides_technical_fields",
  "tests/unit/test_dashboard_ux_sprint2.py::test_admin_mode_can_still_access_technical_fields",
  "tests/unit/test_dashboard_ux_sprint2.py::test_alert_cards_are_readable_and_do_not_expose_rule_ids",
  "tests/unit/test_dashboard_ux_sprint2.py::test_chart_data_for_crypto_coin_and_wallet_distribution_is_correct",
  "tests/unit/test_dashboard_ux_sprint2.py::test_coin_detail_and_wallet_detail_are_selectable_read_models",
  "tests/unit/test_dashboard_ux_sprint2.py::test_command_center_renders_clear_price_update_labels_without_internal_ids",
  "tests/unit/test_dashboard_ux_sprint2.py::test_command_center_summary_has_separate_asset_totals_and_unvalued_counts",
  "tests/unit/test_dashboard_ux_sprint2.py::test_crypto_manage_renders_action_cards_not_all_forms_by_default",
  "tests/unit/test_dashboard_ux_sprint2.py::test_reports_user_mode_hides_runtime_file_paths",
  "tests/unit/test_dashboard_ux_sprint2.py::test_user_mode_crypto_and_portfolio_tables_are_clean_and_formatted",
  "tests/unit/test_dashboard_ux_sprint2.py::test_user_mode_navigation_uses_new_portfolio_page_and_admin_keeps_overview",
  "tests/unit/test_dashboard_ux_sprint2.py::test_user_mode_portfolio_page_groups_cash_equities_etfs_without_ids",
  "tests/unit/test_data_quality_alert_lifecycle.py::test_changed_error_fingerprint_creates_new_alert",
  "tests/unit/test_data_quality_alert_lifecycle.py::test_cli_check_data_quality_resolves_fixed_alert",
  "tests/unit/test_data_quality_alert_lifecycle.py::test_failed_refresh_keeps_missing_alert_deduped",
  "tests/unit/test_data_quality_alert_lifecycle.py::test_missing_price_alert_stays_active_when_price_is_still_missing",
  "tests/unit/test_data_quality_alert_lifecycle.py::test_refresh_auto_resolves_fixed_stale_alert_without_alert_flood",
  "tests/unit/test_data_quality_alert_lifecycle.py::test_resolved_alert_is_not_recreated_when_fingerprint_is_equal",
  "tests/unit/test_data_quality_alert_lifecycle.py::test_stale_price_alert_is_resolved_when_price_is_fresh",
  "tests/unit/test_equity_manage.py::test_add_etf_initial_snapshot_prepares_optional_etf_fields",
  "tests/unit/test_equity_manage.py::test_add_stock_initial_snapshot_creates_instrument_transaction_and_audit",
  "tests/unit/test_equity_manage.py::test_category_is_saved_for_manual_position_from_catalog",
  "tests/unit/test_equity_manage.py::test_dividend_does_not_change_quantity_and_manual_adjustment_requires_note",
  "tests/unit/test_equity_manage.py::test_equity_management_options_and_dashboard_page_import",
  "tests/unit/test_equity_manage.py::test_fmp_key_is_sent_as_api_parameter",
  "tests/unit/test_equity_manage.py::test_fmp_price_provider_missing_key_is_sanitized",
  "tests/unit/test_equity_manage.py::test_fmp_price_provider_uses_stable_profile_without_logging_key",
  "tests/unit/test_equity_manage.py::test_fmp_stable_isin_symbol_name_and_profile_price_preview_are_normalized",
  "tests/unit/test_equity_manage.py::test_full_sell_requires_exact_current_quantity_and_zeros_position",
  "tests/unit/test_equity_manage.py::test_manual_catalog_entry_and_foreign_fx_handling",
  "tests/unit/test_equity_manage.py::test_manual_instrument_search_and_wizard_safety_flow",
  "tests/unit/test_equity_manage.py::test_manual_wizard_supports_buy_sell_dividend_and_no_dashboard_live_api_or_ids",
  "tests/unit/test_equity_manage.py::test_online_provider_is_only_used_when_explicitly_enabled_and_caches_result",
  "tests/unit/test_equity_manage.py::test_online_search_not_called_when_include_external_false",
  "tests/unit/test_equity_manage.py::test_openfigi_429_is_reported_as_rate_limited_without_secret",
  "tests/unit/test_equity_manage.py::test_openfigi_isin_and_fmp_name_search_candidates_are_structured",
  "tests/unit/test_equity_manage.py::test_openfigi_key_is_sent_as_header_not_query_param",
  "tests/unit/test_equity_manage.py::test_price_preview_uses_local_market_prices_and_missing_price_is_not_zero",
  "tests/unit/test_equity_manage.py::test_provider_lookup_classes_skip_missing_keys_and_cache_results",
  "tests/unit/test_equity_manage.py::test_provider_merge_raises_confidence_and_conflict_needs_manual_review",
  "tests/unit/test_equity_manage.py::test_provider_status_does_not_log_or_return_secret_values",
  "tests/unit/test_equity_manage.py::test_provider_status_probe_distinguishes_error_categories",
  "tests/unit/test_equity_manage.py::test_provider_statuses_report_missing_keys_without_secret_values",
  "tests/unit/test_equity_manage.py::test_runtime_secret_file_is_loaded_without_repo_env",
  "tests/unit/test_equity_manage.py::test_search_candidates_uses_external_providers_only_on_explicit_click",
  "tests/unit/test_equity_manage.py::test_sell_reduces_position_and_blocks_negative",
  "tests/unit/test_equity_manage.py::test_update_equity_prices_cli_workflow_uses_explicit_provider_mapping",
  "tests/unit/test_equity_manage.py::test_usd_stock_requires_fx_or_explicit_missing_status_alert",
  "tests/unit/test_equity_manage.py::test_vti_examples_are_searchable_and_ticker_requires_selection",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_fastapi_v0_health_and_read_only_contracts",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_fastapi_v0_overview_and_positions_return_decimal_strings",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_fastapi_v0_provider_status_is_sanitized",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_vue_slice_crypto_contract_and_detail_endpoint",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_vue_slice_equity_contract_and_detail_endpoint",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_vue_slice_overview_contract_uses_flat_decimal_strings",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_vue_slice_reports_contract_and_no_secrets",
  "tests/unit/test_fastapi_user_dashboard_skeleton.py::test_vue_slice_wallets_contract",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_cash_preview_confirm_writes_snapshot_and_audit_only_after_confirm",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_cash_withdrawal_and_correction_preview_confirm_use_positive_amount_and_audit",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_crypto_detail_aggregates_wallet_holdings_before_joining_latest_price",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_crypto_manual_adjustment_preview_confirm_writes_transaction_and_audit",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_crypto_set_zero_allows_zero_preview_and_confirms_adjustment",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_details_audit_and_history_endpoints_are_user_safe",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_equity_position_preview_confirm_writes_transaction_and_audit",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_instrument_search_is_local_sanitized_and_decimal_free",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_vue_dashboard_scripts_exist_are_executable_and_do_not_print_secret_names",
  "tests/unit/test_fastapi_vue_cockpit_v11.py::test_wallet_summaries_and_details_use_latest_price_without_duplicate_coin_rows",
  "tests/unit/test_finance_command_center_monthly_close_v1.py::test_command_center_counts_only_confirmed_actuals_and_excludes_transfers_candidates",
  "tests/unit/test_finance_command_center_monthly_close_v1.py::test_command_center_kpis_monthly_close_imports_todos_and_compact_sections",
  "tests/unit/test_finance_command_center_monthly_close_v1.py::test_month_boundaries_use_exclusive_next_month_and_invalid_month_is_rejected",
  "tests/unit/test_finance_command_center_monthly_close_v1.py::test_monthly_report_is_runtime_only_markdown_and_not_in_repo",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_confirmed_candidate_can_be_edited_paused_and_archived_with_audit",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_dashboard_read_does_not_silently_create_detected_candidates",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_detection_finds_irregular_recurring_candidate_but_does_not_auto_activate",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_detection_finds_monthly_subscription_yearly_insurance_quarterly_payment_and_excludes_migros_transfer_investment",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_integrations_dashboard_budgetplanning_and_data_explorer_fields",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_invalid_manual_recurring_values_blocked",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_review_activate_ignore_manual_archive_and_audit",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_schema_38_creates_decimal_text_recurring_table_with_user_facing_fields",
  "tests/unit/test_fixed_costs_subscriptions_v1.py::test_warnings_missing_amount_changed_and_duplicate_subscription",
  "tests/unit/test_fx.py::test_fx_placeholder_until_task_12",
  "tests/unit/test_fx_frankfurter_primary_hotfix.py::test_apple_eur_valuation_fx_recheck_gets_chf_market_value_via_frankfurter",
  "tests/unit/test_fx_frankfurter_primary_hotfix.py::test_apple_usd_valuation_fx_recheck_gets_chf_market_value_via_frankfurter",
  "tests/unit/test_fx_frankfurter_primary_hotfix.py::test_chf_resolution_is_not_needed_with_rate_one",
  "tests/unit/test_fx_frankfurter_primary_hotfix.py::test_resolve_fx_uses_cache_after_frankfurter_failure_before_twelvedata_noise",
  "tests/unit/test_fx_frankfurter_primary_hotfix.py::test_resolve_fx_uses_frankfurter_before_stale_cache_and_before_twelvedata",
  "tests/unit/test_fx_frankfurter_primary_hotfix.py::test_valuation_status_does_not_show_fx_missing_when_market_value_chf_exists",
  "tests/unit/test_fx_logic.py::test_chf_to_chf_rate_is_one",
  "tests/unit/test_fx_logic.py::test_foreign_currency_requires_historical_rate_and_alerts_when_missing",
  "tests/unit/test_fx_logic.py::test_manual_fx_override_requires_note_and_audit",
  "tests/unit/test_fx_market_data_phase_c.py::test_chf_fx_is_not_needed_and_missing_alert_can_be_resolved",
  "tests/unit/test_fx_market_data_phase_c.py::test_confirm_instrument_price_mapping_writes_audit",
  "tests/unit/test_fx_market_data_phase_c.py::test_instrument_price_mapping_requires_provider_symbol_and_exchange_review",
  "tests/unit/test_fx_market_data_phase_c.py::test_manual_fx_override_requires_note_and_audit",
  "tests/unit/test_fx_market_data_phase_c.py::test_missing_and_stale_market_price_alerts_are_deduped",
  "tests/unit/test_fx_market_data_phase_c.py::test_position_valuation_requires_market_price_and_fx_without_fake_total_return",
  "tests/unit/test_fx_market_data_phase_c.py::test_recheck_transaction_fx_status_corrects_chf_false_positive_with_audit",
  "tests/unit/test_fx_market_data_phase_c.py::test_refresh_market_prices_with_mock_provider_stores_and_resolves_alert",
  "tests/unit/test_fx_market_data_phase_c.py::test_update_fx_rates_stores_usd_eur_and_resolves_missing_fx",
  "tests/unit/test_git_safety.py::test_git_safety_allows_synthetic_examples",
  "tests/unit/test_git_safety.py::test_git_safety_allows_tests_fixtures_and_config_example_csv_json",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_additional_cleartext_secret_patterns[bearer_token-Authorization: Bearer AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_additional_cleartext_secret_patterns[openai_key-OPENAI_API_KEY=sk-BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB]",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_additional_cleartext_secret_patterns[slack_token-SLACK_TOKEN=xoxb-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC]",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_backup_files_in_repo",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_csv_json_outside_allowed_paths",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_env_and_credentials",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_frontend_build_artifacts_and_env_files",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_github_ghp_patterns",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_github_pat_patterns",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_private_keys",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_reports_and_pdfs_in_repo",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_runtime_dirs_db_json_and_token_names",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_sqlite_database",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_symlinks_without_reading_the_target",
  "tests/unit/test_git_safety.py::test_git_safety_blocks_top_level_runtime_and_data_dirs",
  "tests/unit/test_git_safety.py::test_git_safety_does_not_false_positive_normal_source_files",
  "tests/unit/test_grocery_matching_learning_v2.py::test_accept_match_creates_preferred_mapping_and_next_receipt_reuses_without_provider_call",
  "tests/unit/test_grocery_matching_learning_v2.py::test_dashboard_surfaces_known_mappings_and_cache_status",
  "tests/unit/test_grocery_matching_learning_v2.py::test_manual_mapping_can_be_saved_and_used_after_sourced_cache_refresh",
  "tests/unit/test_grocery_matching_learning_v2.py::test_manual_mapping_rejects_unsafe_url_and_match_type",
  "tests/unit/test_grocery_matching_learning_v2.py::test_manual_price_preview_confirm_audit_and_secure_saving_when_complete",
  "tests/unit/test_grocery_matching_learning_v2.py::test_manual_price_without_date_source_is_review_only_no_secure_saving",
  "tests/unit/test_grocery_matching_learning_v2.py::test_no_price_provider_candidate_is_persisted_and_rejectable",
  "tests/unit/test_grocery_matching_learning_v2.py::test_open_prices_with_price_still_candidate_with_source_and_date",
  "tests/unit/test_grocery_matching_learning_v2.py::test_open_prices_without_price_is_never_secure",
  "tests/unit/test_grocery_matching_learning_v2.py::test_provider_strategy_documents_rappn_linkout_and_llm_limits",
  "tests/unit/test_grocery_matching_learning_v2.py::test_rejected_exact_match_does_not_suppress_other_retailers",
  "tests/unit/test_grocery_matching_learning_v2.py::test_rejected_match_is_persisted_and_not_recommended_again",
  "tests/unit/test_grocery_matching_learning_v2.py::test_report_contains_known_mappings_sources_and_disclaimer_runtime_only",
  "tests/unit/test_grocery_price_providers_v1.py::test_higher_priced_provider_result_is_not_suggested",
  "tests/unit/test_grocery_price_providers_v1.py::test_migros_and_coop_provider_search_parse_mock_html_and_cache",
  "tests/unit/test_grocery_price_providers_v1.py::test_missing_provider_price_is_not_stored_as_zero_match",
  "tests/unit/test_grocery_price_providers_v1.py::test_price_comparison_prefers_unit_price_and_excludes_uncertain_matches",
  "tests/unit/test_grocery_price_providers_v1.py::test_provider_matches_feed_optimizer_only_when_safe",
  "tests/unit/test_grocery_price_providers_v1.py::test_provider_rate_limit_and_skeleton_future_status",
  "tests/unit/test_grocery_price_providers_v1.py::test_schema_version_33_provider_cache_columns_exist",
  "tests/unit/test_grocery_price_providers_v1.py::test_search_and_store_preserves_provider_cache_and_source_timestamp",
  "tests/unit/test_grocery_price_providers_v1.py::test_search_and_store_product_matches_uses_sources_and_no_provider_call_on_render",
  "tests/unit/test_grocery_price_providers_v1.py::test_stale_cache_is_not_used_without_refresh",
  "tests/unit/test_import_execution_and_corrections.py::test_correction_transaction_creates_audit_link",
  "tests/unit/test_import_execution_and_corrections.py::test_execution_plan_import_blocks_same_execution_plan_id_and_row_hash",
  "tests/unit/test_import_execution_and_corrections.py::test_missing_fx_initial_snapshot_stays_incomplete_without_fake_total_return",
  "tests/unit/test_import_execution_and_corrections.py::test_void_transaction_requires_note_audits_and_excludes_from_position",
  "tests/unit/test_importers_instruments.py::test_instruments_dry_run_does_not_write",
  "tests/unit/test_importers_instruments.py::test_instruments_import_collects_validation_errors",
  "tests/unit/test_importers_instruments.py::test_instruments_import_commit_and_idempotent",
  "tests/unit/test_importers_platforms_accounts.py::test_accounts_import_collects_validation_errors",
  "tests/unit/test_importers_platforms_accounts.py::test_accounts_import_commit_is_idempotent",
  "tests/unit/test_importers_platforms_accounts.py::test_accounts_import_dry_run_does_not_write",
  "tests/unit/test_imports.py::test_csv_dry_run_valid_file",
  "tests/unit/test_imports.py::test_csv_duplicate_row_hash_blocked",
  "tests/unit/test_imports.py::test_row_hash_is_stable",
  "tests/unit/test_instrument_catalog_manual_add.py::test_cost_basis_missing_alert",
  "tests/unit/test_instrument_catalog_manual_add.py::test_dashboard_renders_without_live_api",
  "tests/unit/test_instrument_catalog_manual_add.py::test_fx_missing_alert",
  "tests/unit/test_instrument_catalog_manual_add.py::test_hedge_status_unknown_creates_warning",
  "tests/unit/test_instrument_catalog_manual_add.py::test_local_instrument_search_by_isin",
  "tests/unit/test_instrument_catalog_manual_add.py::test_local_instrument_search_by_symbol",
  "tests/unit/test_instrument_catalog_manual_add.py::test_manual_candidate_selection_writes_audit",
  "tests/unit/test_instrument_catalog_manual_add.py::test_manual_position_initial_snapshot_creates_ledger_transaction",
  "tests/unit/test_instrument_catalog_manual_add.py::test_missing_provider_symbol_creates_data_quality_hint",
  "tests/unit/test_instrument_catalog_manual_add.py::test_multiple_listings_same_isin_are_kept",
  "tests/unit/test_instrument_catalog_manual_add.py::test_provider_lookup_failure_does_not_crash",
  "tests/unit/test_instrument_catalog_manual_add.py::test_symbol_without_exchange_is_not_unique_auto_mapping",
  "tests/unit/test_instrument_import_candidates.py::test_candidate_with_isin_can_be_exact_isin_match",
  "tests/unit/test_instrument_import_candidates.py::test_candidate_without_isin_stays_needs_manual_review",
  "tests/unit/test_instrument_import_candidates.py::test_confirmed_candidate_can_create_initial_snapshot_with_uncertain_cost_basis",
  "tests/unit/test_instrument_import_candidates.py::test_deterministic_parser_creates_candidates",
  "tests/unit/test_instrument_import_candidates.py::test_manual_confirmation_sets_confirmed",
  "tests/unit/test_instrument_import_candidates.py::test_no_real_data_in_repo_git_safety_placeholder",
  "tests/unit/test_instrument_import_candidates.py::test_qwen_extraction_creates_only_candidates_no_bookings",
  "tests/unit/test_instrument_import_candidates.py::test_qwen_resolver_does_not_accept_invented_isin",
  "tests/unit/test_instrument_import_candidates.py::test_qwen_resolver_sends_sanitized_candidates_only",
  "tests/unit/test_instrument_import_candidates.py::test_stage_docx_candidates_dry_run_writes_no_rows",
  "tests/unit/test_instrument_import_candidates.py::test_ticker_alone_does_not_confirm_or_import",
  "tests/unit/test_instrument_import_candidates.py::test_unconfirmed_candidate_cannot_productively_import",
  "tests/unit/test_ledger_cash.py::test_ledger_cash_placeholder_until_task_14",
  "tests/unit/test_ledger_cash_wac_positions.py::test_cash_negative_creates_warning_not_correction",
  "tests/unit/test_ledger_cash_wac_positions.py::test_dividend_changes_income_not_quantity_or_cost_basis",
  "tests/unit/test_ledger_cash_wac_positions.py::test_full_sell_sets_quantity_zero_and_keeps_historical_position_visible",
  "tests/unit/test_ledger_cash_wac_positions.py::test_initial_cash_snapshot_is_start_truth_and_buy_sell_dividend_fee_tax_move_cash",
  "tests/unit/test_ledger_cash_wac_positions.py::test_manual_cash_correction_requires_note_and_audit",
  "tests/unit/test_ledger_cash_wac_positions.py::test_market_price_enables_unrealized_pnl_total_return_and_snapshot_audit",
  "tests/unit/test_ledger_cash_wac_positions.py::test_missing_market_price_warns_and_missing_fx_blocks_precise_total_return",
  "tests/unit/test_ledger_cash_wac_positions.py::test_weighted_average_cost_buy_fee_usd_fx_and_partial_sell_realized_pnl",
  "tests/unit/test_ledger_equities.py::test_ledger_equities_placeholder_until_task_13",
  "tests/unit/test_market_alerts.py::test_alert_lifecycle_dedupes_resolved_and_muted_but_allows_new_fingerprint",
  "tests/unit/test_market_alerts.py::test_refresh_crypto_prices_stores_decimal_text_and_uses_cache",
  "tests/unit/test_market_alerts.py::test_refresh_crypto_prices_warns_missing_coingecko_and_missing_price_dedupes",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_crypto_batch_update_endpoint_matches_frontend_contract",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_crypto_binance_live_stats_and_chart_cached",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_crypto_coingecko_refresh_writes_quote_and_chart_point",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_equity_batch_update_endpoint_matches_frontend_contract",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_equity_candles_endpoint_uses_yfinance_only_on_explicit_call_and_caches",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_equity_candles_provider_error_and_missing_symbol_are_clear",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_equity_chart_reads_cached_points_without_provider",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_equity_quote_refresh_writes_quote_and_chart_point",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_market_quote_chart_tables_created_by_migrations",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_market_status_endpoint_is_sanitized_and_cache_only",
  "tests/unit/test_market_quotes_detail_charts_v1.py::test_missing_symbols_are_clear_not_guessed",
  "tests/unit/test_migros_grocery_optimizer_v1.py::test_migros_receipt_items_are_selectable_detail_rows_and_decimal_text",
  "tests/unit/test_migros_grocery_optimizer_v1.py::test_normalization_preserves_original_and_stores_confidence",
  "tests/unit/test_migros_grocery_optimizer_v1.py::test_optimizer_respects_included_product_filter",
  "tests/unit/test_migros_grocery_optimizer_v1.py::test_optimizer_totals_respect_max_three_store_limit",
  "tests/unit/test_migros_grocery_optimizer_v1.py::test_product_matching_marks_pack_size_and_excludes_uncertain_savings",
  "tests/unit/test_migros_grocery_optimizer_v1.py::test_report_rejects_repo_path",
  "tests/unit/test_migros_grocery_optimizer_v1.py::test_runtime_report_stays_outside_repo_and_contains_disclaimer",
  "tests/unit/test_portfolio_advisor_phase8.py::test_portfolio_advisor_api_route_is_registered_in_finance_manager_app",
  "tests/unit/test_portfolio_advisor_phase8.py::test_portfolio_advisor_snapshot_lives_in_finance_manager_with_exact_local_values",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_api_openapi_write_security_and_read_routes",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_canonical_activity_preview_handles_duplicates_ambiguity_and_unsupported_records",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_confirm_is_atomic_audited_idempotent_and_second_fresh_preview_is_unchanged",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_confirmation_identity_rejects_changed_payload_and_stale_source_revision",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_expired_preview_is_rejected",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_invalid_parameters_fail_closed",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_migrations_41_to_43_are_additive_and_ingestion_history_is_immutable",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_multiple_same_day_values_receive_sequential_versions_in_one_batch",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_parallel_confirmation_produces_one_batch_and_one_snapshot",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_preview_is_storage_free_and_classifies_new_duplicate_blocked_and_unchanged",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_preview_timestamp_is_hash_bound_and_expired_idempotent_retry_still_succeeds",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_reconciliation_distinguishes_tolerance_mismatch_missing_fx_and_cutoff",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_reconciliation_matches_quantity_value_cash_and_total_value_account_without_holdings",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_scope_aware_raiffeisen_akb_transfer_is_internal_for_portfolio_and_external_for_account",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_snapshot_correction_creates_new_immutable_version",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_source_status_and_history_are_redacted_and_paginated",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_stale_position_price_and_fx_inputs_are_not_comparable_and_reduce_coverage",
  "tests/unit/test_portfolio_data_ingestion_reconciliation.py::test_unconfirmed_transactions_are_excluded_from_ingestion_and_reconciliation",
  "tests/unit/test_portfolio_performance_foundation.py::test_api_is_read_only_fail_closed_and_openapi_documents_contract",
  "tests/unit/test_portfolio_performance_foundation.py::test_dividend_withholding_and_net_credit_are_not_external_cashflow",
  "tests/unit/test_portfolio_performance_foundation.py::test_existing_immutable_legacy_account_values_are_bound_read_only",
  "tests/unit/test_portfolio_performance_foundation.py::test_fifo_sale_consumes_multiple_lots_in_order",
  "tests/unit/test_portfolio_performance_foundation.py::test_fifo_v1_independent_control_case",
  "tests/unit/test_portfolio_performance_foundation.py::test_foreign_valuation_uses_stored_changing_fx_snapshots",
  "tests/unit/test_portfolio_performance_foundation.py::test_full_control_portfolio_contract_and_reproducibility",
  "tests/unit/test_portfolio_performance_foundation.py::test_migration_is_additive_and_preserves_sprint_41_rows",
  "tests/unit/test_portfolio_performance_foundation.py::test_missing_foreign_fx_never_becomes_one_or_zero_performance",
  "tests/unit/test_portfolio_performance_foundation.py::test_missing_opening_or_closing_valuation_has_null_returns",
  "tests/unit/test_portfolio_performance_foundation.py::test_mwr_rejects_ambiguous_sign_pattern",
  "tests/unit/test_portfolio_performance_foundation.py::test_realized_pnl_is_period_specific_while_remaining_basis_is_as_of_end",
  "tests/unit/test_portfolio_performance_foundation.py::test_reversal_neutralizes_original_without_overwrite",
  "tests/unit/test_portfolio_performance_foundation.py::test_snapshot_constraints_reject_invalid_decimal_fx_and_quality_json",
  "tests/unit/test_portfolio_performance_foundation.py::test_snapshot_versions_are_immutable_and_cutoff_reproducible",
  "tests/unit/test_portfolio_performance_foundation.py::test_stale_snapshot_keeps_calculation_but_marks_metric_partial",
  "tests/unit/test_portfolio_performance_foundation.py::test_total_value_account_has_performance_without_invented_lots",
  "tests/unit/test_portfolio_performance_foundation.py::test_twr_control_is_exactly_twenty_one_percent",
  "tests/unit/test_portfolio_performance_foundation.py::test_twr_normalizes_timezone_offsets_before_matching_boundaries",
  "tests/unit/test_portfolio_performance_foundation.py::test_twr_refuses_cashflow_without_boundary_valuation",
  "tests/unit/test_portfolio_performance_foundation.py::test_unsupported_activity_is_excluded_and_explained",
  "tests/unit/test_portfolio_performance_foundation.py::test_xirr_one_year_control_and_insufficient_structure",
  "tests/unit/test_portfolio_policy_foundation.py::test_allocation_percentages_bounds_total_and_crypto_cap",
  "tests/unit/test_portfolio_policy_foundation.py::test_audit_has_exact_allowlist_and_history_content_is_immutable",
  "tests/unit/test_portfolio_policy_foundation.py::test_confirm_requires_complete_request_and_explicit_confirmation",
  "tests/unit/test_portfolio_policy_foundation.py::test_confirmation_id_is_bound_to_preview_and_payload_fail_closed",
  "tests/unit/test_portfolio_policy_foundation.py::test_decimal_null_percentage_and_benchmark_validation",
  "tests/unit/test_portfolio_policy_foundation.py::test_integrity_error_race_path_rechecks_request_identity",
  "tests/unit/test_portfolio_policy_foundation.py::test_migration_adds_request_idempotency_columns_to_sprint4_schema",
  "tests/unit/test_portfolio_policy_foundation.py::test_new_confirmation_allows_same_content_and_a_b_a_creates_three_versions",
  "tests/unit/test_portfolio_policy_foundation.py::test_policy_detail_404_has_no_identifier_and_exposes_no_write_route",
  "tests/unit/test_portfolio_policy_foundation.py::test_policy_detail_returns_requested_historical_and_active_versions_read_only",
  "tests/unit/test_portfolio_policy_foundation.py::test_policy_openapi_and_write_security_cover_preview_confirm_and_detail",
  "tests/unit/test_portfolio_policy_foundation.py::test_preview_is_read_only_and_same_confirmation_is_idempotent",
  "tests/unit/test_postfinance_documents.py::test_preview_parser_rejects_incomplete_or_non_pdf_sources",
  "tests/unit/test_postfinance_documents.py::test_synthetic_zip_pdf_bundle_is_parsed_and_reconciled",
  "tests/unit/test_postfinance_documents.py::test_zip_path_traversal_and_symlink_are_rejected",
  "tests/unit/test_provider_integration_v2.py::test_composite_equity_price_provider_uses_priority_order",
  "tests/unit/test_provider_integration_v2.py::test_eodhd_is_explicit_low_volume_provider_not_default",
  "tests/unit/test_provider_integration_v2.py::test_equity_price_providers_mock_quotes",
  "tests/unit/test_provider_integration_v2.py::test_finnhub_lookup_mock_enriches_profile_and_quote",
  "tests/unit/test_provider_integration_v2.py::test_frankfurter_and_twelvedata_fx_mocks",
  "tests/unit/test_provider_integration_v2.py::test_massive_reference_lookup_mock",
  "tests/unit/test_provider_integration_v2.py::test_openfigi_401_is_auth_failed_without_crash",
  "tests/unit/test_provider_integration_v2.py::test_openfigi_isin_mapping_mock_returns_candidate",
  "tests/unit/test_provider_integration_v2.py::test_provider_priority_and_dashboard_status_without_key_leak",
  "tests/unit/test_provider_integration_v2.py::test_refresh_market_prices_uses_explicit_provider_only",
  "tests/unit/test_provider_integration_v2.py::test_runtime_secret_aliases_include_new_provider_key_names",
  "tests/unit/test_provider_integration_v2.py::test_twelvedata_symbol_lookup_and_key_alias",
  "tests/unit/test_quality.py::test_create_alert",
  "tests/unit/test_quality.py::test_missing_fx_creates_critical_alert",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_api_redacts_adversarial_account_labels_ids_and_sources",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_currency_or_as_of_mismatch_is_never_subtracted",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_difference_uses_ledger_minus_snapshot_with_decimal_semantics",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_identical_comparable_balances_are_reconciled_without_a_write",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_ledger_anchor_currency_and_subunit_difference_are_never_hidden",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_metadata_uses_only_latest_row_per_logical_series_and_is_bounded",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_missing_comparison_balance_is_partial_not_zero",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_mixed_stale_and_missing_source_is_partial",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_read_only_api_and_openapi_contract_expose_no_sensitive_account_fields",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_redaction_covers_account_wallet_and_path_identifiers_but_keeps_friendly_names",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_snapshot_and_fx_metadata_keep_actual_as_of_and_decimal_strings",
  "tests/unit/test_reconciliation_snapshot_foundation.py::test_stale_freshness_does_not_replace_a_reconciliation_result",
  "tests/unit/test_reports_v1.py::test_budget_monthly_report_counts_confirmed_only_and_candidates_separately",
  "tests/unit/test_reports_v1.py::test_cashflow_and_review_reports_expose_required_sections",
  "tests/unit/test_reports_v1.py::test_reports_v1_generate_all_types_runtime_only_metadata_and_audit",
  "tests/unit/test_review_backlog_cleanup_v1.py::test_2025_candidates_are_marked_reference_and_not_in_2026_review_or_confirmable",
  "tests/unit/test_review_backlog_cleanup_v1.py::test_review_backlog_groups_without_category_migros_galaxus_bank_fixkosten_and_safe_groups",
  "tests/unit/test_review_backlog_cleanup_v1.py::test_review_backlog_is_read_only_and_does_not_create_bookings",
  "tests/unit/test_row_hash_dedup.py::test_dry_run_reports_new_existing_and_duplicate_rows",
  "tests/unit/test_row_hash_dedup.py::test_row_hash_normalizes_whitespace_key_order_and_missing_values",
  "tests/unit/test_runtime_backup.py::test_backup_cli_verify_and_restore",
  "tests/unit/test_runtime_backup.py::test_backup_runtime_db_creates_backup_outside_repo",
  "tests/unit/test_runtime_backup.py::test_restore_backup_to_separate_test_db_does_not_modify_productive_db",
  "tests/unit/test_runtime_backup.py::test_restore_runtime_db_requires_yes_and_restores_test_db",
  "tests/unit/test_runtime_backup.py::test_verify_backup_checks_checksum",
  "tests/unit/test_schema.py::test_broker_bank_mapping_tables_exist_with_required_columns",
  "tests/unit/test_schema.py::test_db_schema_can_be_created",
  "tests/unit/test_schema.py::test_decimal_sensitive_columns_use_text_affinity",
  "tests/unit/test_schema.py::test_schema_version_recorded",
  "tests/unit/test_settings.py::test_runtime_default_outside_repo",
  "tests/unit/test_settings.py::test_runtime_inside_repo_is_blocked",
  "tests/unit/test_settings.py::test_test_and_uat_runtime_must_be_explicitly_isolated_below_tmp",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_batch_does_not_treat_wrong_currency_cache_as_coverage",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_batch_processes_all_22_and_resume_skips_fresh_cache",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_equity_get_endpoints_do_not_invoke_provider",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_excluded_instrument_is_not_fetched_or_valued",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_provider_error_classes_future_and_currency_guards",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_rate_limit_retries_without_marking_instrument_inactive",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_stale_snapshot_values_remain_unknown_and_global_signals_are_suppressed",
  "tests/unit/test_sprint11_portfolio_completeness.py::test_unknown_values_remain_null_and_partial_summary_lists_all_missing",
  "tests/unit/test_system_ops_api_v1.py::test_restart_endpoint_uses_allowed_service_action",
  "tests/unit/test_system_ops_api_v1.py::test_system_status_endpoint_has_safe_shape",
  "tests/unit/test_system_ops_controls_v1.py::test_restart_rejects_unknown_actions_and_never_accepts_free_commands",
  "tests/unit/test_system_ops_controls_v1.py::test_restart_schedules_worker_without_returning_long_logs",
  "tests/unit/test_system_ops_controls_v1.py::test_restart_uses_only_allowed_repo_scripts_and_writes_runtime_ops_log",
  "tests/unit/test_system_ops_controls_v1.py::test_system_status_redacts_legacy_restart_paths_and_process_ids",
  "tests/unit/test_system_ops_controls_v1.py::test_system_status_reports_backend_frontend_runtime_without_secrets",
  "tests/unit/test_system_ops_restart_remote.py::test_restart_backend_is_detached_so_http_response_can_return",
  "tests/unit/test_system_ops_restart_remote.py::test_restart_dashboard_writes_restart_worker_log",
  "tests/unit/test_transactions_importer.py::test_transactions_import_is_idempotent_by_external_id_and_row_hash",
  "tests/unit/test_transactions_importer.py::test_transactions_import_marks_missing_fx_for_foreign_currency",
  "tests/unit/test_transactions_importer.py::test_transactions_import_rejects_buy_with_non_positive_quantity",
  "tests/unit/test_transactions_importer.py::test_transactions_import_validates_and_writes_with_audit",
  "tests/unit/test_transfer_pairing_v2.py::test_ambiguous_counterbookings_are_not_selected",
  "tests/unit/test_transfer_pairing_v2.py::test_api_contract_redacts_source_data_and_write_security_remains_active",
  "tests/unit/test_transfer_pairing_v2.py::test_competing_pair_cannot_create_a_second_confirmed_transfer",
  "tests/unit/test_transfer_pairing_v2.py::test_confirm_consumes_both_candidates_once_and_budget_effect_is_zero",
  "tests/unit/test_transfer_pairing_v2.py::test_confirm_revalidates_both_candidates_and_rolls_back_atomically",
  "tests/unit/test_transfer_pairing_v2.py::test_invalid_direction_account_amount_and_currency_are_never_guessed",
  "tests/unit/test_transfer_pairing_v2.py::test_missing_counterbooking_is_unmatched_then_later_pair_supersedes_it",
  "tests/unit/test_transfer_pairing_v2.py::test_reference_case_matches_across_import_runs_despite_misleading_merchant_text",
  "tests/unit/test_transfer_pairing_v2.py::test_reject_does_not_consume_candidates_and_is_idempotent",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_candidate_generator_creates_high_candidate_from_isin_match",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_chf_hedged_candidate_remains_proposed_until_confirmed",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_dashboard_review_ui_renders_without_live_api",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_data_quality_center_shows_candidate_review_need",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_fx_override_requires_note_and_resolves_missing_fx",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_hedge_and_instrument_status_unknown_alerts",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_mapping_selection_writes_audit_and_resolves_missing_provider_symbol",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_mapping_template_contains_candidate_fields",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_market_price_dry_run_without_confirmed_mapping_does_not_call_provider",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_missing_provider_symbol_dedupes_per_instrument_only",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_missing_provider_symbol_not_resolved_until_candidate_confirmed",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_multiple_candidates_are_manual_review_and_alerted",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_name_only_candidate_is_review_required_low_confidence",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_no_candidate_keeps_missing_provider_symbol_active",
  "tests/unit/test_true_wealth_mapping_candidates_c3.py::test_provider_lookup_error_does_not_crash",
  "tests/unit/test_true_wealth_mapping_candidates_c3d.py::test_candidate_confirmation_resolves_mapping_alerts_and_writes_catalog",
  "tests/unit/test_true_wealth_mapping_candidates_c3d.py::test_candidate_ranking_prioritizes_isin_currency_exchange",
  "tests/unit/test_true_wealth_mapping_candidates_c3d.py::test_candidate_rejection_writes_audit",
  "tests/unit/test_true_wealth_mapping_candidates_c3d.py::test_dashboard_review_ui_renders_ranked_candidates_without_live_api",
  "tests/unit/test_true_wealth_mapping_candidates_c3d.py::test_decision_pack_runtime_only_contains_no_amount_fields",
  "tests/unit/test_true_wealth_mapping_candidates_c3d.py::test_personal_finance_backlog_document_exists_without_implementation",
  "tests/unit/test_true_wealth_mapping_candidates_c3d.py::test_same_isin_multiple_listings_remain_review_required_and_sorted",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_chf_hedged_instrument_marks_fx_attribution_not_free_fx_pnl",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_corporate_action_large_price_move_flags_no_auto_split_correction",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_hedge_status_unknown_warns_and_change_audits",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_historical_fx_unavailable_sets_manual_override_required_without_crash",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_manual_fx_override_requires_note_audits_and_resolves_manual_required",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_market_price_resolves_missing_and_delisted_is_excluded_without_alert_flood",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_provider_symbol_missing_alert_and_confirm_resolves_with_audit",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_timestamp_alignment_and_stale_valuation_alert",
  "tests/unit/test_true_wealth_valuation_pilot.py::test_valuation_statuses_and_total_return_remains_incomplete_for_snapshot",
  "tests/unit/test_vue_dashboard_runtime_scripts.py::test_backend_dashboard_button_dispatches_combined_restart_asynchronously",
  "tests/unit/test_vue_dashboard_runtime_scripts.py::test_restart_script_orchestrates_stop_then_start_with_healthchecks",
  "tests/unit/test_vue_dashboard_runtime_scripts.py::test_start_script_checks_vite_binary_not_only_node_modules_directory",
  "tests/unit/test_vue_dashboard_runtime_scripts.py::test_start_script_reasserts_real_runtime_after_venv_activation",
  "tests/unit/test_vue_dashboard_runtime_scripts.py::test_start_script_verifies_backend_frontend_and_tailscale_health",
  "tests/unit/test_vue_dashboard_runtime_scripts.py::test_stop_script_kills_stale_port_listeners_after_pid_files",
  "tests/unit/test_vue_dashboard_runtime_scripts.py::test_stop_script_uses_canonical_runtime_dir_not_activation_override",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_cleanup_preview_and_confirm_archives_review_artifacts_preserving_manual_positions",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_crypto_detail_exposes_cached_coingecko_info_without_provider_call",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_crypto_detail_sanitizes_cached_coingecko_urls",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_position_confirm_resolves_cached_fx_and_chf_not_needed",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_provider_candidate_preview_confirm_materializes_instrument_and_audit",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_provider_search_deduplicates_enriches_filters_and_ranks_goog",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_provider_search_endpoint_returns_candidates_and_no_provider_call_on_render",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_provider_search_no_candidates_has_clear_user_warning",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_provider_search_suppresses_raw_provider_errors_when_candidate_exists",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_remove_position_voids_single_manual_snapshot_but_blocks_history",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_truewealth_is_managed_total_value_account_not_equity_target",
  "tests/unit/test_vue_dashboard_v12_acceptance.py::test_wallet_and_account_create_deactivate_delete_rules_are_audited"
]