[ "agent_framework_oci/tests/test_phraseology_rewrite_revalidation.py::test_phraseology_block_is_rewritten_once_and_all_rails_are_revalidated", "agent_framework_oci/tests/test_phraseology_rewrite_revalidation.py::test_phraseology_rewrite_does_not_loop_when_rewritten_text_is_still_blocked", "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_output_guardrail_context_inclui_pedido_atual_para_aoferta", "tests/migration/test_adversarial_parity.py::test_output_guardrail_context_nao_duplica_user_text_ja_no_historico", "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_external_guardrails_judges_spi.py::test_contas_config_substitui_policies_tim_por_extensoes", "tests/migration/test_external_guardrails_judges_spi.py::test_external_judges_load_from_agent_config", "tests/migration/test_external_guardrails_judges_spi.py::test_sync_external_rail_runs_in_worker_thread", "tests/migration/test_external_guardrails_judges_spi.py::test_sync_judges_run_concurrently_in_threads", "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_context_dict_history.py::test_format_context_block_suporta_history_em_dict_do_contas", "tests/migration/test_guardrail_original_defaults_parity.py::test_framework_loader_instancia_coer_e_preserva_fraseologia_tim_desabilitada", "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_cancel_preflight_exact_plan_is_out_of_scope_and_never_rebound_to_vas", "tests/migration/test_mcp_contestation_subject_guard.py::test_correct_subject_is_preserved", "tests/migration/test_mcp_contestation_subject_guard.py::test_invoice_resolver_exact_plan_identity_wins_before_similarity_matcher", "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_observability_code_mapping.py::test_agent_observer_maps_before_analytics_and_event_bus", "tests/migration/test_observability_code_mapping.py::test_contas_telemetry_observer_returns_mapped_envelope", "tests/migration/test_observability_code_mapping.py::test_generation_observation_name_is_mapped_before_langfuse_and_event_bus", "tests/migration/test_observability_code_mapping.py::test_langfuse_analytics_direct_sdk_path_also_maps_observation_name", "tests/migration/test_observability_code_mapping.py::test_mapper_passthrough_and_contract_fields", "tests/migration/test_observability_code_mapping.py::test_span_name_is_mapped_before_otel_event_bus_and_langfuse", "tests/migration/test_observability_code_mapping.py::test_telemetry_maps_direct_events", "tests/migration/test_observability_default_overlay_compatibility.py::test_agent_overlay_can_override_default_action", "tests/migration/test_observability_default_overlay_compatibility.py::test_agent_overlay_overrides_only_declared_entries", "tests/migration/test_observability_default_overlay_compatibility.py::test_framework_default_carries_legacy_phraseology_rewrite_policy", "tests/migration/test_observability_default_overlay_compatibility.py::test_old_agent_without_mapping_gets_framework_default_registry", "tests/migration/test_observability_default_overlay_compatibility.py::test_old_legacy_rail_keeps_retry_with_new_framework_and_no_agent_mapping", "tests/migration/test_observability_mapping_provider_boundary.py::test_mapping_path_can_resolve_from_python_import_root", "tests/migration/test_observability_mapping_provider_boundary.py::test_provider_maps_guardrail_name_before_telemetry", "tests/migration/test_observability_mapping_registry_actions.py::test_action_resolution_accepts_internal_and_external_aliases", "tests/migration/test_observability_mapping_registry_actions.py::test_compact_and_rich_mapping_are_backward_compatible", "tests/migration/test_observability_mapping_registry_actions.py::test_guardrails_yaml_policy_precedes_registry_action", "tests/migration/test_observability_mapping_registry_actions.py::test_output_supervisor_uses_registry_action_without_name_hardcode", "tests/migration/test_observability_mapping_registry_actions.py::test_parallel_executor_uses_same_registry", "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_output_supervisor_no_contract_hardcodes.py::test_output_supervisor_contains_no_customer_grl_taxonomy_or_named_policy_switches", "tests/migration/test_output_supervisor_no_contract_hardcodes.py::test_retry_is_driven_by_metadata_not_rail_name", "tests/migration/test_output_supervisor_no_contract_hardcodes.py::test_rewrite_is_driven_by_remediation_metadata", "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_real_legacy_integration_compat.py::test_cancelamento_accepts_original_cancellation_aliases", "tests/migration/test_real_legacy_integration_compat.py::test_divergencia_preserves_original_user_password_basic_auth", "tests/migration/test_real_legacy_integration_compat.py::test_profile_bill_uses_complete_invoices_contract_like_original_factory", "tests/migration/test_real_legacy_integration_compat.py::test_profile_full_appends_msisdn_when_original_url_has_no_placeholder", "tests/migration/test_real_legacy_integration_compat.py::test_query_vas_accepts_original_aliases_and_timeout", "tests/migration/test_real_legacy_integration_compat.py::test_query_vas_legacy_base_url_appends_country_code_and_msisdn", "tests/migration/test_real_legacy_integration_compat.py::test_vas_history_and_contrato_default_client_id_match_original", "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" ]