tests/gateway/test_korean_humanizer.py::test_daily_accepts_natural_prose_and_preserves_locked_copy tests/gateway/test_korean_humanizer.py::test_weekly_rewrites_only_interpretation_and_rationale tests/gateway/test_korean_humanizer.py::test_adaptive_rewrites_review_copy_but_not_decision_or_delivery_state tests/gateway/test_korean_humanizer.py::test_new_number_or_internal_code_rejects_the_whole_response tests/gateway/test_korean_humanizer.py::test_malformed_or_partial_response_falls_back_exactly tests/gateway/test_korean_humanizer.py::test_humanize_makes_one_request_and_provider_failure_is_canonical tests/gateway/test_korean_humanizer.py::test_finite_pipeline_allows_three_to_five_approved_principles[3] tests/gateway/test_korean_humanizer.py::test_finite_pipeline_allows_three_to_five_approved_principles[4] tests/gateway/test_korean_humanizer.py::test_finite_pipeline_allows_three_to_five_approved_principles[5] tests/gateway/test_korean_humanizer.py::test_finite_pipeline_rejects_principle_counts_outside_bounds[2] tests/gateway/test_korean_humanizer.py::test_finite_pipeline_rejects_principle_counts_outside_bounds[6] tests/gateway/test_korean_humanizer.py::test_forged_finite_ids_fail_closed_without_retry[coach-atom_ids] tests/gateway/test_korean_humanizer.py::test_forged_finite_ids_fail_closed_without_retry[coach-principle_ids] tests/gateway/test_korean_humanizer.py::test_forged_finite_ids_fail_closed_without_retry[polish-variant_id] tests/gateway/test_korean_humanizer.py::test_oversized_stage_json_fails_closed[coach] tests/gateway/test_korean_humanizer.py::test_oversized_stage_json_fails_closed[polish] tests/gateway/test_korean_humanizer.py::test_stage_one_exception_returns_canonical_without_retry tests/gateway/test_korean_humanizer.py::test_stage_two_exception_returns_validated_coach_without_retry tests/gateway/test_korean_humanizer.py::test_processing_gate_revocation_between_stages_returns_canonical tests/gateway/test_korean_humanizer.py::test_processing_gate_revocation_before_final_output_returns_canonical tests/gateway/test_korean_humanizer.py::test_pipeline_receipt_contains_only_opaque_ids_and_digests tests/gateway/test_korean_humanizer.py::test_stage_one_response_template_requires_exact_hard_identity_copy tests/gateway/test_korean_humanizer.py::test_stage_one_requires_exact_hard_identity_field[missing] tests/gateway/test_korean_humanizer.py::test_stage_one_requires_exact_hard_identity_field[alias] tests/gateway/test_korean_humanizer.py::test_stage_two_exception_rechecks_final_processing_gate tests/gateway/test_korean_humanizer.py::test_unbounded_receipt_ids_fail_before_model_calls tests/gateway/test_korean_humanizer.py::test_extra_stage_slot_is_rejected tests/gateway/test_korean_humanizer.py::test_mismatched_playbook_or_revision_is_zero_call_canonical[surface] tests/gateway/test_korean_humanizer.py::test_mismatched_playbook_or_revision_is_zero_call_canonical[revision] tests/gateway/test_korean_humanizer.py::test_malformed_surrogate_response_falls_back_without_raising tests/gateway/test_korean_humanizer.py::test_external_revision_binding_is_explicit_and_exact[None] tests/gateway/test_korean_humanizer.py::test_external_revision_binding_is_explicit_and_exact[] tests/gateway/test_korean_humanizer.py::test_external_revision_binding_is_explicit_and_exact[external_binding2] tests/gateway/test_korean_humanizer.py::test_external_revision_binding_is_explicit_and_exact[1] tests/gateway/test_korean_humanizer.py::test_external_revision_binding_is_explicit_and_exact[bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb] tests/gateway/test_korean_humanizer.py::test_malformed_grounding_fields_fail_closed_without_hashing_or_calls[approved_principles-None] tests/gateway/test_korean_humanizer.py::test_malformed_grounding_fields_fail_closed_without_hashing_or_calls[verified_memory-None] tests/gateway/test_korean_humanizer.py::test_malformed_grounding_fields_fail_closed_without_hashing_or_calls[source_cluster_ids-value2] tests/gateway/test_korean_humanizer.py::test_malformed_grounding_fields_fail_closed_without_hashing_or_calls[excluded_risk_ids-None] tests/gateway/test_korean_humanizer.py::test_malformed_grounding_fields_fail_closed_without_hashing_or_calls[revision_binding_digest-None] tests/gateway/test_korean_humanizer.py::test_malformed_grounding_fields_fail_closed_without_hashing_or_calls[decision_id-customer_001] tests/gateway/test_korean_humanizer.py::test_malformed_grounding_fields_fail_closed_without_hashing_or_calls[playbook_id-None] tests/gateway/test_korean_humanizer.py::test_verified_memory_temporal_grammar_requires_real_iso_values[memory0] tests/gateway/test_korean_humanizer.py::test_verified_memory_temporal_grammar_requires_real_iso_values[memory1] tests/gateway/test_korean_humanizer.py::test_verified_memory_temporal_grammar_requires_real_iso_values[memory2] tests/gateway/test_korean_humanizer.py::test_verified_memory_temporal_grammar_requires_real_iso_values[memory3] tests/gateway/test_korean_humanizer.py::test_verified_memory_temporal_grammar_requires_real_iso_values[memory4] tests/gateway/test_korean_humanizer.py::test_adaptive_projection_requires_the_exact_frozen_class_identity tests/gateway/test_korean_humanizer.py::test_adaptive_projection_allows_optional_averages_and_rate_to_be_none tests/gateway/test_korean_humanizer.py::test_adaptive_projection_rejects_forged_field_types_and_revision[updates0] tests/gateway/test_korean_humanizer.py::test_adaptive_projection_rejects_forged_field_types_and_revision[updates1] tests/gateway/test_korean_humanizer.py::test_adaptive_projection_rejects_forged_field_types_and_revision[updates2] tests/gateway/test_korean_humanizer.py::test_adaptive_projection_rejects_forged_field_types_and_revision[updates3] tests/gateway/test_korean_humanizer.py::test_adaptive_projection_rejects_forged_field_types_and_revision[updates4] tests/gateway/test_korean_humanizer.py::test_adaptive_projection_rejects_forged_field_types_and_revision[updates5] tests/gateway/test_korean_humanizer.py::test_adaptive_projection_rejects_forged_field_types_and_revision[updates6] tests/gateway/test_korean_humanizer.py::test_invalid_surface_or_canonical_is_canonical_with_zero_calls[None-\uc624\ub298 \uccb4\ud06c\uc778 \uc644\ub8cc\n\n- \uccb4\uc911: 78.10kg\n- \uc12d\ucde8: 2,310kcal\n\n\uc800\uc7a5\ub41c \uc624\ub298 \uae30\ub85d\uc744 \ud655\uc778\ud588\uc2b5\ub2c8\ub2e4.\n\n\uc624\ub298 \ud560 \uc77c\n\n- \ud604\uc7ac \uc2dd\uc0ac\ub7c9 \uc720\uc9c0] tests/gateway/test_korean_humanizer.py::test_invalid_surface_or_canonical_is_canonical_with_zero_calls[daily-None] tests/gateway/test_korean_humanizer.py::test_invalid_surface_or_canonical_is_canonical_with_zero_calls[daily-canonical2] tests/gateway/test_korean_humanizer.py::test_invalid_surface_or_canonical_is_canonical_with_zero_calls[unknown-\uc624\ub298 \uccb4\ud06c\uc778 \uc644\ub8cc\n\n- \uccb4\uc911: 78.10kg\n- \uc12d\ucde8: 2,310kcal\n\n\uc800\uc7a5\ub41c \uc624\ub298 \uae30\ub85d\uc744 \ud655\uc778\ud588\uc2b5\ub2c8\ub2e4.\n\n\uc624\ub298 \ud560 \uc77c\n\n- \ud604\uc7ac \uc2dd\uc0ac\ub7c9 \uc720\uc9c0]