[INFO] fetching crate virke 0.4.0... [INFO] testing virke-0.4.0 against 1.95.0 for beta-1.96-2 [INFO] extracting crate virke 0.4.0 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate virke 0.4.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate virke 0.4.0 [INFO] tweaked toml for crates.io crate virke 0.4.0 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate virke 0.4.0 on toolchain 1.95.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate virke 0.4.0 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded assert_cmd v2.2.0 [INFO] [stderr] Downloaded dialoguer v0.12.0 [INFO] [stderr] Downloaded annotate-snippets v0.12.13 [INFO] [stderr] Downloaded saphyr-parser-bw v0.0.610 [INFO] [stderr] Downloaded serde-saphyr v0.0.22 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b547a997b24280eeeda266f91e455ec8207254396b0edc67b8761ead41951f12 [INFO] running `Command { std: "docker" "start" "-a" "b547a997b24280eeeda266f91e455ec8207254396b0edc67b8761ead41951f12", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b547a997b24280eeeda266f91e455ec8207254396b0edc67b8761ead41951f12", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b547a997b24280eeeda266f91e455ec8207254396b0edc67b8761ead41951f12", kill_on_drop: false }` [INFO] [stdout] b547a997b24280eeeda266f91e455ec8207254396b0edc67b8761ead41951f12 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 00898c4cc10153b46e7581ba045e82da44a758079e6d0b529843f3842f3a484a [INFO] running `Command { std: "docker" "start" "-a" "00898c4cc10153b46e7581ba045e82da44a758079e6d0b529843f3842f3a484a", kill_on_drop: false }` [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling cc v1.2.57 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling arraydeque v0.5.1 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling encoding_rs_io v0.1.7 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling console v0.16.3 [INFO] [stderr] Compiling annotate-snippets v0.12.13 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling utf8-zero v0.8.1 [INFO] [stderr] Compiling saphyr-parser-bw v0.0.610 [INFO] [stderr] Compiling shell-words v1.1.1 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling clap_complete v4.6.0 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling virke v0.4.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling dialoguer v0.12.0 [INFO] [stderr] Compiling ureq-proto v0.6.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling fancy-regex v0.14.0 [INFO] [stderr] Compiling serde-saphyr v0.0.22 [INFO] [stderr] Compiling rustls-webpki v0.103.10 [INFO] [stderr] Compiling ureq v3.3.0 [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 52.01s [INFO] running `Command { std: "docker" "inspect" "00898c4cc10153b46e7581ba045e82da44a758079e6d0b529843f3842f3a484a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "00898c4cc10153b46e7581ba045e82da44a758079e6d0b529843f3842f3a484a", kill_on_drop: false }` [INFO] [stdout] 00898c4cc10153b46e7581ba045e82da44a758079e6d0b529843f3842f3a484a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8eb123fe4755c78df2264f09300f069f56c2594c27ad605120f19c4b4455d6b1 [INFO] running `Command { std: "docker" "start" "-a" "8eb123fe4755c78df2264f09300f069f56c2594c27ad605120f19c4b4455d6b1", kill_on_drop: false }` [INFO] [stderr] Compiling virke v0.4.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling assert_cmd v2.2.0 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 28.44s [INFO] running `Command { std: "docker" "inspect" "8eb123fe4755c78df2264f09300f069f56c2594c27ad605120f19c4b4455d6b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8eb123fe4755c78df2264f09300f069f56c2594c27ad605120f19c4b4455d6b1", kill_on_drop: false }` [INFO] [stdout] 8eb123fe4755c78df2264f09300f069f56c2594c27ad605120f19c4b4455d6b1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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" "+1.95.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 577fdd9e4f1fbd00eb7bd174c787cdf87187d9860b417ac5f2de40af8d1a543f [INFO] running `Command { std: "docker" "start" "-a" "577fdd9e4f1fbd00eb7bd174c787cdf87187d9860b417ac5f2de40af8d1a543f", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/virke_core-7cca41802aee8fca) [INFO] [stdout] [INFO] [stdout] running 757 tests [INFO] [stdout] test config::tests::cleanup_preserves_non_virke_entries ... ok [INFO] [stdout] test config::tests::cleanup_removes_virke_intel_session_js ... ok [INFO] [stdout] test config::tests::cleanup_removes_virke_intel_prune_js ... ok [INFO] [stdout] test config::tests::cleanup_removes_virke_intel_index_js ... ok [INFO] [stdout] test config::tests::merge_adds_post_tool_use_context_monitor ... ok [INFO] [stdout] test config::tests::cleanup_removes_virke_notify_sh ... ok [INFO] [stdout] test config::tests::merge_adds_session_start_check_update ... ok [INFO] [stdout] test config::tests::merge_adds_status_line_top_level ... ok [INFO] [stdout] test config::tests::merge_preserves_non_virke_hooks ... ok [INFO] [stdout] test config::tests::merge_replaces_non_virke_status_line ... ok [INFO] [stdout] test convert::tests::instruction_file_claude ... ok [INFO] [stdout] test convert::tests::instruction_file_copilot ... ok [INFO] [stdout] test convert::tests::instruction_file_opencode ... ok [INFO] [stdout] test config::tests::merge_removes_existing_virke_entries_before_adding ... ok [INFO] [stdout] test convert::tests::neutralize_gemini_instruction_file ... ok [INFO] [stdout] test convert::tests::neutralize_replaces_claude_md ... ok [INFO] [stdout] test convert::tests::neutralize_preserves_claude_opus ... ok [INFO] [stdout] test convert::tests::neutralize_replaces_standalone_claude ... ok [INFO] [stdout] test convert::tests::neutralize_preserves_claude_code ... ok [INFO] [stdout] test config::tests::read_nonexistent_returns_empty_object ... ok [INFO] [stdout] test config::tests::merge_adds_pre_tool_use_prompt_guard ... ok [INFO] [stdout] test config::tests::read_valid_json ... ok [INFO] [stdout] test config::tests::write_settings_pretty_with_trailing_newline ... ok [INFO] [stdout] test convert::tests::neutralize_strips_do_not_load_line ... ok [INFO] [stdout] test convert::tests::neutralize_preserves_claude_hyphenated ... ok [INFO] [stdout] test convert::tests::replace_home_env_prefix ... ok [INFO] [stdout] test convert::tests::replace_path_prefix_both_patterns ... ok [INFO] [stdout] test config::tests::cleanup_removes_hooks_statusline_js ... ok [INFO] [stdout] test convert::tests::instruction_file_gemini ... ok [INFO] [stdout] test convert::tests::replace_path_prefix_no_match_unchanged ... ok [INFO] [stdout] test convert::tests::replace_path_prefix_multiple_occurrences ... ok [INFO] [stdout] test convert::tests::replace_virke_version_basic ... ok [INFO] [stdout] test convert::tests::replace_virke_version_ignores_old_virke_token ... ok [INFO] [stdout] test convert::tests::replace_tilde_prefix ... ok [INFO] [stdout] test convert::tests::replace_virke_version_multiple ... ok [INFO] [stdout] test convert::tests::replace_virke_version_no_match_unchanged ... ok [INFO] [stdout] test config::tests::read_malformed_json_returns_error ... ok [INFO] [stdout] test convert::tests::slash_commands_multiple ... ok [INFO] [stdout] test convert::tests::slash_commands_virke_colon_to_hyphen ... ok [INFO] [stdout] test convert::tests::substitute_claude_is_noop ... ok [INFO] [stdout] test convert::tests::substitute_codex_prefix ... ok [INFO] [stdout] test convert::tests::substitute_copilot_prefix ... ok [INFO] [stdout] test convert::tests::substitute_home_env_pattern_replaced ... ok [INFO] [stdout] test convert::tests::substitute_cursor_prefix ... ok [INFO] [stdout] test convert::tests::substitute_opencode_prefix ... ok [INFO] [stdout] test engine::config::tests::coerce_float ... ok [INFO] [stdout] test engine::config::tests::coerce_false_string ... ok [INFO] [stdout] test engine::config::tests::coerce_integer ... ok [INFO] [stdout] test engine::config::tests::config_get_missing_top_level ... ok [INFO] [stdout] test engine::config::tests::config_get_missing_key_returns_err ... ok [INFO] [stdout] test engine::config::tests::config_get_top_level_string ... ok [INFO] [stdout] test convert::tests::slash_commands_no_match_unchanged ... ok [INFO] [stdout] test engine::config::tests::config_get_nested_bool ... ok [INFO] [stdout] test engine::config::tests::coerce_plain_string ... ok [INFO] [stdout] test engine::config::tests::coerce_true_string ... ok [INFO] [stdout] test engine::config::tests::config_set_preserves_other_keys ... ok [INFO] [stdout] test engine::config::tests::config_set_top_level_string ... ok [INFO] [stdout] test engine::config::tests::known_key_mode ... ok [INFO] [stdout] test engine::config::tests::config_set_nested_bool ... ok [INFO] [stdout] test engine::config::tests::new_project_config_git_defaults ... ok [INFO] [stdout] test engine::config::tests::new_project_config_defaults ... ok [INFO] [stdout] test convert::tests::substitute_antigravity_prefix ... ok [INFO] [stdout] test engine::config::tests::config_error_codes ... ok [INFO] [stdout] test engine::config::tests::config_set_creates_intermediate_objects ... ok [INFO] [stdout] test engine::config::tests::config_set_round_trip ... ok [INFO] [stdout] test convert::tests::substitute_gemini_prefix ... ok [INFO] [stdout] test engine::config::tests::load_config_missing_file_returns_empty_object ... ok [INFO] [stdout] test engine::config::tests::new_project_config_hooks_defaults ... ok [INFO] [stdout] test engine::config::tests::known_key_nested ... ok [INFO] [stdout] test engine::config::tests::new_project_config_with_api_keys ... ok [INFO] [stdout] test engine::config::tests::unknown_key_returns_false ... ok [INFO] [stdout] test engine::config::tests::new_project_config_workflow_defaults ... ok [INFO] [stdout] test engine::context::tests::test_find_project_root_in_start_dir ... ok [INFO] [stdout] test engine::config::tests::save_and_load_round_trip ... ok [INFO] [stdout] test engine::config::tests::save_config_creates_parent_dirs ... ok [INFO] [stdout] test convert::tests::substitute_with_explicit_target_prefix ... ok [INFO] [stdout] test engine::frontmatter::tests::test_get_missing_field ... ok [INFO] [stdout] test engine::frontmatter::tests::test_parse_basic ... ok [INFO] [stdout] test engine::frontmatter::tests::test_get_existing_field ... ok [INFO] [stdout] test engine::frontmatter::tests::test_get_no_frontmatter ... ok [INFO] [stdout] test engine::frontmatter::tests::test_merge_empty ... ok [INFO] [stdout] test engine::context::tests::test_project_context_new_fails_on_malformed_config ... ok [INFO] [stdout] test engine::frontmatter::tests::test_parse_no_frontmatter ... ok [INFO] [stdout] test engine::frontmatter::tests::test_reconstruct_arrays ... ok [INFO] [stdout] test engine::frontmatter::tests::test_merge_mixed ... ok [INFO] [stdout] test engine::context::tests::test_find_project_root_walks_up ... ok [INFO] [stdout] test engine::frontmatter::tests::test_reconstruct_simple ... ok [INFO] [stdout] test engine::frontmatter::tests::test_set_no_existing_frontmatter ... ok [INFO] [stdout] test engine::frontmatter::tests::test_roundtrip ... ok [INFO] [stdout] test engine::frontmatter::tests::test_set_new_field ... ok [INFO] [stdout] test engine::frontmatter::tests::test_reconstruct_special_chars ... ok [INFO] [stdout] test engine::frontmatter::tests::test_set_overwrite ... ok [INFO] [stdout] test engine::frontmatter::tests::test_splice_prepend ... ok [INFO] [stdout] test engine::frontmatter::tests::test_split_basic ... ok [INFO] [stdout] test engine::frontmatter::tests::test_splice_replace ... ok [INFO] [stdout] test engine::frontmatter::tests::test_split_crlf ... ok [INFO] [stdout] test engine::frontmatter::tests::test_split_duplicate_blocks ... ok [INFO] [stdout] test engine::frontmatter::tests::test_split_empty_body ... ok [INFO] [stdout] test engine::context::tests::test_project_context_new_fails_with_no_project_root_when_no_planning_dir ... ok [INFO] [stdout] test engine::frontmatter::tests::test_split_empty_body_no_trailing_newline ... ok [INFO] [stdout] test engine::context::tests::test_find_project_root_returns_none_when_no_planning ... ok [INFO] [stdout] test engine::frontmatter::tests::test_reconstruct_nested ... ok [INFO] [stdout] test engine::frontmatter::tests::test_validate_unknown_schema ... ok [INFO] [stdout] test engine::frontmatter::tests::test_validate_verification_valid ... ok [INFO] [stdout] test engine::frontmatter::tests::test_split_no_frontmatter ... ok [INFO] [stdout] test engine::frontmatter::tests::test_validate_plan_missing ... ok [INFO] [stdout] test engine::git::tests::test_sanitize_length_cap ... ok [INFO] [stdout] test engine::frontmatter::tests::test_validate_plan_valid ... ok [INFO] [stdout] test engine::git::tests::test_sanitize_strips_control_chars ... ok [INFO] [stdout] test engine::frontmatter::tests::test_validate_summary_missing ... ok [INFO] [stdout] test engine::frontmatter::tests::test_validate_summary_valid ... ok [INFO] [stdout] test engine::history::tests::missing_phases_dir_returns_empty_digest ... ok [INFO] [stdout] test engine::history::tests::empty_phases_dir_returns_empty_digest ... ok [INFO] [stdout] test engine::history::tests::multiple_phases_sorted_by_name ... ok [INFO] [stdout] test engine::history::tests::reads_summary_frontmatter_fields ... ok [INFO] [stdout] test engine::init::tests::test_execute_phase_output_fields ... ok [INFO] [stdout] test engine::init::tests::test_list_workspaces_empty ... ok [INFO] [stdout] test engine::init::tests::test_generate_slug ... ok [INFO] [stdout] test engine::init::tests::test_new_project_brownfield ... ok [INFO] [stdout] test engine::init::tests::test_optional_fields_skip_when_none ... ok [INFO] [stdout] test engine::init::tests::no_file_exceeds_800_lines ... ok [INFO] [stdout] test engine::history::tests::no_frontmatter_returns_none_fields ... ok [INFO] [stdout] test engine::init::tests::test_pad_phase ... ok [INFO] [stdout] test engine::init::tests::test_plan_phase_padded_phase ... ok [INFO] [stdout] test engine::init::tests::test_progress_init_fields ... ok [INFO] [stdout] test engine::init::tests::test_to_posix_path ... ok [INFO] [stdout] test engine::init::tests::test_phase_op_search_flags ... ok [INFO] [stdout] test engine::init::tests::test_resume_optional_fields ... ok [INFO] [stdout] test engine::milestone::tests::archive_errors_when_requirements_missing ... ok [INFO] [stdout] test engine::milestone::tests::archive_errors_when_roadmap_missing ... ok [INFO] [stdout] test engine::milestone::tests::archive_appends_to_existing_milestones_md ... ok [INFO] [stdout] test engine::milestone::tests::archive_generates_milestones_md ... ok [INFO] [stdout] test engine::milestone::tests::archive_creates_milestones_dir ... ok [INFO] [stdout] test engine::milestone::tests::archive_copies_requirements ... ok [INFO] [stdout] test engine::milestone::tests::archive_copies_roadmap ... ok [INFO] [stdout] test engine::milestone::tests::archive_milestones_md_no_summary_no_bold_uses_placeholder ... ok [INFO] [stdout] test engine::milestone::tests::archive_milestones_md_one_liner_from_bold_fallback ... ok [INFO] [stdout] test engine::milestone::tests::archive_milestones_md_one_liner_from_frontmatter ... ok [INFO] [stdout] test engine::milestone::tests::archive_milestones_md_includes_name_and_date ... ok [INFO] [stdout] test engine::frontmatter::tests::test_validate_verification_missing ... ok [INFO] [stdout] test engine::context::tests::test_detect_worktree_in_temp_dir_returns_false ... ok [INFO] [stdout] test engine::context::tests::test_config_parsed_as_value ... ok [INFO] [stdout] test engine::milestone::tests::mark_case_insensitive_id_matching ... ok [INFO] [stdout] test engine::models::tests::agent_model_map_balanced ... ok [INFO] [stdout] test engine::milestone::tests::archive_prepends_header_to_roadmap ... ok [INFO] [stdout] test engine::models::tests::all_agents_have_all_profiles ... ok [INFO] [stdout] test engine::models::tests::get_all_agents_returns_15 ... ok [INFO] [stdout] test engine::models::tests::model_profiles_has_15_agents ... ok [INFO] [stdout] test engine::models::tests::research_synthesizer_all_sonnet_except_budget ... ok [INFO] [stdout] test engine::milestone::tests::mark_updates_checkbox ... ok [INFO] [stdout] test engine::models::tests::resolve_codebase_mapper_budget ... ok [INFO] [stdout] test engine::models::tests::resolve_invalid_profile_returns_none ... ok [INFO] [stdout] test engine::models::tests::resolve_codebase_mapper_quality ... ok [INFO] [stdout] test engine::models::tests::resolve_planner_balanced ... ok [INFO] [stdout] test engine::models::tests::resolve_planner_budget ... ok [INFO] [stdout] test engine::models::tests::resolve_planner_quality ... ok [INFO] [stdout] test engine::models::tests::roadmapper_profiles ... ok [INFO] [stdout] test engine::models::tests::valid_profiles_list ... ok [INFO] [stderr] {"code":"TEST_CODE","error":"test message"} [INFO] [stdout] test engine::context::tests::test_project_context_new_no_config_json ... ok [INFO] [stdout] test engine::output::tests::test_emit_error_json_shape ... ok [INFO] [stdout] test engine::module_size_tests::engine_submodule_files_under_800_loc ... ok [INFO] [stdout] test engine::output::tests::test_emit_error_json_with_special_chars ... ok [INFO] [stdout] test engine::output::tests::test_emit_error_raw_shape ... ok [INFO] [stdout] test engine::output::tests::test_json_compact_no_newlines_in_content ... ok [INFO] [stdout] test engine::models::tests::resolve_unknown_agent_returns_none ... ok [INFO] [stderr] {"code":"TEST","error":"message with \"quotes\" and \\backslash"} [INFO] [stdout] test engine::output::tests::test_json_pretty_contains_newlines ... ok [INFO] [stderr] error: test message [INFO] [stdout] test engine::output::tests::test_normalize_path_converts_backslashes ... ok [INFO] [stdout] test engine::output::tests::test_raw_emits_bare_string ... ok [INFO] [stdout] test engine::milestone::tests::archive_phases_without_summaries_produce_no_accomplishment_entries ... ok [INFO] [stdout] test engine::output::tests::test_small_payload_inline ... ok [INFO] [stdout] test engine::output::tests::test_spill_threshold_value ... ok [INFO] [stdout] test engine::context::tests::test_project_context_new_with_valid_config ... ok [INFO] [stdout] test engine::context::tests::test_project_context_planning_dir_field ... ok [INFO] [stdout] test engine::models::tests::agent_model_map_invalid_profile_returns_none ... ok [INFO] [stdout] test engine::milestone::tests::mark_already_complete_returned_without_error ... ok [INFO] [stdout] test engine::output::tests::test_large_payload_spills_to_file ... ok [INFO] [stdout] test engine::output::tests::test_spilled_path_uses_forward_slashes ... ok [INFO] [stdout] test engine::phase::complete::tests::test_phase_complete_no_summaries_fails ... ok [INFO] [stdout] test engine::phase::find::tests::test_find_phase_archived ... ok [INFO] [stdout] test engine::phase::find::tests::test_find_phase_current ... ok [INFO] [stdout] test engine::git::tests::test_is_git_ignored ... ok [INFO] [stdout] test engine::phase::complete::tests::test_phase_list_returns_phases ... ok [INFO] [stdout] test engine::plan_index::tests::test_count_tasks_xml ... ok [INFO] [stdout] test engine::phase::find::tests::test_find_phase_not_found ... ok [INFO] [stdout] test engine::phase::find::tests::test_generate_slug ... ok [INFO] [stdout] test engine::milestone::tests::mark_preserves_rest_of_content ... ok [INFO] [stdout] test engine::plan_index::tests::test_count_tasks_xml_preferred_over_md ... ok [INFO] [stdout] test engine::phase::mutations::tests::test_phase_add_creates_dir_and_roadmap ... ok [INFO] [stdout] test engine::milestone::tests::mark_updates_traceability_table ... ok [INFO] [stdout] test engine::milestone::tests::mark_nonexistent_id_in_not_found ... ok [INFO] [stdout] test engine::plan_index::tests::test_parse_frontmatter_block_depends_on ... ok [INFO] [stdout] test engine::plan_index::tests::test_parse_frontmatter_default_status ... ok [INFO] [stdout] test engine::plan_index::tests::test_parse_frontmatter_inline_depends_on ... ok [INFO] [stdout] test engine::plan_index::tests::test_parse_frontmatter_wave_and_status ... ok [INFO] [stdout] test engine::plan_index::tests::test_plan_index_empty_dir ... ok [INFO] [stdout] test engine::profile::dimensions::tests::claude_instructions_has_exactly_8_entries ... ok [INFO] [stdout] test engine::plan_index::tests::test_count_tasks_xml_self_closing_space ... ok [INFO] [stdout] test engine::profile::dimensions::tests::claude_instructions_keyed_by_dimension ... ok [INFO] [stdout] test engine::git::tests::test_commit_nothing_to_commit ... ok [INFO] [stdout] test engine::profile::dimensions::tests::communication_style_option_d_has_mixed_rating ... ok [INFO] [stdout] test engine::profile::dimensions::tests::dimension_keys_has_exactly_8_entries ... ok [INFO] [stdout] test engine::profile::dimensions::tests::each_question_has_4_options ... ok [INFO] [stdout] test engine::profile::dimensions::tests::options_have_keys_a_b_c_d ... ok [INFO] [stdout] test engine::profile::dimensions::tests::profiling_questions_has_exactly_8_entries ... ok [INFO] [stdout] test engine::profile::dimensions::tests::profiling_questions_keys_match_dimension_keys ... ok [INFO] [stdout] test engine::profile::output::tests::detect_manual_edit_returns_false_when_no_last_generated ... ok [INFO] [stdout] test engine::git::tests::test_commit_happy_path ... ok [INFO] [stdout] test engine::profile::dimensions::tests::dimension_keys_order_matches_js ... ok [INFO] [stdout] test engine::profile::dimensions::tests::each_option_has_label_rating_description ... ok [INFO] [stdout] test engine::profile::output::tests::detect_manual_edit_returns_true_when_content_differs ... ok [INFO] [stdout] test engine::phase::mutations::tests::test_phase_insert_decimal ... ok [INFO] [stdout] test engine::profile::output::tests::generate_claude_md_with_force_overwrites_sections ... ok [INFO] [stdout] test engine::profile::output::tests::generate_claude_profile_creates_or_updates_file ... ok [INFO] [stdout] test engine::plan_index::tests::test_count_tasks_empty ... ok [INFO] [stdout] test engine::profile::output::tests::generate_dev_preferences_contains_directives ... ok [INFO] [stdout] test engine::profile::output::tests::splice_appends_when_markers_absent ... ok [INFO] [stdout] test engine::profile::output::tests::generate_claude_md_with_auto_skips_manually_edited ... ok [INFO] [stdout] test engine::plan_index::tests::test_count_tasks_md_fallback ... ok [INFO] [stdout] test engine::profile::output::tests::generate_dev_preferences_creates_file ... ok [INFO] [stdout] test engine::plan_index::tests::test_plan_index_default_status ... ok [INFO] [stdout] test engine::profile::output::tests::splice_uses_prefix_match_for_start_marker ... ok [INFO] [stdout] test engine::profile::output::tests::splice_replaces_existing_section ... ok [INFO] [stdout] test engine::profile::pipeline::tests::assistant_message_returns_false ... ok [INFO] [stdout] test engine::profile::pipeline::tests::batch_limit_stops_extraction ... ok [INFO] [stdout] test engine::profile::pipeline::tests::command_prefix_returns_false ... ok [INFO] [stdout] test engine::profile::pipeline::tests::content_at_limit_not_truncated ... ok [INFO] [stdout] test engine::profile::pipeline::tests::content_over_limit_truncated_with_marker ... ok [INFO] [stdout] test engine::profile::pipeline::tests::content_under_limit_not_truncated ... ok [INFO] [stdout] test engine::plan_index::tests::test_plan_index_checkpoint_detection ... ok [INFO] [stdout] test engine::profile::pipeline::tests::empty_content_returns_false ... ok [INFO] [stdout] test engine::profile::pipeline::tests::extract_from_fixture_produces_correct_count ... ok [INFO] [stdout] test engine::profile::pipeline::tests::extract_messages_produces_output_file ... ok [INFO] [stdout] test engine::profile::pipeline::tests::genuine_user_message_returns_true ... ok [INFO] [stdout] test engine::plan_index::tests::test_plan_index_with_summary ... ok [INFO] [stdout] test engine::profile::pipeline::tests::sidechain_message_returns_false ... ok [INFO] [stdout] test engine::profile::pipeline::tests::exit_code_zero_when_all_sessions_processed ... ok [INFO] [stdout] test engine::profile::pipeline::tests::local_command_prefix_returns_false ... ok [INFO] [stdout] test engine::profile::pipeline::tests::task_notification_prefix_returns_false ... ok [INFO] [stdout] test engine::profile::pipeline::tests::stale_temp_dirs_reaped_before_extraction ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::communication_style_d_produces_low_confidence ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::dimension_result_has_all_required_fields ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::each_question_has_4_options ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::generate_questionnaire_returns_8_questions ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::mixed_rating_produces_low_confidence ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::normal_answer_produces_medium_confidence ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::process_answers_with_7_answers_returns_error ... ok [INFO] [stdout] test engine::profile::pipeline::tests::meta_message_returns_false ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::process_answers_with_valid_8_answers_returns_8_dimensions ... ok [INFO] [stdout] test engine::profile::pipeline::tests::temp_dir_uses_virke_pipeline_prefix ... ok [INFO] [stdout] test engine::profile::questionnaire::tests::process_answers_with_whitespace_in_answers ... ok [INFO] [stdout] test engine::profile::sampling::tests::noise_messages_filtered_out ... ok [INFO] [stdout] test engine::profile::sampling::tests::normal_message_is_not_noise ... ok [INFO] [stdout] test engine::profile::sampling::tests::high_log_density_is_noise ... ok [INFO] [stdout] test engine::profile::sampling::tests::per_project_cap_is_max_5_or_limit_div_count ... ok [INFO] [stdout] test engine::profile::sampling::tests::profile_sample_exit_code_2_when_some_skipped ... ok [INFO] [stdout] test engine::profile::sampling::tests::context_dump_prefix_is_noise ... ok [INFO] [stdout] test engine::profile::sampling::tests::profile_sample_exit_code_zero_when_all_sampled ... ok [INFO] [stdout] test engine::profile::sampling::tests::mixed_content_below_80_percent_not_noise ... ok [INFO] [stdout] test engine::profile::pipeline::tests::large_line_skipped_without_oom ... ok [INFO] [stdout] test engine::profile::sampling::tests::recent_session_cap_is_10_old_cap_is_3 ... ok [INFO] [stdout] test engine::profile::sampling::tests::profile_sample_produces_output_jsonl_in_virke_profile_temp_dir ... ok [INFO] [stdout] test engine::profile::sampling::tests::profile_sample_stale_dirs_reaped ... ok [INFO] [stdout] test engine::profile::sampling::tests::short_message_not_noise_even_with_log_lines ... ok [INFO] [stdout] test engine::profile::sampling::tests::total_sample_respects_default_limit_of_150 ... ok [INFO] [stdout] test engine::profile::sampling::tests::timestamp_density_is_noise ... ok [INFO] [stdout] test engine::profile::session::tests::scan_discovers_two_projects ... ok [INFO] [stdout] test engine::profile::session::tests::malformed_sessions_index_falls_back_to_dir_name ... ok [INFO] [stdout] test engine::profile::session::tests::missing_sessions_index_falls_back_to_dir_name ... ok [INFO] [stdout] test engine::profile::session::tests::privacy_notice_written_to_stderr ... ok [INFO] [stdout] test engine::profile::session::tests::sessions_index_original_path_extracts_basename ... ok [INFO] [stdout] test engine::progress::tests::test_render_bar_100_percent ... ok [INFO] [stdout] test engine::progress::tests::test_render_bar_75_percent ... ok [INFO] [stdout] test engine::profile::session::tests::scan_with_missing_base_dir_returns_empty ... ok [INFO] [stdout] test engine::progress::tests::test_phase_status_computation ... ok [INFO] [stdout] test engine::progress::tests::test_stats_output_fields ... ok [INFO] [stdout] test engine::progress::tests::test_progress_json_output_serializes ... ok [INFO] [stdout] test engine::progress::tests::test_render_bar_zero ... ok [INFO] [stdout] test engine::roadmap::parsing::tests::test_get_phase_not_found ... ok [INFO] [stdout] test engine::milestone::tests::mark_multiple_ids_correct_categorization ... ok [INFO] [stdout] test engine::git::tests::test_subrepo_grouping ... ok [INFO] [stdout] test engine::plan_index::tests::test_plan_index_title_extraction ... ok [INFO] [stdout] test engine::roadmap::tests::test_dir_matches_phase ... ok [INFO] [stdout] test engine::roadmap::parsing::tests::test_parse_phase_detail_header_basic ... ok [INFO] [stdout] test engine::roadmap::tests::test_phase_id_display ... ok [INFO] [stdout] test engine::roadmap::tests::test_phase_id_ord ... ok [INFO] [stdout] test engine::roadmap::parsing::tests::test_parse_phase_checklist_line_basic ... ok [INFO] [stdout] test engine::scaffold::tests::generate_slug_handles_spaces_and_special_chars ... ok [INFO] [stdout] test engine::roadmap::tests::test_strip_archived_blocks ... ok [INFO] [stdout] test engine::scaffold::tests::normalize_phase_number_pads_single_digit ... ok [INFO] [stdout] test engine::scaffold::tests::scaffold_context_creates_file ... ok [INFO] [stdout] test engine::scaffold::tests::scaffold_phase_dir_creates_directory ... ok [INFO] [stdout] test engine::roadmap::mutations::tests::test_toggle_phase_checkbox ... ok [INFO] [stdout] test engine::scaffold::tests::scaffold_phase_dir_skips_existing_directory ... ok [INFO] [stdout] test engine::scaffold::tests::scaffold_unknown_type_returns_error ... ok [INFO] [stdout] test engine::scaffold::tests::scaffold_verification_creates_file ... ok [INFO] [stdout] test engine::roadmap::parsing::tests::test_get_phase_structured ... ok [INFO] [stdout] test engine::scaffold::tests::scaffold_skips_existing_file ... ok [INFO] [stdout] test engine::security::tests::sec01_absolute_path_rejected ... ok [INFO] [stdout] test engine::security::tests::sec01_null_bytes_rejected ... ok [INFO] [stdout] test engine::plan_index::tests::test_plan_index_basic ... ok [INFO] [stdout] test engine::security::tests::sec01_nonexistent_file_parent_exists_ok ... ok [INFO] [stdout] test engine::security::tests::sec01_deep_traversal_rejected ... ok [INFO] [stdout] test engine::security::tests::sec01_safe_path_accepted ... ok [INFO] [stdout] test engine::security::tests::sec01_path_traversal_rejected ... ok [INFO] [stdout] test engine::profile::output::tests::redact_bearer_token ... ok [INFO] [stdout] test engine::profile::output::tests::redact_home_path ... ok [INFO] [stdout] test engine::scaffold::tests::scaffold_uat_creates_file ... ok [INFO] [stdout] test engine::security::tests::sec01_symlink_escaping_base_rejected ... ok [INFO] [stdout] test engine::profile::output::tests::redact_api_key_pattern ... ok [INFO] [stdout] test engine::roadmap::tests::test_phase_id_parse ... ok [INFO] [stdout] test engine::security::tests::sec03_backtick_rejected ... ok [INFO] [stdout] test engine::security::tests::sec03_normal_arg_ok ... ok [INFO] [stdout] test engine::security::tests::sec03_command_substitution_rejected ... ok [INFO] [stdout] test engine::security::tests::sec03_null_byte_rejected ... ok [INFO] [stdout] test engine::security::tests::sec04_invalid_json_error ... ok [INFO] [stdout] test engine::security::tests::sec04_size_exceeded_error ... ok [INFO] [stdout] test engine::security::tests::sec04_valid_json_ok ... ok [INFO] [stdout] test engine::security::tests::sec05_empty_field_rejected ... ok [INFO] [stdout] test engine::security::tests::sec05_empty_phase_rejected ... ok [INFO] [stdout] test engine::security::tests::sec05_path_traversal_as_phase_rejected ... ok [INFO] [stdout] test engine::security::tests::sec05_too_long_field_rejected ... ok [INFO] [stdout] test engine::security::tests::sec05_valid_field_name_simple ... ok [INFO] [stdout] test engine::security::tests::sec05_valid_field_name_underscore ... ok [INFO] [stdout] test engine::security::tests::sec05_valid_phase_number_decimal ... ok [INFO] [stdout] test engine::roadmap::analyze::tests::test_analyze_milestone_grouped ... ok [INFO] [stdout] test engine::security::tests::sec05_valid_phase_number_integer ... ok [INFO] [stdout] test engine::security::tests::sec02_act_as_wave_not_detected ... ok [INFO] [stdout] test engine::security::tests::sec05_valid_phase_number_letter_suffix ... ok [INFO] [stdout] test engine::security::tests::sec02_act_as_plan_not_detected ... ok [INFO] [stdout] test engine::security::tests::sec02_normal_text_clean ... ok [INFO] [stdout] test engine::security::tests::sec02_act_as_hacker_detected ... ok [INFO] [stdout] test engine::security::tests::sec02_act_as_phase_not_detected ... ok [INFO] [stdout] test engine::security::tests::sec02_ignore_previous_instructions_detected ... ok [INFO] [stdout] test engine::roadmap::mutations::tests::test_update_plan_progress_single_row ... ok [INFO] [stdout] test engine::phase::complete::tests::test_phase_complete_atomic ... ok [INFO] [stdout] test engine::state::tests::append_to_section_appends_entry ... ok [INFO] [stdout] test engine::state::tests::append_to_section_works_when_section_is_last ... ok [INFO] [stdout] test engine::state::tests::append_to_section_returns_none_when_section_not_found ... ok [INFO] [stdout] test engine::state::tests::cmd_state_add_blocker_returns_false_when_no_section ... ok [INFO] [stdout] test engine::state::tests::append_to_section_removes_placeholder ... ok [INFO] [stdout] test engine::state::tests::cmd_state_get_no_field_returns_full_content ... ok [INFO] [stdout] test engine::state::tests::cmd_state_advance_plan_marks_complete_at_last_plan ... ok [INFO] [stdout] test engine::state::tests::cmd_state_advance_plan_compound_format ... ok [INFO] [stdout] test engine::state::tests::cmd_state_get_with_field_returns_value ... ok [INFO] [stdout] test engine::state::tests::cmd_state_get_with_section_returns_body ... ok [INFO] [stdout] test engine::profile::output::tests::write_profile_renders_all_8_dimensions ... ok [INFO] [stdout] test engine::state::tests::cmd_state_load_detects_all_files ... ok [INFO] [stdout] test engine::state::tests::cmd_state_load_detects_state_exists ... ok [INFO] [stdout] test engine::state::tests::cmd_state_json_returns_frontmatter_as_json ... ok [INFO] [stdout] test engine::state::tests::cmd_state_get_with_missing_field_returns_error ... ok [INFO] [stdout] test engine::state::tests::cmd_state_advance_plan_increments_counter ... ok [INFO] [stdout] test engine::state::tests::cmd_state_record_metric_returns_false_when_no_section ... ok [INFO] [stdout] test engine::state::tests::cmd_state_begin_phase_updates_current_position_section ... ok [INFO] [stdout] test engine::state::tests::cmd_state_patch_partial_update_tracks_failed ... ok [INFO] [stdout] test engine::state::tests::cmd_state_begin_phase_updates_all_fields ... ok [INFO] [stdout] test engine::state::tests::cmd_state_record_metric_appends_row ... ok [INFO] [stdout] test engine::state::tests::cmd_state_patch_updates_multiple_fields ... ok [INFO] [stdout] test engine::state::tests::cmd_state_record_session_returns_false_when_no_fields ... ok [INFO] [stdout] test engine::security::tests::sec04_exactly_at_limit_ok ... ok [INFO] [stdout] test engine::state::tests::cmd_state_add_decision_returns_false_when_no_section ... ok [INFO] [stdout] test engine::profile::session::tests::sessions_sorted_by_mtime_desc ... ok [INFO] [stdout] test engine::state::tests::cmd_state_update_missing_field_returns_updated_false ... ok [INFO] [stdout] test engine::state::tests::cmd_state_add_blocker_appends_entry ... ok [INFO] [stdout] test engine::state::tests::cmd_state_add_decision_includes_rationale ... ok [INFO] [stdout] test engine::state::tests::cmd_state_record_session_updates_last_session ... ok [INFO] [stdout] test engine::state::tests::extract_field_body_wins_over_frontmatter_when_caller_strips ... ok [INFO] [stdout] test engine::state::tests::cmd_state_update_progress_returns_false_when_no_field ... ok [INFO] [stdout] test engine::state::tests::extract_field_bold_format ... ok [INFO] [stdout] test engine::state::tests::cmd_state_add_decision_appends_entry ... ok [INFO] [stdout] test engine::state::tests::no_file_exceeds_800_lines ... ok [INFO] [stdout] test engine::state::tests::normalize_md_adds_missing_trailing_newline ... ok [INFO] [stdout] test engine::state::tests::normalize_md_ensures_exactly_one_trailing_newline ... ok [INFO] [stdout] test engine::state::tests::extract_field_missing_returns_none ... ok [INFO] [stdout] test engine::state::tests::extract_field_case_insensitive ... ok [INFO] [stdout] test engine::state::tests::cmd_state_update_updates_field ... ok [INFO] [stdout] test engine::state::tests::replace_field_bold_format ... ok [INFO] [stdout] test engine::state::tests::cmd_state_update_progress_calculates_bar ... ok [INFO] [stdout] test engine::state::tests::replace_field_preserves_surrounding_content ... ok [INFO] [stdout] test engine::state::tests::extract_field_plain_format ... ok [INFO] [stdout] test engine::state::tests::replace_field_missing_returns_none ... ok [INFO] [stdout] test engine::state::tests::normalize_md_trims_trailing_whitespace_per_line ... ok [INFO] [stdout] test engine::state::tests::strip_frontmatter_handles_crlf ... ok [INFO] [stdout] test engine::state::tests::strip_frontmatter_removes_block ... ok [INFO] [stdout] test engine::state::tests::replace_field_with_fallback_uses_fallback ... ok [INFO] [stdout] test engine::state::tests::write_state_md_interrupted_write_leaves_state_unchanged ... ok [INFO] [stdout] test engine::state::tests::replace_field_with_fallback_uses_primary ... ok [INFO] [stdout] test engine::stats::tests::test_project_stats_missing_dir ... ok [INFO] [stdout] test engine::state::tests::strip_frontmatter_removes_multiple_stacked_blocks ... ok [INFO] [stdout] test engine::stats::tests::test_stats_output_has_required_fields ... ok [INFO] [stdout] test engine::state::tests::replace_field_with_fallback_returns_original_when_neither_matches ... ok [INFO] [stdout] test engine::template::tests::fill_summary_complex_extra_sections ... ok [INFO] [stdout] test engine::template::tests::fill_plan_creates_file ... ok [INFO] [stdout] test engine::template::tests::fill_plan_no_overwrite ... ok [INFO] [stdout] test engine::state::tests::cmd_state_json_builds_from_body_when_no_frontmatter ... ok [INFO] [stdout] test engine::template::tests::fill_summary_minimal_fewer_sections ... ok [INFO] [stdout] test engine::template::tests::fill_verification_creates_file ... ok [INFO] [stdout] test engine::template::tests::fill_verification_no_overwrite ... ok [INFO] [stdout] test engine::template::tests::fill_summary_has_frontmatter ... ok [INFO] [stdout] test engine::template::tests::no_overwrite_without_force ... ok [INFO] [stdout] test engine::template::tests::fill_summary_creates_file ... ok [INFO] [stdout] test engine::template::tests::variant_selection_complex_high ... ok [INFO] [stdout] test engine::template::tests::variant_selection_complex_low ... ok [INFO] [stdout] test engine::template::tests::variant_selection_minimal_high ... ok [INFO] [stdout] test engine::template::tests::overwrite_with_force ... ok [INFO] [stdout] test engine::template::tests::variant_selection_standard_high ... ok [INFO] [stdout] test engine::template::tests::variant_selection_standard_low ... ok [INFO] [stdout] test engine::template::tests::variant_selection_zero ... ok [INFO] [stdout] test engine::template::tests::fill_summary_standard_sections ... ok [INFO] [stdout] test engine::todo::tests::list_todos_empty_dir_returns_empty ... ok [INFO] [stdout] test engine::todo::tests::list_todos_parses_frontmatter ... ok [INFO] [stdout] test engine::template::tests::variant_selection_minimal_low ... ok [INFO] [stdout] test engine::todo::tests::match_phase_area_match_adds_0_3 ... ok [INFO] [stdout] test engine::todo::tests::match_phase_file_overlap_adds_0_4 ... ok [INFO] [stdout] test engine::todo::tests::complete_todo_moves_file_to_completed ... ok [INFO] [stdout] test engine::state::tests::write_state_md_removes_tmp_file_on_success ... ok [INFO] [stdout] test engine::todo::tests::match_phase_filters_stop_words ... ok [INFO] [stdout] test engine::todo::tests::match_phase_perfect_keyword_overlap_scores_at_least_0_6 ... ok [INFO] [stdout] test engine::todo::tests::match_phase_no_keyword_overlap_returns_empty ... ok [INFO] [stdout] test engine::todo::tests::complete_todo_missing_file_returns_error ... ok [INFO] [stdout] test engine::uat::tests::empty_phases_directory_returns_zero ... ok [INFO] [stdout] test engine::state::tests::write_state_md_creates_file ... ok [INFO] [stdout] test engine::uat::tests::mixed_items_only_unresolved_returned ... ok [INFO] [stdout] test engine::uat::tests::line_number_present ... ok [INFO] [stdout] test engine::todo::tests::match_phase_keyword_score_capped_at_0_6 ... ok [INFO] [stdout] test engine::uat::tests::phase_number_extracted_from_directory_name ... ok [INFO] [stdout] test engine::uat::tests::blocked_item_included_with_blocked_by ... ok [INFO] [stdout] test engine::uat::tests::pending_item_included ... ok [INFO] [stdout] test engine::uat::tests::pass_item_excluded ... ok [INFO] [stdout] test engine::uat::tests::file_path_uses_forward_slashes ... ok [INFO] [stdout] test engine::uat::tests::verification_human_needed_included ... ok [INFO] [stdout] test engine::uat::tests::verification_verified_excluded ... ok [INFO] [stdout] test engine::state::tests::replace_field_plain_format ... ok [INFO] [stdout] test engine::uat::tests::verification_diagnosed_included ... ok [INFO] [stdout] test engine::util::tests::test_generate_slug_colon_and_spaces ... ok [INFO] [stdout] test engine::util::tests::test_generate_slug_trim_and_collapse ... ok [INFO] [stdout] test engine::util::tests::test_generate_slug_simple ... ok [INFO] [stdout] test engine::verify::artifacts::tests::artifact_contains_check_found_returns_contains_ok_true ... ok [INFO] [stdout] test engine::util::tests::test_verify_path_exists ... ok [INFO] [stdout] test engine::util::tests::test_current_timestamp_date_format ... ok [INFO] [stdout] test engine::verify::artifacts::tests::artifact_exists_with_sufficient_lines_returns_min_lines_ok_true ... ok [INFO] [stdout] test engine::verify::artifacts::tests::artifact_exists_with_insufficient_lines_returns_min_lines_ok_false ... ok [INFO] [stdout] test engine::verify::artifacts::tests::artifact_exports_all_present_returns_exports_ok_true ... ok [INFO] [stdout] test engine::util::tests::test_current_timestamp_filename_format ... ok [INFO] [stdout] test engine::verify::artifacts::tests::artifact_missing_file_returns_exists_false_checks_none ... ok [INFO] [stdout] test engine::verify::artifacts::tests::must_haves_yaml_with_both_artifacts_and_key_links_parsed ... ok [INFO] [stdout] test engine::uat::tests::skipped_item_included ... ok [INFO] [stdout] test engine::verify::artifacts::tests::parse_yaml_item_list_parses_basic_artifacts ... ok [INFO] [stdout] test engine::verify::artifacts::tests::parse_yaml_item_list_parses_exports_as_newline_joined ... ok [INFO] [stdout] test engine::util::tests::test_current_timestamp_full_format ... ok [INFO] [stdout] test engine::verify::artifacts::tests::key_link_pattern_found_in_source_returns_pattern_found_true ... ok [INFO] [stdout] test engine::verify::artifacts::tests::key_link_pattern_not_found_returns_pattern_found_false ... ok [INFO] [stdout] test engine::uat::tests::results_sorted_by_phase_directory_name ... ok [INFO] [stdout] test engine::verify::health::tests::consistency_disk_has_phase_not_in_roadmap_returns_on_disk_not_roadmap ... ok [INFO] [stdout] test engine::verify::health::tests::consistency_matching_roadmap_and_disk_returns_consistent_true ... ok [INFO] [stdout] test engine::verify::health::tests::consistency_any_mismatch_returns_consistent_false ... ok [INFO] [stdout] test engine::verify::health::tests::consistency_archived_phases_excluded_from_comparison ... ok [INFO] [stdout] test engine::verify::health::tests::consistency_roadmap_has_phase_not_on_disk_returns_in_roadmap_not_disk ... ok [INFO] [stdout] test engine::verify::health::tests::health_missing_roadmap_returns_verdict_fail_with_roadmap_missing_error ... ok [INFO] [stdout] test engine::verify::health::tests::health_invalid_plan_produces_plan_invalid_error ... ok [INFO] [stdout] test engine::verify::health::tests::health_dry_run_populates_would_repair_not_repairs_applied ... ok [INFO] [stdout] test engine::verify::health::tests::health_apply_populates_repairs_applied ... ok [INFO] [stdout] test engine::verify::plan::tests::all_required_fields_present_returns_valid ... ok [INFO] [stdout] test engine::verify::plan::tests::empty_directory_returns_vacuously_complete ... ok [INFO] [stdout] test engine::verify::plan::tests::checkpoint_with_autonomous_true_returns_error ... ok [INFO] [stdout] test engine::verify::health::tests::health_error_count_matches_errors_len_and_warning_count_matches_warnings_len ... ok [INFO] [stdout] test engine::verify::plan::tests::orphan_summary_goes_to_warnings_not_errors ... ok [INFO] [stdout] test engine::verify::plan::tests::plan_and_summary_present_returns_complete ... ok [INFO] [stdout] test engine::verify::plan::tests::no_tasks_returns_warning ... ok [INFO] [stdout] test engine::verify::plan::tests::frontmatter_fields_lists_all_found_fields ... ok [INFO] [stdout] test engine::verify::plan::tests::missing_wave_field_returns_error ... ok [INFO] [stdout] test engine::verify::health::tests::health_missing_state_returns_warning_not_error ... ok [INFO] [stdout] test engine::verify::health::tests::consistency_gap_in_disk_directories_returns_numbering_gaps ... ok [INFO] [stdout] test engine::profile::output::tests::write_profile_redacts_sensitive_content_in_evidence ... ok [INFO] [stdout] test engine::verify::plan::tests::two_plans_one_summary_returns_incomplete ... ok [INFO] [stdout] test engine::verify::health::tests::health_healthy_project_returns_verdict_pass ... ok [INFO] [stdout] test engine::verify::plan::tests::plan_summary_id_extraction_is_correct ... ok [INFO] [stdout] test engine::verify::plan::tests::three_tasks_returns_task_count_3 ... ok [INFO] [stdout] test engine::verify::plan::tests::task_elements_reported_correctly ... ok [INFO] [stdout] test error::tests::test_code_capture_group ... ok [INFO] [stdout] test engine::verify::references::tests::backtick_file_path_with_slash_detected_as_reference ... ok [INFO] [stdout] test engine::verify::references::tests::content_with_no_references_returns_all_valid_and_empty ... ok [INFO] [stdout] test error::tests::test_code_empty_value ... ok [INFO] [stdout] test error::tests::test_code_field_not_found ... ok [INFO] [stdout] test engine::verify::references::tests::http_urls_excluded_from_file_reference_check ... ok [INFO] [stdout] test error::tests::test_code_flag_conflict ... ok [INFO] [stdout] test error::tests::test_code_git_command ... ok [INFO] [stdout] test error::tests::test_code_invalid_path ... ok [INFO] [stdout] test error::tests::test_code_io_error ... ok [INFO] [stdout] test error::tests::test_code_malformed_config ... ok [INFO] [stdout] test error::tests::test_code_malformed_settings ... ok [INFO] [stdout] test error::tests::test_code_no_home_dir ... ok [INFO] [stdout] test error::tests::test_code_no_project_root ... ok [INFO] [stdout] test error::tests::test_code_parse_int ... ok [INFO] [stdout] test error::tests::test_code_fancy_regex_compile ... ok [INFO] [stdout] test error::tests::test_code_other ... ok [INFO] [stdout] test error::tests::test_code_section_not_found ... ok [INFO] [stdout] test error::tests::test_code_state_not_found ... ok [INFO] [stdout] test error::tests::test_code_serialize_error ... ok [INFO] [stdout] test error::tests::test_code_raw_on_multi_field ... ok [INFO] [stdout] test error::tests::test_code_toml_deserialize ... ok [INFO] [stdout] test engine::verify::references::tests::valid_commit_hash_returns_valid_true ... ok [INFO] [stdout] test error::tests::test_code_regex_compile ... ok [INFO] [stdout] test engine::verify::references::tests::reference_nonexistent_at_file_returns_exists_false_all_valid_false ... ok [INFO] [stdout] test engine::verify::references::tests::reference_existing_at_file_returns_exists_true ... ok [INFO] [stdout] test file_manifest::tests::backup_modified_files_copies_to_patches_dir ... ok [INFO] [stdout] test error::tests::test_code_update_check ... ok [INFO] [stdout] test file_manifest::tests::file_manifest_serializes_correctly ... ok [INFO] [stdout] test error::tests::test_code_toml_parse ... ok [INFO] [stdout] test file_manifest::tests::hash_bytes_known_hello ... ok [INFO] [stdout] test file_manifest::tests::hash_bytes_empty ... ok [INFO] [stdout] test file_manifest::tests::detect_modified_files_returns_changed_files ... ok [INFO] [stdout] test installer::tests::ci_mode_empty_selection_defaults_to_claude ... ok [INFO] [stdout] test installer::tests::ci_mode_explicit_multi_not_overridden ... ok [INFO] [stdout] test installer::tests::ci_mode_explicit_opencode_not_overridden ... ok [INFO] [stdout] test installer::tests::install_all_iterates_all_8_runtimes ... ok [INFO] [stdout] test installer::tests::test_statusline_shown_single_runtime_interactive ... ok [INFO] [stdout] test installer::tests::test_statusline_skipped_in_ci ... ok [INFO] [stdout] test installer::tests::test_statusline_skipped_zero_count ... ok [INFO] [stdout] test installer::tests::tty_mode_empty_selection_returns_empty ... ok [INFO] [stdout] test installer::tests::tty_mode_explicit_selection_preserved ... ok [INFO] [stdout] test jsonc::tests::comment_marker_inside_string_preserved ... ok [INFO] [stdout] test jsonc::tests::parse_plain_json ... ok [INFO] [stdout] test jsonc::tests::remove_trailing_comma_before_brace ... ok [INFO] [stdout] test jsonc::tests::strip_block_comment ... ok [INFO] [stdout] test jsonc::tests::strip_bom ... ok [INFO] [stdout] test installer::tests::test_statusline_prompt_once_for_all ... ok [INFO] [stdout] test manifest::tests::all_assets_non_empty ... ok [INFO] [stdout] test manifest::tests::all_paths_are_relative_forward_slash ... ok [INFO] [stdout] test manifest::tests::category_classification_correct ... ok [INFO] [stdout] test jsonc::tests::multiline_block_comment ... ok [INFO] [stdout] test jsonc::tests::strip_single_line_comment ... ok [INFO] [stdout] test manifest::tests::category_counts ... ok [INFO] [stdout] test file_manifest::tests::detect_modified_files_returns_empty_when_all_match ... ok [INFO] [stdout] test file_manifest::tests::write_manifest_creates_valid_json_with_newline ... ok [INFO] [stdout] test jsonc::tests::remove_trailing_comma_before_bracket ... ok [INFO] [stdout] test jsonc::tests::valid_json_round_trip ... ok [INFO] [stdout] test manifest::tests::config_json_included ... ok [INFO] [stdout] test manifest::tests::critical_files_present ... ok [INFO] [stdout] test paths::tests::antigravity_global_config_dir_override ... ok [INFO] [stdout] test paths::tests::antigravity_global_env_var ... ok [INFO] [stdout] test paths::tests::antigravity_local_is_dot_agent ... ok [INFO] [stdout] test manifest::tests::total_asset_count ... ok [INFO] [stdout] test paths::tests::antigravity_global_default ... ok [INFO] [stdout] test manifest::tests::get_returns_none_for_unknown ... ok [INFO] [stdout] test manifest::tests::no_duplicate_paths ... ok [INFO] [stdout] test paths::tests::codex_global_config_dir_override ... ok [INFO] [stdout] test paths::tests::codex_global_default ... ok [INFO] [stdout] test paths::tests::codex_global_env_var ... ok [INFO] [stdout] test paths::tests::copilot_global_config_dir_override ... ok [INFO] [stdout] test paths::tests::codex_local_is_dot_codex ... ok [INFO] [stdout] test paths::tests::copilot_global_default ... ok [INFO] [stdout] test paths::tests::copilot_global_env_var ... ok [INFO] [stdout] test paths::tests::copilot_local_is_dot_github ... ok [INFO] [stdout] test paths::tests::cursor_global_default ... ok [INFO] [stdout] test paths::tests::cursor_global_env_var ... ok [INFO] [stdout] test paths::tests::cursor_local_is_dot_cursor ... ok [INFO] [stdout] test paths::tests::expand_tilde_absolute_unchanged ... ok [INFO] [stdout] test paths::tests::enforce_no_wsl_ok_on_non_windows ... ok [INFO] [stdout] test manifest::tests::iter_by_category_returns_only_matching ... ok [INFO] [stdout] test paths::tests::expand_tilde_with_suffix ... ok [INFO] [stdout] test paths::tests::cursor_global_config_dir_override ... ok [INFO] [stdout] test paths::tests::gemini_global_config_dir_override ... ok [INFO] [stdout] test paths::tests::gemini_global_default ... ok [INFO] [stdout] test paths::tests::gemini_global_env_var ... ok [INFO] [stdout] test paths::tests::gemini_local_is_dot_gemini ... ok [INFO] [stdout] test paths::tests::global_dir_fallback_to_home ... ok [INFO] [stdout] test paths::tests::global_dir_from_env_var ... ok [INFO] [stdout] test paths::tests::global_dir_from_override ... ok [INFO] [stdout] test paths::tests::normalize_hook_command_path_converts_backslashes_on_windows ... ok [INFO] [stdout] test paths::tests::local_dir_is_cwd_dot_claude ... ok [INFO] [stdout] test paths::tests::opencode_global_default ... ok [INFO] [stdout] test paths::tests::opencode_global_config_dir_override ... ok [INFO] [stdout] test paths::tests::opencode_global_xdg_fallback ... ok [INFO] [stdout] test paths::tests::normalize_hook_command_path_forward_slashes_on_unix ... ok [INFO] [stdout] test paths::tests::opencode_local_is_dot_opencode ... ok [INFO] [stdout] test paths::tests::opencode_global_env_var ... ok [INFO] [stdout] test paths::tests::path_prefix_global_has_tilde ... ok [INFO] [stdout] test paths::tests::path_prefix_local_is_absolute ... ok [INFO] [stdout] test paths::tests::path_prefix_no_double_slash ... ok [INFO] [stdout] test manifest::tests::excluded_files_absent ... ok [INFO] [stdout] test paths::tests::windsurf_global_default ... ok [INFO] [stdout] test paths::tests::windsurf_local_is_dot_windsurf ... ok [INFO] [stdout] test paths::tests::wsl_detected_via_env_var ... ok [INFO] [stdout] test runtime::antigravity::tests::virke_colon_replaced ... ok [INFO] [stdout] test paths::tests::wsl_not_detected_without_env_var_non_windows ... ok [INFO] [stdout] test runtime::codex::tests::codex_agent_sandbox_default_read_only ... ok [INFO] [stdout] test runtime::codex::tests::codex_agent_sandbox_has_executor ... ok [INFO] [stdout] test runtime::codex::tests::codex_agent_sandbox_has_plan_checker ... ok [INFO] [stdout] test runtime::codex::tests::convert_command_produces_skill_md ... ok [INFO] [stdout] test runtime::codex::tests::convert_command_replaces_claude_paths ... ok [INFO] [stdout] test runtime::codex::tests::convert_command_replaces_slash_virke ... ok [INFO] [stdout] test runtime::codex::tests::derive_skill_name_basic ... ok [INFO] [stdout] test runtime::codex::tests::generate_agent_toml_contains_sandbox_mode ... ok [INFO] [stdout] test runtime::codex::tests::generate_agent_toml_read_only_for_plan_checker ... ok [INFO] [stdout] test runtime::codex::tests::sandbox_constant_has_all_write_agents ... ok [INFO] [stdout] test runtime::codex::tests::sandbox_constant_has_read_only_agents ... ok [INFO] [stdout] test runtime::codex::tests::truncate_description_long_gets_ellipsis ... ok [INFO] [stdout] test runtime::codex::tests::to_single_line_collapses_newlines ... ok [INFO] [stdout] test runtime::antigravity::tests::command_converted_to_skill ... ok [INFO] [stdout] test runtime::codex::tests::truncate_description_short_unchanged ... ok [INFO] [stdout] test runtime::antigravity::tests::global_path_substitution_preserves_home ... ok [INFO] [stdout] test runtime::copilot::tests::command_mapped_to_skill_dir ... ok [INFO] [stdout] test runtime::copilot::tests::dedup_removes_duplicate_edit ... ok [INFO] [stdout] test runtime::copilot::tests::dedup_removes_duplicate_search ... ok [INFO] [stdout] test runtime::copilot::tests::global_path_substitution ... ok [INFO] [stdout] test runtime::codex::tests::yaml_quote_basic ... ok [INFO] [stdout] test runtime::copilot::tests::agent_md_extension_in_output_path ... ok [INFO] [stdout] test runtime::copilot::tests::map_glob_and_grep_both_to_search ... ok [INFO] [stdout] test paths::tests::windsurf_global_env_var ... ok [INFO] [stdout] test runtime::copilot::tests::map_webfetch_and_websearch_both_to_web ... ok [INFO] [stdout] test runtime::copilot::tests::map_write_and_edit_both_to_edit ... ok [INFO] [stdout] test runtime::copilot::tests::map_bash_to_execute ... ok [INFO] [stdout] test runtime::antigravity::tests::local_path_substitution ... ok [INFO] [stdout] test paths::tests::windsurf_global_config_dir_override ... ok [INFO] [stdout] test engine::verify::references::tests::invalid_hash_returns_valid_false ... ok [INFO] [stdout] test runtime::copilot::tests::mcp_context7_mapped ... ok [INFO] [stdout] test runtime::copilot::tests::mcp_other_passthrough ... ok [INFO] [stdout] test runtime::copilot::tests::skill_name_from_command_path ... ok [INFO] [stdout] test runtime::copilot::tests::skill_name_from_nested_command_path ... ok [INFO] [stdout] test runtime::cursor::tests::arguments_placeholder_converted ... ok [INFO] [stdout] test runtime::copilot::tests::local_path_substitution ... ok [INFO] [stdout] test runtime::cursor::tests::bash_replaced_with_shell_in_body ... ok [INFO] [stdout] test runtime::cursor::tests::convert_agent_applies_brand_replacement ... ok [INFO] [stdout] test runtime::cursor::tests::claude_md_replaced ... ok [INFO] [stdout] test runtime::cursor::tests::convert_agent_has_minimal_frontmatter ... ok [INFO] [stdout] test runtime::cursor::tests::command_mapped_to_skill_dir ... ok [INFO] [stdout] test runtime::cursor::tests::convert_command_prepends_adapter_header ... ok [INFO] [stdout] test runtime::cursor::tests::claude_code_brand_replaced_with_cursor ... ok [INFO] [stdout] test runtime::cursor::tests::skill_name_from_command_path ... ok [INFO] [stdout] test runtime::cursor::tests::subagent_type_converted ... ok [INFO] [stdout] test runtime::cursor::tests::virke_colon_case_insensitive ... ok [INFO] [stdout] test runtime::cursor::tests::virke_colon_replaced_with_virke_dash ... ok [INFO] [stdout] test runtime::gemini::tests::agent_color_stripped ... ok [INFO] [stdout] test runtime::gemini::tests::agent_mcp_tools_excluded ... ok [INFO] [stdout] test runtime::cursor::tests::convert_command_uses_minimal_frontmatter ... ok [INFO] [stdout] test runtime::cursor::tests::edit_replaced_with_strreplace_in_body ... ok [INFO] [stdout] test runtime::gemini::tests::claude_md_replaced_with_gemini_md ... ok [INFO] [stdout] test runtime::gemini::tests::command_no_frontmatter_wraps_in_prompt ... ok [INFO] [stdout] test runtime::gemini::tests::command_with_description_produces_toml ... ok [INFO] [stdout] test runtime::gemini::tests::command_without_description_omits_description_line ... ok [INFO] [stdout] test runtime::gemini::tests::dollar_brace_word_escaped ... ok [INFO] [stdout] test runtime::gemini::tests::dollar_no_brace_unchanged ... ok [INFO] [stdout] test runtime::gemini::tests::bash_maps_to_run_shell_command ... ok [INFO] [stdout] test runtime::cursor::tests::convert_agent_no_agent_md_rename ... ok [INFO] [stdout] test runtime::gemini::tests::edit_maps_to_replace ... ok [INFO] [stdout] test runtime::cursor::tests::skill_adapter_header_contains_shell ... ok [INFO] [stdout] test runtime::gemini::tests::agent_tools_remapped_to_gemini_names ... ok [INFO] [stdout] test runtime::gemini::tests::agent_skills_stripped ... ok [INFO] [stdout] test runtime::gemini::tests::agent_task_tool_excluded ... ok [INFO] [stdout] test runtime::gemini::tests::glob_maps_to_glob ... ok [INFO] [stdout] test runtime::gemini::tests::grep_maps_to_search_file_content ... ok [INFO] [stdout] test runtime::gemini::tests::mcp_tool_is_excluded ... ok [INFO] [stdout] test runtime::gemini::tests::non_word_brace_expression_unchanged ... ok [INFO] [stdout] test runtime::gemini::tests::read_maps_to_read_file ... ok [INFO] [stdout] test runtime::gemini::tests::set_gemini_experimental_creates_key ... ok [INFO] [stdout] test runtime::gemini::tests::task_is_excluded ... ok [INFO] [stdout] test runtime::gemini::tests::toml_string_escapes_quotes ... ok [INFO] [stdout] test runtime::gemini::tests::write_maps_to_write_file ... ok [INFO] [stdout] test runtime::copilot::tests::command_name_conversion ... ok [INFO] [stdout] test runtime::opencode::tests::body_subs_home_env_claude_path ... ok [INFO] [stdout] test runtime::opencode::tests::body_subs_neutralizes_claude_md ... ok [INFO] [stdout] test runtime::opencode::tests::body_subs_subagent_type_general_purpose ... ok [INFO] [stdout] test runtime::opencode::tests::body_subs_tilde_claude_path ... ok [INFO] [stdout] test runtime::opencode::tests::body_subs_virke_slash_command_refs ... ok [INFO] [stdout] test runtime::gemini::tests::empty_braces_unchanged ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_adds_mode_subagent ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_body_substitutions_applied ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_strips_color ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_strips_disallowed_tools ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_strips_max_turns ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_strips_permission_mode ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_strips_skills ... ok [INFO] [stdout] test runtime::opencode::tests::convert_agent_strips_model ... ok [INFO] [stdout] test runtime::opencode::tests::convert_command_body_substitutions_applied ... ok [INFO] [stdout] test runtime::opencode::tests::convert_command_converts_allowed_tools ... ok [INFO] [stdout] test runtime::opencode::tests::convert_command_no_frontmatter_unchanged ... ok [INFO] [stdout] test runtime::opencode::tests::convert_command_strips_model_field ... ok [INFO] [stdout] test runtime::opencode::tests::convert_command_strips_name_field ... ok [INFO] [stdout] test runtime::gemini::tests::set_gemini_experimental_on_existing_file ... ok [INFO] [stdout] test runtime::opencode::tests::flatten_nested_command ... ok [INFO] [stdout] test runtime::opencode::tests::flatten_simple_command ... ok [INFO] [stdout] test runtime::opencode::tests::flatten_execute_plan_command ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_ask_user_question ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_bash_lowercased ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_edit_lowercased ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_mcp_preserved ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_read_lowercased ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_slash_command ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_todo_write ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_web_fetch ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_write_lowercased ... ok [INFO] [stdout] test runtime::tests::all_contains_every_variant ... ok [INFO] [stdout] test runtime::tests::all_returns_8_variants ... ok [INFO] [stdout] test runtime::tests::extract_field_found ... ok [INFO] [stdout] test runtime::tests::extract_field_not_found ... ok [INFO] [stdout] test runtime::opencode::tests::tool_name_web_search ... ok [INFO] [stdout] test runtime::tests::resolve_dir_claude_global ... ok [INFO] [stdout] test runtime::tests::resolve_dir_gemini_config_dir_override ... ok [INFO] [stdout] test runtime::tests::resolve_dir_claude_local ... ok [INFO] [stdout] test runtime::tests::resolve_dir_opencode_config_dir_override ... ok [INFO] [stdout] test runtime::tests::resolve_dir_codex_config_dir_override ... ok [INFO] [stdout] test runtime::tests::resolve_dir_copilot_config_dir_override ... ok [INFO] [stdout] test runtime::tests::resolve_dir_antigravity_config_dir_override ... ok [INFO] [stdout] test runtime::tests::split_frontmatter_no_fm ... ok [INFO] [stdout] test runtime::tests::skill_name_from_command_path ... ok [INFO] [stdout] test runtime::tests::split_frontmatter_with_fm ... ok [INFO] [stdout] test runtime::windsurf::tests::agent_path_redirected_to_rules ... ok [INFO] [stdout] test runtime::windsurf::tests::claude_md_replaced_with_windsurf_rules ... ok [INFO] [stdout] test runtime::windsurf::tests::convert_agent_applies_brand_replacement ... ok [INFO] [stdout] test runtime::tests::skill_name_from_nested_command_path ... ok [INFO] [stdout] test runtime::tests::resolve_dir_cursor_config_dir_override ... ok [INFO] [stdout] test runtime::windsurf::tests::bash_replaced_with_shell ... ok [INFO] [stdout] test runtime::windsurf::tests::skill_name_from_command_path ... ok [INFO] [stdout] test runtime::windsurf::tests::convert_agent_strips_frontmatter ... ok [INFO] [stdout] test runtime::windsurf::tests::virke_colon_replaced ... ok [INFO] [stdout] test runtime::windsurf::tests::windsurf_brand_replaced ... ok [INFO] [stdout] test runtime::windsurf::tests::windsurf_path_substitution_no_cursor_refs ... ok [INFO] [stdout] test toml_merge::tests::codex_hooks_new_file_no_features ... ok [INFO] [stdout] test toml_merge::tests::codex_hooks_already_true_noop ... ok [INFO] [stdout] test toml_merge::tests::codex_hooks_prepends_when_missing ... ok [INFO] [stdout] test toml_merge::tests::merge_case2_marker_only_above ... ok [INFO] [stdout] test runtime::windsurf::tests::skill_adapter_uses_windsurf_tag ... ok [INFO] [stdout] test uninstaller::tests::cleanup_orphaned_hooks_dry_run_does_not_write ... ok [INFO] [stdout] test toml_merge::tests::merge_case3_empty_existing ... ok [INFO] [stdout] test toml_merge::tests::merge_case3_no_marker ... ok [INFO] [stdout] test uninstaller::tests::package_json_removed_when_exact_match ... ok [INFO] [stdout] test runtime::windsurf::tests::command_mapped_to_skill_dir ... ok [INFO] [stdout] test uninstaller::tests::remove_codex_virke_block_removes_marker_section ... ok [INFO] [stdout] test toml_merge::tests::merge_case1_fresh_file ... ok [INFO] [stdout] test uninstaller::tests::package_json_only_removed_if_exactly_commonjs ... ok [INFO] [stdout] test toml_merge::tests::merge_case2_has_marker ... ok [INFO] [stdout] test uninstaller::tests::cleanup_orphaned_hooks_removes_old_v1_patterns ... ok [INFO] [stdout] test uninstaller::tests::scan_detects_leaked_claude_path_in_md_file ... ok [INFO] [stdout] test uninstaller::tests::scan_ignores_claude_runtime ... ok [INFO] [stdout] test uninstaller::tests::save_local_patches_backs_up_modified_file ... ok [INFO] [stdout] test uninstaller::tests::scan_skips_changelog_md ... ok [INFO] [stdout] test uninstaller::tests::scan_detects_home_env_leaked_path ... ok [INFO] [stdout] test uninstaller::tests::save_local_patches_no_manifest_returns_empty ... ok [INFO] [stdout] test uninstaller::tests::scan_ignores_non_md_non_toml_files ... ok [INFO] [stdout] test updater::tests::test_is_cache_valid_exact_boundary ... ok [INFO] [stdout] test uninstaller::tests::uninstall_claude_removes_directories ... ok [INFO] [stdout] test updater::tests::test_parse_semver_basic ... ok [INFO] [stdout] test updater::tests::test_parse_semver_invalid ... ok [INFO] [stdout] test updater::tests::test_is_cache_valid_fresh ... ok [INFO] [stdout] test updater::tests::test_parse_semver_prerelease ... ok [INFO] [stdout] test updater::tests::test_parse_semver_no_prefix ... ok [INFO] [stdout] test updater::tests::test_detect_install_method_returns_string ... ok [INFO] [stdout] test uninstaller::tests::uninstall_dry_run_does_not_delete ... ok [INFO] [stdout] test updater::tests::test_is_cache_valid_expired ... ok [INFO] [stdout] test engine::state::tests::cmd_state_resolve_blocker_adds_none_placeholder_when_empty ... ok [INFO] [stdout] test engine::state::tests::cmd_state_resolve_blocker_returns_false_when_no_section ... ok [INFO] [stdout] test engine::state::tests::cmd_state_resolve_blocker_case_insensitive ... ok [INFO] [stdout] test engine::state::tests::cmd_state_resolve_blocker_removes_matching_line ... ok [INFO] [stdout] test engine::state::tests::cmd_state_snapshot_extracts_blockers ... ok [INFO] [stdout] test engine::phase::remove::tests::test_phase_remove_renumbers ... ok [INFO] [stdout] test engine::state::tests::cmd_state_snapshot_returns_structured_output ... ok [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/virke-0f52de89f0cb818e) [INFO] [stdout] test engine::security::tests::sec02_all_18_patterns_detected ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 757 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.34s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test interactive::tests::test_index_to_location ... ok [INFO] [stdout] test interactive::tests::test_index_to_runtime_choice_claude ... ok [INFO] [stdout] test interactive::tests::test_index_to_runtime_choice_all_indices ... ok [INFO] [stdout] test interactive::tests::test_index_to_runtime_choice_all ... ok [INFO] [stdout] test interactive::tests::test_runtime_choice_all_expands ... ok [INFO] [stdout] test interactive::tests::test_runtime_choice_single_expands ... ok [INFO] [stdout] test interactive::tests::windsurf_at_index_7 ... ok [INFO] [stdout] test interactive::tests::test_index_to_runtime_choice_opencode ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stderr] Running tests/check_update.rs (/opt/rustwide/target/debug/deps/check_update-db0e5f2400c77768) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test check_update_env_suppressed ... ok [INFO] [stdout] test check_update_help_shows_flags ... ok [INFO] [stdout] test check_update_json_to_stdout ... ok [INFO] [stderr] Running tests/completions.rs (/opt/rustwide/target/debug/deps/completions-bcd9133615ae4b1c) [INFO] [stdout] test check_update_no_stdout_contamination ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stdout] test completions_invalid_shell_fails ... ok [INFO] [stdout] test completions_powershell_produces_valid_output ... ok [INFO] [stdout] test completions_fish_produces_valid_output ... ok [INFO] [stderr] Running tests/install_antigravity.rs (/opt/rustwide/target/debug/deps/install_antigravity-d7d131779db48075) [INFO] [stdout] test completions_bash_produces_valid_output ... ok [INFO] [stdout] test completions_zsh_produces_valid_output ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_antigravity_paths ... ok [INFO] [stdout] test test_antigravity_hook_registrations ... ok [INFO] [stdout] test test_antigravity_path_substitution_in_skills ... ok [INFO] [stdout] test test_antigravity_manifest ... ok [INFO] [stdout] test test_antigravity_no_enable_agents ... ok [INFO] [stdout] test test_antigravity_agent_escaping ... ok [INFO] [stdout] test test_antigravity_package_json ... ok [INFO] [stdout] test test_antigravity_skills ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.81s [INFO] [stdout] [INFO] [stderr] Running tests/install_claude.rs (/opt/rustwide/target/debug/deps/install_claude-71e0f5e23ed384c6) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test install_claude_global_produces_correct_tree ... ok [INFO] [stdout] test reinstall_preserves_non_virke_hooks ... ok [INFO] [stdout] test reinstall_backs_up_modified_files ... ok [INFO] [stderr] Running tests/install_codex.rs (/opt/rustwide/target/debug/deps/install_codex-17419b4f6d431899) [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test test_update_codex_config_fresh ... ok [INFO] [stdout] test test_update_codex_config_ensure_hooks_feature ... ok [INFO] [stdout] test test_update_codex_config_merge_codex_calls ... ok [INFO] [stdout] test test_codex_config_merge_no_marker ... ok [INFO] [stdout] test test_codex_config_merge_existing_marker ... ok [INFO] [stdout] test test_codex_install ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s [INFO] [stdout] [INFO] [stderr] Running tests/install_copilot.rs (/opt/rustwide/target/debug/deps/install_copilot-ad972b4efefe36ce) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_copilot_manifest_exists ... ok [INFO] [stdout] test test_copilot_instructions_merge_preserves_user_content ... ok [INFO] [stdout] test test_copilot_instructions_injection ... ok [INFO] [stdout] test test_copilot_no_hooks_installed ... ok [INFO] [stdout] test test_copilot_skill_layout ... ok [INFO] [stdout] test test_copilot_agent_md_extension ... ok [INFO] [stdout] test test_copilot_tool_deduplication ... ok [INFO] [stdout] test test_copilot_instructions_re_install_updates_block ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.07s [INFO] [stdout] [INFO] [stderr] Running tests/install_cursor.rs (/opt/rustwide/target/debug/deps/install_cursor-d270860d5b10fa6c) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test test_cursor_no_hooks_installed ... ok [INFO] [stdout] test test_cursor_no_config_mutation ... ok [INFO] [stdout] test test_cursor_agent_plain_md_not_agent_md ... ok [INFO] [stdout] test test_cursor_tool_rename_in_skills ... ok [INFO] [stdout] test test_cursor_skill_layout ... ok [INFO] [stdout] test test_cursor_manifest_exists ... ok [INFO] [stdout] test test_cursor_brand_replacement ... ok [INFO] [stdout] test test_cursor_skill_adapter_header ... ok [INFO] [stdout] test test_cursor_agent_minimal_frontmatter ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.12s [INFO] [stdout] [INFO] [stderr] Running tests/install_gemini.rs (/opt/rustwide/target/debug/deps/install_gemini-612e82c5ad22e77d) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_gemini_package_json ... ok [INFO] [stdout] test test_gemini_enable_agents ... ok [INFO] [stdout] test test_gemini_toml_commands ... ok [INFO] [stdout] test test_gemini_agent_escaping ... ok [INFO] [stdout] test test_gemini_hook_registrations ... ok [INFO] [stdout] test test_gemini_agent_tools ... ok [INFO] [stdout] test test_gemini_manifest ... ok [INFO] [stdout] test test_gemini_no_claude_paths_in_commands ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.81s [INFO] [stdout] [INFO] [stderr] Running tests/install_opencode.rs (/opt/rustwide/target/debug/deps/install_opencode-e62c97c18b62686d) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test test_opencode_hooks_directory_exists ... ok [INFO] [stdout] test test_opencode_virke_file_manifest_exists ... ok [INFO] [stdout] test test_opencode_config_permissions ... ok [INFO] [stdout] test test_opencode_jsonc_config_path ... ok [INFO] [stdout] test test_opencode_agent_conversion ... ok [INFO] [stdout] test test_opencode_frontmatter_conversion ... ok [INFO] [stdout] test test_opencode_get_shit_done_directory_exists ... ok [INFO] [stdout] test test_opencode_flat_command_layout ... ok [INFO] [stdout] test test_opencode_install ... ok [INFO] [stdout] test test_opencode_package_json_commonjs ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.02s [INFO] [stdout] [INFO] [stderr] Running tests/install_windsurf.rs (/opt/rustwide/target/debug/deps/install_windsurf-3bdc3e4493cdbffe) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test test_windsurf_no_config_mutation ... ok [INFO] [stdout] test test_windsurf_manifest_exists ... ok [INFO] [stdout] test test_windsurf_no_hooks_installed ... ok [INFO] [stdout] test test_windsurf_skill_layout ... ok [INFO] [stdout] test test_windsurf_tool_rename_in_skills ... ok [INFO] [stdout] test test_windsurf_rules_not_agents ... ok [INFO] [stdout] test test_windsurf_skill_adapter_header ... ok [INFO] [stdout] test test_windsurf_rules_no_frontmatter ... ok [INFO] [stdout] test test_windsurf_brand_replacement ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.97s [INFO] [stdout] [INFO] [stderr] Running tests/parity/mod.rs (/opt/rustwide/target/debug/deps/parity-20cdb1bbaf46498e) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test parity_antigravity ... ok [INFO] [stdout] test parity_claude ... ok [INFO] [stdout] test parity_cursor ... ok [INFO] [stdout] test parity_opencode ... ok [INFO] [stdout] test parity_codex ... ok [INFO] [stdout] test parity_windsurf ... ok [INFO] [stdout] test parity_copilot ... ok [INFO] [stdout] test parity_gemini ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/uninstall.rs (/opt/rustwide/target/debug/deps/uninstall-eeae8f7cbcfe77ea) [INFO] [stdout] [INFO] [stdout] running 13 tests [INFO] [stdout] test test_leak_detection_skips_changelog ... ok [INFO] [stdout] test test_leak_detection_finds_claude_paths_in_non_claude_install ... ok [INFO] [stdout] test test_local_patch_backup_no_modifications ... ok [INFO] [stdout] test test_uninstall_orphaned_hooks ... ok [INFO] [stdout] test test_orphaned_hooks_virke_pre_tool_removed ... ok [INFO] [stdout] test test_leak_detection_ignored_for_claude_runtime ... ok [INFO] [stdout] test test_uninstall_package_json_safety_minimal_removed ... ok [INFO] [stdout] test test_leak_detection_home_env_pattern ... ok [INFO] [stdout] test test_local_patch_backup ... ok [INFO] [stdout] test test_uninstall_package_json_safety_modified_preserved ... ok [INFO] [stdout] test test_leak_detection_clean_for_opencode_install ... ok [INFO] [stderr] Doc-tests virke_core [INFO] [stdout] test test_uninstall_dry_run ... ok [INFO] [stdout] test test_uninstall_basic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.56s [INFO] [stdout] [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" "577fdd9e4f1fbd00eb7bd174c787cdf87187d9860b417ac5f2de40af8d1a543f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "577fdd9e4f1fbd00eb7bd174c787cdf87187d9860b417ac5f2de40af8d1a543f", kill_on_drop: false }` [INFO] [stdout] 577fdd9e4f1fbd00eb7bd174c787cdf87187d9860b417ac5f2de40af8d1a543f