[INFO] cloning repository https://github.com/adityasasidhar/zero-hermes [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/adityasasidhar/zero-hermes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fadityasasidhar%2Fzero-hermes", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fadityasasidhar%2Fzero-hermes'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0795c4bbc79cc97220aaaa366de2819038c486ee [INFO] testing adityasasidhar/zero-hermes against 1.99.0-beta.8 for beta-1.100-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fadityasasidhar%2Fzero-hermes" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/adityasasidhar/zero-hermes [INFO] finished tweaking git repo https://github.com/adityasasidhar/zero-hermes [INFO] tweaked toml for git repo https://github.com/adityasasidhar/zero-hermes written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/adityasasidhar/zero-hermes 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 git repo https://github.com/adityasasidhar/zero-hermes 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0 [INFO] running `Command { std: "docker" "start" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0", 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" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0" "/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" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0", 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" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling futures-core v0.3.33 [INFO] [stderr] Compiling proc-macro2 v1.0.107 [INFO] [stderr] Compiling serde_core v1.0.229 [INFO] [stderr] Compiling futures-sink v0.3.33 [INFO] [stderr] Compiling find-msvc-tools v0.1.10 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling smallvec v1.15.2 [INFO] [stderr] Compiling mio v1.2.2 [INFO] [stderr] Compiling futures-channel v0.3.33 [INFO] [stderr] Compiling socket2 v0.6.5 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling cc v1.4.2 [INFO] [stderr] Compiling futures-io v0.3.33 [INFO] [stderr] Compiling futures-task v0.3.33 [INFO] [stderr] Compiling quote v1.0.47 [INFO] [stderr] Compiling http v1.5.0 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling syn v3.0.3 [INFO] [stderr] Compiling syn v2.0.119 [INFO] [stderr] Compiling zerocopy v0.8.56 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling ipnet v2.12.1 [INFO] [stderr] Compiling serde_json v1.0.151 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling http-body v1.1.0 [INFO] [stderr] Compiling http-body-util v0.1.4 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling log v0.4.33 [INFO] [stderr] Compiling regex-syntax v0.8.11 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling libsqlite3-sys v0.28.0 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling bitflags v2.13.1 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling webpki-roots v1.0.9 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling regex-automata v0.4.18 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling displaydoc v0.2.7 [INFO] [stderr] Compiling tokio-macros v2.7.2 [INFO] [stderr] Compiling serde_derive v1.0.229 [INFO] [stderr] Compiling rustls v0.23.43 [INFO] [stderr] Compiling tokio v1.53.1 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling async-trait v0.1.92 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling futures-macro v0.3.33 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling yoke v0.8.3 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling futures-util v0.3.33 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling serde v1.0.229 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling chrono v0.4.45 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling clap_derive v4.6.4 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling hyper v1.11.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling tokio-util v0.7.19 [INFO] [stderr] Compiling futures-executor v0.3.33 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling axum-core v0.4.5 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling clap_builder v4.6.6 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling thread_local v1.1.10 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling cron v0.12.1 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling tokio-stream v0.1.19 [INFO] [stderr] Compiling futures v0.3.33 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling async-stream v0.3.6 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling clap v4.6.6 [INFO] [stderr] Compiling zero-hermes v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 37s [INFO] running `Command { std: "docker" "inspect" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0", 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" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0" "/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 rusqlite v0.31.0 [INFO] [stderr] Compiling hyper v1.11.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling tokio-util v0.7.19 [INFO] [stderr] Compiling tokio-stream v0.1.19 [INFO] [stderr] Compiling tower-http v0.6.11 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling zero-hermes v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 23s [INFO] running `Command { std: "docker" "inspect" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0", 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" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0" "/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.37s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/zero_hermes-8b6a7c19b5da539d) [INFO] [stdout] [INFO] [stdout] running 212 tests [INFO] [stdout] test agent::context::tests::refuses_to_cut_when_no_safe_boundary_exists ... ok [INFO] [stdout] test agent::context::tests::never_orphans_a_tool_result ... ok [INFO] [stdout] test agent::context::tests::compaction_is_idempotent ... ok [INFO] [stdout] test agent::context::tests::extractive_summary_dedupes_and_prefers_user_sentences ... ok [INFO] [stdout] test agent::context::tests::token_compaction_keeps_a_summary_and_safe_tail ... ok [INFO] [stdout] test agent::context::tests::drops_whole_exchanges_from_the_front ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_body_emits_tool_role_messages ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_body_handles_multiple_results_in_one_turn ... ok [INFO] [stdout] test agent::context::tests::under_limit_is_untouched ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_body_keeps_plain_user_turns ... ok [INFO] [stdout] test agent::context::tests::token_compaction_merges_summary_into_tail_head ... ok [INFO] [stdout] test agent::provider::fallback_tests::fallback_errors_when_all_fail ... ok [INFO] [stdout] test agent::provider::fallback_tests::fallback_empty_chain_errors_without_panic ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_parse_text_response ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_parse_tool_call_with_object_arguments ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_body_marks_is_error_in_content ... ok [INFO] [stdout] test agent::provider::fallback_tests::build_provider_wraps_fallbacks ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_body_drops_orphan_tool_result ... ok [INFO] [stdout] test agent::provider::fallback_tests::fallback_tries_next_on_error ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_body_minimal ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_body_wraps_tools ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_parse_missing_choices_errors ... ok [INFO] [stdout] test agent::provider::tests::build_body_minimal ... ok [INFO] [stdout] test agent::provider::tests::build_body_no_system_has_no_system_key ... ok [INFO] [stdout] test agent::provider::tests::key_pool_single_and_empty ... ok [INFO] [stdout] test agent::provider::openai_tests::openai_parse_tool_call_with_string_arguments ... ok [INFO] [stdout] test agent::provider::tests::normalize_base_url_absorbs_version_and_slash_artifacts ... ok [INFO] [stdout] test agent::provider::tests::build_body_skips_a_leading_non_user_head ... ok [INFO] [stdout] test agent::provider::tests::key_pool_splits_and_rotates ... ok [INFO] [stdout] test agent::provider::tests::normalize_base_url_keeps_a_bare_v1 ... ok [INFO] [stdout] test agent::provider::tests::parse_text_response ... ok [INFO] [stdout] test agent::provider::tests::build_body_drops_orphan_tool_result ... ok [INFO] [stdout] test agent::stream::tests::anthropic_accepts_crlf_line_endings ... ok [INFO] [stdout] test agent::stream::tests::anthropic_finishes_on_message_stop_even_if_the_body_stays_open ... ok [INFO] [stdout] test agent::provider::tests::provider_new_uses_the_normalised_base_url ... ok [INFO] [stdout] test agent::provider::tests::apply_headers_identifies_the_client_unless_the_config_overrides_it ... ok [INFO] [stdout] test agent::stream::tests::anthropic_finishes_when_the_body_ends_without_any_end_marker ... ok [INFO] [stdout] test agent::provider::tests::parse_tool_use_response ... ok [INFO] [stdout] test agent::provider::tests::build_headers_rejects_config_that_reqwest_would_reject_at_runtime ... ok [INFO] [stdout] test agent::stream::tests::openai_accepts_crlf_line_endings ... ok [INFO] [stdout] test agent::stream::tests::anthropic_tool_use_stream ... ok [INFO] [stdout] test agent::stream::tests::non_data_and_unparseable_lines_are_skipped ... ok [INFO] [stdout] test agent::stream::tests::openai_skips_unparseable_lines ... ok [INFO] [stdout] test agent::stream::tests::openai_finishes_on_done_marker_even_if_the_body_stays_open ... ok [INFO] [stdout] test agent::stream::tests::openai_multiple_tool_calls ... ok [INFO] [stdout] test agent::stream::tests::anthropic_text_stream ... ok [INFO] [stdout] test agent::stream::tests::anthropic_truncated_tool_json_falls_back_to_raw_string ... ok [INFO] [stdout] test agent::stream::tests::openai_text_stream ... ok [INFO] [stdout] test agent::stream::tests::parsers_survive_byte_at_a_time_delivery ... ok [INFO] [stdout] test agent::stream::tests::truncated_streams_still_emit_done ... ok [INFO] [stdout] test agent::stream::tests::openai_tool_call_stream_flushes_on_done ... ok [INFO] [stdout] test agent::stream::tests::openai_tool_call_stream_with_finish_reason ... ok [INFO] [stdout] test agent::tests::mixed_dispatch_preserves_input_order ... ok [INFO] [stdout] test agent::tests::repair_keeps_tool_results_to_avoid_orphaning_tool_use ... ok [INFO] [stdout] test agent::tests::repair_pops_orphan_plain_user_message ... ok [INFO] [stdout] test agent::tests::strips_complete_think_blocks ... ok [INFO] [stdout] test agent::tests::retry_gives_up_on_permanent_errors ... ok [INFO] [stdout] test agent::tests::think_filter_handles_tags_split_across_chunks ... ok [INFO] [stdout] test agent::tests::transient_markers_catch_rate_limits_and_5xx ... ok [INFO] [stdout] test agent::stream::tests::openai_text_is_identical_under_every_two_way_byte_split ... ok [INFO] [stdout] test agent::tests::unterminated_thinking_is_not_shown ... ok [INFO] [stdout] test agent::tool::tests::sanitize_drops_an_orphan_tool_result ... ok [INFO] [stdout] test agent::tool::tests::sanitize_keeps_paired_traffic_untouched ... ok [INFO] [stdout] test agent::tool::tests::sanitize_keeps_text_beside_an_orphan_result ... ok [INFO] [stdout] test agent::tool::tests::sanitize_matching_is_positional_not_global ... ok [INFO] [stdout] test agent::tool::tests::text_round_trip ... ok [INFO] [stdout] test agent::tool::tests::sanitize_strips_unanswered_tool_use_but_keeps_alternation ... ok [INFO] [stdout] test agent::tool::tests::tool_result_block_content_extractable ... ok [INFO] [stdout] test bootstrap::tests::custom_system_prompt_still_gets_substitutions ... ok [INFO] [stdout] test bootstrap::tests::default_system_prompt_has_zero_hermes_identity_and_tool_guidance ... ok [INFO] [stdout] test agent::tool::tests::tool_result_block_serialises ... ok [INFO] [stdout] test bootstrap::tests::allowlist_is_honoured_but_subagent_is_always_present ... ok [INFO] [stdout] test bootstrap::tests::empty_allowlist_registers_every_tool ... ok [INFO] [stdout] test bootstrap::tests::recall_append_keeps_stable_prefix_for_caching ... ok [INFO] [stdout] test bootstrap::tests::sidecars_are_truncated_to_hermes_caps ... ok [INFO] [stdout] test bootstrap::tests::soul_files_concatenate_and_cap ... ok [INFO] [stdout] test bootstrap::tests::skills_dir_prefers_explicit_config ... ok [INFO] [stdout] test bootstrap::tests::subagent_cannot_see_itself ... ok [INFO] [stdout] test bootstrap::tests::soul_files_absent_yields_empty_string ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_injects_sqlite_notes ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_is_stable_for_fixed_inputs ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_includes_configured_markdown_memory ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_injects_both_sidecars_with_headers ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_substitutes_skills_and_memory ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_uses_capped_skill_index_with_discovery_hint ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_without_notes_marks_the_section_empty ... ok [INFO] [stdout] test channels::telegram::tests::channel_name ... ok [INFO] [stdout] test channels::telegram::tests::build_config_url ... ok [INFO] [stdout] test channels::telegram::tests::parse_command_works_for_telegram ... ok [INFO] [stdout] test agent::stream::tests::anthropic_text_is_identical_under_every_two_way_byte_split ... ok [INFO] [stdout] test channels::tests::parse_no_command ... ok [INFO] [stdout] test channels::tests::parse_command_with_mention ... ok [INFO] [stdout] test channels::tests::parse_plain_command ... ok [INFO] [stdout] test config::tests::defaults_are_sane ... ok [INFO] [stdout] test channels::tests::parse_command_with_args ... ok [INFO] [stdout] test config::tests::cron_timezone_defaults_to_utc ... ok [INFO] [stdout] test config::tests::literal_keys_still_work ... ok [INFO] [stdout] test config::tests::empty_sections_match_defaults ... ok [INFO] [stdout] test config::tests::env_references_are_expanded_in_secrets_and_urls ... ok [INFO] [stdout] test config::tests::load_missing_returns_default ... ok [INFO] [stdout] test config::tests::memory_split_defaults_to_user_and_agent_files ... ok [INFO] [stdout] test config::tests::open_bot_requires_explicit_opt_in ... ok [INFO] [stdout] test bootstrap::tests::system_prompt_with_memory_reads_notes_from_the_store ... ok [INFO] [stdout] test config::tests::partial_sections_fall_back_per_field ... ok [INFO] [stdout] test config::tests::parse_minimal_toml ... ok [INFO] [stdout] test config::tests::provider_timeouts_have_defaults ... ok [INFO] [stdout] test config::tests::tilde_in_memory_path_is_expanded_on_load ... ok [INFO] [stdout] test config::tests::provider_header_values_are_expanded_from_the_environment ... ok [INFO] [stdout] test config::tests::tilde_in_user_path_is_expanded_on_load ... ok [INFO] [stdout] test cron::tests::describe_pretty ... ok [INFO] [stdout] test cron::tests::invalid_expr_returns_error ... ok [INFO] [stdout] test cron::tests::parses_every_minute ... ok [INFO] [stdout] test cron::tests::local_daily_schedule_respects_the_host_offset ... ok [INFO] [stdout] test cron::tests::local_and_utc_schedules_agree_on_interval_expressions ... ok [INFO] [stdout] test cron::tests::parses_specific_time ... ok [INFO] [stdout] test mcp::tests::empty_command_errors_without_spawn ... ok [INFO] [stdout] test cron::tests::scheduler_emits_event ... ok [INFO] [stdout] test mcp::tests::build_mcp_tools_empty_config_yields_no_tools ... ok [INFO] [stdout] test agent::stream::tests::openai_tool_call_is_identical_under_every_two_way_byte_split ... ok [INFO] [stdout] test mcp::tests::request_framing_round_trips ... ok [INFO] [stdout] test mcp::tests::tool_names_are_sanitized ... ok [INFO] [stdout] test mcp::tests::mcp_config_parses_from_toml ... ok [INFO] [stdout] test memory::tests::list_notes_sorted ... ok [INFO] [stdout] test memory::tests::append_to_unknown_session_starts_at_zero ... ok [INFO] [stdout] test memory::tests::append_preserves_prefix_across_compaction ... ok [INFO] [stdout] test memory::tests::histories_are_durable_and_searchable ... ok [INFO] [stdout] test memory::tests::notes_round_trip ... ok [INFO] [stdout] test cron::tests::scheduler_fires_every_job_due_at_the_same_instant ... ok [INFO] [stdout] test agent::tests::mutating_tools_run_serially ... ok [INFO] [stdout] test memory::tests::session_stats_and_delete_round_trip ... ok [INFO] [stdout] test memory::tests::recall_matches_nonadjacent_terms ... ok [INFO] [stdout] test memory::tests::rank_orders_best_match_first ... ok [INFO] [stdout] test memory::tests::search_excludes_current_session ... ok [INFO] [stdout] test memory::tests::recall_ignores_fts_operators_in_user_text ... ok [INFO] [stdout] test skills::tests::hub_rejects_non_http_manifest_url_without_network ... ok [INFO] [stdout] test skills::tests::hub_manifest_validation_rejects_unsafe_entries ... ok [INFO] [stdout] test skills::tests::keeps_duplicate_frontmatter_names_under_directory_aliases ... ok [INFO] [stdout] test skills::tests::loads_from_dir ... ok [INFO] [stdout] test memory::tests::recall_section_formats_hits ... ok [INFO] [stdout] test skills::tests::no_frontmatter ... ok [INFO] [stdout] test skills::tests::hub_url_prefers_config_over_env ... ok [INFO] [stdout] test skills::tests::parses_frontmatter ... ok [INFO] [stdout] test skills::tests::render_index_capped_empty_registry ... ok [INFO] [stdout] test skills::tests::render_index_lists_all ... ok [INFO] [stdout] test skills::tests::render_index_capped_hints_at_more ... ok [INFO] [stdout] test tools::builtin::tests::bash_schema_has_command ... ok [INFO] [stdout] test tools::builtin::tests::bash_schema_timeout_defaults ... ok [INFO] [stdout] test tools::builtin::tests::compat_aliases_have_distinct_names ... ok [INFO] [stdout] test tools::builtin::tests::clamp_timeout_defaults_and_caps ... ok [INFO] [stdout] test tools::builtin::tests::ask_tool_echoes_question ... ok [INFO] [stdout] test skills::tests::loads_nested_hermes_layout_and_frontmatter_name ... ok [INFO] [stdout] test tools::builtin::tests::fetch_blocks_obscured_numeric_ips ... ok [INFO] [stdout] test tools::builtin::tests::fetch_blocks_private_hosts_and_non_http ... ok [INFO] [stdout] test tools::builtin::tests::fetch_tool_refuses_blocked_url_without_network ... ok [INFO] [stdout] test tools::builtin::tests::html_to_text_strips_scripts_and_tags ... ok [INFO] [stdout] test tools::builtin::tests::edit_tool_single_and_multi ... ok [INFO] [stdout] test tools::builtin::tests::memory_schema_lists_all_five_actions ... ok [INFO] [stdout] test tools::builtin::tests::cron_validated_custom_jobs_skip_invalid ... ok [INFO] [stdout] test tools::builtin::tests::memory_tool_no_backend ... ok [INFO] [stdout] test tools::builtin::tests::cron_tool_crud_round_trip ... ok [INFO] [stdout] test tools::builtin::tests::model_output_cap_truncates_with_note ... ok [INFO] [stdout] test tools::builtin::tests::outbox_parse_round_trip ... ok [INFO] [stdout] test memory::tests::sessions_round_trip ... ok [INFO] [stdout] test tools::builtin::tests::read_and_write_round_trip ... ok [INFO] [stdout] test tools::builtin::tests::message_tool_queues_outbox ... ok [INFO] [stdout] test tools::builtin::tests::http_client_disables_redirects ... ok [INFO] [stdout] test tools::builtin::tests::search_files_finds_content ... ok [INFO] [stdout] test tools::builtin::tests::memory_search_accepts_query_field ... ok [INFO] [stdout] test tools::builtin::tests::read_default_cap_truncates_with_note ... ok [INFO] [stdout] test tools::builtin::tests::skill_read_resolves_nested_layout ... ok [INFO] [stdout] test tools::builtin::tests::skill_sync_without_hub_errors_without_network ... ok [INFO] [stdout] test tools::builtin::tests::strip_html_removes_tags_and_scripts ... ok [INFO] [stdout] test tools::builtin::tests::skill_patch_replaces_once ... ok [INFO] [stdout] test tools::builtin::tests::skill_write_validates_frontmatter ... ok [INFO] [stdout] test tools::builtin::tests::validate_skill_content_accepts_and_rejects ... ok [INFO] [stdout] test tools::builtin::tests::url_encode_escapes_query ... ok [INFO] [stdout] test tools::builtin::tests::web_extract_blocks_private_urls ... ok [INFO] [stdout] test tools::builtin::tests::web_search_blocks_private_url_query ... ok [INFO] [stdout] test tools::tests::registry_filter ... ok [INFO] [stdout] test tools::tests::registry_remove_returns_arc ... ok [INFO] [stdout] test tools::tests::registry_schemas_are_sorted ... ok [INFO] [stdout] test tools::tests::registry_unknown_tool ... ok [INFO] [stdout] test util::tests::ascii_truncation ... ok [INFO] [stdout] test util::tests::chunk_text_falls_back_to_hard_cut ... ok [INFO] [stdout] test util::tests::chunk_text_prefers_newline_boundary ... ok [INFO] [stdout] test util::tests::chunk_text_respects_char_not_byte_limits ... ok [INFO] [stdout] test util::tests::chunk_text_short_is_single_chunk ... ok [INFO] [stdout] test util::tests::dotenv_does_not_clobber_the_real_environment ... ok [INFO] [stdout] test tools::builtin::tests::skill_patch_rejects_ambiguous_match ... ok [INFO] [stdout] test tools::builtin::tests::todo_tool_round_trip ... ok [INFO] [stdout] test util::tests::exact_boundary_no_ellipsis ... ok [INFO] [stdout] test util::tests::expand_env_handles_both_syntaxes ... ok [INFO] [stdout] test util::tests::expand_tilde_leaves_other_paths_alone ... ok [INFO] [stdout] test util::tests::dotenv_parses_the_usual_shapes ... ok [INFO] [stdout] test util::tests::empty_string ... ok [INFO] [stdout] test util::tests::dotenv_missing_file_is_not_an_error ... ok [INFO] [stdout] test util::tests::expand_tilde_rewrites_leading_home ... ok [INFO] [stdout] test tools::builtin::tests::skill_schema_advertises_sync ... ok [INFO] [stdout] test util::tests::multibyte_safe_truncation ... ok [INFO] [stdout] test util::tests::random_hex_is_right_length_and_varies ... ok [INFO] [stdout] test tools::tests::registry_lookup_and_call ... ok [INFO] [stdout] test web::tests::lagged_has_no_session ... ok [INFO] [stdout] test web::tests::parse_bind_fallback ... ok [INFO] [stdout] test web::tests::parse_bind_valid ... ok [INFO] [stdout] test web::tests::web_chat_id_strips_prefix ... ok [INFO] [stdout] test web::tests::ui_event_round_trip_done ... ok [INFO] [stdout] test web::tests::ui_event_round_trip_text_delta ... ok [INFO] [stdout] test web::tests::ui_event_round_trip_tool_use ... ok [INFO] [stdout] test util::tests::short_string_unchanged ... ok [INFO] [stdout] test util::tests::truncate_chars_counts_characters_not_bytes ... ok [INFO] [stdout] test agent::stream::tests::anthropic_tool_call_is_identical_under_every_two_way_byte_split ... ok [INFO] [stdout] test agent::tests::retry_succeeds_after_transient_failures ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 212 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.04s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/zero_hermes-1bf40ab81ad3b0b2) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/agent_stream_test.rs (/opt/rustwide/target/debug/deps/agent_stream_test-f70e14c1358fa096) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test run_stream_keeps_assistant_text_alongside_a_tool_call ... ok [INFO] [stdout] test run_stream_never_shows_a_think_block ... ok [INFO] [stdout] test run_stream_dispatches_tool_calls_and_emits_results ... ok [INFO] [stdout] test run_stream_retries_a_transient_error_before_any_output ... ok [INFO] [stdout] test run_stream_uses_a_completion_delivered_only_via_done ... ok [INFO] [stdout] test run_stream_does_not_retry_after_output_was_already_emitted ... ok [INFO] [stdout] test run_stream_does_not_retry_a_permanent_error ... ok [INFO] [stdout] test run_stream_reports_a_stream_that_never_produced_done ... ok [INFO] [stdout] test run_stream_stops_at_the_iteration_cap_with_a_fallback ... ok [INFO] [stdout] test make_context_with_memory_attaches_the_store_and_optional_cwd ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/builtin_tools_test.rs (/opt/rustwide/target/debug/deps/builtin_tools_test-3d3f4085834e6fee) [INFO] [stdout] [INFO] [stdout] running 30 tests [INFO] [stdout] test bash_merges_stderr_and_appends_a_nonzero_exit_code ... ok [INFO] [stdout] test execute_code_accepts_command_as_an_alternative_to_code ... ok [INFO] [stdout] test execute_code_requires_either_command_or_code ... ok [INFO] [stdout] test execute_code_falls_back_to_the_shell ... ok [INFO] [stdout] test execute_code_reports_a_failing_exit_code ... ok [INFO] [stdout] test bash_runs_in_the_context_working_directory ... ok [INFO] [stdout] test bash_reports_a_successful_command_without_an_exit_note ... ok [INFO] [stdout] test fetch_refuses_loopback_and_private_hosts ... ok [INFO] [stdout] test reading_a_missing_file_fails_without_hard_erroring ... ok [INFO] [stdout] test fetch_reports_the_status_instead_of_hiding_it ... ok [INFO] [stdout] test search_files_clamps_max_results ... ok [INFO] [stdout] test search_files_returns_path_line_hits ... ok [INFO] [stdout] test search_files_says_so_when_nothing_matches ... ok [INFO] [stdout] test skill_names_cannot_escape_the_skills_root ... ok [INFO] [stdout] test fetch_blocks_host_encoding_evasions_of_loopback ... ok [INFO] [stdout] test skill_view_reports_an_unknown_name ... ok [INFO] [stdout] test search_files_rejects_an_empty_pattern ... ok [INFO] [stdout] test skill_write_rejects_content_without_valid_frontmatter ... ok [INFO] [stdout] test todo_without_a_memory_backend_is_reported ... ok [INFO] [stdout] test skill_write_then_read_round_trips_inside_the_root ... ok [INFO] [stdout] test the_file_aliases_round_trip_like_their_short_forms ... ok [INFO] [stdout] test web_extract_requires_a_url ... ok [INFO] [stdout] test web_extract_is_subject_to_the_same_ssrf_guard_as_fetch ... ok [INFO] [stdout] test web_extract_strips_html_tags_and_scripts ... ok [INFO] [stdout] test web_extract_reports_a_page_with_no_readable_text ... ok [INFO] [stdout] test todo_reports_a_corrupt_note_instead_of_panicking ... ok [INFO] [stdout] test execute_code_honours_the_working_directory ... ok [INFO] [stdout] test execute_code_runs_python ... ok [INFO] [stdout] test bash_timeout_returns_promptly_and_says_so ... ok [INFO] [stderr] Running tests/cli_test.rs (/opt/rustwide/target/debug/deps/cli_test-204acd97ade72af2) [INFO] [stdout] test bash_timeout_kills_the_whole_process_tree ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.04s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 24 tests [INFO] [stdout] test a_missing_subcommand_is_a_usage_error ... ok [INFO] [stdout] test cron_list_prints_each_job_and_its_next_firing ... ok [INFO] [stdout] test cron_list_on_defaults_is_empty_but_succeeds ... ok [INFO] [stdout] test cron_check_rejects_a_garbage_expression ... ok [INFO] [stdout] test an_unknown_subcommand_fails_loudly ... ok [INFO] [stdout] test gateway_refuses_an_open_bot_without_explicit_opt_in ... ok [INFO] [stdout] test cron_check_reports_a_next_firing_time ... ok [INFO] [stdout] test environment_references_in_config_are_expanded ... ok [INFO] [stdout] test gateway_refuses_to_start_without_a_token ... ok [INFO] [stdout] test help_lists_every_subcommand ... ok [INFO] [stdout] test show_config_emits_every_section ... ok [INFO] [stdout] test config_discovery_prefers_the_more_specific_source ... ok [INFO] [stdout] test show_config_reflects_the_config_file_it_was_given ... ok [INFO] [stdout] test init_config_writes_a_sample_and_refuses_to_clobber_it ... ok [INFO] [stdout] test the_generated_sample_config_round_trips ... ok [INFO] [stdout] test tools_honours_the_enabled_tools_allowlist ... ok [INFO] [stdout] test tools_lists_the_default_registry ... ok [INFO] [stdout] test version_flag_reports_the_crate_version ... ok [INFO] [stdout] test gateway_rejects_an_invalid_cron_schedule ... ok [INFO] [stdout] test gateway_reports_duplicate_cron_job_names ... ok [INFO] [stdout] test run_with_mock_and_stream_prints_the_same_answer ... ok [INFO] [stdout] test chat_exits_when_stdin_is_closed ... ok [INFO] [stdout] test run_with_mock_prints_the_answer_and_exits_cleanly ... ok [INFO] [stdout] test web_ui_serves_health_and_enforces_csrf_over_a_real_socket ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s [INFO] [stdout] [INFO] [stderr] Running tests/cron_test.rs (/opt/rustwide/target/debug/deps/cron_test-645a8ac9afc24ab5) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test parses_every_minute ... ok [INFO] [stdout] test parses_every_5_minutes ... ok [INFO] [stdout] test rejects_garbage ... ok [INFO] [stdout] test describe_minimal ... ok [INFO] [stdout] test scheduler_emits_event_within_window ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/loop_test.rs (/opt/rustwide/target/debug/deps/loop_test-296709526e299955) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test a_single_turn_is_never_cut_mid_tool_chain ... ok [INFO] [stdout] test history_stays_bounded_across_many_turns ... ok [INFO] [stdout] test run_stream_with_mock_yields_text_then_done ... ok [INFO] [stdout] test loop_uses_tool_result_in_next_call ... ok [INFO] [stdout] test tool_failures_reach_the_model_flagged_as_errors ... ok [INFO] [stdout] test loop_caps_iterations_to_max ... ok [INFO] [stdout] test loop_dispatch_single_tool ... ok [INFO] [stdout] test loop_handles_unknown_tool ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/memory_test.rs (/opt/rustwide/target/debug/deps/memory_test-0f2d3da503ceab4b) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test list_notes_sorted ... ok [INFO] [stdout] test notes_round_trip ... ok [INFO] [stdout] test sessions_crud ... ok [INFO] [stdout] test overwrite_note ... ok [INFO] [stdout] test file_backed_memory ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s [INFO] [stdout] [INFO] [stderr] Running tests/provider_http_test.rs (/opt/rustwide/target/debug/deps/provider_http_test-c14356a393a9c314) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test anthropic_complete_parses_tool_use_into_tool_calls ... ok [INFO] [stdout] test anthropic_complete_posts_the_documented_request ... ok [INFO] [stdout] test anthropic_complete_tolerates_a_base_url_that_already_ends_in_v1 ... ok [INFO] [stdout] test anthropic_complete_tolerates_a_trailing_slash_in_the_base_url ... ok [INFO] [stdout] test anthropic_stream_delivers_text_deltas_and_a_final_completion ... ok [INFO] [stdout] test a_connection_error_is_reported_not_panicked ... ok [INFO] [stdout] test a_streaming_request_that_fails_surfaces_the_error_as_an_event ... ok [INFO] [stdout] test anthropic_complete_reports_a_non_json_body ... ok [INFO] [stdout] test a_body_that_stops_mid_stream_surfaces_a_stream_error ... ok [INFO] [stdout] test openai_complete_sends_configured_headers_and_a_user_agent ... ok [INFO] [stdout] test openai_complete_reports_a_non_success_status ... ok [INFO] [stdout] test build_provider_selects_the_wire_format_from_the_kind ... ok [INFO] [stdout] test openai_complete_tolerates_a_base_url_that_already_ends_in_v1 ... ok [INFO] [stdout] test openai_complete_sends_temperature_only_when_configured ... ok [INFO] [stdout] test openai_complete_uses_bearer_auth_and_parses_content ... ok [INFO] [stdout] test openai_complete_parses_tool_calls_with_string_arguments ... ok [INFO] [stdout] test anthropic_complete_reports_a_non_success_status_with_a_body_excerpt ... ok [INFO] [stdout] test openai_stream_delivers_text_deltas_and_a_final_completion ... ok [INFO] [stdout] test a_provider_that_stops_talking_times_out_instead_of_hanging ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.05s [INFO] [stdout] [INFO] [stderr] Running tests/skills_test.rs (/opt/rustwide/target/debug/deps/skills_test-5fc964164ca18f10) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test missing_dir_returns_empty_registry ... ok [INFO] [stdout] test parses_frontmatter_with_blank_lines ... ok [INFO] [stdout] test render_index_empty ... ok [INFO] [stdout] test no_frontmatter_returns_body_only ... ok [INFO] [stdout] test parse_minimal_skill ... ok [INFO] [stdout] test loads_from_temp_dir ... ok [INFO] [stdout] test loads_nested_category_layout ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s [INFO] [stdout] [INFO] [stderr] Running tests/telegram_test.rs (/opt/rustwide/target/debug/deps/telegram_test-bec61ff64a8a50a9) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test parse_command_with_args ... ok [INFO] [stdout] test parse_command_with_mention ... ok [INFO] [stdout] test parse_simple_command ... ok [INFO] [stdout] test parse_no_command ... ok [INFO] [stdout] test channel_name_is_telegram ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/tools_test.rs (/opt/rustwide/target/debug/deps/tools_test-34b6d3a053e9fa2d) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test registry_filter_by_name ... ok [INFO] [stdout] test subagent_child_registry_excludes_subagent_itself ... ok [INFO] [stdout] test registry_lookup_and_call ... ok [INFO] [stdout] test read_and_write_tools ... ok [INFO] [stdout] test bash_tool_runs_command ... ok [INFO] [stdout] test subagent_tool_runs_child_loop_and_strips_itself ... ok [INFO] [stdout] test memory_tool_round_trip ... ok [INFO] [stdout] test fetch_tool_against_local_server ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [INFO] [stdout] [INFO] [stderr] Running tests/web_test.rs (/opt/rustwide/target/debug/deps/web_test-7518bc80a97ab6ad) [INFO] [stdout] [INFO] [stdout] running 22 tests [INFO] [stdout] test delete_session_rejects_a_bad_csrf_token ... ok [INFO] [stdout] test delete_session_clears_the_transcript ... ok [INFO] [stdout] test index_contains_the_sessions_picker ... ok [INFO] [stdout] test assets_route_404s_an_unknown_file ... ok [INFO] [stdout] test parse_bind_default_fallback ... ok [INFO] [stdout] test assets_route_serves_the_logo ... ok [INFO] [stdout] test health_endpoint ... ok [INFO] [stdout] test create_session_rejects_a_bad_csrf_token ... ok [INFO] [stdout] test index_html_serves ... ok [INFO] [stdout] test index_references_the_logo_asset ... ok [INFO] [stdout] test index_embeds_the_live_csrf_token ... ok [INFO] [stdout] test create_session_mints_an_id_and_is_idempotent ... ok [INFO] [stdout] test send_persists_session_to_memory ... ok [INFO] [stdout] test send_routes_with_empty_message ... ok [INFO] [stdout] test send_with_wrong_csrf_token_is_rejected ... ok [INFO] [stdout] test send_without_csrf_token_is_rejected ... ok [INFO] [stdout] test tool_context_default_is_empty ... ok [INFO] [stdout] test web_session_normalization ... ok [INFO] [stdout] test send_with_message_returns_redirect_and_emits_user_event ... ok [INFO] [stdout] test send_to_a_named_session_scopes_events_and_history ... ok [INFO] [stdout] test sessions_list_always_contains_the_default ... ok [INFO] [stdout] test sse_format_is_data_lines ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.04s [INFO] [stdout] [INFO] [stderr] Doc-tests zero_hermes [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0", kill_on_drop: false }` [INFO] [stdout] 58756a61087ce22028c3a1dd4748b598b7abd630f47b73630a5e186d38a6fdf0