[INFO] cloning repository https://github.com/BiBoyang/AMClaw
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BiBoyang/AMClaw" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBiBoyang%2FAMClaw", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBiBoyang%2FAMClaw'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b8d309a0f5e22c67027403060370b5eb73bb21cf
[INFO] testing BiBoyang/AMClaw against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBiBoyang%2FAMClaw" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/BiBoyang/AMClaw
[INFO] finished tweaking git repo https://github.com/BiBoyang/AMClaw
[INFO] tweaked toml for git repo https://github.com/BiBoyang/AMClaw written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/BiBoyang/AMClaw on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/BiBoyang/AMClaw 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded phf_shared v0.12.1
[INFO] [stderr]   Downloaded phf v0.12.1
[INFO] [stderr]   Downloaded webpki-roots v1.0.7
[INFO] [stderr]   Downloaded mio v1.2.0
[INFO] [stderr]   Downloaded iri-string v0.7.12
[INFO] [stderr]   Downloaded hyper v1.9.0
[INFO] [stderr]   Downloaded nix v0.31.2
[INFO] [stderr]   Downloaded chrono-tz v0.10.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd
[INFO] running `Command { std: "docker" "start" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd", 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" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd", 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" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling rustls v0.23.39
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling nix v0.31.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling ctrlc v3.5.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling hashbrown v0.14.5
[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 hashlink v0.9.1
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling AMClaw v0.3.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 52.32s
[INFO] running `Command { std: "docker" "inspect" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd", 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" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling AMClaw v0.3.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 12.81s
[INFO] running `Command { std: "docker" "inspect" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd", 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" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.24s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/amclaw-96ec32701ccfd8d9)
[INFO] [stdout] 
[INFO] [stdout] running 400 tests
[INFO] [stdout] test agent_core::tests::agent_log_payload_keeps_contract_fields ... ok
[INFO] [stdout] test agent_core::tests::ask_user_failure_action_returns_user_message ... ok
[INFO] [stdout] test agent_core::tests::context_pack::context_pack_exposes_section_metadata ... ok
[INFO] [stdout] test agent_core::tests::context_pack::context_assembler_includes_runtime_fields_and_observation ... ok
[INFO] [stdout] test agent_core::tests::context_pack::latest_observation_pre_trims_to_section_budget ... ok
[INFO] [stdout] test agent_core::tests::context_pack::context_pack_includes_previous_observation_summaries ... ok
[INFO] [stdout] test agent_core::tests::context_pack::previous_observations_skip_duplicate_summaries ... ok
[INFO] [stdout] test agent_core::tests::current_step_replan_scope_preserves_done_prefix_and_tail ... ok
[INFO] [stdout] test agent_core::tests::context_pack::context_pack_records_trim_and_drop_reasons ... ok
[INFO] [stdout] test agent_core::tests::current_step_index_tracks_executor_progress ... ok
[INFO] [stdout] test agent_core::tests::context_pack::session_text_section_uses_boundary_compaction_for_long_input ... ok
[INFO] [stdout] test agent_core::tests::context_pack::session_text_section_keeps_full_text_for_short_input ... ok
[INFO] [stdout] test agent_core::tests::context_pack::session_text_compaction_supports_truncate_strategy ... ok
[INFO] [stdout] test agent_core::tests::llm_plan_business_tools_are_supported ... ok
[INFO] [stdout] test agent_core::tests::invalid_retriever_mode_fails_explicitly ... ok
[INFO] [stdout] test agent_core::tests::llm_plan_json_is_supported ... ok
[INFO] [stdout] test agent_core::tests::llm_plan_markdown_json_is_supported ... ok
[INFO] [stdout] test agent_core::tests::llm_plan_with_plan_steps_and_progress_is_supported ... ok
[INFO] [stdout] test agent_core::tests::llm_plan_with_expected_observation_is_supported ... ok
[INFO] [stdout] test agent_core::tests::failed_tool_marks_plan_step_failed ... ok
[INFO] [stdout] test agent_core::tests::map_llm_plan_requires_path_for_read ... ok
[INFO] [stdout] test agent_core::tests::full_replan_scope_replaces_entire_plan ... ok
[INFO] [stdout] test agent_core::tests::context_summary_contains_core_runtime_signals ... ok
[INFO] [stdout] test agent_core::tests::derive_runtime_session_state_merges_persistent_and_runtime ... ok
[INFO] [stdout] test agent_core::tests::invalid_command_returns_error ... ok
[INFO] [stdout] test agent_core::tests::low_value_observation_replan_then_ask_user ... ok
[INFO] [stdout] test agent_core::tests::loop_create_then_read ... ok
[INFO] [stdout] test agent_core::tests::context_pack::preview_context_verbose_includes_section_content_and_memory_drop_details ... ok
[INFO] [stdout] test agent_core::tests::context_pack::context_assembler_includes_business_context_sections ... ok
[INFO] [stdout] test agent_core::tests::context_pack::preview_context_renders_budget_and_sections ... ok
[INFO] [stdout] test agent_core::tests::context_pack::business_context_snapshot_reads_current_and_recent_tasks ... ok
[INFO] [stdout] test agent_core::tests::context_pack::preview_context_respects_agent_config_summary_strategy ... ok
[INFO] [stdout] test agent_core::tests::memory_context::business_context_snapshot_reads_user_memories ... ok
[INFO] [stdout] test agent_core::tests::memory_context::memory_no_user_id_degrades_gracefully ... ok
[INFO] [stdout] test agent_core::tests::memory_context::memory_budget_trimming_for_typed_memories ... ok
[INFO] [stdout] test agent_core::tests::merge_string_arrays_dedup_still_works_with_reserve ... ok
[INFO] [stdout] test agent_core::tests::merge_string_arrays_deduplicates_and_caps_length ... ok
[INFO] [stdout] test agent_core::tests::merge_string_arrays_is_case_insensitive_dedup ... ok
[INFO] [stdout] test agent_core::tests::merge_string_arrays_runtime_signal_is_reserved_when_capacity_full ... ok
[INFO] [stdout] test agent_core::tests::agent_core_uses_retriever_trait_not_store_directly ... ok
[INFO] [stdout] test agent_core::tests::memory_context::memory_budget_trimming_removes_excess ... ok
[INFO] [stdout] test agent_core::tests::one_step_is_not_enough_for_tool_then_finalize ... ok
[INFO] [stdout] test agent_core::tests::legacy_flow_no_regression_with_default_rule_retriever ... ok
[INFO] [stdout] test agent_core::tests::plan_step_statuses_are_tracked_in_trace ... ok
[INFO] [stdout] test agent_core::tests::recovery_loop_guard_prevents_infinite_escalation ... ok
[INFO] [stdout] test agent_core::tests::prefix_command_is_supported ... ok
[INFO] [stdout] test agent_core::tests::remaining_plan_replan_scope_replaces_remaining_steps ... ok
[INFO] [stdout] test agent_core::tests::replan_budget_exhaustion_turns_into_ask_user ... ok
[INFO] [stdout] test agent_core::tests::memory_context::memory_user_isolation_prevents_cross_user_leak ... ok
[INFO] [stdout] test agent_core::tests::memory_context::memory_feedback_retrieved_and_injected_are_recorded ... ok
[INFO] [stdout] test agent_core::tests::hybrid_mode_returns_hybrid_retriever_with_fallback ... ok
[INFO] [stdout] test agent_core::tests::low_value_observation_triggers_replan ... ok
[INFO] [stdout] test agent_core::tests::run_context_builder_keeps_optional_fields ... ok
[INFO] [stdout] test agent_core::tests::run_with_context_returns_runtime_session_state ... ok
[INFO] [stdout] test agent_core::tests::memory_context::memory_v1_types_are_injected_with_labels ... ok
[INFO] [stdout] test agent_core::tests::session_state_low_signal_only_for_runtime_default_goal ... ok
[INFO] [stdout] test agent_core::tests::session_state_persistent_fallback_goal_is_not_low_signal ... ok
[INFO] [stdout] test agent_core::tests::session_state_persistent_goal_not_filtered_even_if_template_like_text ... ok
[INFO] [stdout] test agent_core::tests::session_state_v2_all_slots_injected_into_prompt ... ok
[INFO] [stdout] test agent_core::tests::scripted_planner_supports_multi_step_tool_loop ... ok
[INFO] [stdout] test agent_core::tests::stalled_trajectory_escalates_to_full_replan_then_ask_user ... ok
[INFO] [stdout] test agent_core::tests::successful_tool_can_fail_done_rule_validation ... ok
[INFO] [stdout] test agent_core::tests::trace_contains_session_state_observability_fields ... ok
[INFO] [stdout] test agent_core::tests::trace_context_pack_fields_populated_on_budget_trim ... ok
[INFO] [stdout] test agent_core::tests::memory_context::session_state_dedup_marks_dropped ... ok
[INFO] [stdout] test agent_core::tests::trace_context_pack_fields_present_after_run ... ok
[INFO] [stdout] test agent_core::tests::trace_persistence::agent_run_with_context_writes_upstream_metadata ... ok
[INFO] [stdout] test agent_core::tests::trace_persistence::agent_run_writes_trace_file ... ok
[INFO] [stdout] test agent_core::tests::trace_persistence::daily_index_markdown_is_generated ... ok
[INFO] [stdout] test agent_core::tests::trace_persistence::trace_index_backcompat_missing_injected_alias_fields_defaults_to_zero ... ok
[INFO] [stdout] test agent_core::tests::trace_persistence::persist_twice_appends_index_without_overwrite ... ok
[INFO] [stdout] test agent_core::tests::trace_records_recovery_attempt_action_outcome ... ok
[INFO] [stdout] test agent_core::tests::transient_failure_is_classified_as_retry_step ... ok
[INFO] [stdout] test agent_core::tests::trace_persistence::write_daily_index_markdown_skips_invalid_lines ... ok
[INFO] [stdout] test agent_core::tests::unfinished_plan_final_triggers_trajectory_drift_replan ... ok
[INFO] [stdout] test agent_core::tests::validate_expected_observation_checks_expected_fields ... ok
[INFO] [stdout] test agent_core::tests::transient_failure_retry_then_replan ... ok
[INFO] [stdout] test chat_adapter::tests::chat_log_payload_keeps_contract_fields ... ok
[INFO] [stdout] test agent_core::tests::memory_context::session_state_single_item_too_long_marks_dropped ... ok
[INFO] [stdout] test agent_core::tests::memory_context::session_state_multi_turn_isolation ... ok
[INFO] [stdout] test agent_core::tests::memory_context::suppressed_typed_memory_not_injected ... ok
[INFO] [stdout] test agent_core::tests::memory_context::session_state_trim_marks_budget_exceeded ... ok
[INFO] [stdout] test agent_core::tests::memory_context::trace_contains_typed_memory_observability_fields ... ok
[INFO] [stdout] test agent_core::tests::rollout_allowlist_miss_hybrid_fallback_to_rule ... ok
[INFO] [stdout] test agent_core::tests::retrieval_observability_fields_present_in_trace ... ok
[INFO] [stdout] test agent_core::tests::rollout_allowlist_hit_shadow_uses_primary ... ok
[INFO] [stdout] test agent_core::tests::rollout_disabled_semantic_fallback_to_rule ... ok
[INFO] [stdout] test agent_core::tests::rule_mode_returns_rule_retriever_directly ... ok
[INFO] [stdout] test chat_adapter::tests::low_signal_runtime_state_does_not_overwrite_persistent ... ok
[INFO] [stdout] test agent_core::tests::semantic_mode_falls_back_to_rule_with_fallback_name ... ok
[INFO] [stdout] test agent_core::tests::preview_context_does_not_apply_memory_feedback ... ok
[INFO] [stdout] test agent_core::tests::shadow_mode_returns_shadow_retriever_with_rule_output ... ok
[INFO] [stdout] test agent_core::tests::memory_feedback_applied_once_per_run ... ok
[INFO] [stdout] test chat_adapter::tests::context_debug_query_keeps_pending_session_intact ... ok
[INFO] [stdout] test chat_adapter::tests::auto_memory_is_extracted_from_chat_text ... ok
[INFO] [stdout] test chat_adapter::tests::duplicate_link_messages_do_not_create_second_article_or_task ... ok
[INFO] [stdout] test chat_adapter::tests::context_debug_does_not_corrupt_persistent_state ... ok
[INFO] [stdout] test chat_adapter::tests::duplicate_message_is_ignored_by_handle_message ... ok
[INFO] [stdout] test chat_adapter::tests::runtime_session_state_merge_is_conservative ... ok
[INFO] [stdout] test chat_adapter::tests::runtime_session_state_merge_returns_false_when_equivalent ... ok
[INFO] [stdout] test chat_adapter::tests::empty_text_is_not_persisted ... ok
[INFO] [stdout] test chat_adapter::tests::no_session_state_does_not_panic ... ok
[INFO] [stdout] test chat_adapter::tests::daily_report_query_builds_reply ... ok
[INFO] [stdout] test chat_adapter::tests::mark_seen_store_error_is_fail_closed ... ok
[INFO] [stdout] test chat_adapter::tests::flush_expired_sessions_deletes_persisted_state ... ok
[INFO] [stdout] test chat_adapter::tests::persisted_session_is_restored_on_bot_startup ... ok
[INFO] [stdout] test chat_adapter::tests::should_send_processing_ack_threshold_behavior ... ok
[INFO] [stdout] test chat_adapter::tests::split_reply_into_chunks_long_text_multi_chunks ... ok
[INFO] [stdout] test chat_adapter::tests::split_reply_into_chunks_preserves_full_content_when_joined ... ok
[INFO] [stdout] test chat_adapter::tests::split_reply_into_chunks_short_text_single_chunk ... ok
[INFO] [stdout] test chat_adapter::tests::split_reply_into_chunks_zero_budget_does_not_loop ... ok
[INFO] [stdout] test chat_adapter::tests::manual_archive_rejected_reply_includes_current_status ... ok
[INFO] [stdout] test chat_adapter::tests::manual_tasks_query_does_not_create_new_tasks ... ok
[INFO] [stdout] test chat_adapter::tests::pending_link_task_is_consumed ... ok
[INFO] [stdout] test chat_adapter::tests::handle_message_persists_inbound_text ... ok
[INFO] [stdout] test chat_adapter::tests::session_state_is_written_on_flush ... ok
[INFO] [stdout] test chat_adapter::tests::session_state_user_isolation_in_chat_adapter ... ok
[INFO] [stdout] test chat_adapter::tests::manual_content_submission_archives_task ... ok
[INFO] [stdout] test chat_adapter::tests::pending_chat_session_is_persisted ... ok
[INFO] [stdout] test chat_adapter::tests::recent_tasks_query_does_not_create_new_tasks ... ok
[INFO] [stdout] test chat_adapter::tests::session_state_is_loaded_and_injected_into_agent_context ... ok
[INFO] [stdout] test command_router::tests::bang_bang_suffix_becomes_commit ... ok
[INFO] [stdout] test command_router::tests::bare_commit_marker_is_ignored ... ok
[INFO] [stdout] test command_router::tests::bare_continue_marker_is_ignored ... ok
[INFO] [stdout] test command_router::tests::bare_domain_becomes_link_submission ... ok
[INFO] [stdout] test command_router::tests::bare_domain_with_path_becomes_link_submission ... ok
[INFO] [stdout] test command_router::tests::daily_report_command_is_supported ... ok
[INFO] [stdout] test command_router::tests::dot_dot_suffix_becomes_continue ... ok
[INFO] [stdout] test command_router::tests::duplicate_urls_are_deduplicated ... ok
[INFO] [stdout] test command_router::tests::email_like_text_is_not_treated_as_link ... ok
[INFO] [stdout] test chat_adapter::tests::link_message_creates_article_and_task ... FAILED
[INFO] [stdout] test command_router::tests::empty_text_is_ignored ... ok
[INFO] [stdout] test command_router::tests::english_status_command_is_supported ... ok
[INFO] [stdout] test command_router::tests::manual_content_submission_is_supported ... ok
[INFO] [stdout] test command_router::tests::manual_tasks_command_is_supported ... ok
[INFO] [stdout] test command_router::tests::mixed_text_with_url_becomes_link_submission ... ok
[INFO] [stdout] test command_router::tests::plain_text_becomes_pending ... ok
[INFO] [stdout] test command_router::tests::recent_tasks_command_is_supported ... ok
[INFO] [stdout] test command_router::tests::retry_command_becomes_task_retry ... ok
[INFO] [stdout] test command_router::tests::status_command_becomes_task_query ... ok
[INFO] [stdout] test command_router::tests::surrounding_whitespace_is_trimmed ... ok
[INFO] [stdout] test command_router::tests::trailing_punctuation_is_removed_from_url ... ok
[INFO] [stdout] test command_router::tests::url_becomes_link_submission ... ok
[INFO] [stdout] test command_router::tests::user_memory_suppress_commands_are_supported ... ok
[INFO] [stdout] test command_router::tests::weekly_report_command_is_supported ... ok
[INFO] [stdout] test command_router::tests::user_memory_commands_are_supported ... ok
[INFO] [stdout] test config::tests::default_retriever_mode_is_rule ... ok
[INFO] [stdout] test config::tests::invalid_toml_returns_error ... ok
[INFO] [stdout] test config::tests::relative_storage_root_is_resolved_against_config_dir ... ok
[INFO] [stdout] test config::tests::missing_config_is_created_with_defaults ... ok
[INFO] [stdout] test chat_adapter::tests::send_generated_reply_writes_trace_with_chat_context ... ok
[INFO] [stdout] test chat_adapter::tests::retry_command_processes_task_immediately ... ok
[INFO] [stdout] test chat_adapter::tests::session_state_updated_at_is_refreshed_after_agent_run ... ok
[INFO] [stdout] test chat_adapter::tests::user_memory_commands_write_and_read_back ... ok
[INFO] [stdout] test chat_adapter::tests::status_query_after_link_keeps_single_task ... ok
[INFO] [stdout] test chat_adapter::tests::user_memory_suppress_command_cannot_remove_other_users_memory ... ok
[INFO] [stdout] test chat_adapter::tests::user_memory_useful_command_cannot_mark_other_users_memory ... ok
[INFO] [stdout] test chat_adapter::tests::weekly_report_query_builds_reply ... ok
[INFO] [stdout] test chat_adapter::tests::status_query_does_not_create_article_or_task ... ok
[INFO] [stdout] test chat_adapter::tests::user_memory_useful_command_marks_memory_useful ... ok
[INFO] [stdout] test context_pack::tests::context_pack_builds_with_sections ... ok
[INFO] [stdout] test context_pack::tests::context_pack_no_state_degradation ... ok
[INFO] [stdout] test context_pack::tests::context_pack_trim_records_reason ... ok
[INFO] [stdout] test context_pack::tests::tie_break_drops_smaller_section_first ... ok
[INFO] [stdout] test logging::tests::structured_log_payload_has_core_fields_and_drops_nulls ... ok
[INFO] [stdout] test mode_policy::tests::restricted_allows_read ... ok
[INFO] [stdout] test mode_policy::tests::restricted_allows_172_32 ... ok
[INFO] [stdout] test mode_policy::tests::restricted_denies_127_0_0_1 ... ok
[INFO] [stdout] test mode_policy::tests::restricted_denies_172_16 ... ok
[INFO] [stdout] test mode_policy::tests::restricted_denies_file_protocol ... ok
[INFO] [stdout] test mode_policy::tests::unrestricted_allows_all_tools ... ok
[INFO] [stdout] test mode_policy::tests::restricted_denies_run_command ... ok
[INFO] [stdout] test pipeline::tests::decode_entities_converts_common ... ok
[INFO] [stdout] test pipeline::tests::browser_capture_response_paths_must_match_request ... ok
[INFO] [stdout] test pipeline::tests::decode_entities_preserves_unknown_entity ... ok
[INFO] [stdout] test pipeline::tests::decode_entities_supports_numeric_decimal_and_hex ... ok
[INFO] [stdout] test mode_policy::tests::restricted_denies_ipv6_loopback ... ok
[INFO] [stdout] test pipeline::tests::empty_pre_block_behavior ... ok
[INFO] [stdout] test pipeline::tests::html_fragment_to_markdown_preserves_code_block ... ok
[INFO] [stdout] test pipeline::tests::http_archive_extracts_generic_article_body ... ok
[INFO] [stdout] test pipeline::tests::non_wechat_urls_allow_http_redirects ... ok
[INFO] [stdout] test pipeline::tests::page_kind_article_keeps_existing_logic ... ok
[INFO] [stdout] test pipeline::tests::page_kind_error_page_detected_without_primary_body ... ok
[INFO] [stdout] test pipeline::tests::http_redirect_to_private_target_is_rejected ... ok
[INFO] [stdout] test pipeline::tests::page_kind_error_page_chinese ... ok
[INFO] [stdout] test pipeline::tests::page_kind_error_page_short_with_error_title ... ok
[INFO] [stdout] test pipeline::tests::page_kind_index_like_many_links_little_prose ... ok
[INFO] [stdout] test pipeline::tests::page_kind_link_post_short_with_link ... ok
[INFO] [stdout] test pipeline::tests::page_kind_index_like_many_list_items ... ok
[INFO] [stdout] test pipeline::tests::page_kind_long_article_about_404_not_classified_as_error ... ok
[INFO] [stdout] test pipeline::tests::browser_capture_archive_uses_extracted_body ... ok
[INFO] [stdout] test pipeline::tests::page_kind_webpage_fallback ... ok
[INFO] [stdout] test pipeline::tests::pipeline_log_payload_keeps_contract_fields ... ok
[INFO] [stdout] test pipeline::tests::pre_block_converts_to_code_fence ... ok
[INFO] [stdout] test pipeline::tests::primary_body_extracts_wechat_title_and_content ... ok
[INFO] [stdout] test pipeline::tests::primary_body_keeps_links_and_images ... ok
[INFO] [stdout] test pipeline::tests::primary_body_keeps_links_and_images_with_single_quoted_attrs ... ok
[INFO] [stdout] test pipeline::tests::http_archive_includes_summary_section ... ok
[INFO] [stdout] test pipeline::tests::pre_block_with_whitespace_attrs ... ok
[INFO] [stdout] test pipeline::tests::redirected_wechat_error_page_is_detected_by_final_url ... ok
[INFO] [stdout] test pipeline::tests::rule_summary_filters_navigation_text ... ok
[INFO] [stdout] test pipeline::tests::restore_code_placeholders_ignores_user_text_collision ... ok
[INFO] [stdout] test pipeline::tests::rule_summary_generates_from_title_and_paragraphs ... ok
[INFO] [stdout] test pipeline::tests::rule_summary_returns_none_for_empty_input ... ok
[INFO] [stdout] test pipeline::tests::processing_pending_task_creates_markdown_file ... ok
[INFO] [stdout] test pipeline::tests::rule_summary_skips_short_paragraphs ... ok
[INFO] [stdout] test pipeline::tests::title_extraction_handles_missing_title ... ok
[INFO] [stdout] test pipeline::tests::strip_html_tags_removes_all_tags ... ok
[INFO] [stdout] test pipeline::tests::wechat_domain_prefers_browser_capture ... ok
[INFO] [stdout] test pipeline::tests::wechat_urls_keep_redirect_guard ... ok
[INFO] [stdout] test pipeline::tests::wechat_captcha_redirect_is_rejected ... ok
[INFO] [stdout] test chat_adapter::tests::user_memory_suppress_command_removes_from_list ... ok
[INFO] [stdout] test chat_adapter::tests::user_memory_promoted_short_non_ascii_id_safe_preview ... ok
[INFO] [stdout] test context_pack::tests::context_pack_drop_reasons_on_budget_exceeded ... ok
[INFO] [stdout] test context_pack::tests::section_access_by_kind ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::cached_provider_empty_batch ... ok
[INFO] [stdout] test mode_policy::tests::restricted_denies_localhost_url ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::cached_provider_model_name_returns_inner ... ok
[INFO] [stdout] test pipeline::tests::wechat_error_page_is_rejected ... ok
[INFO] [stdout] test chat_adapter::tests::session_state_v2_fields_written_on_flush ... ok
[INFO] [stdout] test mode_policy::tests::restricted_allows_public_url ... ok
[INFO] [stdout] test pipeline::tests::pre_block_preserves_indentation ... ok
[INFO] [stdout] test pipeline::tests::pre_block_wechat_code_snippets ... ok
[INFO] [stdout] test retriever::embedding::tests::create_provider_deepseek_without_env_fails ... ok
[INFO] [stdout] test retriever::embedding::tests::create_provider_moonshot_without_env_fails ... ok
[INFO] [stdout] test chat_adapter::tests::task_status_can_reflect_awaiting_manual_input ... ok
[INFO] [stdout] test retriever::embedding::tests::create_provider_noop_works ... ok
[INFO] [stdout] test retriever::embedding::tests::noop_embed_documents_returns_explicit_error ... ok
[INFO] [stdout] test retriever::embedding::tests::noop_embed_query_returns_explicit_error ... ok
[INFO] [stdout] test retriever::embedding::tests::noop_provider_has_stable_model_name ... ok
[INFO] [stdout] test retriever::guarded::tests::guarded_disabled_uses_fallback ... ok
[INFO] [stdout] test retriever::guarded::tests::guarded_enabled_empty_allowlist_allows_all ... ok
[INFO] [stdout] test retriever::guarded::tests::guarded_enabled_with_allowlist_hit_uses_primary ... ok
[INFO] [stdout] test retriever::guarded::tests::guarded_enabled_with_allowlist_miss_uses_fallback ... ok
[INFO] [stdout] test retriever::guarded::tests::guarded_fallback_only_always_uses_fallback ... ok
[INFO] [stdout] test retriever::embedding::tests::embedding_response_parsing ... ok
[INFO] [stdout] test retriever::hybrid::tests::cosine_similarity_different_dimensions ... ok
[INFO] [stdout] test retriever::hybrid::tests::cosine_similarity_identical_vectors ... ok
[INFO] [stdout] test retriever::hybrid::tests::cosine_similarity_opposite_vectors ... ok
[INFO] [stdout] test retriever::hybrid::tests::cosine_similarity_orthogonal_vectors ... ok
[INFO] [stdout] test retriever::embedding::tests::create_provider_unknown_fails ... ok
[INFO] [stdout] test retriever::hybrid::tests::cosine_similarity_zero_vector ... ok
[INFO] [stdout] test pipeline::tests::manual_content_creates_archive ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::task_store_embedding_cache_batch_roundtrip ... ok
[INFO] [stdout] test retriever::hybrid::tests::hybrid_retriever_custom_name ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::task_store_embedding_cache_stats ... ok
[INFO] [stdout] test retriever::hybrid::tests::hybrid_retriever_empty_result_for_unknown_user ... ok
[INFO] [stdout] test retriever::hybrid::tests::hybrid_retriever_basic_flow ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::task_store_embedding_cache_roundtrip ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::cached_provider_survives_db_missing ... ok
[INFO] [stdout] test reporter::tests::weekly_report_is_generated_for_archived_tasks ... ok
[INFO] [stdout] test reporter::tests::daily_report_includes_summary_when_available ... ok
[INFO] [stdout] test reporter::tests::daily_report_is_generated_for_archived_tasks ... ok
[INFO] [stdout] test retriever::hybrid::tests::hybrid_retriever_custom_alpha ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::task_store_embedding_cache_clear ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::cached_provider_miss_then_hit ... ok
[INFO] [stdout] test retriever::cached_embedding::tests::cached_provider_batch_partial_hit ... ok
[INFO] [stdout] test reporter::tests::utc_storage_with_local_timezone_boundary_is_correct ... ok
[INFO] [stdout] test retriever::hybrid::tests::hybrid_retriever_fallback_on_embedding_error ... ok
[INFO] [stdout] test retriever::hybrid::tests::hybrid_retriever_fallback_on_empty_query_text ... ok
[INFO] [stdout] test retriever::rule::tests::rule_retriever_empty_result_for_unknown_user ... ok
[INFO] [stdout] test retriever::semantic::tests::semantic_retriever_empty_result_for_unknown_user ... ok
[INFO] [stdout] test retriever::rule::tests::rule_retriever_returns_metadata_with_memory_type_and_priority ... ok
[INFO] [stdout] test retriever::rule::tests::rule_retriever_custom_name ... ok
[INFO] [stdout] test retriever::rule::tests::rule_retriever_returns_same_order_as_task_store_search ... ok
[INFO] [stdout] test retriever::semantic::tests::semantic_retriever_custom_name ... ok
[INFO] [stdout] test retriever::rule::tests::rule_retriever_user_isolation ... ok
[INFO] [stdout] test scheduler::tests::daily_run_time_is_parsed ... ok
[INFO] [stdout] test scheduler::tests::invalid_daily_run_time_is_rejected ... ok
[INFO] [stdout] test scheduler::tests::daily_report_schedule_is_built_from_config ... ok
[INFO] [stdout] test retriever::hybrid::tests::hybrid_retriever_respects_limit ... ok
[INFO] [stdout] test scheduler::tests::scheduler_watchdog_detects_panic ... ok
[INFO] [stdout] test retriever::semantic::tests::semantic_retriever_basic_flow ... ok
[INFO] [stdout] test scheduler::tests::should_run_weekly_after_target_weekday_and_once_per_week ... ok
[INFO] [stdout] test scheduler::tests::should_run_only_after_scheduled_time_and_once_per_day ... ok
[INFO] [stdout] test session_router::tests::commit_flushes_buffered_messages ... ok
[INFO] [stdout] test session_router::tests::continue_does_not_flush_immediately ... ok
[INFO] [stdout] test session_router::tests::expired_session_is_flushed ... ok
[INFO] [stdout] test session_router::tests::message_ids_are_preserved_when_flushing ... ok
[INFO] [stdout] test session_router::tests::flushed_session_is_removed ... ok
[INFO] [stdout] test scheduler::tests::weekly_report_schedule_is_built_from_config ... ok
[INFO] [stdout] test session_router::tests::next_flush_delay_tracks_soonest_session ... ok
[INFO] [stdout] test session_router::tests::pending_messages_do_not_flush_immediately ... ok
[INFO] [stdout] test session_router::tests::restore_session_allows_timeout_flush ... ok
[INFO] [stdout] test session_router::tests::session_snapshot_reflects_buffered_state ... ok
[INFO] [stdout] test session_router::tests::users_are_isolated ... ok
[INFO] [stdout] test retriever::semantic::tests::semantic_retriever_fallback_on_embedding_error ... ok
[INFO] [stdout] test session_summary::tests::build_session_text_uses_boundary_for_long_input ... ok
[INFO] [stdout] test session_summary::tests::build_session_text_uses_full_for_short_input ... ok
[INFO] [stdout] test session_summary::tests::semantic_summary_keeps_keywords_and_last_segment ... ok
[INFO] [stdout] test session_summary::tests::truncate_summary_adds_notice ... ok
[INFO] [stdout] test retriever::semantic::tests::semantic_retriever_fallback_on_empty_query_text ... ok
[INFO] [stdout] test scheduler::tests::scheduler_watchdog_ignores_normal_shutdown ... ok
[INFO] [stdout] test retriever::rule::tests::retrieve_result_contains_retriever_name_and_counts ... ok
[INFO] [stdout] test retriever::shadow::tests::shadow_empty_result_for_unknown_user ... ok
[INFO] [stdout] test retriever::shadow::tests::shadow_custom_name ... ok
[INFO] [stdout] test retriever::shadow::tests::shadow_retrieve_non_blocking ... ok
[INFO] [stdout] test retriever::semantic::tests::semantic_retriever_respects_limit ... ok
[INFO] [stdout] test retriever::shadow::tests::shadow_returns_rule_result_even_with_hybrid ... ok
[INFO] [stdout] test retriever::shadow::tests::shadow_skips_hybrid_when_query_text_empty ... ok
[INFO] [stdout] test retriever::shadow::tests::shadow_without_hybrid_works_like_rule ... ok
[INFO] [stdout] test retriever::shadow::tests::shadow_matches_rule_output ... ok
[INFO] [stdout] test task_store::tests::memory_basic::explicit_memory_sorts_before_auto ... ok
[INFO] [stdout] test task_store::tests::memory_basic::search_memories_returns_all_sorted ... ok
[INFO] [stdout] test task_store::tests::memory_basic::search_memories_respects_limit ... ok
[INFO] [stdout] test task_store::tests::memory_basic::search_memories_sorts_by_priority_and_dedupes ... ok
[INFO] [stdout] test task_executor::tests::worker_survives_task_panic_and_consumes_next_task ... ok
[INFO] [stdout] test task_store::tests::memory_feedback::feedback_state_is_single_source ... ok
[INFO] [stdout] test task_store::tests::cleanup_expired_user_session_states_cleans_both_tables ... ok
[INFO] [stdout] test task_store::tests::context_token_can_be_persisted_and_loaded ... ok
[INFO] [stdout] test task_store::tests::memory_basic::suppress_memory_rejects_unknown_id ... ok
[INFO] [stdout] test task_store::tests::memory_basic::user_memory_can_be_added_and_listed ... ok
[INFO] [stdout] test task_store::tests::memory_basic::suppress_memory_excludes_from_results ... ok
[INFO] [stdout] test task_store::tests::memory_basic::user_memory_dedup_check_works ... ok
[INFO] [stdout] test task_store::tests::memory_basic::user_memory_schema_has_new_fields ... ok
[INFO] [stdout] test task_store::tests::memory_basic::user_memory_isolation ... ok
[INFO] [stdout] test task_store::tests::memory_basic::suppress_memory_rejects_other_users_memory ... ok
[INFO] [stdout] test task_store::tests::memory_basic::user_memory_typed_auto ... ok
[INFO] [stdout] test task_store::tests::memory_feedback::confirm_memory_useful_enforces_user_ownership ... ok
[INFO] [stdout] test task_store::tests::memory_feedback::feedback_injected_updates_injected_count ... ok
[INFO] [stdout] test task_store::tests::memory_basic::user_memory_migration_adds_columns ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_auto_does_not_downgrade_explicit ... ok
[INFO] [stdout] test task_store::tests::memory_feedback::feedback_retrieved_updates_retrieved_count ... ok
[INFO] [stdout] test task_store::tests::memory_feedback::feedback_useful_updates_use_count_and_useful_and_last_used_at ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_explicit_promotes_auto ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_skips_duplicate_same_type ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_skips_empty_content ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_skips_too_long_content ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_write_state_no_cross_user_leak ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_writes_new_explicit_memory ... ok
[INFO] [stdout] test task_store::tests::memory_typed::memory_type_label_prefixes_are_correct ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_writes_new_auto_memory ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_write_state_counters_accurate ... ok
[INFO] [stdout] test task_store::tests::memory_sorting::explicit_still_sorts_before_auto ... ok
[INFO] [stdout] test task_store::tests::memory_governance::memory_write_threshold_skips_noise ... ok
[INFO] [stdout] test task_store::tests::memory_sorting::higher_use_count_sorts_first ... ok
[INFO] [stdout] test task_store::tests::memory_sorting::sorting_is_deterministic ... ok
[INFO] [stdout] test task_store::tests::memory_typed::govern_project_fact_cannot_downgrade_explicit ... ok
[INFO] [stdout] test task_store::tests::memory_sorting::last_used_at_affects_sorting ... ok
[INFO] [stdout] test task_store::tests::memory_typed::govern_explicit_promotes_lesson ... ok
[INFO] [stdout] test task_store::tests::memory_sorting::useful_auto_sorts_before_non_useful_auto ... ok
[INFO] [stdout] test task_store::tests::memory_typed::govern_user_preference_promotes_auto ... ok
[INFO] [stdout] test task_store::tests::memory_typed::lesson_can_be_written_and_retrieved ... ok
[INFO] [stdout] test task_store::tests::memory_typed::memory_type_user_isolation ... ok
[INFO] [stdout] test task_store::tests::memory_typed::user_preference_can_be_written_and_retrieved ... ok
[INFO] [stdout] test task_store::tests::messages::duplicate_message_is_ignored_even_after_reopen ... ok
[INFO] [stdout] test task_store::tests::messages::inbound_message_text_is_persisted ... ok
[INFO] [stdout] test task_store::tests::messages::duplicate_message_does_not_create_second_inbound_row ... ok
[INFO] [stdout] test task_store::tests::memory_typed::govern_lesson_skips_duplicate_project_fact ... ok
[INFO] [stdout] test task_store::tests::memory_typed::new_memory_types_sort_by_priority ... ok
[INFO] [stdout] test task_store::tests::session_state_can_be_persisted_listed_and_deleted ... ok
[INFO] [stdout] test task_store::tests::messages::schema_is_created ... ok
[INFO] [stdout] test task_store::tests::memory_typed::project_fact_can_be_written_and_retrieved ... ok
[INFO] [stdout] test task_store::tests::summary_is_overwritten_on_rerun ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::archived_tasks_can_be_listed ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::duplicate_link_returns_existing_article_and_task ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::expired_lease_task_can_be_reclaimed ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::link_submission_creates_article_and_task ... ok
[INFO] [stdout] test task_store::tests::task_store_log_payload_keeps_contract_fields ... ok
[INFO] [stdout] test task_store::tests::url_guard::domain_resolving_to_private_ip_is_blocked ... ok
[INFO] [stdout] test task_store::tests::url_guard::domain_resolving_to_public_ip_is_allowed ... ok
[INFO] [stdout] test task_store::tests::url_guard::fc_fd_prefix_domain_names_are_not_falsely_blocked ... ok
[INFO] [stdout] test task_store::tests::url_guard::is_private_url_detects_all_known_patterns ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::retry_missing_task_returns_none ... ok
[INFO] [stdout] test task_store::tests::memory_governance::govern_dedup_checks_all_active_memories_not_top_50 ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::querying_missing_task_returns_none ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::manual_tasks_can_be_listed ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::mark_task_awaiting_manual_input_preserves_snapshot_when_none ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::retry_processing_task_returns_validation_error ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::pending_tasks_can_be_listed_and_archived ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::retry_task_resets_status_and_clears_error ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::task_can_be_marked_awaiting_manual_input ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::task_status_can_be_queried ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::task_can_be_marked_failed ... ok
[INFO] [stdout] test task_store::tests::messages::concurrent_writes_do_not_panic_on_busy ... ok
[INFO] [stdout] test task_store::tests::url_guard::javascript_scheme_is_rejected_during_link_submission ... ok
[INFO] [stdout] test task_store::tests::url_guard::private_network_urls_are_rejected ... ok
[INFO] [stdout] test tool_registry::tests::create_write_read_file_works ... ok
[INFO] [stdout] test task_store::tests::url_guard::non_http_scheme_is_rejected_during_link_submission ... ok
[INFO] [stdout] test tool_registry::tests::deny_outside_workspace_path ... ok
[INFO] [stdout] test tool_registry::tests::deny_symlink_file_escape_read ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::mark_task_failed_preserves_diagnostic_fields ... ok
[INFO] [stdout] test task_store::tests::task_lifecycle::recent_tasks_returns_latest_first ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_first_write_and_read_back ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_empty_load_returns_none ... ok
[INFO] [stdout] test task_store::tests::url_guard::tracking_query_params_are_removed_during_normalization ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_clear_removes_record ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_all_optional_fields_can_be_none ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_survives_reopen ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_overwrite_updates_fields ... ok
[INFO] [stdout] test tool_registry::tests::deny_symlink_parent_escape_write ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_upsert_empty_user_id_fails ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_user_isolation ... ok
[INFO] [stdout] test tool_registry::tests::get_task_status_reads_from_task_store ... ok
[INFO] [stdout] test tool_registry::tests::list_recent_and_manual_tasks_read_from_task_store ... ok
[INFO] [stdout] test tool_registry::tests::deny_archive_path_outside_workspace ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_v2_migration_on_existing_db ... ok
[INFO] [stdout] test task_store::tests::user_session_state::user_session_state_v2_fields_round_trip ... ok
[INFO] [stdout] test tool_registry::tests::read_article_archive_reads_output_file_from_task_status ... ok
[INFO] [stdout] test reporter::tests::daily_report_does_not_miss_entries_when_recent_history_is_large ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- chat_adapter::tests::link_message_creates_article_and_task stdout ----
[INFO] [stdout] {"event":"worker_started","level":"info","ts":"2026-07-09T07:04:53.890474431+08:00","worker_id":"010383c8-faeb-44dc-8d93-f4cb85809e9c"}
[INFO] [stdout] {"event":"message_received","level":"info","message_id":"msg-4","text_chars":31,"text_preview":"收藏 https://example.com/path?q=1","ts":"2026-07-09T07:04:53.890494531+08:00","user_id":"user-a"}
[INFO] [stdout] {"event":"inbound_message_recorded","level":"info","message_id":"msg-4","status":"recorded","text_chars":31,"ts":"2026-07-09T07:04:53.892844321+08:00","user_id":"user-a"}
[INFO] [stdout] {"event":"message_accepted","level":"info","message_id":"msg-4","status":"accepted","ts":"2026-07-09T07:04:53.892910351+08:00","user_id":"user-a"}
[INFO] [stdout] {"event":"reply_skipped_no_context_token","level":"warn","reply_chars":43,"reply_preview":"- 失败 https://example.com/path?q=1 => 写入文章失败","ts":"2026-07-09T07:04:53.893472231+08:00","user_id":"user-a"}
[INFO] [stdout] 
[INFO] [stdout] thread 'chat_adapter::tests::link_message_creates_article_and_task' (2051) panicked at src/chat_adapter/tests.rs:226:5:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 0
[INFO] [stdout]  right: 1
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x55e23b9fb8f8 - std[10d71ac2c42b111e]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x55e23b9fb8f8 - std[10d71ac2c42b111e]::backtrace_rs::backtrace::trace_unsynchronized::<std[10d71ac2c42b111e]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x55e23b9fb8f8 - std[10d71ac2c42b111e]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x55e23b9fb8f8 - <<std[10d71ac2c42b111e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[8fb95b77d25ab6c8]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x55e23ba1507a - <core[8fb95b77d25ab6c8]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x55e23ba1507a - core[8fb95b77d25ab6c8]::fmt::write
[INFO] [stdout]    6:     0x55e23ba01202 - std[10d71ac2c42b111e]::io::default_write_fmt::<alloc[a7ee25936407c584]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x55e23ba01202 - <alloc[a7ee25936407c584]::vec::Vec<u8> as std[10d71ac2c42b111e]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x55e23b9d7096 - <std[10d71ac2c42b111e]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x55e23b9d7096 - std[10d71ac2c42b111e]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x55e23b9f2d59 - std[10d71ac2c42b111e]::panicking::default_hook
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x55e23b2f297c - <alloc[a7ee25936407c584]::boxed::Box<dyn for<'a, 'b> core[8fb95b77d25ab6c8]::ops::function::Fn<(&'a std[10d71ac2c42b111e]::panic::PanicHookInfo<'b>,), Output = ()> + core[8fb95b77d25ab6c8]::marker::Sync + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::Fn<(&std[10d71ac2c42b111e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2289:9
[INFO] [stdout]   12:     0x55e23b2f297c - test[213991da798b1c03]::test_main_inner::<test[213991da798b1c03]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x55e23b9f2fd2 - <alloc[a7ee25936407c584]::boxed::Box<dyn for<'a, 'b> core[8fb95b77d25ab6c8]::ops::function::Fn<(&'a std[10d71ac2c42b111e]::panic::PanicHookInfo<'b>,), Output = ()> + core[8fb95b77d25ab6c8]::marker::Sync + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::Fn<(&std[10d71ac2c42b111e]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2289:9
[INFO] [stdout]   14:     0x55e23b9f2fd2 - std[10d71ac2c42b111e]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x55e23b9d7152 - std[10d71ac2c42b111e]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x55e23b9cba19 - std[10d71ac2c42b111e]::sys::backtrace::__rust_end_short_backtrace::<std[10d71ac2c42b111e]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x55e23b9d82fd - __rustc[3be9ba60078d4c86]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x55e23ba1583c - core[8fb95b77d25ab6c8]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x55e23ba156f3 - core[8fb95b77d25ab6c8]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x55e23b0c7ff2 - core[8fb95b77d25ab6c8]::panicking::assert_failed::<i64, i64>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x55e23afbd262 - amclaw[4a3ecbdecb13d3f1]::chat_adapter::tests::link_message_creates_article_and_task
[INFO] [stdout]                                at /opt/rustwide/workdir/src/chat_adapter/tests.rs:226:5
[INFO] [stdout]   22:     0x55e23afadcb7 - amclaw[4a3ecbdecb13d3f1]::chat_adapter::tests::link_message_creates_article_and_task::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/chat_adapter/tests.rs:214:43
[INFO] [stdout]   23:     0x55e23b0bb036 - <amclaw[4a3ecbdecb13d3f1]::chat_adapter::tests::link_message_creates_article_and_task::{closure#0} as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x55e23b2e5a5b - <fn() -> core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x55e23b2e5a5b - test[213991da798b1c03]::__rust_begin_short_backtrace::<core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>, fn() -> core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:724:18
[INFO] [stdout]   26:     0x55e23b2f32d5 - test[213991da798b1c03]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:747:74
[INFO] [stdout]   27:     0x55e23b2f32d5 - <core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x55e23b2f32d5 - std[10d71ac2c42b111e]::panicking::catch_unwind::do_call::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>, core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x55e23b2f32d5 - std[10d71ac2c42b111e]::panicking::catch_unwind::<core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>, core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x55e23b2f32d5 - std[10d71ac2c42b111e]::panic::catch_unwind::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<test[213991da798b1c03]::run_test_in_process::{closure#0}>, core[8fb95b77d25ab6c8]::result::Result<(), alloc[a7ee25936407c584]::string::String>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x55e23b2f32d5 - test[213991da798b1c03]::run_test_in_process
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:747:27
[INFO] [stdout]   32:     0x55e23b2f32d5 - test[213991da798b1c03]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:668:43
[INFO] [stdout]   33:     0x55e23b2ecbe4 - test[213991da798b1c03]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/test/src/lib.rs:698:41
[INFO] [stdout]   34:     0x55e23b2ecbe4 - std[10d71ac2c42b111e]::sys::backtrace::__rust_begin_short_backtrace::<test[213991da798b1c03]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x55e23b2f6352 - std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked::<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x55e23b2f6352 - <core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x55e23b2f6352 - std[10d71ac2c42b111e]::panicking::catch_unwind::do_call::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x55e23b2f6352 - std[10d71ac2c42b111e]::panicking::catch_unwind::<(), core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x55e23b2f6352 - std[10d71ac2c42b111e]::panic::catch_unwind::<core[8fb95b77d25ab6c8]::panic::unwind_safe::AssertUnwindSafe<std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x55e23b2f6352 - std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked::<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x55e23b2f6352 - <std[10d71ac2c42b111e]::thread::lifecycle::spawn_unchecked<test[213991da798b1c03]::run_test::{closure#1}, ()>::{closure#1} as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x55e23b9fab4f - <alloc[a7ee25936407c584]::boxed::Box<dyn core[8fb95b77d25ab6c8]::ops::function::FnOnce<(), Output = ()> + core[8fb95b77d25ab6c8]::marker::Send> as core[8fb95b77d25ab6c8]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/alloc/src/boxed.rs:2275:9
[INFO] [stdout]   43:     0x55e23b9fab4f - <std[10d71ac2c42b111e]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/b2282dd5646a57d570fc86fbe8df0e8826665ef6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   44:     0x7592540ffaa4 - <unknown>
[INFO] [stdout]   45:     0x75925418ca64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] {"event":"worker_shutdown","level":"info","ts":"2026-07-09T07:04:54.011237011+08:00"}
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     chat_adapter::tests::link_message_creates_article_and_task
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 399 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.88s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd", kill_on_drop: false }`
[INFO] [stdout] b97f8b232e69473a4b67d0839c606fb5976e549c3873149a6a7674550c8956fd
