[INFO] cloning repository https://github.com/charly-vibes/wai [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/charly-vibes/wai" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcharly-vibes%2Fwai", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcharly-vibes%2Fwai'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0ded3e0a6b84a7cb697ea0ece055cb618307ca55 [INFO] testing charly-vibes/wai against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcharly-vibes%2Fwai" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/charly-vibes/wai [INFO] finished tweaking git repo https://github.com/charly-vibes/wai [INFO] tweaked toml for git repo https://github.com/charly-vibes/wai written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/charly-vibes/wai on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/charly-vibes/wai 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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] fa3829c2016e4bdad4691b3126c01f749de40f73b3a50c7f8d5f3f9d8418c702 [INFO] running `Command { std: "docker" "start" "-a" "fa3829c2016e4bdad4691b3126c01f749de40f73b3a50c7f8d5f3f9d8418c702", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "fa3829c2016e4bdad4691b3126c01f749de40f73b3a50c7f8d5f3f9d8418c702", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fa3829c2016e4bdad4691b3126c01f749de40f73b3a50c7f8d5f3f9d8418c702", kill_on_drop: false }` [INFO] [stdout] fa3829c2016e4bdad4691b3126c01f749de40f73b3a50c7f8d5f3f9d8418c702 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8d64f3fad3dc4b1b41211d5b19d337fcfb707c098366de564ce971c5e53c81ee [INFO] running `Command { std: "docker" "start" "-a" "8d64f3fad3dc4b1b41211d5b19d337fcfb707c098366de564ce971c5e53c81ee", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling writeable v0.6.2 [INFO] [stderr] Compiling litemap v0.8.1 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling cc v1.2.55 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling rustls v0.23.36 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling zmij v1.0.20 [INFO] [stderr] Compiling gimli v0.32.3 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling rustc-demangle v0.1.27 [INFO] [stderr] Compiling ryu v1.0.22 [INFO] [stderr] Compiling owo-colors v4.2.3 [INFO] [stderr] Compiling smawk v0.3.2 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling unicode-linebreak v0.1.5 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling serde_yml v0.0.12 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling is_ci v1.2.0 [INFO] [stderr] Compiling textwrap v0.16.2 [INFO] [stderr] Compiling unit-prefix v0.5.2 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling console v0.16.2 [INFO] [stderr] Compiling console v0.15.11 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling clap_lex v0.7.7 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling terminal_size v0.4.3 [INFO] [stderr] Compiling xattr v1.6.1 [INFO] [stderr] Compiling clap_builder v4.5.56 [INFO] [stderr] Compiling indicatif v0.18.3 [INFO] [stderr] Compiling filetime v0.2.27 [INFO] [stderr] Compiling supports-color v3.0.2 [INFO] [stderr] Compiling libyml v0.0.5 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling supports-unicode v3.0.0 [INFO] [stderr] Compiling supports-hyperlinks v3.2.0 [INFO] [stderr] Compiling wai v2026.3.5 (/opt/rustwide/workdir) [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling addr2line v0.25.1 [INFO] [stderr] Compiling deunicode v1.6.2 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling slug v0.1.6 [INFO] [stderr] Compiling walkdir v2.5.0 [INFO] [stderr] Compiling indicatif v0.17.11 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling tar v0.4.44 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling backtrace v0.3.76 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zeroize_derive v1.4.3 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling miette-derive v7.6.0 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling backtrace-ext v0.2.1 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling cliclack v0.3.8 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling rustls-webpki v0.103.9 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling miette v7.6.0 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling clap v4.5.56 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 40s [INFO] running `Command { std: "docker" "inspect" "8d64f3fad3dc4b1b41211d5b19d337fcfb707c098366de564ce971c5e53c81ee", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8d64f3fad3dc4b1b41211d5b19d337fcfb707c098366de564ce971c5e53c81ee", kill_on_drop: false }` [INFO] [stdout] 8d64f3fad3dc4b1b41211d5b19d337fcfb707c098366de564ce971c5e53c81ee [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f0a25d8f5ef9f787a55d9b1344a98155d2fcc351ec1bd9f1958fd0967254eb60 [INFO] running `Command { std: "docker" "start" "-a" "f0a25d8f5ef9f787a55d9b1344a98155d2fcc351ec1bd9f1958fd0967254eb60", kill_on_drop: false }` [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling sdd v3.0.10 [INFO] [stderr] Compiling assert_cmd v2.1.2 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling serial_test_derive v3.4.0 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling tempfile v3.24.0 [INFO] [stderr] Compiling scc v2.4.0 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling serial_test v3.4.0 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling predicates v3.1.3 [INFO] [stderr] Compiling wai v2026.3.5 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 29.97s [INFO] running `Command { std: "docker" "inspect" "f0a25d8f5ef9f787a55d9b1344a98155d2fcc351ec1bd9f1958fd0967254eb60", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f0a25d8f5ef9f787a55d9b1344a98155d2fcc351ec1bd9f1958fd0967254eb60", kill_on_drop: false }` [INFO] [stdout] f0a25d8f5ef9f787a55d9b1344a98155d2fcc351ec1bd9f1958fd0967254eb60 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 6d5dcbc33164cabd23d4478c0bdb22c4ac09c2bad1be3feacaa828ac3b731c03 [INFO] running `Command { std: "docker" "start" "-a" "6d5dcbc33164cabd23d4478c0bdb22c4ac09c2bad1be3feacaa828ac3b731c03", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.44s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/wai-cce322c62b5715a3) [INFO] [stdout] [INFO] [stdout] running 99 tests [INFO] [stdout] test llm::tests::agent_backend_complete_returns_sentinel ... ok [INFO] [stdout] test llm::tests::agent_output_includes_prompt_between_delimiters ... ok [INFO] [stdout] test llm::tests::alias_sonnet_resolves_to_canonical_id ... ok [INFO] [stdout] test llm::tests::alias_haiku_resolves_to_canonical_id ... ok [INFO] [stdout] test llm::tests::agent_backend_is_available_matches_in_agent_session ... ok [INFO] [stdout] test llm::tests::agent_output_includes_delimiters ... ok [INFO] [stdout] test llm::tests::all_agent_vars_unset_returns_false ... ok [INFO] [stdout] test llm::tests::agent_output_header_precedes_context_block ... ok [INFO] [stdout] test llm::tests::all_agent_vars_empty_returns_false ... ok [INFO] [stdout] test llm::tests::available_client_returns_response ... ok [INFO] [stdout] test llm::tests::claude_client_is_available_when_key_non_empty ... ok [INFO] [stdout] test llm::tests::claude_client_not_available_when_key_empty ... ok [INFO] [stdout] test llm::tests::claude_from_config_returns_none_without_key ... ok [INFO] [stdout] test llm::tests::claude_from_config_uses_api_key_field ... ok [INFO] [stdout] test llm::tests::claude_model_alias_resolved_in_from_config ... ok [INFO] [stdout] test llm::tests::claudecode_empty_string_returns_false ... ok [INFO] [stdout] test llm::tests::claudecode_set_no_api_key_selects_agent ... ok [INFO] [stdout] test llm::tests::claudecode_set_to_one_returns_true ... ok [INFO] [stdout] test llm::tests::claudecode_set_with_api_key_prefers_agent_over_claude_api ... ok [INFO] [stdout] test llm::tests::explicit_agent_config_selects_agent_regardless_of_claudecode ... ok [INFO] [stdout] test llm::tests::explicit_claude_with_key_returns_claude_client ... ok [INFO] [stdout] test llm::tests::explicit_claude_without_key_returns_none ... ok [INFO] [stdout] test llm::tests::haiku_model_cost_is_estimated ... ok [INFO] [stdout] test llm::tests::opus_model_cost_is_estimated ... ok [INFO] [stdout] test llm::tests::llm_error_display_is_human_readable ... ok [INFO] [stdout] test llm::tests::unavailable_client_reports_not_available ... ok [INFO] [stdout] test llm::tests::unknown_model_returns_none ... ok [INFO] [stdout] test llm::tests::wai_agent_set_returns_true ... ok [INFO] [stdout] test llm::tests::unknown_alias_passes_through_unchanged ... ok [INFO] [stdout] test llm::tests::zero_chars_returns_zero_cost ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::reflect_ref_content_contains_wai_search ... ok [INFO] [stdout] test llm::tests::claude_from_config_falls_back_to_env_var ... ok [INFO] [stdout] test managed_block::wai_block_tests::bd_close_line_absent_without_beads ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::reflect_ref_content_contains_resource_path ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_archive_step_absent_without_openspec ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_archive_step_after_tasks_step ... ok [INFO] [stdout] test llm::tests::wai_agent_empty_returns_false ... ok [INFO] [stdout] test managed_block::wai_block_tests::bd_close_line_mentions_epic_with_beads ... ok [INFO] [stdout] test llm::tests::claudecode_unset_returns_false ... ok [INFO] [stdout] test llm::tests::env_var_api_key_enables_claude ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_checklist_step_absent_without_openspec ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_checklist_step_ordering ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_checklist_step_present_when_openspec_detected ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_archive_step_present_when_openspec_detected ... ok [INFO] [stdout] test managed_block::wai_block_tests::pre_claim_note_present_with_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::pre_claim_note_absent_without_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::search_before_research_after_tdd_disclaimer ... ok [INFO] [stdout] test managed_block::wai_block_tests::search_before_research_absent_without_companions ... ok [INFO] [stdout] test managed_block::wai_block_tests::search_before_research_present_with_companions ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_before_when_to_use_what ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_present_with_beads_only ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_absent_without_companion_tools ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_present_with_companion_tools ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_absent_with_only_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_absent_with_only_openspec ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_present_when_both_beads_and_openspec ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_between_capturing_work_and_ending_session ... ok [INFO] [stdout] test managed_block::wai_block_tests::ro5_reminder_present_when_skill_installed ... ok [INFO] [stdout] test managed_block::wai_block_tests::ro5_reminder_absent_without_skill ... ok [INFO] [stdout] test llm::tests::sonnet_model_cost_is_estimated ... ok [INFO] [stdout] test managed_block::reflect_tests::has_reflect_block_false_when_file_missing ... ok [INFO] [stdout] test managed_block::reflect_tests::read_reflect_block_returns_inner_content ... ok [INFO] [stdout] test managed_block::reflect_tests::read_reflect_block_returns_none_when_missing ... ok [INFO] [stdout] test managed_block::reflect_tests::has_reflect_block_true_when_markers_present ... ok [INFO] [stdout] test openspec::tests::parse_tasks_empty_file ... ok [INFO] [stdout] test openspec::tests::parse_tasks_all_checked ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::inject_managed_block_adds_reflect_ref_block ... ok [INFO] [stdout] test managed_block::reflect_tests::has_reflect_block_false_when_no_markers ... ok [INFO] [stdout] test openspec::tests::parse_tasks_missing_file ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::inject_managed_block_reflect_ref_after_wai_end ... ok [INFO] [stdout] test plugin::tests::fetch_memories_none_when_no_beads_dir ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::inject_managed_block_updates_reflect_ref_in_place ... ok [INFO] [stdout] test openspec::tests::parse_tasks_mixed ... ok [INFO] [stdout] test plugin::tests::fetch_memories_none_when_bd_not_on_path ... ok [INFO] [stdout] test openspec::tests::read_status_scans_specs_and_changes ... ok [INFO] [stdout] test openspec::tests::parse_tasks_multi_section ... ok [INFO] [stdout] test llm::tests::no_config_no_env_returns_none ... ok [INFO] [stdout] test suggestions::tests::test_no_typo_suggestion_for_dissimilar ... ok [INFO] [stdout] test suggestions::tests::test_no_wrong_order_for_valid_pattern ... ok [INFO] [stdout] test suggestions::tests::test_typo_detection ... ok [INFO] [stdout] test openspec::tests::read_status_returns_none_without_openspec ... ok [INFO] [stdout] test suggestions::tests::test_wrong_order_detection ... ok [INFO] [stdout] test workflows::tests::implement_phase_active ... ok [INFO] [stdout] test suggestions::tests::test_custom_threshold ... ok [INFO] [stdout] test suggestions::tests::test_suggestion_message_formatting ... ok [INFO] [stdout] test plugin::tests::store_memory_err_when_no_beads_dir ... ok [INFO] [stdout] test workflows::tests::minimal_research_detected ... ok [INFO] [stdout] test workflows::tests::needs_research_in_implement_phase_without_research ... ok [INFO] [stdout] test workflows::tests::no_needs_research_when_research_present_in_implement_phase ... ok [INFO] [stdout] test workflows::tests::ready_to_implement_in_design_phase ... ok [INFO] [stdout] test workflows::tests::ready_to_implement_in_plan_phase ... ok [INFO] [stdout] test workflows::tests::research_phase_with_plenty_of_research_suggests_advance ... ok [INFO] [stdout] test workflows::tests::research_at_two_suggests_advance ... ok [INFO] [stdout] test workflows::tests::research_ready_to_advance_at_threshold ... ok [INFO] [stdout] test plugin::tests::fetch_memories_truncates_to_budget ... ok [INFO] [stdout] test workflows::tests::looks_complete_fires_for_review_phase_with_handoff ... ok [INFO] [stdout] test workflows::tests::needs_research_in_design_phase_without_research ... ok [INFO] [stdout] test llm::tests::cursor_agent_set_returns_true ... ok [INFO] [stdout] test workflows::tests::new_project_detected_when_no_artifacts ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 99 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/wai-9dce3b9b8b7b86dd) [INFO] [stdout] [INFO] [stdout] running 318 tests [INFO] [stdout] test commands::add::tests::bead_and_tags_both_written_when_both_provided ... ok [INFO] [stdout] test commands::add::tests::bead_field_written_to_frontmatter ... ok [INFO] [stdout] test commands::add::tests::no_frontmatter_when_neither_tags_nor_bead ... ok [INFO] [stdout] test cli::tests::derived_list_excludes_external_catchall ... ok [INFO] [stdout] test commands::pipeline::tests::load_pipeline_toml_rejects_whitespace_only_prompt ... ok [INFO] [stdout] test commands::pipeline::tests::render_prompt_multiple_occurrences ... ok [INFO] [stdout] test cli::tests::derived_patterns_contains_known_pairs ... ok [INFO] [stdout] test commands::pipeline::tests::load_pipeline_toml_rejects_empty_prompt ... ok [INFO] [stdout] test commands::pipeline::tests::render_prompt_no_placeholder_no_panic ... ok [INFO] [stdout] test commands::pipeline::tests::load_pipeline_toml_rejects_duplicate_ids ... ok [INFO] [stdout] test commands::pipeline::tests::render_prompt_substitutes_topic ... ok [INFO] [stdout] test commands::reflect::tests::build_reflect_prompt_contains_output_instructions ... ok [INFO] [stdout] test commands::reflect::tests::build_reflect_prompt_contains_role ... ok [INFO] [stdout] test commands::reflect::tests::build_reflect_prompt_escapes_triple_backticks_in_artifacts ... ok [INFO] [stdout] test commands::reflect::tests::build_reflect_prompt_includes_conversation_when_provided ... ok [INFO] [stdout] test commands::reflect::tests::build_reflect_prompt_includes_handoffs ... ok [INFO] [stdout] test commands::reflect::tests::build_reflect_prompt_includes_existing_blocks ... ok [INFO] [stdout] test commands::reflect::tests::build_reflect_prompt_includes_memories_when_provided ... ok [INFO] [stdout] test commands::reflect::tests::compute_diff_marks_new_lines_as_added ... ok [INFO] [stdout] test commands::reflect::tests::compute_diff_returns_additions_when_no_old ... ok [INFO] [stdout] test commands::reflect::tests::compute_diff_returns_none_when_identical ... ok [INFO] [stdout] test commands::reflect::tests::compute_diff_marks_removed_lines_as_removed ... ok [INFO] [stdout] test cli::tests::derived_list_contains_all_known_commands ... ok [INFO] [stdout] test commands::reflect::tests::compute_diff_preserves_context_lines ... ok [INFO] [stdout] test commands::pipeline::tests::load_pipeline_toml_no_description ... ok [INFO] [stdout] test commands::reflect::tests::compute_diff_returns_none_when_only_whitespace_differs ... ok [INFO] [stdout] test commands::reflect::tests::detect_output_targets_errors_when_neither_file_exists ... ok [INFO] [stdout] test commands::reflect::tests::extract_reflect_content_strips_markdown_fences ... ok [INFO] [stdout] test commands::reflect::tests::count_handoffs_since_counts_all_when_no_date ... ok [INFO] [stdout] test commands::reflect::tests::count_handoffs_since_excludes_old_files_by_date ... ok [INFO] [stdout] test commands::reflect::tests::detect_output_targets_selects_both_when_both_exist ... ok [INFO] [stdout] test commands::reflect::tests::extract_top_level_bullets_returns_top_level_only ... ok [INFO] [stdout] test commands::reflect::tests::extract_reflect_content_from_markers ... ok [INFO] [stdout] test commands::reflect::tests::extract_reflect_content_passthrough_for_plain_text ... ok [INFO] [stdout] test commands::reflect::tests::extract_top_level_bullets_truncates_at_60_chars ... ok [INFO] [stdout] test commands::reflect::tests::extract_reflect_content_prefers_markers_over_fences ... ok [INFO] [stdout] test commands::reflect::tests::count_handoffs_since_returns_zero_when_dir_missing ... ok [INFO] [stdout] test commands::reflect::tests::extract_reflect_content_strips_fenced_with_language ... ok [INFO] [stdout] test commands::reflect::tests::count_handoffs_since_skips_non_md_files ... ok [INFO] [stdout] test commands::reflect::tests::detect_output_targets_errors_on_unknown_value ... ok [INFO] [stdout] test commands::reflect::tests::detect_output_targets_respects_explicit_claude ... ok [INFO] [stdout] test commands::reflect::tests::detect_output_targets_auto_selects_existing_file ... ok [INFO] [stdout] test commands::reflect::tests::gather_reflect_context_handoff_count_matches_loaded_entries ... ok [INFO] [stdout] test commands::reflect::tests::parse_date_to_system_time_known_date ... ok [INFO] [stdout] test commands::reflect::tests::parse_date_to_system_time_returns_none_for_bad_date ... ok [INFO] [stdout] test commands::reflect::tests::truncate_from_top_returns_full_when_within_budget ... ok [INFO] [stdout] test commands::reflect::tests::read_conversation_truncates_large_file ... ok [INFO] [stdout] test commands::reflect::tests::read_conversation_reads_file_within_budget ... ok [INFO] [stdout] test commands::reflect::tests::read_handoffs_returns_empty_when_no_wai_dir ... ok [INFO] [stdout] test commands::reflect::tests::write_reflect_meta_creates_valid_toml_file ... ok [INFO] [stdout] test commands::reflect::tests::read_reflect_meta_returns_none_when_file_missing ... ok [INFO] [stdout] test commands::reflect::tests::read_handoffs_respects_budget ... ok [INFO] [stdout] test commands::reflect::tests::read_secondary_artifacts_collects_research_design_plan ... ok [INFO] [stdout] test commands::resource::tests::test_archive_path_depth_too_deep ... ok [INFO] [stdout] test commands::reflect::tests::write_then_read_reflect_meta_round_trips ... ok [INFO] [stdout] test commands::reflect::tests::write_reflect_resource_creates_file_with_front_matter ... ok [INFO] [stdout] test commands::resource::tests::test_archive_path_absolute ... ok [INFO] [stdout] test commands::reflect::tests::read_secondary_artifacts_skips_handoffs ... ok [INFO] [stdout] test commands::reflect::tests::write_reflect_meta_overwrites_existing ... ok [INFO] [stdout] test commands::reflect::tests::read_secondary_artifacts_respects_budget ... ok [INFO] [stdout] test commands::resource::tests::test_archive_path_traversal_rejected ... ok [INFO] [stdout] test commands::resource::tests::test_consecutive_hyphens ... ok [INFO] [stdout] test commands::resource::tests::test_archive_path_must_end_with_skill_md ... ok [INFO] [stdout] test commands::reflect::tests::write_reflect_resource_filename_contains_slug_and_date ... ok [INFO] [stdout] test commands::resource::tests::test_global_skill_visible_when_no_local ... ok [INFO] [stdout] test commands::resource::tests::test_hierarchical_invalid ... ok [INFO] [stdout] test commands::resource::tests::test_install_global_copies_skill ... ok [INFO] [stdout] test commands::resource::tests::test_kebab_to_title_case ... ok [INFO] [stdout] test commands::resource::tests::test_invalid_characters ... ok [INFO] [stdout] test commands::resource::tests::test_leading_hyphen ... ok [INFO] [stdout] test commands::reflect::tests::gather_reflect_context_handoff_count_zero_when_no_handoffs ... ok [INFO] [stdout] test commands::reflect::tests::write_reflect_resource_updates_existing_in_place ... ok [INFO] [stdout] test commands::resource::tests::test_install_from_repo_copies_skill ... ok [INFO] [stdout] test commands::reflect::tests::write_reflect_resource_creates_dir_if_missing ... ok [INFO] [stdout] test commands::resource::tests::test_local_skill_overrides_global_in_list ... ok [INFO] [stdout] test commands::resource::tests::test_empty_name ... ok [INFO] [stdout] test commands::resource::tests::test_export_import_hierarchical_round_trip ... ok [INFO] [stdout] test commands::reflect::tests::read_handoffs_collects_handoff_files ... ok [INFO] [stdout] test commands::resource::tests::test_export_import_round_trip ... ok [INFO] [stdout] test commands::reflect::tests::integration_test_migration_path ... ok [INFO] [stdout] test commands::resource::tests::test_import_yes_overwrites_existing_skill ... ok [INFO] [stdout] test commands::resource::tests::test_max_length ... ok [INFO] [stdout] test commands::resource::tests::test_parse_empty_frontmatter ... ok [INFO] [stdout] test commands::resource::tests::test_parse_empty_description ... ok [INFO] [stdout] test commands::resource::tests::test_parse_missing_closing_delimiter ... ok [INFO] [stdout] test commands::resource::tests::test_parse_malformed_yaml ... ok [INFO] [stdout] test commands::resource::tests::test_parse_empty_name ... ok [INFO] [stdout] test commands::resource::tests::test_parse_nonexistent_file ... ok [INFO] [stdout] test commands::resource::tests::test_parse_missing_description_field ... ok [INFO] [stdout] test commands::resource::tests::test_parse_missing_opening_delimiter ... ok [INFO] [stdout] test commands::resource::tests::test_parse_whitespace_only_fields ... ok [INFO] [stdout] test commands::resource::tests::test_parse_no_frontmatter ... ok [INFO] [stdout] test commands::resource::tests::test_special_names ... ok [INFO] [stdout] test commands::resource::tests::test_trailing_hyphen ... ok [INFO] [stdout] test commands::resource::tests::test_starts_with_dot ... ok [INFO] [stdout] test commands::resource::tests::test_valid_archive_paths ... ok [INFO] [stdout] test commands::search::tests::date_prefix_extracts_correctly ... ok [INFO] [stdout] test commands::search::tests::highlight_match_multibyte_no_panic ... ok [INFO] [stdout] test commands::resource::tests::test_valid_skill_names ... ok [INFO] [stdout] test commands::search::tests::parse_inline_tags ... ok [INFO] [stdout] test commands::search::tests::parse_tags_no_frontmatter ... ok [INFO] [stdout] test commands::search::tests::parse_tags_malformed_frontmatter ... ok [INFO] [stdout] test commands::resource::tests::test_parse_valid_frontmatter ... ok [INFO] [stdout] test commands::resource::tests::test_parse_missing_name_field ... ok [INFO] [stdout] test commands::way::tests::no_prek_toml_does_not_fire_prek_branch ... ok [INFO] [stdout] test commands::way::tests::shell_linting_ignores_scripts_dir_without_sh_files ... ok [INFO] [stdout] test commands::why::tests::artifact_kinds_are_detected_correctly ... ok [INFO] [stdout] test commands::way::tests::shell_linting_passes_when_no_shell_content ... ok [INFO] [stdout] test commands::why::tests::badge_detection_case_insensitive ... ok [INFO] [stdout] test commands::why::tests::badge_markdown_detected_in_content ... ok [INFO] [stdout] test commands::why::tests::build_prompt_includes_memories_when_provided ... ok [INFO] [stdout] test commands::why::tests::claude_backend_is_external ... ok [INFO] [stdout] test commands::way::tests::shell_linting_detects_root_sh_files ... ok [INFO] [stdout] test commands::way::tests::shell_linting_detects_scripts_dir_with_sh_files ... ok [INFO] [stdout] test commands::why::tests::content_without_wai_badge_returns_false ... ok [INFO] [stdout] test commands::why::tests::dotslash_prefix_is_file_query ... ok [INFO] [stdout] test commands::why::tests::empty_artifacts_returns_empty_not_truncated ... ok [INFO] [stdout] test commands::way::tests::prek_toml_with_no_hooks_suggests_install ... ok [INFO] [stdout] test commands::why::tests::agent_backend_is_external ... ok [INFO] [stdout] test commands::way::tests::prek_toml_with_lefthook_shim_reports_lefthook_as_owner ... ok [INFO] [stdout] test commands::why::tests::extract_relevance_case_insensitive ... ok [INFO] [stdout] test commands::way::tests::prek_toml_with_prek_in_prepush_passes ... ok [INFO] [stdout] test commands::why::tests::extract_relevance_parses_low ... ok [INFO] [stdout] test commands::why::tests::extract_relevance_parses_bracketed_medium ... ok [INFO] [stdout] test commands::why::tests::extract_relevance_parses_parenthesised_high ... ok [INFO] [stdout] test commands::why::tests::extract_relevance_returns_none_when_absent ... ok [INFO] [stdout] test commands::why::tests::fallback_mode_default_is_search ... ok [INFO] [stdout] test commands::why::tests::fallback_mode_explicit_error ... ok [INFO] [stdout] test commands::why::tests::fallback_mode_explicit_search ... ok [INFO] [stdout] test commands::why::tests::fallback_mode_unknown_value_defaults_to_search ... ok [INFO] [stdout] test commands::why::tests::format_json_contains_required_fields ... ok [INFO] [stdout] test commands::why::tests::format_json_null_relevance_when_none ... ok [INFO] [stdout] test commands::reflect::tests::truncate_from_top_preserves_recent_content ... ok [INFO] [stdout] test commands::why::tests::gathered_context_is_empty_when_no_artifacts ... ok [INFO] [stdout] test commands::why::tests::gathered_context_not_empty_with_artifacts ... ok [INFO] [stdout] test commands::why::tests::llm_error_hint_invalid_api_key_mentions_api_key ... ok [INFO] [stdout] test commands::why::tests::llm_error_hint_model_not_found_includes_pull_command ... ok [INFO] [stdout] test commands::why::tests::llm_error_hint_network_error_preserves_inner_message ... ok [INFO] [stdout] test commands::why::tests::llm_error_hint_other_returns_message_and_no_hint ... ok [INFO] [stdout] test commands::why::tests::llm_error_hint_rate_limit_mentions_wait_and_ollama ... ok [INFO] [stdout] test commands::way::tests::bd_hook_that_chains_prek_passes ... ok [INFO] [stdout] test commands::way::tests::prek_toml_with_bd_shim_reports_bd_as_owner ... ok [INFO] [stdout] test commands::why::tests::auto_detect_backend_in_claude_code_no_hint ... ok [INFO] [stdout] test commands::why::tests::ollama_backend_is_not_external ... ok [INFO] [stdout] test commands::why::tests::existing_file_on_disk_is_file_query ... ok [INFO] [stdout] test commands::why::tests::empty_wai_dir_returns_no_artifacts ... ok [INFO] [stdout] test commands::why::tests::natural_language_question_is_not_file_query ... ok [INFO] [stdout] test commands::reflect::tests::detect_output_targets_respects_explicit_both ... ok [INFO] [stdout] test commands::why::tests::mark_privacy_notice_shown_no_panic_without_config ... ok [INFO] [stdout] test commands::way::tests::prek_toml_with_prek_in_precommit_passes ... ok [INFO] [stdout] test commands::why::tests::parse_artifact_refs_empty_text_returns_empty ... ok [INFO] [stdout] test commands::why::tests::parse_malformed_response_uses_raw_as_answer ... ok [INFO] [stdout] test commands::why::tests::parse_suggestions_skips_blank_lines ... ok [INFO] [stdout] test commands::pipeline::tests::load_pipeline_toml_valid ... ok [INFO] [stdout] test commands::why::tests::parse_artifact_refs_extracts_bare_path ... ok [INFO] [stdout] test commands::why::tests::parse_suggestions_strips_numbering ... ok [INFO] [stdout] test commands::why::tests::parse_missing_section_is_empty ... ok [INFO] [stdout] test commands::why::tests::privacy_notice_needed_for_agent_when_not_shown ... ok [INFO] [stdout] test commands::why::tests::privacy_notice_needed_when_not_shown_and_claude ... ok [INFO] [stdout] test commands::why::tests::parse_suggestions_extracts_bullet_points ... ok [INFO] [stdout] test commands::why::tests::explicit_backend_failure_in_claude_code_suggests_agent_mode ... ok [INFO] [stdout] test commands::why::tests::parse_well_formed_response_extracts_all_sections ... ok [INFO] [stdout] test commands::why::tests::parse_artifact_refs_skips_lines_without_paths ... ok [INFO] [stdout] test commands::why::tests::parse_artifact_refs_extracts_backtick_path_and_relevance ... ok [INFO] [stdout] test commands::way::tests::prek_toml_with_core_hooks_path_set_reports_conflict ... ok [INFO] [stdout] test commands::why::tests::gather_context_populates_artifacts_from_tmpdir ... ok [INFO] [stdout] test commands::way::tests::shell_linting_detects_workflows_dir ... ok [INFO] [stdout] test commands::why::tests::over_limit_returns_truncated_flag ... ok [INFO] [stdout] test commands::why::tests::prompt_contains_artifact_content ... ok [INFO] [stdout] test commands::why::tests::prompt_escapes_backtick_fences ... ok [INFO] [stdout] test commands::why::tests::prompt_contains_query ... ok [INFO] [stdout] test commands::why::tests::path_with_slash_and_no_spaces_is_file_query ... ok [INFO] [stdout] test commands::why::tests::prompt_includes_task_format_sections ... ok [INFO] [stdout] test commands::why::tests::privacy_notice_not_needed_when_shown_true ... ok [INFO] [stdout] test commands::why::tests::prompt_includes_truncation_notice_when_truncated ... ok [INFO] [stdout] test commands::why::tests::question_with_slash_but_has_spaces_is_not_file_query ... ok [INFO] [stdout] test commands::why::tests::mark_privacy_notice_shown_updates_config ... ok [INFO] [stdout] test commands::why::tests::privacy_notice_not_needed_for_ollama ... ok [INFO] [stdout] test commands::why::tests::privacy_notice_still_needed_when_shown_false ... ok [INFO] [stdout] test commands::why::tests::prompt_includes_git_context_when_present ... ok [INFO] [stdout] test commands::why::tests::privacy_notice_not_needed_for_agent_when_shown ... ok [INFO] [stdout] test commands::why::tests::full_pipeline_gather_prompt_parse_and_format_json ... ok [INFO] [stdout] test commands::why::tests::relevance_as_str_roundtrips ... ok [INFO] [stdout] test commands::why::tests::relevance_from_str_accepts_med_alias ... ok [INFO] [stdout] test commands::why::tests::split_sections_empty_text_returns_empty_map ... ok [INFO] [stdout] test commands::why::tests::split_sections_handles_multiple_sections ... ok [INFO] [stdout] test commands::why::tests::split_sections_text_without_headers_returns_empty_map ... ok [INFO] [stdout] test commands::why::tests::relevant_artifact_kept_over_irrelevant ... ok [INFO] [stdout] test commands::why::tests::shields_io_url_with_wai_detected ... ok [INFO] [stdout] test commands::why::tests::shields_io_without_wai_not_detected ... ok [INFO] [stdout] test commands::why::tests::explicit_ollama_failure_in_claude_code_suggests_agent_mode ... ok [INFO] [stdout] test commands::why::tests::src_prefix_is_file_query ... ok [INFO] [stdout] test commands::why::tests::readme_has_wai_badge_detects_badge_in_readme ... ok [INFO] [stdout] test commands::why::tests::readme_has_wai_badge_returns_true_when_no_readme ... ok [INFO] [stdout] test commands::why::tests::readme_has_wai_badge_returns_false_when_badge_missing ... ok [INFO] [stdout] test commands::why::tests::under_limit_returns_all_unmodified ... ok [INFO] [stdout] test commands::why::tests::unknown_backend_is_not_external ... ok [INFO] [stdout] test commands::why::tests::verbose_one_returns_timing_only ... ok [INFO] [stdout] test commands::why::tests::verbose_zero_returns_empty ... ok [INFO] [stdout] test commands::why::tests::verbose_two_includes_cost_for_claude_model ... ok [INFO] [stdout] test commands::why::tests::verbose_two_returns_timing_and_token_counts ... ok [INFO] [stdout] test llm::tests::agent_output_header_precedes_context_block ... ok [INFO] [stdout] test llm::tests::agent_backend_complete_returns_sentinel ... ok [INFO] [stdout] test llm::tests::alias_sonnet_resolves_to_canonical_id ... ok [INFO] [stdout] test llm::tests::agent_output_includes_delimiters ... ok [INFO] [stdout] test llm::tests::all_agent_vars_empty_returns_false ... ok [INFO] [stdout] test commands::why::tests::reads_artifacts_from_all_subdirs ... ok [INFO] [stdout] test llm::tests::all_agent_vars_unset_returns_false ... ok [INFO] [stdout] test llm::tests::available_client_returns_response ... ok [INFO] [stdout] test llm::tests::alias_haiku_resolves_to_canonical_id ... ok [INFO] [stdout] test llm::tests::claude_client_not_available_when_key_empty ... ok [INFO] [stdout] test llm::tests::claude_from_config_falls_back_to_env_var ... ok [INFO] [stdout] test llm::tests::claudecode_empty_string_returns_false ... ok [INFO] [stdout] test llm::tests::claude_model_alias_resolved_in_from_config ... ok [INFO] [stdout] test llm::tests::claude_client_is_available_when_key_non_empty ... ok [INFO] [stdout] test llm::tests::claudecode_set_no_api_key_selects_agent ... ok [INFO] [stdout] test llm::tests::claudecode_set_to_one_returns_true ... ok [INFO] [stdout] test llm::tests::env_var_api_key_enables_claude ... ok [INFO] [stdout] test llm::tests::claudecode_unset_returns_false ... ok [INFO] [stdout] test llm::tests::claude_from_config_returns_none_without_key ... ok [INFO] [stdout] test llm::tests::explicit_claude_without_key_returns_none ... ok [INFO] [stdout] test llm::tests::haiku_model_cost_is_estimated ... ok [INFO] [stdout] test llm::tests::claudecode_set_with_api_key_prefers_agent_over_claude_api ... ok [INFO] [stdout] test llm::tests::explicit_agent_config_selects_agent_regardless_of_claudecode ... ok [INFO] [stdout] test llm::tests::explicit_claude_with_key_returns_claude_client ... ok [INFO] [stdout] test llm::tests::llm_error_display_is_human_readable ... ok [INFO] [stdout] test llm::tests::agent_output_includes_prompt_between_delimiters ... ok [INFO] [stdout] test llm::tests::cursor_agent_set_returns_true ... ok [INFO] [stdout] test commands::why::tests::verbose_three_includes_full_prompt ... ok [INFO] [stdout] test llm::tests::claude_from_config_uses_api_key_field ... ok [INFO] [stdout] test llm::tests::opus_model_cost_is_estimated ... ok [INFO] [stdout] test llm::tests::sonnet_model_cost_is_estimated ... ok [INFO] [stdout] test llm::tests::unavailable_client_reports_not_available ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::reflect_ref_content_contains_resource_path ... ok [INFO] [stdout] test llm::tests::unknown_alias_passes_through_unchanged ... ok [INFO] [stdout] test llm::tests::unknown_model_returns_none ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::inject_managed_block_updates_reflect_ref_in_place ... ok [INFO] [stdout] test llm::tests::wai_agent_empty_returns_false ... ok [INFO] [stdout] test llm::tests::agent_backend_is_available_matches_in_agent_session ... ok [INFO] [stdout] test llm::tests::zero_chars_returns_zero_cost ... ok [INFO] [stdout] test commands::why::tests::gather_context_marks_file_query_for_existing_path ... ok [INFO] [stdout] test llm::tests::no_config_no_env_returns_none ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::inject_managed_block_adds_reflect_ref_block ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::reflect_ref_content_contains_wai_search ... ok [INFO] [stdout] test managed_block::reflect_ref_tests::inject_managed_block_reflect_ref_after_wai_end ... ok [INFO] [stdout] test managed_block::reflect_tests::has_reflect_block_false_when_file_missing ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_archive_step_absent_without_openspec ... ok [INFO] [stdout] test managed_block::reflect_tests::read_reflect_block_returns_inner_content ... ok [INFO] [stdout] test managed_block::reflect_tests::read_reflect_block_returns_none_when_missing ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_archive_step_present_when_openspec_detected ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_checklist_step_absent_without_openspec ... ok [INFO] [stdout] test managed_block::reflect_tests::has_reflect_block_false_when_no_markers ... ok [INFO] [stdout] test managed_block::reflect_tests::has_reflect_block_true_when_markers_present ... ok [INFO] [stdout] test managed_block::wai_block_tests::bd_close_line_absent_without_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::bd_close_line_mentions_epic_with_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_checklist_step_ordering ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_checklist_step_present_when_openspec_detected ... ok [INFO] [stdout] test managed_block::wai_block_tests::pre_claim_note_absent_without_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::pre_claim_note_present_with_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::ro5_reminder_absent_without_skill ... ok [INFO] [stdout] test managed_block::wai_block_tests::search_before_research_absent_without_companions ... ok [INFO] [stdout] test managed_block::wai_block_tests::ro5_reminder_present_when_skill_installed ... ok [INFO] [stdout] test managed_block::wai_block_tests::search_before_research_after_tdd_disclaimer ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_present_with_beads_only ... ok [INFO] [stdout] test managed_block::wai_block_tests::openspec_archive_step_after_tasks_step ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_before_when_to_use_what ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_absent_with_only_beads ... ok [INFO] [stdout] test managed_block::wai_block_tests::search_before_research_present_with_companions ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_between_capturing_work_and_ending_session ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_present_when_both_beads_and_openspec ... ok [INFO] [stdout] test openspec::tests::parse_tasks_mixed ... ok [INFO] [stdout] test managed_block::wai_block_tests::tracking_section_absent_with_only_openspec ... ok [INFO] [stdout] test openspec::tests::parse_tasks_all_checked ... ok [INFO] [stdout] test openspec::tests::parse_tasks_multi_section ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_absent_without_companion_tools ... ok [INFO] [stdout] test openspec::tests::read_status_returns_none_without_openspec ... ok [INFO] [stdout] test openspec::tests::parse_tasks_empty_file ... ok [INFO] [stdout] test plugin::tests::fetch_memories_none_when_no_beads_dir ... ok [INFO] [stdout] test openspec::tests::read_status_scans_specs_and_changes ... ok [INFO] [stdout] test openspec::tests::parse_tasks_missing_file ... ok [INFO] [stdout] test managed_block::wai_block_tests::tdd_disclaimer_present_with_companion_tools ... ok [INFO] [stdout] test plugin::tests::fetch_memories_none_when_bd_not_on_path ... ok [INFO] [stdout] test plugin::tests::store_memory_err_when_no_beads_dir ... ok [INFO] [stdout] test suggestions::tests::test_no_typo_suggestion_for_dissimilar ... ok [INFO] [stdout] test suggestions::tests::test_no_wrong_order_for_valid_pattern ... ok [INFO] [stdout] test suggestions::tests::test_suggestion_message_formatting ... ok [INFO] [stdout] test suggestions::tests::test_typo_detection ... ok [INFO] [stdout] test suggestions::tests::test_wrong_order_detection ... ok [INFO] [stdout] test sync_core::tests::check_unmanaged_dir_empty_is_safe ... ok [INFO] [stdout] test sync_core::tests::check_unmanaged_dir_non_empty_non_interactive_fails ... ok [INFO] [stdout] test plugin::tests::fetch_memories_truncates_to_budget ... ok [INFO] [stdout] test sync_core::tests::claude_code_skips_flat_skills ... ok [INFO] [stdout] test sync_core::tests::symlink_file_to_file ... ok [INFO] [stdout] test sync_core::tests::symlink_directory_to_directory ... ok [INFO] [stderr] • No hierarchical skills found to sync [INFO] [stderr] | [INFO] [stderr] • Symlinked → out/notes.md [INFO] [stderr] | [INFO] [stderr] • Symlinked → out/skills [INFO] [stderr] | [INFO] [stderr] • Copied → out/notes.md [INFO] [stderr] | [INFO] [stderr] • Inlined → deep/path/out.md [INFO] [stderr] | [INFO] [stderr] • Copied → out/rules [INFO] [stderr] | [INFO] [stderr] • Copied → a/b/c/x.md [INFO] [stderr] | [INFO] [stderr] • claude-code → .claude/commands/deep/nested.md [INFO] [stderr] | [INFO] [stderr] * Synced 1 skill to .claude/commands/ [INFO] [stderr] | [INFO] [stderr] • Symlinked → deep/nested/dir/f.md [INFO] [stderr] | [INFO] [stdout] test sync_core::tests::copy_file_to_file ... ok [INFO] [stdout] test sync_core::tests::inline_creates_missing_parent ... ok [INFO] [stdout] test sync_core::tests::copy_directory_to_directory ... ok [INFO] [stdout] test sync_core::tests::translate_skill_name_basic ... ok [INFO] [stdout] test sync_core::tests::copy_creates_missing_parent ... ok [INFO] [stdout] test workflows::tests::implement_phase_active ... ok [INFO] [stdout] test sync_core::tests::claude_code_creates_parent_dirs ... ok [INFO] [stdout] test workflows::tests::looks_complete_fires_for_review_phase_with_handoff ... ok [INFO] [stdout] test workflows::tests::needs_research_in_implement_phase_without_research ... ok [INFO] [stdout] test workflows::tests::new_project_detected_when_no_artifacts ... ok [INFO] [stdout] test sync_core::tests::symlink_creates_missing_parent ... ok [INFO] [stdout] test workflows::tests::minimal_research_detected ... ok [INFO] [stdout] test workflows::tests::needs_research_in_design_phase_without_research ... ok [INFO] [stdout] test workflows::tests::ready_to_implement_in_design_phase ... ok [INFO] [stdout] test workflows::tests::ready_to_implement_in_plan_phase ... ok [INFO] [stdout] test workflows::tests::research_at_two_suggests_advance ... ok [INFO] [stdout] test workflows::tests::research_phase_with_plenty_of_research_suggests_advance ... ok [INFO] [stdout] test workflows::tests::no_needs_research_when_research_present_in_implement_phase ... ok [INFO] [stdout] test llm::tests::wai_agent_set_returns_true ... ok [INFO] [stdout] test sync_core::tests::check_unmanaged_dir_wai_marker_is_safe ... ok [INFO] [stdout] test suggestions::tests::test_custom_threshold ... ok [INFO] [stderr] • claude-code → .claude/commands/issue/gather.md [INFO] [stderr] | [INFO] [stderr] * Synced 1 skill to .claude/commands/ [INFO] [stderr] | [INFO] [stdout] test workflows::tests::research_ready_to_advance_at_threshold ... ok [INFO] [stdout] test sync_core::tests::claude_code_generates_command_file ... ok [INFO] [stderr] • Symlinked → f.md [INFO] [stdout] test sync_core::tests::symlink_overwrites_pre_existing_target ... ok [INFO] [stderr] | [INFO] [stdout] [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-8cfd0184c744b654) [INFO] [stdout] test result: ok. 318 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 278 tests [INFO] [stdout] test add_skill_creates_directory_and_skill_md ... ok [INFO] [stdout] test add_plan_with_tags_includes_frontmatter ... ok [INFO] [stdout] test add_research_no_input_fails_when_multiple_projects ... ok [INFO] [stdout] test add_skill_with_template_creates_templated_file ... ok [INFO] [stdout] test add_research_shows_context_aware_suggestions ... ok [INFO] [stdout] test add_research_explicit_project_works_with_multiple ... ok [INFO] [stdout] test close_single_project_creates_handoff ... ok [INFO] [stdout] test add_research_creates_dated_file ... ok [INFO] [stdout] test close_repeated_same_day_updates_existing ... ok [INFO] [stdout] test add_design_with_tags_includes_frontmatter ... ok [INFO] [stdout] test add_research_single_project_still_works_without_flag ... ok [INFO] [stdout] test close_writes_pending_resume_signal ... ok [INFO] [stdout] test command_help_verbose_shows_all_sections ... ok [INFO] [stdout] test commands_fail_without_init ... ok [INFO] [stdout] test add_research_with_tags_includes_frontmatter ... ok [INFO] [stdout] test close_overwrites_pending_resume_on_second_call ... ok [INFO] [stdout] test completely_unknown_command_shows_help_hint ... ok [INFO] [stdout] test close_nudge_does_not_fire_for_fewer_than_five_handoffs ... ok [INFO] [stdout] test doctor_fix_no_fixable_issues ... ok [INFO] [stdout] test close_zero_projects_shows_diagnostic ... ok [INFO] [stdout] test add_research_shows_phase_appropriate_suggestions ... ok [INFO] [stdout] test command_help_shows_examples_first ... ok [INFO] [stdout] test add_research_in_non_research_phase_shows_suggestions ... ok [INFO] [stdout] test doctor_fix_blocked_by_safe_mode ... ok [INFO] [stdout] test doctor_fix_repairs_agents_md_block ... ok [INFO] [stdout] test doctor_fix_skips_corrupted_state ... ok [INFO] [stdout] test doctor_healthy_workspace_all_pass ... ok [INFO] [stdout] test close_unknown_project_shows_diagnostic ... ok [INFO] [stdout] test doctor_missing_plugin_tool_warns ... ok [INFO] [stdout] test error_not_initialized_is_conversational ... ok [INFO] [stdout] test doctor_detects_stale_inline_projection ... ok [INFO] [stdout] test first_run_creates_default_user_config ... ok [INFO] [stdout] test doctor_detects_stale_symlink_projection ... ok [INFO] [stdout] test help_default_hides_advanced_options ... ok [INFO] [stdout] test first_run_detects_no_user_config ... ok [INFO] [stdout] test help_vv_shows_environment_variables ... ok [INFO] [stdout] test help_v_shows_advanced_options ... ok [INFO] [stdout] test doctor_invalid_state_file_fails ... ok [INFO] [stdout] test help_shows_quick_start_and_commands ... ok [INFO] [stdout] test doctor_uninitialised_directory_errors ... ok [INFO] [stdout] test help_vvv_shows_internals ... ok [INFO] [stdout] test doctor_passes_for_in_sync_inline_projection ... ok [INFO] [stdout] test doctor_fix_skips_confirmation_with_yes ... ok [INFO] [stdout] test doctor_detects_version_mismatch_and_fix_repairs_it ... ok [INFO] [stdout] test error_project_not_found_is_conversational ... ok [INFO] [stdout] test ls_depth_limits_recursion ... ok [INFO] [stdout] test close_with_project_flag_skips_prompt ... ok [INFO] [stdout] test doctor_fix_repairs_missing_directories ... ok [INFO] [stdout] test init_json_fresh_includes_wai_way_suggestion ... ok [INFO] [stdout] test doctor_missing_directories_fails_with_fix ... ok [INFO] [stdout] test doctor_invalid_config_toml_fails ... ok [INFO] [stdout] test init_creates_para_structure ... ok [INFO] [stdout] test doctor_warns_on_missing_projection_source_directory ... ok [INFO] [stdout] test doctor_detects_missing_agent_config_subdirs_and_fix_creates_them ... ok [INFO] [stdout] test ls_invalid_root_fails_with_diagnostic ... ok [INFO] [stdout] test init_json_reinit_includes_wai_way_suggestion ... ok [INFO] [stdout] test no_args_shows_welcome ... ok [INFO] [stdout] test new_project_creates_structure_with_state ... ok [INFO] [stdout] test move_nonexistent_fails ... ok [INFO] [stdout] test new_resource_creates_directory ... ok [INFO] [stdout] test new_project_fails_if_exists ... ok [INFO] [stdout] test new_area_creates_directory ... ok [INFO] [stdout] test ls_beads_present_but_unavailable_is_graceful ... ok [INFO] [stdout] test phase_next_advances_phase ... ok [INFO] [stdout] test phase_back_goes_to_previous ... ok [INFO] [stdout] test move_project_to_archives ... ok [INFO] [stdout] test phase_set_jumps_to_target ... ok [INFO] [stdout] test phase_set_rejects_invalid_phase ... ok [INFO] [stdout] test pipeline_current_errors_when_no_active_run ... ok [INFO] [stdout] test ls_single_workspace_one_project ... ok [INFO] [stdout] test ls_no_workspaces_prints_message ... ok [INFO] [stdout] test init_warns_if_already_initialized ... ok [INFO] [stdout] test phase_back_fails_at_research ... ok [INFO] [stdout] test ls_no_beads_omits_counts_column ... ok [INFO] [stdout] test ls_multiple_workspaces_sorted_by_name ... ok [INFO] [stdout] test pipeline_init_creates_pipelines_dir_if_absent ... ok [INFO] [stdout] test no_args_in_initialized_dir_shows_commands ... ok [INFO] [stdout] test phase_set_shows_phase_specific_suggestions ... ok [INFO] [stdout] test close_nudge_fires_at_five_plus_handoffs ... ok [INFO] [stdout] test new_project_shows_suggestions ... ok [INFO] [stdout] test pipeline_init_creates_toml_file ... ok [INFO] [stdout] test pipeline_init_template_is_valid_toml ... ok [INFO] [stdout] test pipeline_init_rejects_invalid_name ... ok [INFO] [stdout] test pipeline_add_merges_user_tags_and_pipeline_run_tag ... ok [INFO] [stdout] test pipeline_current_reprints_step_prompt ... ok [INFO] [stdout] test pipeline_start_prints_first_step_prompt ... ok [INFO] [stdout] test phase_next_shows_phase_specific_suggestions ... ok [INFO] [stdout] test pipeline_next_advances_to_second_step ... ok [INFO] [stdout] test pipeline_suggest_lists_all_pipelines ... ok [INFO] [stdout] test pipeline_next_errors_when_no_active_run ... ok [INFO] [stdout] test pipeline_current_after_next_shows_step_2 ... ok [INFO] [stdout] test pipeline_suggest_empty_string_treated_as_no_description ... ok [INFO] [stdout] test pipeline_next_errors_when_run_already_complete ... ok [INFO] [stdout] test pipeline_suggest_with_description_ranks_keyword_match_first ... ok [INFO] [stdout] test pipeline_suggest_no_pipelines_prints_hint ... ok [INFO] [stdout] test plugin_disable_persists_to_config ... ok [INFO] [stdout] test pipeline_start_fails_for_unknown_pipeline ... ok [INFO] [stdout] test pipeline_list_empty ... ok [INFO] [stdout] test phase_show_displays_current_phase ... ok [INFO] [stdout] test pipeline_suggest_no_match_still_shows_all_alphabetically ... ok [INFO] [stdout] test plugin_enable_json_outputs_state ... ok [INFO] [stdout] test pipeline_next_on_last_step_shows_completion ... ok [INFO] [stdout] test plugin_list_json_outputs_plugins ... ok [INFO] [stdout] test pipeline_start_writes_last_run_file ... ok [INFO] [stdout] test prime_outside_workspace_fails ... ok [INFO] [stdout] test plugin_enable_persists_to_config ... ok [INFO] [stdout] test plugin_enable_unknown_plugin_fails ... ok [INFO] [stdout] test pipeline_add_auto_tags_with_pipeline_run_env ... ok [INFO] [stdout] test prime_ignores_stale_pending_resume_dated_yesterday ... ok [INFO] [stdout] test prime_multiple_projects_no_input_fails ... ok [INFO] [stdout] test prime_zero_projects_shows_suggestion ... ok [INFO] [stdout] test pipeline_current_on_complete_run_prints_done ... ok [INFO] [stdout] test pipeline_start_creates_run_state ... ok [INFO] [stdout] test prime_renders_normally_without_pending_resume ... ok [INFO] [stdout] test plugin_list_shows_builtin_plugins ... ok [INFO] [stdout] test prime_no_handoff_omits_handoff_line ... ok [INFO] [stdout] test prime_resuming_signal_not_consumed_on_second_call ... ok [INFO] [stdout] test prime_single_project_with_handoff ... ok [INFO] [stdout] test prime_all_headings_handoff_shows_no_summary_yet ... ok [INFO] [stdout] test pipeline_init_fails_if_file_already_exists ... ok [INFO] [stdout] test resource_add_hierarchical_skill_creates_nested_directory ... ok [INFO] [stdout] test prime_resuming_empty_next_steps_shows_only_header ... ok [INFO] [stdout] test reinit_creates_missing_directories_and_updates_version ... ok [INFO] [stdout] test resource_add_hierarchical_skill_conflicts_with_flat_skill ... ok [INFO] [stdout] test prime_shows_resuming_block_when_pending_resume_present_today ... ok [INFO] [stdout] test reflect_dry_run_does_not_modify_claude_md ... ok [INFO] [stdout] test prime_unknown_project_fails_with_available ... ok [INFO] [stdout] test prime_project_flag_selects_correct_project ... ok [INFO] [stdout] test resource_add_skill_fails_on_duplicate ... ok [INFO] [stdout] test resource_add_skill_deprecation_warning_text_format ... ok [INFO] [stdout] test reflect_diff_shown_for_existing_reflect_block ... ok [INFO] [stdout] test resource_add_skill_fails_on_dot_prefix ... ok [INFO] [stdout] test resource_add_skill_fails_on_uppercase_name ... ok [INFO] [stdout] test reflect_with_mock_llm_writes_claude_md_and_reflect_meta ... ok [INFO] [stdout] test resource_add_skill_no_template_still_creates_bare_stub ... ok [INFO] [stdout] test resource_add_skill_creates_directory_and_skill_md ... ok [INFO] [stdout] test reinit_is_idempotent ... ok [INFO] [stdout] test resource_add_skill_deprecated_still_works_and_warns ... ok [INFO] [stdout] test resource_add_skill_fails_on_consecutive_hyphens ... ok [INFO] [stdout] test resource_add_skill_refuses_in_safe_mode ... ok [INFO] [stdout] test prime_close_prime_close_prime_end_to_end_resume_loop ... ok [INFO] [stdout] test resource_list_skills_bad_frontmatter_shows_no_metadata ... ok [INFO] [stdout] test resource_add_skill_fails_on_too_long_name ... ok [INFO] [stdout] test search_invalid_regex_fails ... ok [INFO] [stdout] test resource_list_skills_json_has_skills_key ... ok [INFO] [stdout] test resource_import_skills_from_custom_path ... ok [INFO] [stdout] test resource_list_skills_empty_shows_hint ... ok [INFO] [stdout] test resource_import_skills_from_default_agents_path ... ok [INFO] [stdout] test resource_import_skills_copies_full_directory_tree ... ok [INFO] [stdout] test search_json_outputs_results ... ok [INFO] [stdout] test reflect_repeated_call_updates_existing_resource_file ... ok [INFO] [stdout] test resource_add_skill_template_gather_contains_wai_search ... ok [INFO] [stdout] test search_case_insensitive ... ok [INFO] [stdout] test search_tag_filter_returns_only_tagged_files ... ok [INFO] [stdout] test search_no_results ... ok [INFO] [stdout] test search_latest_returns_only_most_recent_file ... ok [INFO] [stdout] test search_malformed_frontmatter_does_not_abort_tag_search ... ok [INFO] [stdout] test search_with_type_filter ... ok [INFO] [stdout] test resource_list_skills_shows_skill_name ... ok [INFO] [stdout] test resource_list_skills_shows_hierarchical_and_flat ... ok [INFO] [stdout] test resource_add_skill_template_unknown_fails_with_valid_names ... ok [INFO] [stdout] test resource_import_skills_skips_existing_with_warning ... ok [INFO] [stdout] test search_with_project_filter ... ok [INFO] [stdout] test search_with_regex ... ok [INFO] [stdout] test status_hides_completed_openspec_changes_by_default ... ok [INFO] [stdout] test status_json_includes_complete_suggestion ... ok [INFO] [stdout] test status_all_complete_shows_hint_message ... ok [INFO] [stdout] test status_ignores_stale_last_run_pointer ... ok [INFO] [stdout] test status_flags_stale_project ... ok [INFO] [stdout] test status_json_includes_stale_suggestion ... ok [INFO] [stdout] test show_nonexistent_item_fails ... ok [INFO] [stdout] test search_tag_and_type_and_latest_combined ... ok [INFO] [stdout] test search_tag_filter_no_match_returns_no_results ... ok [INFO] [stdout] test search_finds_content_in_artifacts ... ok [INFO] [stdout] test search_with_limit ... ok [INFO] [stdout] test status_does_not_flag_recent_project ... ok [INFO] [stdout] test show_specific_project_lists_contents ... ok [INFO] [stdout] test status_flags_complete_review_project ... ok [INFO] [stdout] test status_shows_available_pipelines_when_no_active_run ... ok [INFO] [stdout] test status_verbose_shows_completed_openspec_changes ... ok [INFO] [stdout] test status_with_openspec_shows_change_counts ... ok [INFO] [stdout] test status_shows_pipeline_active_when_run_exists ... ok [INFO] [stdout] test timeline_empty_project_shows_message ... ok [INFO] [stdout] test status_json_with_openspec_includes_field ... ok [INFO] [stdout] test status_suggests_advance_when_enough_research ... ok [INFO] [stdout] test status_shows_pipeline_suggest_when_pipelines_exist ... ok [INFO] [stdout] test timeline_nonexistent_project_fails ... ok [INFO] [stdout] test status_suggests_research_needed_when_in_implement_phase_without_research ... ok [INFO] [stdout] test timeline_json_outputs_entries ... ok [INFO] [stdout] test status_shows_pipeline_current_suggestion_when_active ... ok [INFO] [stdout] test sync_dry_run_does_not_create_files ... ok [INFO] [stdout] test status_without_openspec_omits_section ... ok [INFO] [stdout] test status_verbose_shows_section_breakdown ... ok [INFO] [stdout] test status_plugin_info_hidden_when_only_completed_openspec_changes ... ok [INFO] [stdout] test timeline_from_to_range ... ok [INFO] [stdout] test show_overview_lists_para_categories ... ok [INFO] [stdout] test way_always_exits_zero_partial_adoption ... ok [INFO] [stdout] test way_always_exits_zero_empty_repo ... ok [INFO] [stdout] test way_check_agent_skills_missing ... ok [INFO] [stdout] test user_config_persists_seen_tutorial_flag ... ok [INFO] [stdout] test typo_suggests_doctor_for_doctr ... ok [INFO] [stdout] test timeline_from_filter ... ok [INFO] [stdout] test status_json_without_openspec_omits_field ... ok [INFO] [stdout] test typo_suggests_closest_command ... ok [INFO] [stdout] test status_shows_project_info ... ok [INFO] [stdout] test timeline_shows_dated_artifacts ... ok [INFO] [stdout] test way_check_agent_skills_missing_suggests_fix_command ... ok [INFO] [stdout] test way_check_agent_skills_present ... ok [INFO] [stdout] test typo_suggestion_shown_outside_workspace ... ok [INFO] [stdout] test way_check_beads_absent ... ok [INFO] [stdout] test way_always_exits_zero_all_passing ... ok [INFO] [stdout] test status_shows_minimal_research_suggestion_for_new_project ... ok [INFO] [stdout] test way_check_ai_instructions_missing ... ok [INFO] [stdout] test way_check_agent_skills_empty_dir ... ok [INFO] [stdout] test way_check_cicd_missing ... ok [INFO] [stdout] test way_check_ai_instructions_no_reflect_suggestion_when_reflections_exist ... ok [INFO] [stdout] test way_check_devcontainer_dir ... ok [INFO] [stdout] test way_check_documentation_complete ... ok [INFO] [stdout] test timeline_to_filter ... ok [INFO] [stdout] test way_check_devcontainer_missing ... ok [INFO] [stdout] test way_check_ai_instructions_agents_md ... ok [INFO] [stdout] test way_check_devcontainer_json ... ok [INFO] [stdout] test timeline_reverse_shows_oldest_first ... ok [INFO] [stdout] test way_check_cicd_github_actions ... ok [INFO] [stdout] test way_check_git_hooks_lefthook_not_installed ... ok [INFO] [stdout] test way_check_documentation_license_md_variant ... ok [INFO] [stdout] test way_check_ai_instructions_claude_md ... ok [INFO] [stdout] test way_check_git_hooks_lefthook_installed ... ok [INFO] [stdout] test way_check_documentation_missing_critical ... ok [INFO] [stdout] test way_check_documentation_not_configured ... ok [INFO] [stdout] test way_check_beads_present ... ok [INFO] [stdout] test way_check_cicd_gitlab ... ok [INFO] [stdout] test way_check_git_hooks_missing ... ok [INFO] [stdout] test way_check_editorconfig_present ... ok [INFO] [stdout] test way_check_git_hooks_prek ... ok [INFO] [stdout] test way_check_git_hooks_precommit_not_installed ... ok [INFO] [stdout] test way_check_git_hooks_precommit ... ok [INFO] [stdout] test way_check_ai_instructions_suggests_reflect_when_no_reflections ... ok [INFO] [stdout] test way_check_openspec_absent ... ok [INFO] [stdout] test way_check_test_coverage_not_configured ... ok [INFO] [stdout] test way_check_llm_txt_present ... ok [INFO] [stdout] test way_check_documentation_partial ... ok [INFO] [stdout] test way_check_git_hooks_prek_not_installed ... ok [INFO] [stdout] test way_check_cicd_circleci ... ok [INFO] [stdout] test way_check_openspec_present ... ok [INFO] [stdout] test way_check_llm_txt_missing ... ok [INFO] [stdout] test way_check_task_runner_makefile ... ok [INFO] [stdout] test way_check_test_coverage_vitest_with_thresholds ... ok [INFO] [stdout] test way_check_task_runner_missing ... ok [INFO] [stdout] test way_check_justfile_recipes ... ok [INFO] [stdout] test way_check_editorconfig_missing ... ok [INFO] [stdout] test way_check_test_coverage_tarpaulin_no_threshold ... ok [INFO] [stdout] test way_check_task_runner_justfile ... ok [INFO] [stdout] test way_complete_repository_minimal_suggestions ... ok [INFO] [stdout] test way_check_test_coverage_tarpaulin_with_threshold ... ok [INFO] [stdout] test way_json_includes_check_fields ... ok [INFO] [stdout] test way_json_exits_zero ... ok [INFO] [stdout] test way_json_output_valid ... ok [INFO] [stdout] test way_json_includes_intent ... ok [INFO] [stdout] test way_complete_repository_all_pass ... ok [INFO] [stdout] test way_works_without_wai_init ... ok [INFO] [stdout] test way_fix_skills_scaffolds_both_skills ... ok [INFO] [stdout] test way_minimal_repository_has_suggestions ... ok [INFO] [stdout] test way_verbose_shows_success_criteria ... ok [INFO] [stdout] test way_minimal_repository_shows_info ... ok [INFO] [stdout] test status_json_outputs_suggestions ... ok [INFO] [stdout] test way_verbose_shows_intent ... ok [INFO] [stdout] test way_plugin_toml_parsed ... ok [INFO] [stdout] test way_fix_skills_prints_description_before_acting ... ok [INFO] [stdout] test why_agent_mode_autodetect_when_claudecode_set ... ok [INFO] [stdout] test wrong_order_research_add_suggests_correction ... ok [INFO] [stdout] test why_fallback_to_search_when_no_agent_no_api_key_no_cli ... ok [INFO] [stdout] test why_no_llm_flag_falls_back_to_search ... ok [INFO] [stdout] test why_auto_fallback_to_search_when_no_llm_available ... ok [INFO] [stdout] test wrong_order_shown_outside_workspace ... ok [INFO] [stdout] test wrong_order_project_new_suggests_correction ... ok [INFO] [stdout] test why_explicit_agent_backend_ignores_claudecode ... ok [INFO] [stdout] test why_file_query_in_non_git_repo_does_not_crash ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 278 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.20s [INFO] [stdout] [INFO] [stderr] Running tests/suggestions_test.rs (/opt/rustwide/target/debug/deps/suggestions_test-16670c08e3d3131d) [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test typo_doctor_doctr ... ok [INFO] [stderr] Running tests/tutorial_test.rs (/opt/rustwide/target/debug/deps/tutorial_test-d486f051ba46548b) [INFO] [stdout] test typo_init_iint ... ok [INFO] [stdout] test context_no_hint_when_wai_not_found ... ok [INFO] [stdout] test context_no_hint_when_wai_in_current_dir ... ok [INFO] [stdout] test typo_message_contains_original_and_suggestion ... ok [INFO] [stdout] test typo_ranking_picks_closest_match ... ok [INFO] [stdout] test typo_search_searh ... ok [INFO] [stdout] test context_hint_when_wai_in_parent ... ok [INFO] [stdout] test wrong_order_no_match_for_unknown_pair ... ok [INFO] [stdout] test typo_no_match_for_gibberish ... ok [INFO] [stdout] test wrong_order_message_format ... ok [INFO] [stdout] test context_hint_when_wai_in_grandparent ... ok [INFO] [stdout] test wrong_order_no_match_for_valid_pattern ... ok [INFO] [stdout] test wrong_order_plan_add ... ok [INFO] [stdout] test wrong_order_project_new ... ok [INFO] [stdout] test wrong_order_research_add ... ok [INFO] [stdout] test typo_status_statu ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Running tests/workflows_test.rs (/opt/rustwide/target/debug/deps/workflows_test-c6ed5a0022a8527f) [INFO] [stdout] running 3 tests [INFO] [stdout] test tests::test_user_config_mark_tutorial_seen ... ok [INFO] [stdout] test tests::test_default_user_config ... ok [INFO] [stdout] test tests::test_user_config_serialization ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 26 tests [INFO] [stdout] test implement_phase_active_always_detected ... ok [INFO] [stdout] test implement_phase_suggestions_include_status_check ... ok [INFO] [stdout] test looks_complete_detected_in_review_with_handoff ... ok [INFO] [stdout] test looks_complete_not_detected_outside_review ... ok [INFO] [stdout] test looks_complete_not_detected_without_handoff ... ok [INFO] [stdout] test looks_complete_suggestions_include_archive_and_advance ... ok [INFO] [stdout] test minimal_research_at_one_artifact ... ok [INFO] [stdout] test needs_research_in_plan_with_no_research ... ok [INFO] [stdout] test new_project_suggests_add_research ... ok [INFO] [stdout] test ready_to_implement_requires_design_artifact ... ok [INFO] [stdout] test research_ready_to_advance_suggests_design_phase ... ok [INFO] [stdout] test research_threshold_triggers_advance_at_three ... ok [INFO] [stdout] test review_phase_produces_no_patterns ... ok [INFO] [stdout] test stale_phase_detected_after_threshold ... ok [INFO] [stdout] test stale_phase_not_detected_for_archive ... ok [INFO] [stdout] test two_research_artifacts_triggers_advance ... ok [INFO] [stdout] test scan_project_returns_none_for_missing_project ... ok [INFO] [stdout] test new_project_at_zero_artifacts_in_research ... ok [INFO] [stdout] test no_needs_research_when_research_present ... ok [INFO] [stdout] test stale_phase_not_detected_within_threshold ... ok [INFO] [stdout] test stale_phase_suggestions_include_archive_and_advance ... ok [INFO] [stdout] test archive_phase_produces_no_patterns ... ok [INFO] [stdout] test scan_project_counts_research_artifacts ... ok [INFO] [stdout] test scan_then_detect_gives_correct_workflow_pattern ... ok [INFO] [stdout] test ready_to_implement_needs_design_artifact ... ok [INFO] [stderr] Doc-tests wai [INFO] [stdout] test scan_project_detects_correct_phase ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [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" "6d5dcbc33164cabd23d4478c0bdb22c4ac09c2bad1be3feacaa828ac3b731c03", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6d5dcbc33164cabd23d4478c0bdb22c4ac09c2bad1be3feacaa828ac3b731c03", kill_on_drop: false }` [INFO] [stdout] 6d5dcbc33164cabd23d4478c0bdb22c4ac09c2bad1be3feacaa828ac3b731c03