[INFO] fetching crate rahti 0.0.42...
[INFO] testing rahti-0.0.42 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate rahti 0.0.42 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate rahti 0.0.42
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate rahti 0.0.42
[INFO] tweaked toml for crates.io crate rahti 0.0.42 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate rahti 0.0.42 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rahti 0.0.42 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-tungstenite v0.28.0
[INFO] [stderr]   Downloaded tokio-macros v2.7.1
[INFO] [stderr]   Downloaded schemars_derive v1.2.2
[INFO] [stderr]   Downloaded rmcp-macros v3.1.4
[INFO] [stderr]   Downloaded pastey v0.2.3
[INFO] [stderr]   Downloaded kqueue v1.2.0
[INFO] [stderr]   Downloaded inotify v0.11.4
[INFO] [stderr]   Downloaded rahti-mcp v0.0.42
[INFO] [stderr]   Downloaded serde_derive_internals v0.30.0
[INFO] [stderr]   Downloaded tokio-tungstenite v0.29.0
[INFO] [stderr]   Downloaded tower-http v0.7.0
[INFO] [stderr]   Downloaded sse-stream v0.2.6
[INFO] [stderr]   Downloaded tungstenite v0.28.0
[INFO] [stderr]   Downloaded rahti-macros v0.0.42
[INFO] [stderr]   Downloaded rmcp v3.1.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99
[INFO] running `Command { std: "docker" "start" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling hybrid-array v0.4.14
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling inotify-sys v0.1.8
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling mio v1.2.2
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling futures-channel v0.3.33
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling type-map v0.5.1
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling spin v0.9.9
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling notify-types v2.1.0
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling self_cell v1.3.0
[INFO] [stderr]    Compiling inotify v0.11.4
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling notify v8.2.0
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling rahti-macros v0.0.42
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling hmac v0.13.0
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling http-body v1.1.0
[INFO] [stderr]    Compiling http-body-util v0.1.4
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling tinystr v0.8.4
[INFO] [stderr]    Compiling unic-langid-impl v0.9.6
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling fluent-syntax v0.12.0
[INFO] [stderr]    Compiling unic-langid v0.9.6
[INFO] [stderr]    Compiling intl_pluralrules v7.0.2
[INFO] [stderr]    Compiling fluent-langneg v0.13.1
[INFO] [stderr]    Compiling intl-memoizer v0.5.3
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling fluent-bundle v0.16.0
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling rahti v0.0.42 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.64s
[INFO] running `Command { std: "docker" "inspect" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.53.1
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling futures-util v0.3.33
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling data-encoding v2.11.0
[INFO] [stderr]    Compiling sha1 v0.10.7
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]    Compiling tower-http v0.7.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.5
[INFO] [stderr]    Compiling tungstenite v0.28.0
[INFO] [stderr]    Compiling hyper v1.11.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.19
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling tokio-tungstenite v0.28.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling rahti v0.0.42 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 33.59s
[INFO] running `Command { std: "docker" "inspect" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rahti-08ea2ece91b58d2f)
[INFO] [stdout] 
[INFO] [stdout] running 329 tests
[INFO] [stdout] test attrs::tests::a_flag_on_any_other_name_is_an_ordinary_value ... ok
[INFO] [stdout] test attrs::tests::a_name_that_could_escape_the_tag_is_refused ... ok
[INFO] [stdout] test attrs::tests::a_present_optional_writes_what_is_inside_it ... ok
[INFO] [stdout] test attrs::tests::a_rendered_value_is_escaped_exactly_once ... ok
[INFO] [stdout] test attrs::tests::a_boolean_attribute_follows_the_flag ... ok
[INFO] [stdout] test attrs::tests::a_spread_can_remove_an_attribute ... ok
[INFO] [stdout] test attrs::tests::a_hash_map_spreads_in_a_stable_order ... ok
[INFO] [stdout] test attrs::tests::an_ordinary_attribute_name_is_accepted ... ok
[INFO] [stdout] test attrs::tests::a_value_is_escaped_where_it_is_written ... ok
[INFO] [stdout] test attrs::tests::an_ordinary_value_is_written ... ok
[INFO] [stdout] test attrs::tests::a_spread_reads_pairs_from_the_usual_shapes ... ok
[INFO] [stdout] test attrs::tests::a_value_that_writes_nothing_removes_what_came_before ... ok
[INFO] [stdout] test attrs::tests::an_owning_root_still_takes_the_rest_of_a_spread ... ok
[INFO] [stdout] test attrs::tests::get_tells_a_removal_apart_from_an_absence ... ok
[INFO] [stdout] test attrs::tests::an_empty_set_is_empty ... ok
[INFO] [stdout] test attrs::tests::a_spread_handler_is_kept_on_a_root_that_does_not_own_its_events ... ok
[INFO] [stdout] test attrs::tests::the_list_escapes_what_it_is_given ... ok
[INFO] [stdout] test attrs::tests::set_replaces_and_unset_removes ... ok
[INFO] [stdout] test attrs::tests::the_component_name_written_on_the_tag_is_kept ... ok
[INFO] [stdout] test auth::tests::a_cleared_cookie_expires_immediately ... ok
[INFO] [stdout] test attrs::tests::an_optional_flag_answers_for_what_is_inside_it ... ok
[INFO] [stdout] test attrs::tests::anything_else_is_present_by_default ... ok
[INFO] [stdout] test attrs::tests::an_optional_spread_writes_nothing_when_absent ... ok
[INFO] [stdout] test attrs::tests::a_spread_folds_its_attributes_in_where_it_was_written ... ok
[INFO] [stdout] test attrs::tests::trusted_markup_is_not_escaped_again ... ok
[INFO] [stdout] test auth::tests::a_long_placeholder_is_still_refused ... ok
[INFO] [stdout] test auth::tests::a_path_survives_being_a_query_value ... ok
[INFO] [stdout] test auth::tests::a_private_route_covers_its_subtree ... ok
[INFO] [stdout] test auth::tests::a_secret_that_is_not_a_secret_is_named_as_such ... ok
[INFO] [stdout] test auth::tests::a_trailing_slash_is_the_same_route ... ok
[INFO] [stdout] test attrs::tests::a_set_can_be_read_back ... ok
[INFO] [stdout] test attrs::tests::an_absent_optional_writes_no_attribute ... ok
[INFO] [stdout] test auth::tests::next_keeps_a_path_that_is_ours ... ok
[INFO] [stdout] test attrs::tests::the_list_writes_what_it_was_given_in_order ... ok
[INFO] [stdout] test attrs::tests::the_tag_is_the_tag_again_once_a_spread_is_folded_in ... ok
[INFO] [stdout] test auth::tests::a_cookie_name_that_is_not_a_token_is_refused ... ok
[INFO] [stdout] test auth::tests::next_cannot_leave_the_origin ... ok
[INFO] [stdout] test auth::tests::refuses_a_cookie_from_another_secret ... ok
[INFO] [stdout] test auth::tests::root_as_a_public_route_does_not_make_everything_public ... ok
[INFO] [stdout] test auth::tests::round_trips_a_payload ... ok
[INFO] [stdout] test auth::tests::sliding_refresh_is_off_when_the_policy_says_false ... ok
[INFO] [stdout] test auth::tests::sliding_refresh_reissues_the_session_with_the_configured_lifetime ... ok
[INFO] [stdout] test auth::tests::the_environment_names_are_the_ones_the_scaffold_writes ... ok
[INFO] [stdout] test auth::tests::the_session_cookie_is_not_readable_by_a_script ... ok
[INFO] [stdout] test auth::tests::the_session_outside_a_request_is_nobody ... ok
[INFO] [stdout] test authorization::tests::a_before_hook_can_grant_every_defined_ability_to_an_admin ... ok
[INFO] [stdout] test authorization::tests::a_resource_policy_can_enforce_ownership ... ok
[INFO] [stdout] test auth::tests::refuses_a_cookie_that_is_not_a_cookie ... ok
[INFO] [stdout] test authorization::tests::a_typed_session_rule_allows_and_denies ... ok
[INFO] [stdout] test auth::tests::refuses_a_payload_edited_in_the_browser ... ok
[INFO] [stdout] test auth::tests::require_refuses_when_there_is_no_session ... ok
[INFO] [stdout] test auth::tests::session_lifetime_is_whole_hours_greater_than_zero ... ok
[INFO] [stdout] test authorization::tests::an_undefined_ability_fails_closed_before_the_admin_hook ... ok
[INFO] [stdout] test authorization::tests::authorization_outside_a_request_is_unauthenticated ... ok
[INFO] [stdout] test authorization::tests::no_session_is_distinct_from_a_forbidden_session ... ok
[INFO] [stdout] test authorization::tests::the_wrong_session_shape_is_denied_instead_of_panicking ... ok
[INFO] [stdout] test cache::page::tests::a_complete_page_is_reused_after_the_first_render ... ok
[INFO] [stdout] test cache::page::tests::a_corrupt_page_is_removed_and_replaced ... ok
[INFO] [stdout] test cache::page::tests::head_reuses_get_headers_without_sending_the_body ... ok
[INFO] [stdout] test cache::page::tests::a_request_cache_bypass_renders_without_storing ... ok
[INFO] [stdout] test auth::tests::reads_one_cookie_out_of_several ... ok
[INFO] [stdout] test attrs::tests::a_set_can_be_built_from_an_array_or_an_iterator ... ok
[INFO] [stdout] test attrs::tests::where_a_spread_sits_decides_whether_it_wins ... ok
[INFO] [stdout] test attrs::tests::a_later_write_replaces_an_earlier_one_in_place ... ok
[INFO] [stdout] test cache::page::tests::query_variants_do_not_share_a_cached_response ... ok
[INFO] [stdout] test auth::tests::an_absent_query_parameter_is_none ... ok
[INFO] [stdout] test auth::tests::an_expired_session_knows_it ... ok
[INFO] [stdout] test cache::tests::remove_and_clear_report_real_store_state ... ok
[INFO] [stdout] test auth::tests::all_private_protects_everything_but_the_exceptions ... ok
[INFO] [stdout] test auth::tests::dynamic_segments_are_written_the_way_the_file_tree_writes_them ... ok
[INFO] [stdout] test cache::tests::empty_and_nul_keys_are_refused ... ok
[INFO] [stdout] test cache::tests::typed_facade_round_trips_json_through_the_configured_store ... ok
[INFO] [stdout] test dev::tests::a_document_that_already_has_the_client_is_left_alone ... ok
[INFO] [stdout] test dev::tests::a_document_without_a_body_close_falls_back_to_html ... ok
[INFO] [stdout] test dev::tests::a_fragment_gets_the_client_appended ... ok
[INFO] [stdout] test cache::page::tests::responses_that_set_a_cookie_are_never_stored ... ok
[INFO] [stdout] test cache::page::tests::path_and_tag_revalidation_change_the_generation_key ... ok
[INFO] [stdout] test dev::tests::malformed_browser_diagnostics_are_refused ... ok
[INFO] [stdout] test cache::tests::capacity_evicts_the_least_recently_used_entry ... ok
[INFO] [stdout] test dev::tests::a_source_location_reads_like_a_browser_location ... ok
[INFO] [stdout] test dev::tests::a_body_tag_in_the_content_does_not_capture_it ... ok
[INFO] [stdout] test dev::tests::browser_diagnostics_are_bounded_and_given_server_context ... ok
[INFO] [stdout] test dev::tests::one_request_cannot_write_an_unbounded_number_of_entries ... ok
[INFO] [stdout] test dev::tests::anything_else_turns_it_off ... ok
[INFO] [stdout] test dev::tests::the_boot_id_is_fixed_for_the_life_of_the_process ... ok
[INFO] [stdout] test env::tests::keeps_the_order_the_file_is_written_in ... ok
[INFO] [stdout] test env::tests::ignores_comments_and_blank_lines ... ok
[INFO] [stdout] test dev::tests::the_client_goes_just_before_the_body_closes ... ok
[INFO] [stdout] test dev::tests::the_two_signals_are_named_for_the_client ... ok
[INFO] [stdout] test dev::tests::the_dev_routes_build ... ok
[INFO] [stdout] test dev::tests::the_flag_reads_the_usual_yes_words ... ok
[INFO] [stdout] test dev::tests::only_stylesheets_can_be_hot_swapped ... ok
[INFO] [stdout] test error::tests::a_failed_page_is_replaced_by_the_boundary ... ok
[INFO] [stdout] test error::tests::a_failed_page_responds_with_its_status_and_a_source ... ok
[INFO] [stdout] test error::tests::a_formatted_panic_message_is_kept ... ok
[INFO] [stdout] test error::tests::a_boundary_is_told_the_status_and_the_message ... ok
[INFO] [stdout] test env::tests::reads_an_ordinary_pair ... ok
[INFO] [stdout] test env::tests::a_value_may_contain_the_separator ... ok
[INFO] [stdout] test env::tests::skips_a_line_that_is_not_a_pair ... ok
[INFO] [stdout] test env::tests::accepts_an_export_prefix ... ok
[INFO] [stdout] test error::tests::a_bare_server_error_is_caught_too ... ok
[INFO] [stdout] test error::tests::a_panic_becomes_a_failure_the_boundary_can_render ... ok
[INFO] [stdout] test error::tests::a_client_error_without_a_source_passes_through ... ok
[INFO] [stdout] test error::tests::a_second_boundary_leaves_the_first_ones_work_alone ... ok
[INFO] [stdout] test error::tests::a_panic_with_no_message_still_answers ... ok
[INFO] [stdout] test error::tests::a_successful_page_passes_through ... ok
[INFO] [stdout] test error::tests::an_error_carries_a_status_and_a_message ... ok
[INFO] [stdout] test error::tests::an_unbounded_error_is_a_problem_details_response ... ok
[INFO] [stdout] test error::tests::any_ordinary_error_converts ... ok
[INFO] [stdout] test error::tests::expected_client_errors_and_explicit_public_server_errors_keep_their_message ... ok
[INFO] [stdout] test error::tests::internal_is_a_500 ... ok
[INFO] [stdout] test error::tests::private_server_errors_do_not_expose_structured_details ... ok
[INFO] [stdout] test error::tests::production_hides_unexpected_server_diagnostics ... ok
[INFO] [stdout] test html::tests::a_bool_interpolates_as_true_or_false ... ok
[INFO] [stdout] test error::tests::the_failure_is_not_carried_any_further ... ok
[INFO] [stdout] test env::tests::strips_the_quotes_a_secret_is_usually_written_in ... ok
[INFO] [stdout] test html::tests::a_page_is_marked_for_the_layout_layers ... ok
[INFO] [stdout] test error::tests::the_rendered_error_is_a_page ... ok
[INFO] [stdout] test html::tests::a_reference_renders_as_its_target ... ok
[INFO] [stdout] test html::tests::a_script_value_without_a_lt_passes_through ... ok
[INFO] [stdout] test html::tests::a_string_is_quoted_and_escaped ... ok
[INFO] [stdout] test html::tests::a_number_interpolates_as_a_js_number ... ok
[INFO] [stdout] test html::tests::a_reference_renders_js_as_its_target ... ok
[INFO] [stdout] test html::tests::a_page_is_served_as_html ... ok
[INFO] [stdout] test html::tests::a_string_interpolates_as_a_quoted_js_literal ... ok
[INFO] [stdout] test html::tests::a_json_string_field_is_neutralised_too ... ok
[INFO] [stdout] test html::tests::an_attribute_also_escapes_the_quotes ... ok
[INFO] [stdout] test html::tests::a_value_has_no_entities_to_preserve ... ok
[INFO] [stdout] test html::tests::a_string_with_a_script_close_is_neutralised ... ok
[INFO] [stdout] test html::tests::an_option_interpolates_as_null_or_its_value ... ok
[INFO] [stdout] test html::tests::concat_leaves_its_pieces_alone ... ok
[INFO] [stdout] test html::tests::empty_is_the_children_a_caller_has_none_of ... ok
[INFO] [stdout] test html::tests::concat_of_nothing_is_empty ... ok
[INFO] [stdout] test html::tests::escape_wraps_a_string_safely ... ok
[INFO] [stdout] test html::tests::a_struct_interpolates_as_json ... ok
[INFO] [stdout] test html::tests::a_value_can_be_taken_apart ... ok
[INFO] [stdout] test html::tests::concat_joins_fragments_in_order ... ok
[INFO] [stdout] test html::tests::an_option_renders_nothing_when_empty ... ok
[INFO] [stdout] test cache::tests::values_expire_and_zero_ttl_removes_the_old_value ... ok
[INFO] [stdout] test html::tests::from_raw_trusts_its_caller ... ok
[INFO] [stdout] test html::tests::text_leaves_quotes_alone ... ok
[INFO] [stdout] test html::tests::strings_render_either_way_round ... ok
[INFO] [stdout] test html::tests::escaping_leaves_everything_else_untouched ... ok
[INFO] [stdout] test html::tests::text_escapes_what_would_open_a_tag ... ok
[INFO] [stdout] test i18n::tests::only_an_explicit_locale_is_safe_for_page_caching ... ok
[INFO] [stdout] test html::tests::html_passes_through_unescaped ... ok
[INFO] [stdout] test html::tests::numbers_and_flags_need_no_escaping ... ok
[INFO] [stdout] test i18n::tests::an_unprefixed_route_negotiates_accept_language ... ok
[INFO] [stdout] test i18n::tests::direction_uses_the_language_subtag ... ok
[INFO] [stdout] test i18n::tests::route_locale_selects_catalog_and_falls_back ... ok
[INFO] [stdout] test jobs::tests::reports_unknown_jobs_and_closes_on_shutdown ... ok
[INFO] [stdout] test jobs::tests::runs_typed_jobs_and_exposes_context ... ok
[INFO] [stdout] test i18n::tests::unsupported_route_locale_is_not_found ... ok
[INFO] [stdout] test jobs::tests::try_enqueue_reports_bounded_backpressure ... ok
[INFO] [stdout] test layout::tests::a_body_that_is_not_text_is_reported ... ok
[INFO] [stdout] test layout::tests::a_document_assembled_by_hand_can_be_marked ... ok
[INFO] [stdout] test layout::tests::a_document_without_a_head_is_marked_in_its_body ... ok
[INFO] [stdout] test layout::tests::a_page_is_wrapped ... ok
[INFO] [stdout] test layout::tests::a_hand_written_marker_is_left_alone ... ok
[INFO] [stdout] test jobs::tests::retries_retryable_failures_and_discards_permanent_ones ... ok
[INFO] [stdout] test layout::tests::a_response_that_is_not_a_page_is_left_alone ... ok
[INFO] [stdout] test layout::tests::a_response_that_is_not_a_page_is_never_marked ... ok
[INFO] [stdout] test layout::tests::a_root_layout_names_the_document_it_rendered ... ok
[INFO] [stdout] test jobs::tests::enforces_shutdown_grace ... ok
[INFO] [stdout] test layout::tests::the_stale_content_length_is_dropped ... ok
[INFO] [stdout] test layout::tests::the_marker_goes_at_the_top_of_the_head ... ok
[INFO] [stdout] test layout::tests::the_pages_own_response_survives ... ok
[INFO] [stdout] test layout::tests::an_empty_page_is_still_wrapped ... ok
[INFO] [stdout] test layout::tests::layouts_nest ... ok
[INFO] [stdout] test listen::tests::a_blank_variable_is_unset ... ok
[INFO] [stdout] test listen::tests::a_set_variable_is_the_value_it_carries ... ok
[INFO] [stdout] test listen::tests::the_scan_stops_at_the_end_of_the_port_range ... ok
[INFO] [stdout] test listen::tests::a_busy_port_falls_forward_to_a_free_one ... ok
[INFO] [stdout] test listen::tests::a_conflict_names_the_source_of_the_port ... ok
[INFO] [stdout] test listen::tests::a_port_variable_parses_as_a_port ... ok
[INFO] [stdout] test listen::tests::a_wildcard_bind_is_printed_as_localhost ... ok
[INFO] [stdout] test listen::tests::the_url_carries_the_port_that_bound ... ok
[INFO] [stdout] test loading::tests::each_region_is_a_div_tagged_with_its_url ... ok
[INFO] [stdout] test loading::tests::no_regions_means_no_container ... ok
[INFO] [stdout] test listen::tests::two_fallbacks_from_one_port_do_not_collide ... ok
[INFO] [stdout] test loading::tests::a_document_without_a_body_gets_it_appended ... ok
[INFO] [stdout] test loading::tests::a_url_with_a_quote_in_it_cannot_break_out_of_the_attribute ... ok
[INFO] [stdout] test loading::tests::the_container_carries_the_id_the_runtime_looks_up ... ok
[INFO] [stdout] test loading::tests::the_container_is_hidden ... ok
[INFO] [stdout] test loading::tests::without_an_installed_container_a_document_is_untouched ... ok
[INFO] [stdout] test loading::tests::the_container_goes_last_in_the_body ... ok
[INFO] [stdout] test metadata::tests::child_scalars_override_and_maps_merge ... ok
[INFO] [stdout] test metadata::tests::dynamic_metadata_overrides_static_metadata ... ok
[INFO] [stdout] test metadata::tests::inherited_templates_apply_except_to_absolute_titles ... ok
[INFO] [stdout] test metadata::tests::metadata_is_escaped_and_uses_the_right_social_attributes ... ok
[INFO] [stdout] test observability::tests::a_valid_incoming_id_reaches_the_handler_and_response ... ok
[INFO] [stdout] test observability::tests::event_text_is_utf8_safe_when_truncated ... ok
[INFO] [stdout] test loading::tests::the_innermost_body_close_is_the_one_used ... ok
[INFO] [stdout] test metadata::tests::a_default_title_does_not_apply_its_own_template ... ok
[INFO] [stdout] test rate_limit::tests::a_rejected_rpc_gets_json_and_retry_headers ... ok
[INFO] [stdout] test rate_limit::tests::a_sliding_window_releases_an_expired_request ... ok
[INFO] [stdout] test observability::tests::health_is_live_and_readiness_reports_failed_and_timed_out_checks ... ok
[INFO] [stdout] test rate_limit::tests::clients_have_independent_buckets ... ok
[INFO] [stdout] test rate_limit::tests::exempt_paths_cover_subtrees_but_root_does_not ... ok
[INFO] [stdout] test observability::tests::invalid_or_untrusted_ids_are_replaced ... ok
[INFO] [stdout] test observability::tests::metrics_classify_status_and_slow_responses_without_route_labels ... ok
[INFO] [stdout] test attrs::tests::an_illegal_name_is_reported_in_development - should panic ... ok
[INFO] [stdout] test rate_limit::tests::framework_probes_cannot_be_removed_from_the_exemptions ... ok
[INFO] [stdout] test rate_limit::tests::forwarded_addresses_are_opt_in_and_must_be_ips ... ok
[INFO] [stdout] test rate_limit::tests::the_budget_allows_then_refuses_one_client ... ok
[INFO] [stdout] test registry::tests::an_empty_registry_is_fine ... ok
[INFO] [stdout] test registry::tests::an_unknown_name_is_unknown ... ok
[INFO] [stdout] test authorization::tests::duplicate_abilities_are_a_startup_error - should panic ... ok
[INFO] [stdout] test registry::tests::distinct_names_are_not_a_clash ... ok
[INFO] [stdout] test registry::tests::two_rpcs_of_one_name_are_found ... ok
[INFO] [stdout] test request_pipeline::tests::a_step_can_short_circuit_before_the_handler ... ok
[INFO] [stdout] test rate_limit::tests::the_middleware_stops_an_exhausted_client_before_the_handler ... ok
[INFO] [stdout] test registry::tests::a_page_rpc_is_not_answered_by_the_fallback ... ok
[INFO] [stdout] test request_pipeline::tests::an_empty_pipeline_is_transparent ... ok
[INFO] [stdout] test request_pipeline::tests::request_extensions_flow_in_and_response_headers_flow_out ... ok
[INFO] [stdout] test request_pipeline::tests::steps_wrap_the_handler_in_registration_order ... ok
[INFO] [stdout] test rpc::tests::a_boundary_leaves_an_rpc_failure_alone ... ok
[INFO] [stdout] test rpc::tests::a_call_carries_its_name_and_its_arguments ... ok
[INFO] [stdout] test rpc::tests::a_call_whose_token_does_not_match_is_refused ... ok
[INFO] [stdout] test rate_limit::tests::only_real_files_beneath_public_are_exempt ... ok
[INFO] [stdout] test rpc::tests::a_cookie_is_read_out_of_the_header_by_name ... ok
[INFO] [stdout] test request_pipeline::tests::routers_take_an_immutable_snapshot_of_configuration ... ok
[INFO] [stdout] test layout::tests::a_body_too_large_to_wrap_is_reported ... ok
[INFO] [stdout] test rpc::tests::a_call_without_the_header_is_refused ... ok
[INFO] [stdout] test rpc::tests::a_file_over_the_per_file_limit_is_refused ... ok
[INFO] [stdout] test rpc::tests::a_file_arrives_with_its_name_and_its_bytes ... ok
[INFO] [stdout] test rpc::tests::a_channel_carries_what_is_sent_through_it ... ok
[INFO] [stdout] test rpc::tests::a_finished_stream_closes_its_response ... ok
[INFO] [stdout] test rpc::tests::a_missing_argument_is_null ... ok
[INFO] [stdout] test rpc::tests::a_missing_file_is_reported_against_its_name ... ok
[INFO] [stdout] test rpc::tests::a_panic_comes_back_as_json ... ok
[INFO] [stdout] test rpc::tests::a_page_is_handed_a_token ... ok
[INFO] [stdout] test rpc::tests::a_failure_comes_back_as_its_status_and_its_message ... ok
[INFO] [stdout] test rpc::tests::a_piece_that_cannot_be_written_ends_the_stream ... ok
[INFO] [stdout] test rpc::tests::a_large_file_spills_on_its_way_in ... ok
[INFO] [stdout] test rpc::tests::a_stream_answers_on_the_wire_the_client_reads ... ok
[INFO] [stdout] test rpc::tests::a_post_that_names_no_function_is_refused ... ok
[INFO] [stdout] test rpc::tests::a_reported_name_is_reduced_to_something_safe ... ok
[INFO] [stdout] test rpc::tests::a_streamed_file_can_still_be_collected ... ok
[INFO] [stdout] test rpc::tests::a_streamed_file_saves_as_it_arrives ... ok
[INFO] [stdout] test rpc::tests::a_streaming_call_that_is_not_an_upload_is_refused ... ok
[INFO] [stdout] test rpc::tests::a_streaming_call_with_no_file_is_reported_against_its_name ... ok
[INFO] [stdout] test rpc::tests::a_streaming_call_without_the_token_is_refused ... ok
[INFO] [stdout] test rpc::tests::a_string_that_looks_like_a_number_stays_a_string ... ok
[INFO] [stdout] test rpc::tests::a_stylesheet_is_not_where_a_session_starts ... ok
[INFO] [stdout] test rpc::tests::a_token_is_random_hex ... ok
[INFO] [stdout] test rpc::tests::a_value_beside_a_file_is_read_back_into_its_type ... ok
[INFO] [stdout] test rpc::tests::a_value_comes_back_as_json ... ok
[INFO] [stdout] test rpc::tests::a_stream_with_nothing_in_it_is_an_empty_answer ... ok
[INFO] [stdout] test rpc::tests::a_value_part_is_capped_small ... ok
[INFO] [stdout] test rpc::tests::an_argument_of_the_wrong_type_is_reported_against_its_name ... ok
[INFO] [stdout] test rpc::tests::a_visitor_who_has_one_keeps_it ... ok
[INFO] [stdout] test rpc::tests::an_empty_body_is_a_call_with_no_arguments ... ok
[INFO] [stdout] test rpc::tests::an_empty_token_is_not_a_match ... ok
[INFO] [stdout] test rpc::tests::an_unknown_name_says_what_would_have_answered_it ... ok
[INFO] [stdout] test rpc::tests::an_upload_that_is_not_readable_is_refused ... ok
[INFO] [stdout] test rpc::tests::every_file_under_one_name_is_kept ... ok
[INFO] [stdout] test rpc::tests::every_piece_is_one_json_value ... ok
[INFO] [stdout] test rpc::tests::public_details_cannot_replace_reserved_rpc_error_fields ... ok
[INFO] [stdout] test rpc::tests::sending_into_a_stream_nobody_reads_says_so ... ok
[INFO] [stdout] test listen::tests::a_real_address_is_printed_as_it_is ... ok
[INFO] [stdout] test html::tests::an_injected_payload_cannot_escape ... ok
[INFO] [stdout] test rpc::tests::the_cookie_is_named_after_the_port ... ok
[INFO] [stdout] test schedule::tests::daily_utc_moves_to_the_next_matching_minute ... ok
[INFO] [stdout] test rpc::tests::an_argument_sent_after_the_file_says_so ... ok
[INFO] [stdout] test schedule::tests::application_daily_time_tracks_dst ... ok
[INFO] [stdout] test schedule::tests::invalid_and_unknown_definitions_fail_before_start ... ok
[INFO] [stdout] test security::tests::a_response_owned_header_is_preserved ... ok
[INFO] [stdout] test security::tests::an_application_can_replace_or_disable_individual_headers ... ok
[INFO] [stdout] test security::tests::development_allows_loopback_connections_but_production_does_not ... ok
[INFO] [stdout] test security::tests::hsts_is_production_only ... ok
[INFO] [stdout] test schedule::tests::a_past_one_shot_runs_once ... ok
[INFO] [stdout] test security::tests::the_baseline_covers_browser_security_boundaries ... ok
[INFO] [stdout] test security::tests::the_csp_keeps_pulsepoint_working_and_locks_down_injection_targets ... ok
[INFO] [stdout] test shutdown::tests::a_watcher_is_released_when_shutdown_starts ... ok
[INFO] [stdout] test rpc::tests::a_streamed_file_is_handed_over_unread ... ok
[INFO] [stdout] test shutdown::tests::every_watcher_hears_it ... ok
[INFO] [stdout] test shutdown::tests::stopping_with_no_watchers_is_fine ... ok
[INFO] [stdout] test static_export::tests::a_non_rahti_directory_is_never_cleared ... ok
[INFO] [stdout] test static_export::tests::fixed_and_declared_dynamic_pages_are_exported_with_assets ... ok
[INFO] [stdout] test static_export::tests::route_matching_understands_single_and_catch_all_segments ... ok
[INFO] [stdout] test rate_limit::tests::the_client_table_stays_bounded ... ok
[INFO] [stdout] test rpc::tests::a_payload_that_is_not_an_object_is_refused ... ok
[INFO] [stdout] test statics::tests::the_configured_directory_is_used ... ok
[INFO] [stdout] test time::tests::naive_database_values_are_treated_as_utc ... ok
[INFO] [stdout] test time::tests::local_day_bounds_follow_dst_and_are_half_open ... ok
[INFO] [stdout] test time::tests::names_default_validate_and_strip_common_env_quotes ... ok
[INFO] [stdout] test static_export::tests::unsafe_or_unavailable_routes_are_reported ... ok
[INFO] [stdout] test time::tests::naive_utc_conversion_converts_before_removing_the_offset ... ok
[INFO] [stdout] test time::tests::utc_instants_convert_without_being_relabelled ... ok
[INFO] [stdout] test upload::tests::a_limit_that_is_not_a_number_falls_back ... ok
[INFO] [stdout] test upload::tests::a_part_is_refused_before_the_rest_of_it_arrives ... ok
[INFO] [stdout] test upload::tests::a_dropped_file_takes_its_temporary_file_with_it ... ok
[INFO] [stdout] test upload::tests::a_clone_keeps_the_temporary_file_alive ... ok
[INFO] [stdout] test upload::tests::a_part_with_nothing_in_it_is_an_empty_file ... ok
[INFO] [stdout] test upload::tests::a_small_part_stays_in_memory ... ok
[INFO] [stdout] test upload::tests::a_spilled_file_streams_without_being_read_whole ... ok
[INFO] [stdout] test upload::tests::a_part_past_the_threshold_goes_to_disk ... ok
[INFO] [stdout] test schedule::tests::interval_schedules_dispatch_through_the_job_queue ... ok
[INFO] [stdout] test upload::tests::bytes_that_are_not_text_read_as_no_text ... ok
[INFO] [stdout] test attrs::tests::a_spread_cannot_bring_a_handler_onto_a_root_that_owns_its_events - should panic ... ok
[INFO] [stdout] test upload::tests::both_sides_read_back_the_same ... ok
[INFO] [stdout] test upload::tests::saving_a_held_file_writes_it ... ok
[INFO] [stdout] test upload::tests::copying_leaves_the_file_where_it_was ... ok
[INFO] [stdout] test upload::tests::the_per_file_limit_is_never_more_than_the_body_limit ... ok
[INFO] [stdout] test upload::tests::every_spilled_part_gets_its_own_file ... ok
[INFO] [stdout] test validation::tests::an_api_route_can_return_the_same_structured_validation_contract ... ok
[INFO] [stdout] test schedule::tests::overlap_is_suppressed_until_the_previous_job_finishes ... ok
[INFO] [stdout] test upload::tests::saving_a_spilled_file_moves_it ... ok
[INFO] [stdout] test upload::tests::saving_a_shared_file_copies_it ... ok
[INFO] [stdout] test validation::tests::lengths_count_people_facing_characters_instead_of_utf8_bytes ... ok
[INFO] [stdout] test validation::tests::several_fields_and_messages_are_collected_in_stable_order ... ok
[INFO] [stdout] test validation::tests::content_rules_leave_an_optional_empty_value_alone ... ok
[INFO] [stdout] test validation::tests::typed_and_custom_rules_join_the_same_error_bag ... ok
[INFO] [stdout] test validation::tests::validated_returns_the_original_value_after_success ... ok
[INFO] [stdout] test validation::tests::validation_converts_to_a_structured_422_rpc_failure ... ok
[INFO] [stdout] test shutdown::tests::a_watcher_that_waits_a_while_still_hears_it ... ok
[INFO] [stdout] test cache::tests::memory_capacity_cannot_be_zero - should panic ... ok
[INFO] [stdout] test upload::tests::a_part_over_its_limit_is_refused ... ok
[INFO] [stdout] test validation::tests::an_empty_field_name_is_a_programming_error - should panic ... ok
[INFO] [stdout] test upload::tests::what_was_held_before_the_spill_is_kept ... ok
[INFO] [stdout] test rate_limit::tests::a_zero_window_is_rejected_at_configuration - should panic ... ok
[INFO] [stdout] test observability::tests::readiness_names_are_unique - should panic ... ok
[INFO] [stdout] test cache::page::tests::a_zero_page_lifetime_is_not_a_disabled_policy - should panic ... ok
[INFO] [stdout] test security::tests::malformed_configuration_fails_during_installation - should panic ... ok
[INFO] [stdout] test request_pipeline::tests::a_middleware_panic_becomes_the_callers_500_shape ... ok
[INFO] [stdout] test attrs::tests::a_spread_cannot_write_the_component_name - should panic ... ok
[INFO] [stdout] test rpc::tests::a_streamed_file_over_the_limit_stops_partway ... ok
[INFO] [stdout] test jobs::tests::contains_panics_and_times_out_attempts ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 329 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/router.rs (/opt/rustwide/target/debug/deps/router-4c504c8daa95e1b1)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test an_unrouted_url_is_not_answered ... ok
[INFO] [stdout] test the_layouts_below_the_boundary_are_skipped ... ok
[INFO] [stdout] test interpolated_values_are_escaped ... ok
[INFO] [stdout] test a_failed_page_is_replaced_by_its_boundary ... ok
[INFO] [stdout] test a_client_binding_reaches_the_browser_intact ... ok
[INFO] [stdout] test the_dev_client_is_injected_once ... ok
[INFO] [stdout] test an_api_route_is_not_wrapped ... ok
[INFO] [stdout] test a_page_is_rendered_inside_its_layout ... ok
[INFO] [stdout] test a_panicking_page_is_caught_and_rendered ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rahti
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test src/attrs.rs - attrs::Attrs (line 73) ... ignored
[INFO] [stdout] test src/auth.rs - auth (line 60) ... ignored
[INFO] [stdout] test src/auth.rs - auth::user (line 627) ... ignored
[INFO] [stdout] test src/html.rs - html::Json (line 337) ... ignored
[INFO] [stdout] test src/html.rs - html::RenderJs (line 249) ... ignored
[INFO] [stdout] test src/rpc.rs - rpc::RpcStream (line 602) ... ignored
[INFO] [stdout] test src/upload.rs - upload::RpcFile::into_stream (line 357) ... ignored
[INFO] [stdout] test src/upload.rs - upload::RpcUpload (line 463) ... ignored
[INFO] [stdout] test src/auth.rs - auth (line 31) - compile ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.65s; merged doctests compilation took 0.64s
[INFO] running `Command { std: "docker" "inspect" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99", kill_on_drop: false }`
[INFO] [stdout] 4546fa18dba8ac76dbbbaaa3a30133445d5c2b85b1a24fafbea7fbc275516b99
