[
  "agent_framework_oci/tests/test_generic_tool_response_presentation.py::test_generic_lines_mode_preserves_order_shape",
  "agent_framework_oci/tests/test_generic_tool_response_presentation.py::test_generic_list_mode_supports_contas_multiple_plans_without_none",
  "agent_framework_oci/tests/test_generic_tool_response_presentation.py::test_generic_template_mode_preserves_template_backend_plan_contract",
  "agent_framework_oci/tests/test_generic_tool_response_presentation.py::test_missing_renderer_falls_back_without_breaking_runtime",
  "agent_framework_oci/tests/test_generic_tool_response_presentation.py::test_no_declared_response_keeps_legacy_fallback",
  "agent_framework_oci/tests/test_generic_tool_response_presentation.py::test_renderer_mode_uses_application_registered_renderer",
  "agent_framework_oci/tests/test_judge_transaction_sampling.py::test_awaiting_confirmation_bypasses_sampling",
  "agent_framework_oci/tests/test_judge_transaction_sampling.py::test_completed_transaction_bypasses_sampling_from_mcp_result",
  "agent_framework_oci/tests/test_judge_transaction_sampling.py::test_non_transactional_turn_respects_zero_sample_rate",
  "agent_framework_oci/tests/test_judge_transaction_sampling.py::test_transactional_detection_from_tool_policy",
  "agent_framework_oci/tests/test_mcp_parameter_extraction_runtime.py::test_collection_turn_reuses_declarative_parameter_extraction",
  "agent_framework_oci/tests/test_mcp_parameter_extraction_runtime.py::test_explicit_order_id_has_precedence_over_contract_key",
  "agent_framework_oci/tests/test_mcp_parameter_extraction_runtime.py::test_new_transaction_current_message_overrides_stale_subject_from_context",
  "agent_framework_oci/tests/test_mcp_parameter_extraction_runtime.py::test_runtime_extracts_order_id_from_current_message",
  "agent_framework_oci/tests/test_mcp_parameter_extraction_runtime.py::test_transaction_extracts_required_fields_before_first_missing_check",
  "agent_framework_oci/tests/test_mcp_parameter_extraction_runtime.py::test_unique_transactional_tool_is_selected_after_routing_constrains_allowlist",
  "agent_framework_oci/tests/test_route_stickiness_transaction_shift.py::test_explicit_keyword_shift_preempts_stickiness",
  "agent_framework_oci/tests/test_route_stickiness_transaction_shift.py::test_same_agent_explicit_intent_shift_must_preempt_stickiness",
  "agent_framework_oci/tests/test_route_stickiness_transaction_shift.py::test_same_agent_transaction_keyword_preempts_continuity",
  "agent_framework_oci/tests/test_route_stickiness_transaction_shift.py::test_short_generic_keyword_does_not_preempt",
  "agent_framework_oci/tests/test_transaction_state_router_interruption.py::test_state_policy_allows_high_confidence_new_intent",
  "agent_framework_oci/tests/test_transaction_state_router_interruption.py::test_state_policy_keeps_short_parameter_answer_in_transaction",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_closed_transaction_is_not_operational_context_for_next_turn",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_collecting_parameters_can_be_cancelled_explicitly",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_collecting_parameters_does_not_replace_collected_subject_with_stale_context",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_completed_transaction_becomes_reusable_operational_evidence",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_new_contestation_does_not_inherit_subject_or_value_from_previous_transaction",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_pre_validation_passes_then_waits_for_confirmation",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_pre_validation_rejection_clears_collecting_latches_and_is_exposed_in_patch",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_pre_validation_rejects_before_confirmation_without_executing_transaction",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_pre_validation_runs_after_last_required_parameter_before_confirmation",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_route_intent_shift_clears_collecting_transaction_before_new_tools",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_runtime_source_contains_persisted_confirmation_contract",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_terminal_confirmation_closes_active_transaction_and_clears_latches",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_tool_policy_registry_reads_pre_validation",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_tool_policy_registry_reads_transactional_confirmation",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_transaction_evidence_is_correlated_by_resource_identifier",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_transaction_state_patch_exposes_prevalidation_and_terminal_lifecycle",
  "agent_framework_oci/tests/test_transactional_tool_flow.py::test_transaction_waits_then_executes_after_confirmation",
  "agent_framework_oci/tests/unit/test_agent_runtime.py::test_agent_runtime_without_cache_invokes_llm",
  "agent_framework_oci/tests/unit/test_langgraph_checkpoint_saver.py::test_put_writes_does_not_restore_older_checkpoint",
  "agent_framework_oci/tests/unit/test_langgraph_checkpoint_saver.py::test_repository_checkpoint_saver_put_get",
  "agent_framework_oci/tests/unit/test_resilient_checkpointer.py::test_compaction_keeps_last_n_checkpoints",
  "agent_framework_oci/tests/unit/test_resilient_checkpointer.py::test_integrity_envelope_and_recovery_skips_corrupt_latest",
  "agent_framework_oci/tests/unit/test_resilient_checkpointer.py::test_recovery_raises_when_only_corrupt_checkpoints_exist",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_continue_bypasses_router_without_regex_rules",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_continue_without_active_agent_falls_back_to_router",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_end_session_is_returned_as_global_route",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_global_session_actions_work_without_active_agent",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_human_handoff_is_returned_as_global_route",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_invalid_output_falls_back_safely",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_low_confidence_continue_falls_back_safely",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_no_active_agent_still_classifies_global_session_actions",
  "agent_framework_oci/tests/unit/test_semantic_route_stickiness.py::test_route_result_falls_back_to_enterprise_router",
  "tests/migration/test_adversarial_parity.py::test_anatel_rail_e_framework_native_sem_dependencia_legado",
  "tests/migration/test_adversarial_parity.py::test_cval_bloqueia_contestacao_antes_do_side_effect",
  "tests/migration/test_adversarial_parity.py::test_finalizacao_informacional_infer_tipo_de_billing_analysis_json",
  "tests/migration/test_adversarial_parity.py::test_finalizacao_informacional_infer_tipo_pela_fatura",
  "tests/migration/test_adversarial_parity.py::test_fix_whole_utterance_transcription_preserva_fronteira_de_frase",
  "tests/migration/test_adversarial_parity.py::test_output_guardrail_context_extrai_protocolos_das_tools",
  "tests/migration/test_adversarial_parity.py::test_post_finalize_replay_e_short_circuit_framework",
  "tests/migration/test_adversarial_parity.py::test_post_finalize_replay_preserva_terminal_status_e_fallback_sem_historico",
  "tests/migration/test_adversarial_parity.py::test_post_finalize_replay_status_invalido_usa_fallback_seguro",
  "tests/migration/test_adversarial_parity.py::test_processing_interruption_classifier_falha_faz_replay_seguro",
  "tests/migration/test_adversarial_parity.py::test_processing_interruption_classifier_resultado_1_reprocessa",
  "tests/migration/test_adversarial_parity.py::test_processing_interruption_interrompivel_pede_classificacao",
  "tests/migration/test_adversarial_parity.py::test_similarity_matcher_recupera_erros_de_transcricao_comuns",
  "tests/migration/test_adversarial_parity.py::test_tool_clarification_aceita_opcao_ordinal",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[   -   ]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[  fim  -Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[-]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[FIM-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[Fim, pode encerrar-Fim, pode encerrar]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[Fim-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[Fim.-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[Mim-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[Mim?-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[Sim-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[cancela o Tamboro-cancela o Tamboro]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[chegou ao fim-chegou ao fim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[fim de semana-fim de semana]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[fim!-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[fim-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[isso \\xe9 pra mim-isso \\xe9 pra mim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[mim mesmo-mim mesmo]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[mim-Sim]",
  "tests/migration/test_adversarial_parity.py::test_transcription_fix_paridade_original[n\\xe3o-n\\xe3o]",
  "tests/migration/test_adversarial_parity.py::test_vas_variation_preserva_multiset_e_direcao_atual",
  "tests/migration/test_adversarial_parity.py::test_vas_variation_streaming_nao_entra_no_recorte_avulso_padrao",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_cancelamento_aceita_alias_itens_para_contestacao",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_cancelamento_aceita_cpf_como_alias_social_sec_no",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_cancelamento_falha_operacional_com_candidato_dispara_contestacao",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_cancelamento_falha_workflow_preserva_output_parcial_nao_cancelados",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_cancelamento_sem_candidatos_nao_dispara_contestacao",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_cancelamento_sms_falho_preserva_sucesso_e_flag",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_contestacao_wrapper_mapeia_falha_tecnica_como_sistemica",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_contestacao_wrapper_preserva_erro_de_negocio_e_protocolo",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_contestacao_wrapper_preserva_tipo_atendimento_e_contexto_do_turno",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_invoice_explanation_branch_devolver_orquestrador_nao_auto_finaliza",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_invoice_explanation_branch_nao_sem_vas_recomenda_nao_resolvido",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_invoice_explanation_service_failure_preserva_fraseologia_sem_auto_finalize",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_pro_rata_aceite_e_nao_controle_recomendam_resolvido",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_pro_rata_branch_devolver_orquestrador_nao_auto_finaliza",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_vas_estrategico_rejeitado_declara_rag_para_cada_servico_estrategico",
  "tests/migration/test_backend_wrapper_contract_parity.py::test_vas_estrategico_workflow_payload_preserva_tres_itens_e_action_agrupa_duas_linhas",
  "tests/migration/test_business_events_and_guardrails.py::test_business_events_are_published_recursively_once",
  "tests/migration/test_business_events_and_guardrails.py::test_cached_tool_result_does_not_republish_business_events",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_cancelamento_falha_tecnica_na_contestacao_recomenda_auto_finalizacao",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_cancelamento_item_ja_contestado_preserva_sucesso_do_cancelamento",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_cancelamento_sem_contestacao_expoe_protocolo_de_cancelamento",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_familia_contesta_titular_e_dependente_em_uma_unica_chamada",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_lote_trinta_contesta_somente_unico_candidato",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_wrapper_contestacao_zerada_usa_total_cancelado_na_mensagem",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_wrapper_itens_ja_contestados_preserva_mensagem_deterministica",
  "tests/migration/test_cancel_backend_wrapper_parity.py::test_wrapper_next_subject_nao_afeta_mensagem_deterministica",
  "tests/migration/test_cancel_composite_workflow.py::test_action_cancelamento_lote_aproveita_um_sucesso_entre_falhas",
  "tests/migration/test_cancel_composite_workflow.py::test_cancelamento_dependente_resolve_cpf_da_linha_antes_do_protocolo",
  "tests/migration/test_cancel_composite_workflow.py::test_cancelamento_encadeia_contestacao_no_workflow_runtime",
  "tests/migration/test_cancel_composite_workflow.py::test_cancelamento_lote_limita_concorrencia_a_cinco",
  "tests/migration/test_cancel_composite_workflow.py::test_cancelamento_lote_nao_executa_side_effect_se_protocolo_por_linha_falhar",
  "tests/migration/test_cancel_composite_workflow.py::test_cancelamento_propaga_bloqueio_da_contestacao_sem_mascarar_sucesso",
  "tests/migration/test_cancel_composite_workflow.py::test_cancelamento_redireciona_item_estrategico_para_workflow_correto",
  "tests/migration/test_cancel_composite_workflow.py::test_cancelamento_sem_candidato_nao_abre_contestacao",
  "tests/migration/test_cancel_composite_workflow.py::test_falha_de_bloqueio_permanece_candidata_a_contestacao",
  "tests/migration/test_cancel_composite_workflow.py::test_invoice_detail_corrige_linha_do_item_antes_do_cancelamento",
  "tests/migration/test_cancel_composite_workflow.py::test_plano_familia_mantem_titular_na_contestacao_e_dependente_no_cancelamento",
  "tests/migration/test_cancel_composite_workflow.py::test_resposta_composta_preserva_protocolos_cancelamento_e_contestacao",
  "tests/migration/test_cancel_composite_workflow.py::test_result_payload_invoice_explanation_recomenda_finalizacao_por_last_node",
  "tests/migration/test_cancel_composite_workflow.py::test_result_payload_pro_rata_recomenda_finalizacao_somente_nos_ramos_finais",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_cancelamento_com_protocolo_sem_item_contestado_continua_resolvido",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_candidato_explicito_e_contestado_mesmo_sem_cancelamento_bem_sucedido",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_falha_parcial_rt01_ainda_dispara_rt02[block_vas_failed-Timeout no bloqueio]",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_falha_parcial_rt01_ainda_dispara_rt02[cancel_vas_failed-Erro no cancelamento]",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_falha_sms_e_propagada_sem_expor_sms_sent",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_holder_msisdn_nao_e_trocado_pela_linha_dependente",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_item_do_titular_nao_e_marcado_como_dependente",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_lista_explicita_vazia_de_candidatos_nao_faz_fallback_para_cancelados",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_no_match_nao_contesta_valor_nem_chama_contestacao",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_protocol_closed_da_contestacao_e_preservado",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_sms_flag_interno_nao_vaza_no_contrato_externo",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_success_implicito_por_cancelados_sem_flag_success",
  "tests/migration/test_cancel_wrapper_remaining_parity.py::test_titular_e_dependentes_permancem_em_uma_unica_contestacao",
  "tests/migration/test_contas_domain_mock.py::test_cancel_vas_is_domain_operation_not_conversation_engine",
  "tests/migration/test_contas_domain_mock.py::test_cancelamento_batch_emite_vaa004_quando_falha_operacional",
  "tests/migration/test_contas_domain_mock.py::test_cancelamento_batch_emite_vaa_caminho_feliz_uma_vez",
  "tests/migration/test_contas_domain_mock.py::test_cancelamento_nao_recancela_servico_inativo_do_historico",
  "tests/migration/test_contas_domain_mock.py::test_cancelamento_usa_historico_como_fallback_quando_ativo_nao_encontra",
  "tests/migration/test_contas_domain_mock.py::test_contestation_mock",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_com_protocolo_existente_nao_cria_informacional",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_cria_protocolo_informacional_quando_invoice_explanation_executou",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_force_rt15_cria_novo_protocolo_mesmo_com_veb_fechado",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_cria_protocolo_fechado_sem_duplicar_status",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_notas_canonicas[types0-Explica\\xe7\\xe3o de VAS Bundle]",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_notas_canonicas[types1-Explica\\xe7\\xe3o de VAS Estrat\\xe9gico]",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_notas_canonicas[types2-Explica\\xe7\\xe3o de VAS Avulso]",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_notas_canonicas[types3-Explica\\xe7\\xe3o de VAS Bundle, VAS Estrat\\xe9gico]",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_notas_canonicas[types4-Explica\\xe7\\xe3o de VAS Bundle, VAS Avulso]",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_notas_canonicas[types5-Explica\\xe7\\xe3o de VAS Estrat\\xe9gico, VAS Avulso]",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_informacional_notas_canonicas[types6-Explica\\xe7\\xe3o de VAS Bundle, VAS Estrat\\xe9gico, VAS Avulso]",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_nao_cria_protocolo_apenas_por_prefetch_invoice_explanation",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_nao_duplica_protocolo_quando_contestacao_ja_existe",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_normaliza_status_invalido_e_summary",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_preserva_status_valido_e_prefixa_summary",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_reusa_protocolo_veb_ja_fechado_sem_abrir_outro",
  "tests/migration/test_contas_domain_mock.py::test_finalizacao_veb_deferido_suprime_evento_cvn_de_protocolo",
  "tests/migration/test_contas_domain_mock.py::test_invoice_explanation_converte_retry_transport_em_rct_por_tentativa",
  "tests/migration/test_contas_domain_mock.py::test_invoice_explanation_falha_preserva_rct_das_tres_tentativas",
  "tests/migration/test_contas_domain_mock.py::test_read_only_integrations_with_fixtures",
  "tests/migration/test_contestation_business_rules_full.py::test_abrir_contestacao_deriva_refund_manual_e_normaliza_barcode_zero",
  "tests/migration/test_contestation_business_rules_full.py::test_check_invoice_status_enriquece_prefetch_sem_nova_api",
  "tests/migration/test_contestation_business_rules_full.py::test_check_invoice_status_falha_sem_prefetch",
  "tests/migration/test_contestation_business_rules_full.py::test_cutdate_da_fatura_define_manual",
  "tests/migration/test_contestation_business_rules_full.py::test_cutdate_regra_um_mes",
  "tests/migration/test_contestation_business_rules_full.py::test_cutoff_referencia_corrige_bug_mes_seguinte",
  "tests/migration/test_contestation_business_rules_full.py::test_dependente_forca_conta_certa_manual",
  "tests/migration/test_contestation_business_rules_full.py::test_due_day_iso_e_br",
  "tests/migration/test_contestation_business_rules_full.py::test_refund_boleto_para_fatura_em_aberto_com_fatura_normal",
  "tests/migration/test_contestation_business_rules_full.py::test_refund_credito_para_dacc_cartao_ou_parcelamento",
  "tests/migration/test_contestation_business_rules_full.py::test_refund_credito_para_fatura_paga_ou_ja_contestada",
  "tests/migration/test_contestation_failure_mapping.py::test_contestacao_failed_preserva_provider_message_e_protocolo",
  "tests/migration/test_contestation_failure_mapping.py::test_contestacao_failed_sem_mensagem_provider_vira_falha_sistemica",
  "tests/migration/test_dispute_actions_remaining_parity.py::test_conta_certa_manual_falha_api_e_best_effort",
  "tests/migration/test_dispute_actions_remaining_parity.py::test_sms_falha_nao_interrompe_fluxo_e_marca_flag",
  "tests/migration/test_dispute_actions_remaining_parity.py::test_sms_usa_barcode_titular_e_payload_padrao",
  "tests/migration/test_dispute_actions_remaining_parity.py::test_status_sr_nao_faz_tracking_de_fatura_errada",
  "tests/migration/test_dispute_actions_remaining_parity.py::test_status_sr_sms_path_e_tracking_completo",
  "tests/migration/test_finalization_parity_extended.py::test_cpf_alias_is_forwarded_to_informational_protocol",
  "tests/migration/test_finalization_parity_extended.py::test_deferred_bundle_and_strategic_items_create_combined_rt15_without_workflow_latch",
  "tests/migration/test_finalization_parity_extended.py::test_existing_session_protocol_prevents_duplicate_informational_rt15",
  "tests/migration/test_finalization_parity_extended.py::test_free_customer_phrase_without_evidence_does_not_create_protocol",
  "tests/migration/test_finalization_parity_extended.py::test_handoff_suppression_emits_only_sad001",
  "tests/migration/test_finalization_parity_extended.py::test_invoice_detail_conflict_overrides_saved_informational_type",
  "tests/migration/test_finalization_parity_extended.py::test_invoice_detail_without_match_ignores_saved_type_and_does_not_create_protocol",
  "tests/migration/test_finalization_parity_extended.py::test_invoice_explanation_finalization_orders_events_and_returns_alias",
  "tests/migration/test_finalization_parity_extended.py::test_invoice_explanation_negative_emits_cvn009_mpi005_without_protocol_when_no_notes",
  "tests/migration/test_finalization_parity_extended.py::test_invoice_explanation_only_registers_protocol_at_finalization",
  "tests/migration/test_finalization_parity_extended.py::test_invoice_explanation_uses_canonical_notes_not_free_text",
  "tests/migration/test_finalization_parity_extended.py::test_known_avulso_is_classified_without_invoice_detail",
  "tests/migration/test_finalization_parity_extended.py::test_legacy_final_alias_normalizes_to_resolved_without_spurious_protocol",
  "tests/migration/test_finalization_parity_extended.py::test_partial_invoice_inference_merges_saved_avulso_type",
  "tests/migration/test_finalization_parity_extended.py::test_prefetch_invoice_context_guarantees_lookup_and_rt15_without_latched_workflow",
  "tests/migration/test_finalization_parity_extended.py::test_protocol_failure_does_not_fail_finalization_and_emits_negative_events",
  "tests/migration/test_finalization_parity_extended.py::test_rag_saved_type_is_used_when_invoice_detail_is_absent",
  "tests/migration/test_finalization_parity_extended.py::test_sad_decision_tree_handoff_second_time",
  "tests/migration/test_finalization_parity_extended.py::test_strategic_notes_take_priority_over_prior_invoice_explanation_notes",
  "tests/migration/test_finalization_parity_extended.py::test_strategic_partner_is_classified_without_invoice_detail",
  "tests/migration/test_finalization_parity_extended.py::test_terminal_veb_resolution_suppresses_cvn_mpi_and_duplicate_rt15",
  "tests/migration/test_finalization_parity_extended.py::test_three_informational_vas_types_have_canonical_order",
  "tests/migration/test_finalization_parity_extended.py::test_transactional_cancel_finalization_does_not_emit_cvn_or_mpi_even_with_summary",
  "tests/migration/test_finalization_parity_extended.py::test_transactional_workflow_does_not_emit_informational_acceptance",
  "tests/migration/test_finalization_parity_extended.py::test_unresolved_transition_does_not_reemit_positive_cvn_or_mpi",
  "tests/migration/test_framework_llm_composition_directive.py::test_direct_answer_eh_desabilitada_quando_tool_exige_composicao_llm",
  "tests/migration/test_framework_llm_composition_directive.py::test_framework_detecta_instrucao_de_composicao_llm_recursiva",
  "tests/migration/test_framework_llm_composition_directive.py::test_pro_rata_orientacao_declara_composicao_no_llm_do_framework",
  "tests/migration/test_framework_native_structure.py::test_agent_workflow_init_realmente_inicializa_router_agentes_e_graph",
  "tests/migration/test_framework_native_structure.py::test_all_active_workflow_actions_registered",
  "tests/migration/test_framework_native_structure.py::test_contestacao_workflow_encerra_imediatamente_quando_cval_bloqueia",
  "tests/migration/test_framework_native_structure.py::test_domain_does_not_import_langgraph_directly",
  "tests/migration/test_framework_native_structure.py::test_guardrail_config_declares_all_execution_stages",
  "tests/migration/test_framework_native_structure.py::test_official_templates_use_framework_state_graph",
  "tests/migration/test_framework_native_structure.py::test_workflow_runtime_preserva_snapshot_parcial_quando_action_posterior_falha",
  "tests/migration/test_framework_rag_directive.py::test_tool_pode_forcar_rag_e_fornecer_query_override",
  "tests/migration/test_framework_rag_directive.py::test_vas_estrategico_rejeitado_declara_rag_sem_executar_rag_no_dominio",
  "tests/migration/test_framework_zero_legacy.py::test_framework_source_has_zero_legacy_namespace_references",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[PINJ--True]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[PINJ-0-False]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[PINJ-1-True]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[PINJ-prosa 1 e veredito 0-False]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[PINJ-sem digito-True]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[REVPREC--True]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[REVPREC-0-True]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[REVPREC-1-False]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[REVPREC-Resposta: 1-False]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_guardrail_semantics[REVPREC-n\\xe3o sei-True]",
  "tests/migration/test_guardrail_binary_parity.py::test_binary_polarity_contract",
  "tests/migration/test_guardrail_binary_parity.py::test_pinj_prompt_is_binary_and_keeps_examples",
  "tests/migration/test_guardrail_binary_parity.py::test_revprec_prompt_preserves_boundaries",
  "tests/migration/test_guardrail_original_defaults_parity.py::test_framework_loader_instancia_coer_e_fraseologia",
  "tests/migration/test_guardrail_original_defaults_parity.py::test_original_default_guardrails_estao_ativos_no_pipeline_framework",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_billing_analysis_falha_emite_cvn007_sem_perder_complete_invoices",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_cache_hit_expoe_cache_age_sem_republicar_eventos",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_cache_incompleto_busca_detail_quando_solicitado_depois",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_expoe_timings_e_erros_por_subconsulta",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_isola_cache_por_sessao",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_nova_sessao_pode_emitir_cvn_novamente",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_prefetch_emite_cvn_uma_vez_por_sessao",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_reusa_cache_na_mesma_sessao",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_sem_session_nao_compartilha_cache_global",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_singleflight_mesma_sessao_nao_duplica_chamadas",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_context_use_cache_false_forca_nova_busca",
  "tests/migration/test_invoice_context_framework_native.py::test_invoice_explanation_reusa_evidencia_prefetch_sem_nova_api",
  "tests/migration/test_mcp_contestation_subject_guard.py::test_correct_subject_is_preserved",
  "tests/migration/test_mcp_contestation_subject_guard.py::test_preflight_does_not_replace_explicit_plan_with_vas",
  "tests/migration/test_mcp_contestation_subject_guard.py::test_recovers_explicit_contestation_subject_from_original_text",
  "tests/migration/test_no_legacy_dependency.py::test_no_legacy_imports_or_references",
  "tests/migration/test_original_compliance_anatel.py::test_fluxo_ajuste_com_protocolo_passa",
  "tests/migration/test_original_compliance_anatel.py::test_fluxo_ajuste_sem_protocolo_bloqueia",
  "tests/migration/test_original_compliance_anatel.py::test_fluxo_nao_ajuste_passa_sem_verificar",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_de_protocolo_aceitos[O n\\xfamero de protocolo: 654321 foi registrado.]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_de_protocolo_aceitos[PROTOCOLO: 1000001]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_de_protocolo_aceitos[Protocolo: 123456]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_de_protocolo_aceitos[Seu protocolo \\xe9 200001.]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_de_protocolo_aceitos[protocolo - 9876543]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_invalidos_ou_ausentes_bloqueiam[O ajuste foi feito.]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_invalidos_ou_ausentes_bloqueiam[Protocolo: 12345]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_invalidos_ou_ausentes_bloqueiam[Tudo certo com sua solicita\\xe7\\xe3o.]",
  "tests/migration/test_original_compliance_anatel.py::test_formatos_invalidos_ou_ausentes_bloqueiam[protocolo ABC123]",
  "tests/migration/test_original_compliance_anatel.py::test_pipeline_ajuste_com_protocolo_passa",
  "tests/migration/test_original_compliance_anatel.py::test_pipeline_ajuste_sem_protocolo_nao_bloqueia_cmp",
  "tests/migration/test_original_compliance_anatel.py::test_pipeline_cmp_nao_entra_nos_results",
  "tests/migration/test_original_compliance_anatel.py::test_pipeline_sem_context_nao_exige_protocolo",
  "tests/migration/test_original_compliance_anatel.py::test_requer_protocolo_true_com_protocolo_passa",
  "tests/migration/test_original_compliance_anatel.py::test_requer_protocolo_true_sem_protocolo_bloqueia",
  "tests/migration/test_original_contestation_validation.py::test_contestation_action_calculates_totals_only_for_items_actually_contested",
  "tests/migration/test_original_contestation_validation.py::test_contestation_action_classifies_already_contested_and_missing_requested_item",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_aprova_quando_total_ajustes_dentro_do_limite",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_bloqueia_classe_estrategico_canonica",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_bloqueia_item_fora_da_secao_vas",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_bloqueia_item_inexistente",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_bloqueia_quando_total_ajustes_excede_fatura",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_bloqueia_valor_maior_que_o_item",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_bloqueia_vas_estrategico",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_emite_span_quando_aprova",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_emite_spans_quando_bloqueia",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_prefere_evidencia_vas_quando_item_aparece_em_multiplas_visoes",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_reconhece_vas_por_type_do_billing_analysis",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_span_blocked_inclui_contagens",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_usa_classe_avulso_canonica",
  "tests/migration/test_original_contestation_validation.py::test_validate_contestation_items_valida_todos_antes_de_retornar",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[agebeo max]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[apou]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[babel]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[chat lovme]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[disnei]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[dizer]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[dog lovers]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[fitimiap]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[fluidi]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[fuze forge]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[globoplei]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[gueimiloft]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[instarena]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[ispian]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[jok\\xf4]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[kidsclube]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[laivifci]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[master chefe]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[mestershef]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[mundome]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[netiflix]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[paramaunt]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[plei kids]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[pocoio]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[praim tube]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[star]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[superclip]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[tamboro]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[teplingo]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[tim miusic]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[trucaller]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[trucoler]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[ubook]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[uman fitness]",
  "tests/migration/test_original_item_matcher_transcription.py::test_erro_de_transcricao_ranqueia_familia_no_topo[zodiaque]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[agebeo max]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[apou]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[babel]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[chat lovme]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[disnei]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[dizer]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[dog lovers]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[fitimiap]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[fluidi]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[fuze forge]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[globoplei]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[gueimiloft]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[instarena]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[ispian]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[jok\\xf4]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[kidsclube]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[laivifci]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[master chefe]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[mestershef]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[mundome]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[netiflix]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[paramaunt]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[plei kids]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[pocoio]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[praim tube]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[star]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[superclip]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[tamboro]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[teplingo]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[tim miusic]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[trucaller]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[trucoler]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[ubook]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[uman fitness]",
  "tests/migration/test_original_item_matcher_transcription.py::test_top_k_nao_perde_a_familia[zodiaque]",
  "tests/migration/test_original_vas_cancellation_message.py::test_no_match_credito_todos_nao_encontrados_singular",
  "tests/migration/test_original_vas_cancellation_message.py::test_no_match_misto_credito",
  "tests/migration/test_original_vas_cancellation_message.py::test_no_match_misto_singular_cada_lista",
  "tests/migration/test_original_vas_cancellation_message.py::test_no_match_misto_sms",
  "tests/migration/test_original_vas_cancellation_message.py::test_no_match_sms_todos_nao_encontrados",
  "tests/migration/test_original_vas_cancellation_message.py::test_payload_nao_classificavel_sem_sucesso_retorna_vazio",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_1_1_misto_com_sms_aplica_regra_6",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_1_1_misto_credito",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_2_credito_plural_com_regra_5",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_2_credito_singular",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_3_e_6_2_falha_no_sms_plural",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_3_sucesso_com_sms_singular",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_7_protocolos_multiplos",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_8_adiciona_ponto_quando_texto_nao_termina_em_pontuacao",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_8_erro_terminal_copia_literal_e_protocolo",
  "tests/migration/test_original_vas_cancellation_message.py::test_regra_8_item_ja_contestado_informa_cancelamentos_realizados",
  "tests/migration/test_original_vas_cancellation_message.py::test_sms_enviado_prevalece_quando_contested_items_esta_vazio",
  "tests/migration/test_original_vas_cancellation_message.py::test_sucesso_sem_itens_detalhados_gera_confirmacao_generica",
  "tests/migration/test_original_vas_cancellation_message.py::test_sucesso_sem_itens_e_sem_protocolo_so_confirmacao",
  "tests/migration/test_original_vas_variation.py::test_ambiguidade_falha_fechada",
  "tests/migration/test_original_vas_variation.py::test_ambos_sem_data_falha_fechada",
  "tests/migration/test_original_vas_variation.py::test_avulso_variado_casa_nome_e_valor",
  "tests/migration/test_original_vas_variation.py::test_bucket_por_msisdn",
  "tests/migration/test_original_vas_variation.py::test_candidato_sem_data_nao_pode_ser_eliminado",
  "tests/migration/test_original_vas_variation.py::test_cenario_real_cy0001_pega_so_o_item_que_variou",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[-None]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[0000-12-31T20:53:32.000Z-None]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[01/11/2025-('2025', '11', '01')]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[01/11/25-('2025', '11', '01')]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[2025-11-01T00:00:00.000Z-('2025', '11', '01')]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[25/06/26-('2026', '06', '25')]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[32/13/25-None]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[None-None]",
  "tests/migration/test_original_vas_variation.py::test_charge_date_key_normaliza_ou_recusa[lixo-None]",
  "tests/migration/test_original_vas_variation.py::test_charge_match_key_normaliza_nome_e_valor",
  "tests/migration/test_original_vas_variation.py::test_charge_match_key_sem_identidade[-19.9]",
  "tests/migration/test_original_vas_variation.py::test_charge_match_key_sem_identidade[Carnal Mensal-None]",
  "tests/migration/test_original_vas_variation.py::test_charge_match_key_sem_identidade[Carnal Mensal-n/a]",
  "tests/migration/test_original_vas_variation.py::test_charge_match_key_sem_identidade[None-19.9]",
  "tests/migration/test_original_vas_variation.py::test_cobranca_duplicada_conta_as_duas",
  "tests/migration/test_original_vas_variation.py::test_cobranca_so_na_linha_secundaria_casa_naquela_linha",
  "tests/migration/test_original_vas_variation.py::test_data_unica_casa_item_em_outro_bucket_da_fatura_atual",
  "tests/migration/test_original_vas_variation.py::test_data_unica_casando_a_atual_conta_como_entrada",
  "tests/migration/test_original_vas_variation.py::test_data_unica_sem_casar_a_atual_conta_como_saida",
  "tests/migration/test_original_vas_variation.py::test_data_unica_sem_current_invoice_nao_oferta",
  "tests/migration/test_original_vas_variation.py::test_desc_devolvido_e_o_cru_da_fatura",
  "tests/migration/test_original_vas_variation.py::test_descarte_emite_exatamente_um_evento_por_cobranca",
  "tests/migration/test_original_vas_variation.py::test_duas_cobrancas_identicas_novas_contam_as_duas",
  "tests/migration/test_original_vas_variation.py::test_duas_identicas_com_uma_na_passada_conta_apenas_uma",
  "tests/migration/test_original_vas_variation.py::test_duas_variacoes_e_duas_identidades_uma_sem_msisdn",
  "tests/migration/test_original_vas_variation.py::test_entrou_na_atual_e_detectado",
  "tests/migration/test_original_vas_variation.py::test_estrategico_com_nome_qualificado_continua_fora",
  "tests/migration/test_original_vas_variation.py::test_explained_charges_degrada_sem_quebrar[   ]",
  "tests/migration/test_original_vas_variation.py::test_explained_charges_degrada_sem_quebrar[None]",
  "tests/migration/test_original_vas_variation.py::test_explained_charges_degrada_sem_quebrar[]",
  "tests/migration/test_original_vas_variation.py::test_explained_charges_degrada_sem_quebrar[texto sem nada]",
  "tests/migration/test_original_vas_variation.py::test_explained_charges_degrada_sem_quebrar[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]",
  "tests/migration/test_original_vas_variation.py::test_explained_charges_so_extrai_bullet_com_data",
  "tests/migration/test_original_vas_variation.py::test_explicacao_nao_altera_casamento_ja_valido",
  "tests/migration/test_original_vas_variation.py::test_fatura_realista_expoe_so_os_avulsos_que_entraram",
  "tests/migration/test_original_vas_variation.py::test_forma_alternativa_ddmmyyyy_e_float",
  "tests/migration/test_original_vas_variation.py::test_grupo_avulso_ausente",
  "tests/migration/test_original_vas_variation.py::test_grupo_streaming_fora_do_recorte_avulso",
  "tests/migration/test_original_vas_variation.py::test_guard_classe_mista_na_mesma_fatura",
  "tests/migration/test_original_vas_variation.py::test_guard_nome_estrategico_no_bucket_avulso_da_api",
  "tests/migration/test_original_vas_variation.py::test_guards_valem_no_passe_por_data",
  "tests/migration/test_original_vas_variation.py::test_hint_nao_e_reutilizado_por_duas_cobrancas",
  "tests/migration/test_original_vas_variation.py::test_inalterados_nao_entram",
  "tests/migration/test_original_vas_variation.py::test_item_sem_valor_nao_entra",
  "tests/migration/test_original_vas_variation.py::test_mesma_cobranca_em_duas_linhas_falha_fechada",
  "tests/migration/test_original_vas_variation.py::test_mesmo_valor_produtos_diferentes_datas_distintas",
  "tests/migration/test_original_vas_variation.py::test_msisdn_ausente_continua_bloqueando_no_passe_por_data",
  "tests/migration/test_original_vas_variation.py::test_msisdn_ausente_nao_produz_item_cancelavel",
  "tests/migration/test_original_vas_variation.py::test_mudanca_de_valor_conta_o_valor_novo",
  "tests/migration/test_original_vas_variation.py::test_multiplicidade_preservada_quando_a_contagem_bate",
  "tests/migration/test_original_vas_variation.py::test_multiplicidade_real_dois_hints_casam_dois_itens",
  "tests/migration/test_original_vas_variation.py::test_nome_curto_casa_com_nome_qualificado_da_fatura",
  "tests/migration/test_original_vas_variation.py::test_nome_da_variacao_mais_longo_que_o_da_fatura_nao_casa",
  "tests/migration/test_original_vas_variation.py::test_nome_identico_continua_casando_pela_primeira_passada",
  "tests/migration/test_original_vas_variation.py::test_nome_qualificado_casa_por_valor_e_data",
  "tests/migration/test_original_vas_variation.py::test_nome_qualificado_com_data_divergente_nao_casa",
  "tests/migration/test_original_vas_variation.py::test_ordem_das_linhas_nao_altera_a_decisao",
  "tests/migration/test_original_vas_variation.py::test_ordem_nao_altera_o_caso_a",
  "tests/migration/test_original_vas_variation.py::test_ordenacao_por_data_nao_lexicografica",
  "tests/migration/test_original_vas_variation.py::test_passe_residual_exige_cardinalidade_exata",
  "tests/migration/test_original_vas_variation.py::test_payload_invalido_devolve_vazio[grupo-sem-items]",
  "tests/migration/test_original_vas_variation.py::test_payload_invalido_devolve_vazio[grupos-invalidos]",
  "tests/migration/test_original_vas_variation.py::test_payload_invalido_devolve_vazio[lista-vazia]",
  "tests/migration/test_original_vas_variation.py::test_payload_invalido_devolve_vazio[none]",
  "tests/migration/test_original_vas_variation.py::test_payload_invalido_devolve_vazio[tipo-errado]",
  "tests/migration/test_original_vas_variation.py::test_payload_invalido_devolve_vazio[vazio]",
  "tests/migration/test_original_vas_variation.py::test_prefixo_de_tokens_desligado_por_padrao",
  "tests/migration/test_original_vas_variation.py::test_prefixo_no_meio_do_nome_nao_casa",
  "tests/migration/test_original_vas_variation.py::test_removido_nao_oferta",
  "tests/migration/test_original_vas_variation.py::test_resolucao_parcial_e_proibida",
  "tests/migration/test_original_vas_variation.py::test_sem_fatura_devolve_none",
  "tests/migration/test_original_vas_variation.py::test_sem_hint_para_a_cobranca_falha_fechada",
  "tests/migration/test_original_vas_variation.py::test_sem_variacao_devolve_lista_vazia",
  "tests/migration/test_original_vas_variation.py::test_sentinela_na_explicacao_nao_vira_evidencia",
  "tests/migration/test_original_vas_variation.py::test_streaming_e_ignorado",
  "tests/migration/test_original_vas_variation.py::test_titular_e_dependente_datas_diferentes_casa_a_linha_certa",
  "tests/migration/test_original_vas_variation.py::test_titular_e_dependente_mesma_data_falha_fechada",
  "tests/migration/test_original_vas_variation.py::test_uma_variacao_e_duas_identidades_uma_sem_msisdn_falha_fechada",
  "tests/migration/test_original_vas_variation.py::test_valor_divergente_entre_as_fontes_nao_casa",
  "tests/migration/test_original_vas_variation.py::test_valor_divergente_nao_casa_mesmo_com_prefixo",
  "tests/migration/test_original_vas_variation.py::test_variado_ausente_da_fatura_e_logado",
  "tests/migration/test_original_vas_variation.py::test_variation_source_cai_no_invoice_detail",
  "tests/migration/test_original_vas_variation.py::test_variation_source_prefere_a_analise",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_ignora_grupo_que_nao_e_vas",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_le_a_analise_do_invoice_detail_como_fallback",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_nao_consulta_a_fatura",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_particiona_pela_uniao_dos_grupos",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_pega_o_avulso_tambem",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_pega_o_estrategico_que_variou",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_sem_analise_devolve_vazio",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_sem_variacao_devolve_vazio",
  "tests/migration/test_original_vas_variation.py::test_vas_variado_soma_os_dois_grupos",
  "tests/migration/test_original_vas_variation.py::test_vencimento_ilegivel_aborta",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A01-fluid-light-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A02-fluid-premium-x-light]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A03-aya-books-x-audiobooks]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A04-aya-ensinah-x-books]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A05-exa-seguranca-x-cloud]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A06-bancah-jornais-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A07-itgame-light-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A08-aluguel-filme-1-x-2]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A09-tim-games-mensal-x-semanal]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A10-kids-plus-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A11-exa-premium-x-protecao]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A12-tim-games-prefixo]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A13-fit-app-x-fit-me-app]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A14-tim-music-plus-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[A15-kids-prefixo]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B01-fitme-16.99-x-17.00]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B02-fitme-16.99-x-16.98]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B03-fluid-14.99-x-15.00]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B04-exa-9.99-x-9.98]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B05-fitme-prefixo-valor-errado]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B06-aya-24.90-x-24.91]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B07-itgame-12.90-x-12.09]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[B08-fitme-16.99-x-169.90]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[C01-hbo-secao-terceiros]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[C02-netflix-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[C03-youtube-mis-bucket]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[C04-deezer-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[C05-apple-music-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[C06-bundle-incluso]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[C07-fitme-classificado-estrategico]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D01-fitme-dois-candidatos]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D02-fitme-tres-candidatos]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D03-aya-tres-marcas]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D04-mesmo-nome-duas-linhas]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D05-duplicata-mesma-linha]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D06-fluid-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D07-exa-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[D08-bancah-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[E01-prefixo-invertido]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[E02-substring-no-meio]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[E03-sufixo-games-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[E04-token-parcial-tube]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[E05-token-solto-app]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[E06-fitme-fail-closed-por-padrao]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[F01-msisdn-ausente]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[F02-item-na-linha-secundaria]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[F03-secao-sem-classe]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[F04-desc-vazia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[F05-valor-nao-parseavel]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_explicacao_sem_data_nao_altera_nenhum_dos_50[F06-fatura-sem-o-item]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_flag_liga_a_segunda_passada_e_so_isso",
  "tests/migration/test_original_vas_variation_adversarial.py::test_flag_ligada_nao_reabre_msisdn_nem_ambiguidade",
  "tests/migration/test_original_vas_variation_adversarial.py::test_guards_de_prefixo_valem_com_a_flag_ligada[E01-prefixo-invertido]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_guards_de_prefixo_valem_com_a_flag_ligada[E02-substring-no-meio]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_guards_de_prefixo_valem_com_a_flag_ligada[E03-sufixo-games-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_guards_de_prefixo_valem_com_a_flag_ligada[E04-token-parcial-tube]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_guards_de_prefixo_valem_com_a_flag_ligada[E05-token-solto-app]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_guards_de_prefixo_valem_com_a_flag_ligada[E06-fitme-fail-closed-por-padrao]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A01-fluid-light-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A02-fluid-premium-x-light]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A03-aya-books-x-audiobooks]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A04-aya-ensinah-x-books]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A05-exa-seguranca-x-cloud]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A06-bancah-jornais-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A07-itgame-light-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A08-aluguel-filme-1-x-2]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A09-tim-games-mensal-x-semanal]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A10-kids-plus-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A11-exa-premium-x-protecao]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A12-tim-games-prefixo]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A13-fit-app-x-fit-me-app]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A14-tim-music-plus-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[A15-kids-prefixo]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B01-fitme-16.99-x-17.00]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B02-fitme-16.99-x-16.98]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B03-fluid-14.99-x-15.00]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B04-exa-9.99-x-9.98]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B05-fitme-prefixo-valor-errado]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B06-aya-24.90-x-24.91]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B07-itgame-12.90-x-12.09]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[B08-fitme-16.99-x-169.90]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[C01-hbo-secao-terceiros]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[C02-netflix-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[C03-youtube-mis-bucket]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[C04-deezer-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[C05-apple-music-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[C06-bundle-incluso]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[C07-fitme-classificado-estrategico]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D01-fitme-dois-candidatos]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D02-fitme-tres-candidatos]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D03-aya-tres-marcas]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D04-mesmo-nome-duas-linhas]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D05-duplicata-mesma-linha]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D06-fluid-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D07-exa-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[D08-bancah-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[E01-prefixo-invertido]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[E02-substring-no-meio]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[E03-sufixo-games-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[E04-token-parcial-tube]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[E05-token-solto-app]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[E06-fitme-fail-closed-por-padrao]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[F01-msisdn-ausente]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[F02-item-na-linha-secundaria]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[F03-secao-sem-classe]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[F04-desc-vazia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[F05-valor-nao-parseavel]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_matcher_determinístico_nao_produz_falso_positivo[F06-fatura-sem-o-item]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A01-fluid-light-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A02-fluid-premium-x-light]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A03-aya-books-x-audiobooks]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A04-aya-ensinah-x-books]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A05-exa-seguranca-x-cloud]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A06-bancah-jornais-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A07-itgame-light-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A08-aluguel-filme-1-x-2]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A09-tim-games-mensal-x-semanal]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A10-kids-plus-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A11-exa-premium-x-protecao]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A12-tim-games-prefixo]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A13-fit-app-x-fit-me-app]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A14-tim-music-plus-x-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[A15-kids-prefixo]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B01-fitme-16.99-x-17.00]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B02-fitme-16.99-x-16.98]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B03-fluid-14.99-x-15.00]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B04-exa-9.99-x-9.98]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B05-fitme-prefixo-valor-errado]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B06-aya-24.90-x-24.91]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B07-itgame-12.90-x-12.09]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[B08-fitme-16.99-x-169.90]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[C01-hbo-secao-terceiros]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[C02-netflix-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[C03-youtube-mis-bucket]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[C04-deezer-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[C05-apple-music-em-secao-avulsa]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[C06-bundle-incluso]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[C07-fitme-classificado-estrategico]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D01-fitme-dois-candidatos]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D02-fitme-tres-candidatos]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D03-aya-tres-marcas]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D04-mesmo-nome-duas-linhas]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D05-duplicata-mesma-linha]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D06-fluid-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D07-exa-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[D08-bancah-familia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[E01-prefixo-invertido]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[E02-substring-no-meio]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[E03-sufixo-games-premium]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[E04-token-parcial-tube]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[E05-token-solto-app]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[E06-fitme-fail-closed-por-padrao]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[F01-msisdn-ausente]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[F02-item-na-linha-secundaria]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[F03-secao-sem-classe]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[F04-desc-vazia]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[F05-valor-nao-parseavel]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_item_devolvido_e_estrategico_ou_bundle[F06-fatura-sem-o-item]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_threshold_de_similaridade_zera_falso_positivo[0.85]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_threshold_de_similaridade_zera_falso_positivo[0.95]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_threshold_de_similaridade_zera_falso_positivo[0.97]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_threshold_de_similaridade_zera_falso_positivo[0.99]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_nenhum_threshold_de_similaridade_zera_falso_positivo[0.9]",
  "tests/migration/test_original_vas_variation_adversarial.py::test_shadow_similaridade_tem_overlap_irremovivel",
  "tests/migration/test_original_vas_variation_adversarial.py::test_suite_tem_exatamente_50_casos_com_a_distribuicao_exigida",
  "tests/migration/test_original_vas_variation_adversarial.py::test_valores_sao_decimal_nunca_float",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[contestacao_tool_tipo_atendimento_cancelamento_vas_avulso]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[contestacao_tool_tipo_atendimento_contestacao]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[contestacao_tool_tipo_atendimento_pro_rata]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[contestacao_tool_tipo_atendimento_valor_divergente]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[finalizar_atendimento_erro_no_match]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[finalizar_atendimento_nao_resolvido]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[finalizar_atendimento_outros_assuntos]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[finalizar_atendimento_resolvido]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[finalizar_atendimento_resolvido_outros_assuntos]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[invoice_explanation_nao_registra_nao]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[invoice_explanation_nao_sem_vas_finaliza]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[invoice_explanation_sim_abre_protocolo_aceite]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[pro_rata_aceitou_esclarecimento_registra_mensalidade]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[pro_rata_nao_aceitou_devolve_orquestrador]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[pro_rata_nao_controle_registra_mensalidade]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[vas_bundle_puro_nao_reforca_e_registra_bundle]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[vas_estrategico_nao_com_estrategico_explica_cancelamento]",
  "tests/migration/test_original_workflow_cases.py::test_original_workflow_case_on_framework_runtime[vas_estrategico_sim_finaliza_sem_protocolo_imediato]",
  "tests/migration/test_pro_rata_full_parity.py::test_action_contestacao_pro_rata_usa_items_e_totais",
  "tests/migration/test_pro_rata_full_parity.py::test_action_definir_devolucao_busca_danfe_quando_ausente",
  "tests/migration/test_pro_rata_full_parity.py::test_calculo_falha_quando_danfe_nao_cobre_credito",
  "tests/migration/test_pro_rata_full_parity.py::test_calculo_falha_sem_periodo",
  "tests/migration/test_pro_rata_full_parity.py::test_calculo_pro_rata_outro_plano_30_dias_considera_um_dia_controle",
  "tests/migration/test_pro_rata_full_parity.py::test_calculo_pro_rata_usa_liquido_periodo_e_danfe",
  "tests/migration/test_pro_rata_full_parity.py::test_mensagem_pagamento_sms_soma_items_e_protocolo",
  "tests/migration/test_pro_rata_full_parity.py::test_orientar_pagamento_mantem_composicao_no_llm_do_framework",
  "tests/migration/test_rag_resilience_and_informational_context.py::test_framework_rag_falha_tecnica_nao_quebra_fluxo",
  "tests/migration/test_rag_resilience_and_informational_context.py::test_informational_rag_avulso_preserva_contexto_para_finalizacao",
  "tests/migration/test_rag_resilience_and_informational_context.py::test_informational_rag_estrategico_sem_invoice_detail",
  "tests/migration/test_remaining_command_contracts.py::test_cancelamento_always_sends_non_empty_message_id",
  "tests/migration/test_remaining_command_contracts.py::test_contrato_uses_clientId_not_client_id",
  "tests/migration/test_remaining_command_contracts.py::test_profile_full_uses_original_ClientID_header",
  "tests/migration/test_remaining_command_contracts.py::test_service_request_status_message_id_prioriza_call_id",
  "tests/migration/test_remaining_command_contracts.py::test_sms_preserva_sender_name_original",
  "tests/migration/test_remaining_command_contracts.py::test_vas_history_preserves_original_header_contract",
  "tests/migration/test_tim_contract_parity.py::test_billing_analysis_anexa_transport_metadata_de_tentativas",
  "tests/migration/test_tim_contract_parity.py::test_protocol_v2_contract",
  "tests/migration/test_tim_contract_parity.py::test_rct_retry_policy_preserves_attempt_semantics",
  "tests/migration/test_tim_contracts_and_idempotency.py::test_bill_pdf_and_secure_pdf_are_distinct_contracts",
  "tests/migration/test_tim_contracts_and_idempotency.py::test_cancel_workflow_action_is_idempotent_without_domain_local_cache",
  "tests/migration/test_tim_contracts_and_idempotency.py::test_complete_invoices_preserves_clientid_contract",
  "tests/migration/test_tim_contracts_and_idempotency.py::test_line_info_extracts_nested_social_sec_no",
  "tests/migration/test_tim_contracts_and_idempotency.py::test_query_vas_preserves_original_client_id_and_url",
  "tests/migration/test_tim_event_metadata_parity.py::test_contestacao_vaa007_falha_preserva_protocolo_e_itens",
  "tests/migration/test_tim_event_metadata_parity.py::test_contestacao_vaa_metadata_preserva_contexto_tim_original",
  "tests/migration/test_tim_event_metadata_parity.py::test_finalizacao_cvn010_preserva_protocolos_e_contexto_ura",
  "tests/migration/test_tim_event_metadata_parity.py::test_finalizacao_mpi006_e_sad001_preservam_metadata_conversacional",
  "tests/migration/test_tim_event_metadata_parity.py::test_invoice_explanation_mpi005_preserva_turno_e_contexto",
  "tests/migration/test_tim_event_metadata_parity.py::test_pro_rata_mpi010_preserva_contexto_do_turno",
  "tests/migration/test_tim_event_metadata_parity.py::test_tim_payload_mapper_aceita_agent_specific_data_json_string_historico",
  "tests/migration/test_tim_event_metadata_parity.py::test_vas_bundle_nao_defera_protocolo_e_emite_veb005",
  "tests/migration/test_tim_event_metadata_parity.py::test_vas_estrategico_veb_preserva_turno_e_contexto_ura",
  "tests/migration/test_tool_policy_operation_types.py::test_contas_tool_policies_accept_all_operation_types",
  "tests/migration/test_vaa_dispute_parity.py::test_contestacao_emite_vaa005_006_008_quando_barcode_elegivel",
  "tests/migration/test_vaa_dispute_parity.py::test_contestacao_emite_vaa005_007_quando_provider_falha",
  "tests/migration/test_vaa_dispute_parity.py::test_sms_emite_vaa012_014_e_falha_vaa013_015",
  "tests/migration/test_vaa_dispute_parity.py::test_status_sr_emite_vaa016_ou_017_sem_quebrar_workflow",
  "tests/migration/test_vas_response_renderer.py::test_vas_renderer_does_not_invent_missing_value",
  "tests/migration/test_vas_response_renderer.py::test_vas_renderer_includes_available_values",
  "tests/migration/test_workflow_execution_latch.py::test_latch_nao_duplica_workflow",
  "tests/migration/test_workflow_execution_latch.py::test_transaction_state_patch_preserva_latch",
  "tests/migration/test_workflow_execution_latch.py::test_workflow_completo_e_registrado_sem_pending",
  "tests/migration/test_workflow_execution_latch.py::test_workflow_pausado_ja_e_registrado_como_executado",
  "tests/migration/test_wrapper_last_contracts.py::test_cancelamento_boleto_zerado_ou_nao_nao_vaza_sms_sent",
  "tests/migration/test_wrapper_last_contracts.py::test_cancelamento_compositor_e_deterministico_sem_diretiva_llm",
  "tests/migration/test_wrapper_last_contracts.py::test_cancelamento_corrige_linha_item_por_invoice_detail",
  "tests/migration/test_wrapper_last_contracts.py::test_invoice_explanation_preserva_fatura_e_analise_variacao_no_input",
  "tests/migration/test_wrapper_last_contracts.py::test_pro_rata_devolucao_forca_composicao_llm_framework",
  "tests/migration/test_wrapper_last_contracts.py::test_rag_dominio_apenas_declara_queries_e_framework_executa",
  "tests/migration/test_wrapper_last_contracts.py::test_vas_estrategico_normaliza_nome_e_agrupa_linhas"
]