[verifier] model.patch applied (70083 bytes)
[verifier] Resetting files touched by test.patch
[verifier] Applying test.patch
[verifier] base pytest rc=0; new pytest rc=0 (nonzero on failing tests is normal; graded from XML)
===== raw suite output: base.log =====
........................................................................ [  2%]
........................................................................ [  4%]
........................................................................ [  6%]
........................................................................ [  9%]
........................................................................ [ 11%]
........................................................................ [ 13%]
........................................................................ [ 15%]
........................................................................ [ 18%]
........................................................................ [ 20%]
........................................................................ [ 22%]
........................................................................ [ 25%]
........................................................................ [ 27%]
........................................................................ [ 29%]
........................................................................ [ 31%]
........................................................................ [ 34%]
........................................................................ [ 36%]
........................................................................ [ 38%]
........................................................................ [ 40%]
........................................................................ [ 43%]
........................................................................ [ 45%]
........................................................................ [ 47%]
........................................................................ [ 50%]
........................................................................ [ 52%]
........................................................................ [ 54%]
........................................................................ [ 56%]
.s...................................................................... [ 59%]
........................................................................ [ 61%]
........................................................................ [ 63%]
........................................................................ [ 65%]
........................................................................ [ 68%]
...........................................x............................ [ 70%]
........................................................................ [ 72%]
........................................................................ [ 75%]
........................................................................ [ 77%]
........................................................................ [ 79%]
........................................................................ [ 81%]
.........................................xxxx........................... [ 84%]
........................................................................ [ 86%]
........................................................................ [ 88%]
........................................................................ [ 91%]
........................................................................ [ 93%]
........................................................................ [ 95%]
........................................................................ [ 97%]
....................................................................     [100%]
3158 passed, 2 skipped, 5 xfailed in 31.37s
===== raw suite output: new.log =====
============================= test session starts ==============================
platform linux -- Python 3.12.12, pytest-9.0.3, pluggy-1.6.0 -- /usr/local/bin/python
rootdir: /app
configfile: pyproject.toml
plugins: xdist-3.8.0, inline-snapshot-0.34.1, cov-7.1.0, sugar-1.1.1, timeout-2.4.0, anyio-4.12.0
timeout: 20.0s
timeout method: signal
timeout func_only: False
collecting ... collected 137 items

tests/test_deprecation_sunset_headers.py::test_deprecated_route_emits_deprecation_header PASSED [  0%]
tests/test_deprecation_sunset_headers.py::test_non_deprecated_route_no_deprecation_header PASSED [  1%]
tests/test_deprecation_sunset_headers.py::test_sunset_without_deprecated_emits_sunset_only PASSED [  2%]
tests/test_deprecation_sunset_headers.py::test_deprecated_with_sunset_emits_both_headers PASSED [  2%]
tests/test_deprecation_sunset_headers.py::test_sunset_rfc7231_format PASSED [  3%]
tests/test_deprecation_sunset_headers.py::test_multiple_routes_independent_headers PASSED [  4%]
tests/test_deprecation_sunset_headers.py::test_deprecation_date_emits_rfc7231_date_header PASSED [  5%]
tests/test_deprecation_sunset_headers.py::test_deprecation_date_overrides_deprecated_true PASSED [  5%]
tests/test_deprecation_sunset_headers.py::test_deprecation_date_without_deprecated_flag PASSED [  6%]
tests/test_deprecation_sunset_headers.py::test_deprecation_date_with_sunset_emits_both PASSED [  7%]
tests/test_deprecation_sunset_headers.py::test_deprecation_date_rfc7231_format PASSED [  8%]
tests/test_deprecation_sunset_headers.py::test_deprecation_date_all_three_headers PASSED [  8%]
tests/test_deprecation_sunset_headers.py::test_successor_url_emits_link_header PASSED [  9%]
tests/test_deprecation_sunset_headers.py::test_successor_url_without_deprecated PASSED [ 10%]
tests/test_deprecation_sunset_headers.py::test_successor_url_with_all_headers PASSED [ 10%]
tests/test_deprecation_sunset_headers.py::test_successor_url_absolute PASSED [ 11%]
tests/test_deprecation_sunset_headers.py::test_successor_url_only_no_other_headers PASSED [ 12%]
tests/test_deprecation_sunset_headers.py::test_post_route_deprecated_headers PASSED [ 13%]
tests/test_deprecation_sunset_headers.py::test_put_route_deprecated_headers PASSED [ 13%]
tests/test_deprecation_sunset_headers.py::test_patch_route_deprecated_headers PASSED [ 14%]
tests/test_deprecation_sunset_headers.py::test_delete_route_deprecated_headers PASSED [ 15%]
tests/test_deprecation_sunset_headers.py::test_options_route_deprecated_headers PASSED [ 16%]
tests/test_deprecation_sunset_headers.py::test_head_route_deprecated_headers PASSED [ 16%]
tests/test_deprecation_sunset_headers.py::test_trace_route_deprecated_headers PASSED [ 17%]
tests/test_deprecation_sunset_headers.py::test_post_with_deprecation_date_and_successor PASSED [ 18%]
tests/test_deprecation_sunset_headers.py::test_put_with_deprecation_date PASSED [ 18%]
tests/test_deprecation_sunset_headers.py::test_delete_with_successor_url PASSED [ 19%]
tests/test_deprecation_sunset_headers.py::test_patch_with_all_params PASSED [ 20%]
tests/test_deprecation_sunset_headers.py::test_router_level_deprecated_propagates_deprecation_header PASSED [ 21%]
tests/test_deprecation_sunset_headers.py::test_router_level_sunset_propagates_sunset_header PASSED [ 21%]
tests/test_deprecation_sunset_headers.py::test_router_level_deprecated_and_sunset PASSED [ 22%]
tests/test_deprecation_sunset_headers.py::test_router_level_deprecation_date_propagates PASSED [ 23%]
tests/test_deprecation_sunset_headers.py::test_router_level_successor_url_propagates PASSED [ 24%]
tests/test_deprecation_sunset_headers.py::test_router_level_all_params_propagate PASSED [ 24%]
tests/test_deprecation_sunset_headers.py::test_route_level_sunset_overrides_router_sunset PASSED [ 25%]
tests/test_deprecation_sunset_headers.py::test_route_sunset_none_inherits_router_sunset PASSED [ 26%]
tests/test_deprecation_sunset_headers.py::test_route_deprecation_date_overrides_router PASSED [ 27%]
tests/test_deprecation_sunset_headers.py::test_route_successor_url_overrides_router PASSED [ 27%]
tests/test_deprecation_sunset_headers.py::test_route_inherits_router_deprecation_date PASSED [ 28%]
tests/test_deprecation_sunset_headers.py::test_route_inherits_router_successor_url PASSED [ 29%]
tests/test_deprecation_sunset_headers.py::test_include_router_sunset_parameter PASSED [ 29%]
tests/test_deprecation_sunset_headers.py::test_include_router_sunset_route_takes_precedence PASSED [ 30%]
tests/test_deprecation_sunset_headers.py::test_include_router_deprecation_date_parameter PASSED [ 31%]
tests/test_deprecation_sunset_headers.py::test_include_router_successor_url_parameter PASSED [ 32%]
tests/test_deprecation_sunset_headers.py::test_include_router_successor_url_route_takes_precedence PASSED [ 32%]
tests/test_deprecation_sunset_headers.py::test_include_router_deprecation_date_route_takes_precedence PASSED [ 33%]
tests/test_deprecation_sunset_headers.py::test_include_router_all_params PASSED [ 34%]
tests/test_deprecation_sunset_headers.py::test_include_router_params_override_router_defaults_when_route_omits_values PASSED [ 35%]
tests/test_deprecation_sunset_headers.py::test_add_api_route_inherits_router_defaults_when_route_values_omitted PASSED [ 35%]
tests/test_deprecation_sunset_headers.py::test_nested_routers_sunset_inheritance PASSED [ 36%]
tests/test_deprecation_sunset_headers.py::test_nested_routers_inner_sunset_overrides PASSED [ 37%]
tests/test_deprecation_sunset_headers.py::test_three_level_nesting_sunset_precedence PASSED [ 37%]
tests/test_deprecation_sunset_headers.py::test_three_level_nesting_deprecation_date_precedence PASSED [ 38%]
tests/test_deprecation_sunset_headers.py::test_three_level_nesting_successor_url_precedence PASSED [ 39%]
tests/test_deprecation_sunset_headers.py::test_nested_routers_mixed_params PASSED [ 40%]
tests/test_deprecation_sunset_headers.py::test_nested_routers_middle_level_propagates PASSED [ 40%]
tests/test_deprecation_sunset_headers.py::test_openapi_deprecated_route_no_sunset PASSED [ 41%]
tests/test_deprecation_sunset_headers.py::test_openapi_sunset_emits_x_sunset PASSED [ 42%]
tests/test_deprecation_sunset_headers.py::test_openapi_deprecated_with_sunset PASSED [ 43%]
tests/test_deprecation_sunset_headers.py::test_openapi_no_sunset_no_x_sunset PASSED [ 43%]
tests/test_deprecation_sunset_headers.py::test_openapi_deprecation_date_emits_x_deprecation_date PASSED [ 44%]
tests/test_deprecation_sunset_headers.py::test_openapi_successor_url_emits_x_successor_url PASSED [ 45%]
tests/test_deprecation_sunset_headers.py::test_openapi_all_extensions PASSED [ 45%]
tests/test_deprecation_sunset_headers.py::test_openapi_router_sunset_propagated PASSED [ 46%]
tests/test_deprecation_sunset_headers.py::test_openapi_route_sunset_overrides_in_schema PASSED [ 47%]
tests/test_deprecation_sunset_headers.py::test_openapi_multiple_routes_mixed PASSED [ 48%]
tests/test_deprecation_sunset_headers.py::test_openapi_router_deprecation_date_propagated PASSED [ 48%]
tests/test_deprecation_sunset_headers.py::test_openapi_router_successor_url_propagated PASSED [ 49%]
tests/test_deprecation_sunset_headers.py::test_include_router_sunset_in_openapi PASSED [ 50%]
tests/test_deprecation_sunset_headers.py::test_openapi_x_sunset_iso8601_format PASSED [ 51%]
tests/test_deprecation_sunset_headers.py::test_openapi_include_router_deprecation_date_in_schema PASSED [ 51%]
tests/test_deprecation_sunset_headers.py::test_openapi_include_router_successor_url_in_schema PASSED [ 52%]
tests/test_deprecation_sunset_headers.py::test_route_level_parameters_apply_runtime_headers PASSED [ 53%]
tests/test_deprecation_sunset_headers.py::test_route_without_parameters_emits_no_new_headers PASSED [ 54%]
tests/test_deprecation_sunset_headers.py::test_router_level_parameters_apply_runtime_headers PASSED [ 54%]
tests/test_deprecation_sunset_headers.py::test_router_without_parameters_emits_no_new_headers PASSED [ 55%]
tests/test_deprecation_sunset_headers.py::test_deprecated_false_no_deprecation_header PASSED [ 56%]
tests/test_deprecation_sunset_headers.py::test_sunset_header_with_validation_error PASSED [ 56%]
tests/test_deprecation_sunset_headers.py::test_response_model_with_deprecated_headers PASSED [ 57%]
tests/test_deprecation_sunset_headers.py::test_deprecated_route_returning_custom_response PASSED [ 58%]
tests/test_deprecation_sunset_headers.py::test_app_level_deprecated_propagates PASSED [ 59%]
tests/test_deprecation_sunset_headers.py::test_sunset_iso_format_in_openapi_with_timezone PASSED [ 59%]
tests/test_deprecation_sunset_headers.py::test_include_router_deprecated_without_sunset_no_sunset_header PASSED [ 60%]
tests/test_deprecation_sunset_headers.py::test_deprecated_header_case_insensitive_present PASSED [ 61%]
tests/test_deprecation_sunset_headers.py::test_custom_response_preserves_link_header PASSED [ 62%]
tests/test_deprecation_sunset_headers.py::test_response_model_with_all_new_params PASSED [ 62%]
tests/test_deprecation_sunset_headers.py::test_multiple_routes_some_with_new_params PASSED [ 63%]
tests/test_deprecation_sunset_headers.py::test_middleware_tracks_deprecated_hits PASSED [ 64%]
tests/test_deprecation_sunset_headers.py::test_middleware_tracks_sunset_hits PASSED [ 64%]
tests/test_deprecation_sunset_headers.py::test_middleware_tracks_both_deprecated_and_sunset PASSED [ 65%]
tests/test_deprecation_sunset_headers.py::test_middleware_tracks_deprecation_date_as_deprecated PASSED [ 66%]
tests/test_deprecation_sunset_headers.py::test_middleware_multiple_routes_separate_counts PASSED [ 67%]
tests/test_deprecation_sunset_headers.py::test_middleware_reset_stats PASSED [ 67%]
tests/test_deprecation_sunset_headers.py::test_middleware_get_stats_returns_copy PASSED [ 68%]
tests/test_deprecation_sunset_headers.py::test_middleware_does_not_interfere_with_response PASSED [ 69%]
tests/test_deprecation_sunset_headers.py::test_middleware_non_deprecated_not_tracked PASSED [ 70%]
tests/test_deprecation_sunset_headers.py::test_middleware_reset_then_track_again PASSED [ 70%]
tests/test_deprecation_sunset_headers.py::test_middleware_with_routed_deprecated_endpoint PASSED [ 71%]
tests/test_deprecation_sunset_headers.py::test_middleware_with_deprecation_date_and_successor PASSED [ 72%]
tests/test_deprecation_sunset_headers.py::test_explicit_headers_preservation PASSED [ 72%]
tests/test_deprecation_sunset_headers.py::test_case_insensitive_header_preservation PASSED [ 73%]
tests/test_deprecation_sunset_headers.py::test_link_header_merging PASSED [ 74%]
tests/test_deprecation_sunset_headers.py::test_multiple_link_headers PASSED [ 75%]
tests/test_deprecation_sunset_headers.py::test_public_api_accepts_new_parameters PASSED [ 75%]
tests/test_deprecation_sunset_headers.py::test_middleware_skips_non_http_scopes PASSED [ 76%]
tests/test_deprecation_sunset_headers.py::test_case_insensitive_sunset_preservation PASSED [ 77%]
tests/test_deprecation_sunset_headers.py::test_handler_unwrapping_performance_optimization PASSED [ 78%]
tests/test_deprecation_sunset_headers.py::test_include_router_partial_override_route_sets_one_include_provides_others PASSED [ 78%]
tests/test_deprecation_sunset_headers.py::test_include_router_partial_override_route_sets_deprecation_date_only PASSED [ 79%]
tests/test_deprecation_sunset_headers.py::test_include_router_partial_override_route_sets_successor_only PASSED [ 80%]
tests/test_deprecation_sunset_headers.py::test_app_constructor_defaults_propagate_to_direct_routes PASSED [ 81%]
tests/test_deprecation_sunset_headers.py::test_app_constructor_defaults_in_openapi PASSED [ 81%]
tests/test_deprecation_sunset_headers.py::test_route_overrides_app_constructor_defaults PASSED [ 82%]
tests/test_deprecation_sunset_headers.py::test_same_router_included_twice_different_params PASSED [ 83%]
tests/test_deprecation_sunset_headers.py::test_same_router_included_twice_different_params_openapi PASSED [ 83%]
tests/test_deprecation_sunset_headers.py::test_four_level_nesting_innermost_route_wins PASSED [ 84%]
tests/test_deprecation_sunset_headers.py::test_four_level_nesting_no_route_value_nearest_ancestor_wins PASSED [ 85%]
tests/test_deprecation_sunset_headers.py::test_nested_include_router_override_at_inner_level PASSED [ 86%]
tests/test_deprecation_sunset_headers.py::test_nested_include_router_override_at_outer_level PASSED [ 86%]
tests/test_deprecation_sunset_headers.py::test_include_router_override_openapi_reflects_override PASSED [ 87%]
tests/test_deprecation_sunset_headers.py::test_middleware_tracks_include_router_sunset PASSED [ 88%]
tests/test_deprecation_sunset_headers.py::test_middleware_tracks_include_router_deprecation_date PASSED [ 89%]
tests/test_deprecation_sunset_headers.py::test_middleware_get_stats_inner_dicts_are_independent PASSED [ 89%]
tests/test_deprecation_sunset_headers.py::test_add_api_route_on_app_with_app_defaults PASSED [ 90%]
tests/test_deprecation_sunset_headers.py::test_add_api_route_explicit_overrides_app_defaults PASSED [ 91%]
tests/test_deprecation_sunset_headers.py::test_multiple_routers_same_app_different_params PASSED [ 91%]
tests/test_deprecation_sunset_headers.py::test_include_router_no_params_router_defaults_still_apply PASSED [ 92%]
tests/test_deprecation_sunset_headers.py::test_mixed_routes_on_router_some_explicit_some_inherited PASSED [ 93%]
tests/test_deprecation_sunset_headers.py::test_include_router_with_app_level_fallback PASSED [ 94%]
tests/test_deprecation_sunset_headers.py::test_include_router_params_beat_app_defaults PASSED [ 94%]
tests/test_deprecation_sunset_headers.py::test_precedence_full_chain_route_gt_include_gt_router_gt_app PASSED [ 95%]
tests/test_deprecation_sunset_headers.py::test_openapi_precedence_full_chain PASSED [ 96%]
tests/test_deprecation_sunset_headers.py::test_nested_include_router_overrides_at_every_level PASSED [ 97%]
tests/test_deprecation_sunset_headers.py::test_link_merge_preserves_order PASSED [ 97%]
tests/test_deprecation_sunset_headers.py::test_middleware_with_app_level_defaults PASSED [ 98%]
tests/test_deprecation_sunset_headers.py::test_include_router_override_multiple_routes_on_same_router PASSED [ 99%]
tests/test_deprecation_sunset_headers.py::test_deprecation_date_on_router_deprecated_false_on_route PASSED [100%]

------------------ generated xml file: /logs/verifier/new.xml ------------------
============================= 137 passed in 0.48s ==============================
===== grade =====
P2P 3134/3134 pass 0 fail; F2P 137/137 pass 0 fail; PARTIAL 1.0; BINARY 1
[verifier] reward.json={"reward": 1, "f2p_total": 137, "f2p_passed": 137, "p2p_total": 3134, "p2p_passed": 3134, "f2p": 1.0, "p2p": 1.0, "partial": 1.0}
