[INFO] cloning repository https://github.com/gezihuzi/mcp-subagent-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gezihuzi/mcp-subagent-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgezihuzi%2Fmcp-subagent-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgezihuzi%2Fmcp-subagent-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 740f728956170065279316522bf178f53bbf21fb
[INFO] testing gezihuzi/mcp-subagent-rs against beta-2026-04-21 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgezihuzi%2Fmcp-subagent-rs" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/gezihuzi/mcp-subagent-rs
[INFO] finished tweaking git repo https://github.com/gezihuzi/mcp-subagent-rs
[INFO] tweaked toml for git repo https://github.com/gezihuzi/mcp-subagent-rs written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gezihuzi/mcp-subagent-rs on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/gezihuzi/mcp-subagent-rs 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9be15adb337db0b61531e97f7861b6525a7928bbcce13c1c7238305fcdbfe1cc
[INFO] running `Command { std: "docker" "start" "-a" "9be15adb337db0b61531e97f7861b6525a7928bbcce13c1c7238305fcdbfe1cc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9be15adb337db0b61531e97f7861b6525a7928bbcce13c1c7238305fcdbfe1cc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9be15adb337db0b61531e97f7861b6525a7928bbcce13c1c7238305fcdbfe1cc", kill_on_drop: false }`
[INFO] [stdout] 9be15adb337db0b61531e97f7861b6525a7928bbcce13c1c7238305fcdbfe1cc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 71b7edab0279a9236c45b6f22660cd9f2a73e5d6ff9d3d48aeca308ec6a9f457
[INFO] running `Command { std: "docker" "start" "-a" "71b7edab0279a9236c45b6f22660cd9f2a73e5d6ff9d3d48aeca308ec6a9f457", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling rmcp v1.2.0
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling rmcp-macros v1.2.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling uuid v1.22.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling mcp-subagent v0.10.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.13s
[INFO] running `Command { std: "docker" "inspect" "71b7edab0279a9236c45b6f22660cd9f2a73e5d6ff9d3d48aeca308ec6a9f457", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "71b7edab0279a9236c45b6f22660cd9f2a73e5d6ff9d3d48aeca308ec6a9f457", kill_on_drop: false }`
[INFO] [stdout] 71b7edab0279a9236c45b6f22660cd9f2a73e5d6ff9d3d48aeca308ec6a9f457
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b6f00e12aa225f07a6423e58114faed3fbf8b602f793e3ff741819c5a3589fa2
[INFO] running `Command { std: "docker" "start" "-a" "b6f00e12aa225f07a6423e58114faed3fbf8b602f793e3ff741819c5a3589fa2", kill_on_drop: false }`
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling mcp-subagent v0.10.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 24.57s
[INFO] running `Command { std: "docker" "inspect" "b6f00e12aa225f07a6423e58114faed3fbf8b602f793e3ff741819c5a3589fa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b6f00e12aa225f07a6423e58114faed3fbf8b602f793e3ff741819c5a3589fa2", kill_on_drop: false }`
[INFO] [stdout] b6f00e12aa225f07a6423e58114faed3fbf8b602f793e3ff741819c5a3589fa2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] ee3161ef247e69fd84aae249ecf97ecc48bf5e96fe0fa4bc24d1f6cc010b3fb0
[INFO] running `Command { std: "docker" "start" "-a" "ee3161ef247e69fd84aae249ecf97ecc48bf5e96fe0fa4bc24d1f6cc010b3fb0", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.29s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/mcp_subagent-1787a94e9fd90ac5)
[INFO] [stdout] 
[INFO] [stdout] running 230 tests
[INFO] [stdout] test config::tests::file_config_direct_deserialization_preserves_section_defaults ... ok
[INFO] [stdout] test config::tests::load_file_config_keeps_missing_optional_fields_as_none ... ok
[INFO] [stdout] test config::tests::merge_falls_back_when_higher_layers_missing ... ok
[INFO] [stdout] test config::tests::merge_uses_precedence_cli_env_file_defaults ... ok
[INFO] [stdout] test config::tests::resolve_config_path_falls_back_to_home_when_project_config_missing ... ok
[INFO] [stdout] test config::tests::file_config_optional_fields_deserialize_without_default_annotations ... ok
[INFO] [stdout] test config::tests::resolve_config_path_falls_back_to_project_relative_without_home ... ok
[INFO] [stdout] test config::tests::resolve_config_path_prefers_cli_override ... ok
[INFO] [stdout] test config::tests::resolve_config_path_prefers_env_when_cli_missing ... ok
[INFO] [stdout] test connect::tests::builds_host_specific_invocations ... ok
[INFO] [stdout] test connect::tests::builds_host_launch_invocation_for_each_host ... ok
[INFO] [stdout] test cwd::tests::falls_back_when_pwd_is_missing_or_relative ... ok
[INFO] [stdout] test config::tests::resolve_config_path_prefers_project_config_when_present ... ok
[INFO] [stdout] test doctor::tests::builds_report_and_renders_key_fields ... ok
[INFO] [stdout] test connect::tests::resolves_relative_paths_to_absolute ... ok
[INFO] [stdout] test doctor::tests::provider_pin_report_marks_disabled_when_config_disabled ... ok
[INFO] [stdout] test cwd::tests::falls_back_when_pwd_points_elsewhere ... ok
[INFO] [stdout] test connect::tests::builds_host_specific_snippets ... ok
[INFO] [stdout] test cwd::tests::prefers_absolute_pwd_when_it_resolves_to_current_dir ... ok
[INFO] [stdout] test doctor::tests::provider_pin_report_marks_drift_when_pin_mismatches ... ok
[INFO] [stdout] test init::tests::generated_root_detection_accepts_legacy_bootstrap_shape ... ok
[INFO] [stdout] test doctor::tests::checks_knowledge_layout_and_policy_usage ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_bootstrap_template_drift_without_overwriting ... ok
[INFO] [stdout] test init::tests::init_refuses_to_overwrite_without_force ... ok
[INFO] [stdout] test doctor::tests::ambient_isolation_detects_workspace_visible_skill_conflict_for_gemini ... ok
[INFO] [stdout] test init::tests::refresh_bootstrap_backfills_manifest_for_legacy_root ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_unconfigured_project_bridge_with_force_repair ... ok
[INFO] [stdout] test init::tests::refresh_bootstrap_fails_when_no_builtin_templates_exist ... ok
[INFO] [stdout] test init::tests::sync_project_bridge_rejects_non_generated_root ... ok
[INFO] [stdout] test logging::tests::cli_level_overrides_env_and_config ... ok
[INFO] [stdout] test logging::tests::config_used_when_cli_and_env_missing ... ok
[INFO] [stdout] test logging::tests::env_overrides_config_when_cli_missing ... ok
[INFO] [stdout] test mcp::archive::tests::archive_stage_generates_final_summary_decision_and_metadata_index ... ok
[INFO] [stdout] test mcp::archive::tests::invalid_archive_dir_creates_warning_artifact ... ok
[INFO] [stdout] test mcp::archive::tests::non_archive_stage_skips_archive_hook ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_synced_internal_project_bridge ... ok
[INFO] [stdout] test mcp::persistence::tests::append_run_event_writes_jsonl_with_incrementing_seq ... ok
[INFO] [stdout] test mcp::review::tests::review_stage_emits_review_evidence_artifact ... ok
[INFO] [stdout] test mcp::server::tests::declared_workspace_artifacts_are_persisted_in_index_and_payloads ... ok
[INFO] [stdout] test connect::tests::shell_escape_handles_spaces_and_single_quotes ... ok
[INFO] [stdout] test doctor::tests::provider_pin_report_marks_matched_when_pin_hits ... ok
[INFO] [stdout] test mcp::server::tests::list_agents_marks_ollama_available_when_probe_ready ... ok
[INFO] [stdout] test mcp::persistence::tests::loads_persisted_run_json_with_required_fields ... ok
[INFO] [stdout] test doctor::tests::doctor_detects_drift_for_generated_custom_root_and_emits_exact_refresh_command ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_synced_external_project_bridge ... ok
[INFO] [stdout] test init::tests::init_creates_preset_files_and_valid_specs ... ok
[INFO] [stdout] test init::tests::init_readme_contains_executable_connect_snippets ... ok
[INFO] [stdout] test init::tests::sync_project_bridge_validates_generated_root_without_rewriting_templates ... ok
[INFO] [stdout] test init::tests::init_supports_all_presets_and_validates ... ok
[INFO] [stdout] test mcp::server::tests::list_agents_tool_returns_agent ... ok
[INFO] [stdout] test init::tests::refresh_bootstrap_overwrites_builtin_templates_and_preserves_custom_agents ... ok
[INFO] [stdout] test mcp::server::tests::run_agent_rejects_when_background_prefers_async ... ok
[INFO] [stdout] test init::tests::init_force_overwrites_existing_files ... ok
[INFO] [stdout] test mcp::server::tests::run_agent_rejects_unavailable_ollama_provider ... ok
[INFO] [stdout] test mcp::server::tests::run_agent_rejects_unavailable_provider ... ok
[INFO] [stdout] test init::tests::init_readme_documents_current_runtime_terms_and_drift_guidance ... ok
[INFO] [stdout] test mcp::server::tests::run_agent_tool_returns_structured_summary ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_missing_external_project_bridge_with_repair_command ... ok
[INFO] [stdout] test mcp::server::tests::serialize_lock_allows_non_conflicting_scopes ... ok
[INFO] [stdout] test mcp::tools::tests::build_watch_advice_includes_timeout_and_reason_guidance ... ok
[INFO] [stdout] test mcp::tools::tests::classify_block_reason_from_events_recognizes_first_output_warning ... ok
[INFO] [stdout] test mcp::service::tests::run_dispatch_error_path_cleans_temp_workspace ... ok
[INFO] [stdout] test mcp::service::tests::stable_scratch_overrides_gemini_isolated_discovery_to_minimal ... ok
[INFO] [stdout] test mcp::tools::tests::build_watch_advice_includes_terminal_next_step ... ok
[INFO] [stdout] test mcp::server::tests::restart_can_query_persisted_runs_and_reject_invalid_path ... ok
[INFO] [stdout] test mcp::tools::tests::collect_wait_reasons_deduplicates_and_tracks_latest ... ok
[INFO] [stdout] test mcp::tools::tests::classify_block_reason_from_text_ignores_cached_credentials_log ... ok
[INFO] [stdout] test mcp::server::tests::run_agent_rejects_when_spawn_policy_requires_async ... ok
[INFO] [stdout] test mcp::service::tests::run_dispatch_attaches_plan_section_acceptance_criteria_for_reviewer ... ok
[INFO] [stdout] test mcp::server::tests::list_agents_marks_provider_unavailable ... ok
[INFO] [stdout] test mcp::tools::tests::current_phase_age_ms_tracks_latest_phase_window ... ok
[INFO] [stdout] test mcp::tools::tests::classify_block_reason_is_none_for_succeeded_status ... ok
[INFO] [stdout] test mcp::tools::tests::detect_provider_wait_signal_matches_trust_prompt ... ok
[INFO] [stdout] test probe::tests::classify_auth_issue ... ok
[INFO] [stdout] test mcp::service::tests::run_dispatch_cleans_temp_workspace_after_success ... ok
[INFO] [stdout] test probe::tests::classify_ready_when_command_succeeded_without_error_keywords ... ok
[INFO] [stdout] test probe::tests::claude_mapping_notes_include_public_permission_modes ... ok
[INFO] [stdout] test mcp::tools::tests::detect_provider_wait_signal_ignores_cached_credentials_log ... ok
[INFO] [stdout] test probe::tests::gemini_mapping_notes_reflect_default_auto_edit_yolo ... ok
[INFO] [stdout] test probe::tests::version_line_heuristic_rejects_error_text ... ok
[INFO] [stdout] test runtime::context::tests::compile_contains_required_sections ... ok
[INFO] [stdout] test runtime::context::tests::expanded_brief_mode_uses_parent_summary_digest ... ok
[INFO] [stdout] test runtime::context::tests::includes_stage_role_priority_when_stage_present ... ok
[INFO] [stdout] test runtime::context::tests::rejects_template_missing_required_sections ... ok
[INFO] [stdout] test runtime::cleanup::tests::temp_copy_workspace_is_removed_when_guard_drops ... ok
[INFO] [stdout] test runtime::context::tests::selected_files_mode_only_includes_allowlisted_files ... ok
[INFO] [stdout] test runtime::context::tests::summary_only_blocks_raw_transcript_like_parent_summary ... ok
[INFO] [stdout] test runtime::dispatcher::tests::build_stage_passes_when_plan_exists ... ok
[INFO] [stdout] test runtime::context::tests::summary_only_mode_includes_parent_summary_but_excludes_selected_files ... ok
[INFO] [stdout] test runtime::context::tests::validates_default_summary_contract_template ... ok
[INFO] [stdout] test probe::tests::classify_experimental_unavailable ... ok
[INFO] [stdout] test probe::tests::classify_permission_denied ... ok
[INFO] [stdout] test runtime::cleanup::tests::in_place_workspace_has_no_cleanup_guard ... ok
[INFO] [stdout] test runtime::dispatcher::tests::build_stage_requires_plan_when_cross_module_gate_hits ... ok
[INFO] [stdout] test runtime::dispatcher::tests::build_stage_requires_plan_when_gate_hits ... ok
[INFO] [stdout] test runtime::cleanup::tests::stable_scratch_workspace_has_no_cleanup_guard ... ok
[INFO] [stdout] test mcp::server::tests::run_agent_tempcopy_persists_workspace_metadata ... ok
[INFO] [stdout] test runtime::dispatcher::tests::build_stage_requires_plan_when_migration_gate_hits ... ok
[INFO] [stdout] test runtime::dispatcher::tests::build_stage_requires_plan_when_new_interface_gate_hits ... ok
[INFO] [stdout] test runtime::dispatcher::tests::classify_error_message_marks_non_retryable_schema_errors ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_best_effort_succeeds_when_summary_is_bare_provider_json ... ok
[INFO] [stdout] test runtime::dispatcher::tests::classify_error_message_marks_unknown_when_unmatched ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_reaches_cancelled ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_reaches_failed_and_keeps_summary ... ok
[INFO] [stdout] test runtime::dispatcher::tests::build_stage_requires_plan_when_human_approval_gate_hits ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_result_to_run_outcome_maps_failure_retry_fields ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_reaches_succeeded ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_reaches_timed_out ... ok
[INFO] [stdout] test runtime::dispatcher::tests::plan_stage_allows_research_agent_profile ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_best_effort_succeeds_when_summary_is_degraded ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_stops_retry_when_max_turns_reached ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_strict_fails_when_summary_is_bare_provider_json ... ok
[INFO] [stdout] test runtime::dispatcher::tests::readonly_gitworktree_rejects_build_stage ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_result_to_run_outcome_maps_success_fields ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_retries_transient_failure_and_succeeds ... ok
[INFO] [stdout] test runtime::dispatcher::tests::readonly_gitworktree_allows_research_stage ... ok
[INFO] [stdout] test runtime::context::tests::isolated_mode_excludes_parent_summary_and_selected_files ... ok
[INFO] [stdout] test runtime::dispatcher::tests::dispatch_strict_fails_when_summary_is_degraded ... ok
[INFO] [stdout] test runtime::cleanup::tests::git_worktree_cleanup_falls_back_to_remove_dir ... ok
[INFO] [stdout] test runtime::dispatcher::tests::readonly_gitworktree_requires_explicit_stage ... ok
[INFO] [stdout] test runtime::dispatcher::tests::research_stage_rejects_non_planning_agent ... ok
[INFO] [stdout] test runtime::dispatcher::tests::review_stage_requires_dual_tracks_for_high_risk_without_parent_evidence ... ok
[INFO] [stdout] test runtime::dispatcher::tests::review_stage_accepts_dual_tracks_with_parent_summary_evidence ... ok
[INFO] [stdout] test runtime::memory::tests::auto_project_memory_resolves_project_and_native_paths ... ok
[INFO] [stdout] test runtime::dispatcher::tests::review_stage_rejects_builder_agent_profile ... ok
[INFO] [stdout] test runtime::dispatcher::tests::review_stage_allows_reviewer_agent_profile ... ok
[INFO] [stdout] test runtime::dispatcher::tests::rejects_stage_not_enabled_in_workflow_stages ... ok
[INFO] [stdout] test init::tests::generated_presets_do_not_default_to_active_plan_memory ... ok
[INFO] [stdout] test runtime::memory::tests::archived_plans_source_inlines_existing_archives ... ok
[INFO] [stdout] test runtime::memory::tests::active_plan_source_inlines_plan_content ... ok
[INFO] [stdout] test runtime::dispatcher::tests::rejects_runtime_depth_exceeding_workflow_limit ... ok
[INFO] [stdout] test runtime::memory::tests::delegation_plan_section_selector_extracts_target_section ... ok
[INFO] [stdout] test runtime::memory::tests::glob_memory_source_requires_at_least_one_match ... ok
[INFO] [stdout] test runtime::outcome::tests::run_outcome_failure_accessors ... ok
[INFO] [stdout] test runtime::outcome::tests::run_outcome_serialization_roundtrip ... ok
[INFO] [stdout] test runtime::outcome::tests::run_outcome_success_accessors ... ok
[INFO] [stdout] test runtime::memory::tests::active_plan_source_is_noop_when_plan_missing ... ok
[INFO] [stdout] test runtime::memory::tests::glob_memory_source_inlines_all_matches ... ok
[INFO] [stdout] test runtime::memory::tests::delegation_plan_section_selector_requires_matching_heading ... ok
[INFO] [stdout] test runtime::memory::tests::explicit_file_memory_dedups_native_passthrough ... ok
[INFO] [stdout] test mcp::server::tests::serialize_lock_blocks_until_guard_released ... ok
[INFO] [stdout] test mcp::server::tests::spawn_agent_accepts_then_fails_when_provider_unavailable ... ok
[INFO] [stdout] test mcp::server::tests::mcp_transport_roundtrip_for_all_tools ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_rejects_invalid_permission_mode_override ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_rejects_legacy_auto_permission_mode_override ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_rejects_unvalidated_approval_policy ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_reports_nonzero_exit_as_failed ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_maps_full_access_to_bypass_permissions ... ok
[INFO] [stdout] test runtime::runners::codex::tests::codex_runner_rejects_unvalidated_approval_policy ... ok
[INFO] [stdout] test runtime::runners::codex::tests::codex_runner_reads_last_message_file ... ok
[INFO] [stdout] test runtime::runners::codex::tests::summarize_stderr_prefers_error_lines ... ok
[INFO] [stdout] test runtime::runners::codex::tests::strict_schema_marks_all_properties_as_required ... ok
[INFO] [stdout] test runtime::runners::codex::tests::schema_json_includes_media_type_in_required_list ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_maps_readonly_to_default_approval_mode ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_rejects_unvalidated_approval_policy ... ok
[INFO] [stdout] test runtime::runners::mock::tests::mock_runner_success_wraps_summary_json ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_succeeds_with_summary_stdout ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_minimal_discovery_uses_isolated_launch_cwd ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_reports_nonzero_exit_as_failed ... ok
[INFO] [stdout] test runtime::runners::codex::tests::codex_runner_reports_nonzero_exit_as_failed ... ok
[INFO] [stdout] test runtime::runners::ollama::tests::ollama_runner_requires_model ... ok
[INFO] [stdout] test runtime::summary::tests::falls_back_to_stderr_when_stdout_missing ... ok
[INFO] [stdout] test runtime::summary::tests::converts_parsed_summary_to_success_outcome ... ok
[INFO] [stdout] test runtime::summary::tests::ignores_placeholder_sentinel_in_stderr_when_stdout_is_plain_text ... ok
[INFO] [stdout] test runtime::summary::tests::marks_degraded_when_sentinel_missing ... ok
[INFO] [stdout] test runtime::summary::tests::marks_degraded_when_summary_json_without_sentinels ... ok
[INFO] [stdout] test runtime::summary::tests::marks_invalid_when_json_is_invalid ... ok
[INFO] [stdout] test runtime::summary::tests::marks_invalid_when_json_payload_inside_sentinel_is_not_summary_contract ... ok
[INFO] [stdout] test runtime::summary::tests::parses_late_raw_json_after_placeholder_sentinel ... ok
[INFO] [stdout] test runtime::summary::tests::parses_first_valid_provider_summary_from_back_to_back_json_objects ... ok
[INFO] [stdout] test runtime::summary::tests::parses_second_sentinel_block_when_first_is_placeholder ... ok
[INFO] [stdout] test runtime::summary::tests::parses_valid_summary_from_stdout ... ok
[INFO] [stdout] test runtime::usage::tests::does_not_treat_null_as_numeric_usage ... ok
[INFO] [stdout] test runtime::runners::codex::tests::codex_runner_passes_output_schema_flag ... ok
[INFO] [stdout] test runtime::usage::tests::parses_codex_tokens_used_multiline ... ok
[INFO] [stdout] test runtime::usage::tests::parses_prompt_completion_and_total_tokens ... ok
[INFO] [stdout] test runtime::usage::tests::parses_usage_from_json_keys ... ok
[INFO] [stdout] test runtime::usage::tests::parses_usage_from_camel_case_token_counts ... ok
[INFO] [stdout] test runtime::usage::tests::returns_none_when_no_usage_detected ... ok
[INFO] [stdout] test runtime::workspace::tests::auto_policy_keeps_in_place_when_gemini_research_has_selected_files ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_passes_json_schema_flag ... ok
[INFO] [stdout] test runtime::workspace::tests::auto_policy_uses_in_place_for_read_only_task ... ok
[INFO] [stdout] test runtime::workspace::tests::in_place_uses_source_directory ... ok
[INFO] [stdout] test runtime::runners::ollama::tests::ollama_runner_succeeds_with_summary_stdout ... ok
[INFO] [stdout] test runtime::workspace::tests::auto_policy_routes_gemini_research_profile_to_stable_scratch ... ok
[INFO] [stdout] test runtime::workspace::tests::resolve_stable_gemini_scratch_dir_uses_home_when_unset ... ok
[INFO] [stdout] test runtime::workspace::tests::temp_copy_creates_isolated_workspace ... ok
[INFO] [stdout] test spec::provider_overrides::tests::provider_overrides_option_fields_deserialize_without_default_annotations ... ok
[INFO] [stdout] test spec::registry::tests::loads_agent_specs_and_applies_defaults ... ok
[INFO] [stdout] test runtime::workspace::tests::git_worktree_falls_back_for_non_git_directory ... ok
[INFO] [stdout] test spec::core::tests::agent_spec_core_direct_deserialization_preserves_collection_defaults ... ok
[INFO] [stdout] test spec::registry::tests::loads_partial_runtime_subtables_with_consistent_defaults ... ok
[INFO] [stdout] test spec::registry::tests::loads_partial_workflow_subtables_with_consistent_defaults ... ok
[INFO] [stdout] test spec::runtime_policy::tests::artifact_policy_partial_deserialization_preserves_business_defaults ... ok
[INFO] [stdout] test spec::runtime_policy::tests::runtime_policy_defaults_follow_v09_minimal_profile ... ok
[INFO] [stdout] test spec::registry::tests::rejects_unknown_fields ... ok
[INFO] [stdout] test spec::runtime_policy::tests::runtime_policy_option_fields_deserialize_without_default_annotations ... ok
[INFO] [stdout] test runtime::workspace::tests::auto_policy_prefers_worktree_for_write_task ... ok
[INFO] [stdout] test spec::runtime_policy::tests::runtime_policy_partial_nested_tables_inherit_subpolicy_defaults ... ok
[INFO] [stdout] test spec::tests::agent_spec_direct_deserialization_preserves_top_level_defaults ... ok
[INFO] [stdout] test spec::validate::tests::accepts_workflow_with_consistent_stage_allowlist ... ok
[INFO] [stdout] test spec::validate::tests::accepts_plan_section_delegation_with_selector ... ok
[INFO] [stdout] test spec::validate::tests::allows_readonly_gitworktree_combo_in_spec_validation ... ok
[INFO] [stdout] test spec::validate::tests::accepts_safe_memory_sources ... ok
[INFO] [stdout] test spec::validate::tests::rejects_absolute_file_memory_source_path ... ok
[INFO] [stdout] test spec::validate::tests::rejects_duplicate_workflow_stages ... ok
[INFO] [stdout] test spec::validate::tests::rejects_empty_inline_memory_source ... ok
[INFO] [stdout] test spec::validate::tests::rejects_empty_stages_for_enabled_workflow ... ok
[INFO] [stdout] test spec::validate::tests::rejects_override_mismatch ... ok
[INFO] [stdout] test spec::validate::tests::rejects_glob_pattern_in_file_memory_source_path ... ok
[INFO] [stdout] test spec::validate::tests::rejects_parent_dir_glob_memory_source_path ... ok
[INFO] [stdout] test spec::validate::tests::rejects_plan_section_delegation_without_selector ... ok
[INFO] [stdout] test spec::validate::tests::rejects_stage_not_in_allowed_stages ... ok
[INFO] [stdout] test spec::validate::tests::rejects_zero_workflow_depth ... ok
[INFO] [stdout] test spec::workflow::tests::knowledge_capture_partial_deserialization_preserves_business_defaults ... ok
[INFO] [stdout] test spec::workflow::tests::workflow_gate_policy_partial_deserialization_preserves_business_defaults ... ok
[INFO] [stdout] test spec::workflow::tests::workflow_spec_direct_deserialization_preserves_remaining_defaults ... ok
[INFO] [stdout] test spec::workflow::tests::workflow_spec_partial_nested_tables_inherit_subpolicy_defaults ... ok
[INFO] [stdout] test spec::runtime_policy::tests::retry_policy_partial_deserialization_preserves_business_defaults ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_succeeds_with_summary_stdout ... ok
[INFO] [stdout] test runtime::runners::ollama::tests::ollama_runner_reports_nonzero_exit_as_failed ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_isolated_discovery_falls_back_to_minimal_on_auth_error ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_execute_with_observer_streams_output_chunks ... ok
[INFO] [stdout] test runtime::runners::codex::tests::codex_runner_execute_with_observer_streams_output_chunks ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_execute_with_observer_streams_output_chunks ... ok
[INFO] [stdout] test mcp::server::tests::spawn_agent_returns_before_slow_probe_completes ... ok
[INFO] [stdout] test runtime::runners::claude::tests::claude_runner_marks_timeout ... ok
[INFO] [stdout] test runtime::runners::gemini::tests::gemini_runner_marks_timeout ... ok
[INFO] [stdout] test runtime::runners::ollama::tests::ollama_runner_marks_timeout ... ok
[INFO] [stdout] test mcp::server::tests::watch_agent_events_surfaces_runtime_delta_for_gemini_and_claude ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 230 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.48s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mcp_subagent-a8d67d4f683361ee)
[INFO] [stdout] 
[INFO] [stdout] running 80 tests
[INFO] [stdout] test tests::bridge_config_preserves_external_absolute_paths_without_canonicalizing ... ok
[INFO] [stdout] test tests::build_phase_progress_line_ignores_synthetic_events ... ok
[INFO] [stdout] test tests::build_phase_progress_line_respects_phase_filter ... ok
[INFO] [stdout] test tests::build_phase_progress_line_marks_current_phase ... ok
[INFO] [stdout] test tests::build_phase_progress_line_terminal_has_no_current_marker ... ok
[INFO] [stdout] test tests::build_run_status_output_carries_stall_and_block_reason ... ok
[INFO] [stdout] test tests::classify_block_reason_is_none_for_succeeded_status ... ok
[INFO] [stdout] test tests::classify_block_reason_uses_stalled_phase_fallback ... ok
[INFO] [stdout] test tests::build_usage_output_marks_mixed_when_partial_native_usage_exists ... ok
[INFO] [stdout] test tests::clean_all_removes_state_dir ... ok
[INFO] [stdout] test tests::build_usage_output_prefers_native_tokens ... ok
[INFO] [stdout] test tests::clean_dry_run_keeps_files ... ok
[INFO] [stdout] test tests::classify_block_reason_ignores_cached_credentials_text ... ok
[INFO] [stdout] test tests::classify_block_reason_detects_provider_unavailable_from_error_text ... ok
[INFO] [stdout] test tests::classify_block_reason_uses_provider_wait_event ... ok
[INFO] [stdout] test tests::collect_watch_events_incremental_only_returns_new_events ... ok
[INFO] [stdout] test tests::clean_runtime_targets_removes_runs_and_logs ... ok
[INFO] [stdout] test tests::init_report_records_created_bridge_and_gitignore_files ... ok
[INFO] [stdout] test tests::inline_selected_file_overrides_non_inline_entry ... ok
[INFO] [stdout] test tests::init_rejects_sync_project_config_only_without_root_dir ... ok
[INFO] [stdout] test tests::creates_gitignore_when_missing ... ok
[INFO] [stdout] test tests::build_run_stats_output_derives_phase_and_durations_from_events ... ok
[INFO] [stdout] test tests::init_rejects_in_place_with_root_dir ... ok
[INFO] [stdout] test tests::init_report_does_not_record_preserved_paths_without_writes ... ok
[INFO] [stdout] test tests::load_run_events_incremental_handles_partial_trailing_line ... ok
[INFO] [stdout] test tests::parses_artifact_kind_enum ... ok
[INFO] [stdout] test tests::load_run_events_incremental_only_returns_appended_events ... ok
[INFO] [stdout] test tests::load_run_events_reads_jsonl_only ... ok
[INFO] [stdout] test tests::list_run_records_fails_when_any_run_json_is_invalid ... ok
[INFO] [stdout] test tests::overwrites_existing_bridge_config_with_force ... ok
[INFO] [stdout] test tests::load_run_events_and_filter_by_event_name ... ok
[INFO] [stdout] test tests::parses_connect_host ... ok
[INFO] [stdout] test tests::custom_root_gitignore_rules_only_cover_project_local_roots ... ok
[INFO] [stdout] test tests::inline_selected_files_include_file_content ... ok
[INFO] [stdout] test tests::parses_connect_snippet_host ... ok
[INFO] [stdout] test tests::init_defaults_to_minimal_supervisor_preset ... ok
[INFO] [stdout] test tests::parses_connect_with_run_host_flag ... ok
[INFO] [stdout] test tests::init_in_place_uses_current_directory ... ok
[INFO] [stdout] test tests::init_report_records_overwritten_bridge_config_for_synced_custom_root ... ok
[INFO] [stdout] test tests::parses_clean_command_flags ... ok
[INFO] [stdout] test tests::parses_doctor_json_flag ... ok
[INFO] [stdout] test tests::appends_only_missing_gitignore_rules ... ok
[INFO] [stdout] test tests::parses_init_refresh_bootstrap_flag ... ok
[INFO] [stdout] test tests::init_defaults_to_bootstrap_root_when_not_in_place ... ok
[INFO] [stdout] test tests::parses_events_all_command_flags ... ok
[INFO] [stdout] test tests::parses_init_command ... ok
[INFO] [stdout] test tests::parses_events_command_flags ... ok
[INFO] [stdout] test tests::parses_init_command_with_new_preset ... ok
[INFO] [stdout] test tests::parses_list_agents_json_flag ... ok
[INFO] [stdout] test tests::parses_result_command_raw_mode ... ok
[INFO] [stdout] test tests::parses_logs_follow_flags ... ok
[INFO] [stdout] test tests::parses_submit_command_with_stream_flag ... ok
[INFO] [stdout] test tests::parses_ps_command_flags ... ok
[INFO] [stdout] test tests::parses_logs_command_stderr_mode ... ok
[INFO] [stdout] test tests::parses_run_command_with_selected_file_inline ... ok
[INFO] [stdout] test tests::parses_show_command ... ok
[INFO] [stdout] test tests::parses_run_command_with_required_args ... ok
[INFO] [stdout] test tests::cli_spawn_waits_for_completion_by_default ... ok
[INFO] [stdout] test tests::parses_run_command_with_stream_flag ... ok
[INFO] [stdout] test tests::parses_spawn_command_with_stream_flag ... ok
[INFO] [stdout] test tests::parses_init_sync_project_config_only_flag ... ok
[INFO] [stdout] test tests::parses_init_sync_project_config_flag ... ok
[INFO] [stdout] test tests::resolve_retry_classification_defaults_unknown_when_missing ... ok
[INFO] [stdout] test tests::collect_run_event_snapshots_loads_all_handles_and_filters ... ok
[INFO] [stdout] test tests::resolve_retry_classification_reads_failed_outcome_retry_info ... ok
[INFO] [stdout] test tests::result_json_schema_contains_stable_fields ... ok
[INFO] [stdout] test tests::parses_stats_command_flags ... ok
[INFO] [stdout] test tests::parses_wait_command_flags ... ok
[INFO] [stdout] test tests::parses_submit_command_flags ... ok
[INFO] [stdout] test tests::show_renderer_emits_color_badge_when_enabled ... ok
[INFO] [stdout] test tests::show_renderer_is_plain_when_color_disabled ... ok
[INFO] [stdout] test tests::status_json_schema_contains_stable_fields ... ok
[INFO] [stdout] test tests::parses_watch_command_flags ... ok
[INFO] [stdout] test tests::watch_run_timeout_keeps_existing_timeout_semantics ... ok
[INFO] [stdout] test tests::parses_watch_phase_timeout_flags ... ok
[INFO] [stdout] test tests::writes_bootstrap_bridge_config_when_missing ... ok
[INFO] [stdout] test tests::preserves_existing_bridge_config_without_force ... ok
[INFO] [stdout] test tests::writes_custom_root_bridge_config_when_requested ... ok
[INFO] [stdout] test tests::parses_timeline_command_flags ... ok
[INFO] [stdout] test tests::preserves_gitignore_when_catch_all_rule_exists ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 80 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/e2e_workflow_examples.rs (/opt/rustwide/target/debug/deps/e2e_workflow_examples-51fe6ea327ad67b5)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test example_workflow_depth_limit_rejects_nested_runtime_run ... ok
[INFO] [stdout] test example_workflow_build_stage_without_plan_fails_gate ... ok
[INFO] [stdout] test example_workflow_build_stage_with_plan_ref_succeeds ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests mcp_subagent
[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" "ee3161ef247e69fd84aae249ecf97ecc48bf5e96fe0fa4bc24d1f6cc010b3fb0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ee3161ef247e69fd84aae249ecf97ecc48bf5e96fe0fa4bc24d1f6cc010b3fb0", kill_on_drop: false }`
[INFO] [stdout] ee3161ef247e69fd84aae249ecf97ecc48bf5e96fe0fa4bc24d1f6cc010b3fb0
