<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="55" time="24.461" timestamp="2026-08-14T09:23:42.417227+00:00" hostname="cube-B850M-AORUS-ELITE-WIFI6E-ICE"><testcase classname="tests.gateway.test_trainer_free_v1_contract" name="test_callback_v2_and_historical_non1_is_rejected" time="0.007" /><testcase classname="tests.gateway.test_trainer_free_v1_contract" name="test_owner_review_card_has_exact_v1_authority" time="0.004" /><testcase classname="tests.gateway.test_trainer_free_v1_contract" name="test_legacy_runtime_modules_are_absent" time="0.004" /><testcase classname="tests.gateway.test_trainer_free_v1_contract" name="test_owner_review_safety_notes_are_serialized_without_trainer_handoff_data" time="0.003" /><testcase classname="tests.gateway.test_trainer_free_v1_contract" name="test_v1_runtime_closure_has_no_trainer_scaffolding_or_projection_keys" time="0.015" /><testcase classname="tests.gateway.test_trainer_free_v1_contract" name="test_inventory_runtime_roots_have_no_trainer_token_or_namespace" time="0.223" /><testcase classname="tests.gateway.test_telegram_customer_bootstrap" name="test_customer_dm_invite_is_single_use_and_restart_safe" time="0.010" /><testcase classname="tests.gateway.test_telegram_customer_bootstrap" name="test_consent_receipt_requires_exact_reserved_attempt" time="0.013" /><testcase classname="tests.gateway.test_telegram_customer_bootstrap" name="test_claimed_customer_registers_disabled_without_other_role" time="0.011" /><testcase classname="tests.gateway.test_telegram_customer_bootstrap" name="test_enabled_adapter_builds_the_customer_bootstrap_transport" time="0.004" /><testcase classname="tests.gateway.test_telegram_customer_bootstrap" name="test_restart_recovery_registers_and_publishes_once" time="0.015" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_collecting_accepts_authorized_direct_text_without_reply" time="0.004" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_stale_reply_emits_structured_rejection_reason" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_staff_surface_cannot_submit_customer_answer" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_customer_callback_checks_customer_dm_not_staff_forum" time="0.003" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_direct_entry" name="test_registry_routes_keep_customer_dm_separate_from_staff" time="0.003" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_dualcoach_golden_path" time="0.265" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_nutrition_live_reload_keeps_disable_and_revoke_live" time="0.029" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_duplicate_final_checkin_has_one_generation_job_and_zero_delivery" time="0.039" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_terminal_invalid_model_output_repairs_the_existing_token_once_after_restart" time="0.018" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_draft_generation_rejects_stale_card_cross_revision_and_invalid_payload" time="0.014" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_coach_v2_regenerate_control_issues_one_new_generation" time="0.014" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_regeneration_restart_recovers_projection_failure_without_duplicate_child" time="0.014" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_concurrent_regeneration_retries_converge_on_one_child" time="0.015" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_coach_v2_operator_target_edit_updates_review_and_requires_reapproval" time="0.014" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_owner_draft_lifecycle_is_canonical_and_preapproval_send_is_rejected" time="0.015" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_approval_receipt_is_immutable_duplicate_idempotent_and_zero_delivery" time="0.011" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_concurrent_send_after_hold_decision_cannot_reserve_delivery" time="0.014" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_concurrent_approve_and_send_never_uses_preapproval_card" time="0.011" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_delivery_outbox_restart_and_unknown_outcome_crash_matrix" time="0.017" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_delivery_outbox_atomic_dispatch_claim_has_one_winner" time="0.020" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_delivery_outbox_provider_timeout_callback_never_resends" time="0.016" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_delivery_outbox_receipt_crash_requires_bounded_reconciliation" time="0.025" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_approved_edit_creates_child_revision_and_requires_reapproval" time="0.021" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_sent_audit_write_failure_leaves_receipt_for_retry_without_resend" time="0.024" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_telegram_customer_transport_rejects_wrong_customer_or_noncanonical_destination[user_id-other-user]" time="0.006" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_telegram_customer_transport_rejects_wrong_customer_or_noncanonical_destination[chat_id-other-chat]" time="0.005" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_telegram_customer_transport_rejects_wrong_customer_or_noncanonical_destination[topic_id-other-topic]" time="0.005" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_approve_and_send_uses_fresh_action_capabilities_and_stops_on_failure" time="0.003" /><testcase classname="tests.gateway.test_nutrition_coaching" name="test_dual_coach_review_publication_claim_is_append_only_across_restart" time="0.004" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_review_session_wrong_user_and_stale_duplicate_are_terminal" time="0.007" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_live_telegram_adaptive_callback_rejects_non_owner_or_wrong_space" time="0.003" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_adaptive_send_callback_duplicate_is_exact_and_does_not_retry" time="3.284" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_receipt_only_audit_pending_recovery_survives_restart_without_provider" time="3.404" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_approve_and_send_first_click_is_exact_read_only_preview" time="2.985" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_confirm_send_runs_existing_composite_once" time="3.500" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_confirm_send_unknown_delivery_is_terminal_and_not_replayed" time="3.560" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_view_callback_stale_forwarded_or_pinned_replay_rejects[message]" time="2.913" /><testcase classname="tests.gateway.test_adaptive_nutrition" name="test_view_callback_stale_forwarded_or_pinned_replay_rejects[pins]" time="3.063" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_callback_observability" name="test_restart_recovers_committed_owner_approval_without_second_review" time="0.006" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_real_service_stale_reconciliation_publishes_fresh_summary" time="0.039" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding" name="test_review_callback_rejects_wrong_user_before_service_mutation" time="0.005" /><testcase classname="tests.gateway.test_telegram_nutrition_onboarding_preview_runtime" name="test_concurrent_duplicate_reply_advances_exactly_once" time="0.004" /><testcase classname="tests.gateway.test_telegram_physique_checkin.TestNutritionScheduleDelivery" name="test_concurrent_ticks_share_one_durable_provider_authority" time="0.012" /><testcase classname="tests.gateway.test_telegram_physique_checkin" name="test_dual_coach_review_recovery_is_topic_bound_and_deduplicated" time="0.003" /></testsuite></testsuites>