<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="94" time="0.908" timestamp="2026-08-16T22:21:41.378874+09:00" hostname="cube-B850M-AORUS-ELITE-WIFI6E-ICE"><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_cloud_attempt_does_not_fall_through_to_second_provider" time="0.171" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_preflight_failure_does_not_read_uninitialized_attempt_state" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_adapter_contract_is_present" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_onboarding_authority_maps_general_owner_topic_to_zero" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_operator_card_shows_facts_deltas_warnings_and_controls" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_coach_v2_operator_edit_accepts_targets_and_customer_copy" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_production_service_requires_persisted_reconciliation" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_callback_is_opaque_bounded_and_round_trips" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_ready_publication_generation_follows_owner_review" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_ready_card_announces_activation_readiness_to_owner" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_consent_withdrawal_bypasses_onboarding_answer_capture" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_consent_withdrawal_text_short_circuits_handle_text_without_bootstrap_lookup" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[actor_user_id-999]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[chat_id--999]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[topic_id-999]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[message_id-999]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[generation-8]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[action-approve]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_wrong_or_stale_evidence_is_consumed_without_mutation[member_present-False]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_exact_evidence_can_mutate_and_never_falls_through" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_unknown_callback_is_consumed_without_mutation" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_provider_unknown_publication_is_not_retried" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_committed_publication_is_reused_after_restart" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_gateway_outbox_never_retries_an_unreceipted_delivery" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_legacy_unverified_ledger_is_quarantined_without_authorizing_delivery" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_forged_receipted_outbox_row_never_commits_the_profile" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_forged_emergency_receipt_never_promotes_the_primary_ledger" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_primary_receipt_failure_uses_emergency_evidence_before_commit" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_emergency_receipt_recovers_after_primary_and_commit_crashes" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_total_receipt_persistence_failure_marks_unknown_without_resend" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_recovery_rejects_current_store_payload_mismatch" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_receipt_recovery_requires_the_current_canonical_route" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_authority_less_provider_result_marks_publication_unknown" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_preexisting_prepared_publication_without_gateway_receipt_is_not_sent" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_gateway_outbox_recovers_provider_receipt_after_commit_crash" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_waiting_activation_republishes_the_current_durable_card" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_optional_question_force_reply_preserves_skip_affordance" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_required_question_never_offers_skip" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_summary_offers_confirm_and_revise_controls" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_stale_reconciliation_record_digest_triggers_fresh_publication" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_real_service_stale_reconciliation_publishes_fresh_summary" time="0.009" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_cards_offer_all_canonical_actions[owner_review-labels0-actions0]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callbacks_use_canonical_service_and_exact_role_route[op_rev-owner_review-review_as_owner-revise-owner-collecting-revision]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callbacks_use_canonical_service_and_exact_role_route[op_rej-owner_review-review_as_owner-rejected-owner-rejected-rejection]" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_historical_trainer_callback_is_rejected_before_route_or_service_mutation" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callback_rejects_wrong_user_before_service_mutation" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_handle_text_rejects_wrong_user_chat_or_topic_before_publish[999-10-0]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_handle_text_rejects_wrong_user_chat_or_topic_before_publish[10-999-0]" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_handle_text_rejects_wrong_user_chat_or_topic_before_publish[10-10-1]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_optional_question_accepts_typed_skip_from_force_reply" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_rewind_invalidates_changed_question_and_all_dependents" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_continue_later_and_resume_keep_same_domain_session" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_resume_callback_reopens_paused_onboarding_card" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_non1_callback_routes_before_bootstrap_and_generic_branches" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_real_callback_replay_after_transition_republishes_once_and_receipts_once" time="0.012" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_real_text_replay_after_transition_republishes_once_and_receipts_once" time="0.008" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_normalizes_bounded_korean_scalar_forms[height_cm-180cm-180.0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_normalizes_bounded_korean_scalar_forms[height_cm-180 cm-180.0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_normalizes_bounded_korean_scalar_forms[weight_kg-80kg-80.0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_normalizes_bounded_korean_scalar_forms[target_weight_kg-75 kg-75.0]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_normalizes_bounded_korean_scalar_forms[meal_count-4\ub07c-4]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_normalizes_bounded_korean_scalar_forms[meal_count-\ud558\ub8e8 4\ub07c-4]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_normalizes_bounded_korean_scalar_forms[meal_count-\ub124 \ub07c-4]" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_copy" name="test_parse_answer_rejects_ambiguous_meal_count" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_renders_canonical_customer_values" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_renders_provided_items_as_customer_text" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_classifies_safety_review_inputs[conditions-value0]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_classifies_safety_review_inputs[medications-value1]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_classifies_safety_review_inputs[pregnancy_breastfeeding-True]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_classifies_safety_review_inputs[pregnancy_breastfeeding-None]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_classifies_safety_review_inputs[eating_disorder_risk-True]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_authoritative_summary_classifies_safety_review_inputs[eating_disorder_risk-None]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_accepts_exact_advisory_schema" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_accepts_field_keyed_clarification" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_normalizes_bounded_summary_lines" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation0]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation1]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation2]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation3]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation4]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation5]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation6]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation7]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation8]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_unsafe_or_empty_output[mutation9]" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_parse_reconciliation_json_rejects_markdown_wrapping" time="0.003" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_reconciler_uses_configured_model_and_strict_response" time="0.004" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_reconciler_fails_closed_without_consent_or_client" time="0.005" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_production_attestation_card_includes_advisory_summary" time="0.005" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_resolved_clarification_discards_stale_advisory_sections" time="0.004" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_production_ambiguity_publishes_field_bound_force_reply" time="0.004" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_production_clarification_reply_revises_exact_field" time="0.004" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_production_reuses_persisted_next_clarification_after_restart" time="0.004" /><testcase classname="tests.gateway.test_nutrition_onboarding_reconciliation" name="test_exact_attestation_callback_retires_button_and_advances" time="0.005" /></testsuite></testsuites>