[INFO] cloning repository https://github.com/sotayamashita/todox [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sotayamashita/todox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsotayamashita%2Ftodox", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsotayamashita%2Ftodox'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 6984260f6a7e8cfa180ebd154d84340d1b386ce1 [INFO] testing sotayamashita/todox against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsotayamashita%2Ftodox" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/sotayamashita/todox [INFO] finished tweaking git repo https://github.com/sotayamashita/todox [INFO] tweaked toml for git repo https://github.com/sotayamashita/todox written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/sotayamashita/todox 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/sotayamashita/todox 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-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 30f809e0658531d44ba45d4a33d3914ad916ff57b26fbdce32921443a5bff055 [INFO] running `Command { std: "docker" "start" "-a" "30f809e0658531d44ba45d4a33d3914ad916ff57b26fbdce32921443a5bff055", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "30f809e0658531d44ba45d4a33d3914ad916ff57b26fbdce32921443a5bff055", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "30f809e0658531d44ba45d4a33d3914ad916ff57b26fbdce32921443a5bff055", kill_on_drop: false }` [INFO] [stdout] 30f809e0658531d44ba45d4a33d3914ad916ff57b26fbdce32921443a5bff055 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] e374fad6edf69509ffd49779ce1964981a80b70ff7d2e28a47529927584e59c5 [INFO] running `Command { std: "docker" "start" "-a" "e374fad6edf69509ffd49779ce1964981a80b70ff7d2e28a47529927584e59c5", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.181 [INFO] [stderr] Compiling unicode-ident v1.0.23 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling toml_parser v1.0.9+spec-1.1.0 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling notify-types v2.1.0 [INFO] [stderr] Compiling blake3 v1.8.3 [INFO] [stderr] Compiling toml_datetime v1.0.0+spec-1.1.0 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling syn v2.0.115 [INFO] [stderr] Compiling toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling deranged v0.5.7 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling serde_spanned v1.0.4 [INFO] [stderr] Compiling num_threads v0.1.7 [INFO] [stderr] Compiling shell-words v1.1.1 [INFO] [stderr] Compiling constant_time_eq v0.4.2 [INFO] [stderr] Compiling inotify-sys v0.1.5 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling inotify v0.11.0 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling console v0.16.2 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling dyn-clone v1.0.20 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling notify v8.2.0 [INFO] [stderr] Compiling dialoguer v0.12.0 [INFO] [stderr] Compiling ctrlc v3.5.1 [INFO] [stderr] Compiling notify-debouncer-mini v0.7.0 [INFO] [stderr] Compiling dirs v6.0.0 [INFO] [stderr] Compiling toml v1.0.3+spec-1.1.0 [INFO] [stderr] Compiling toml_edit v0.25.3+spec-1.1.0 [INFO] [stderr] Compiling colored v3.1.1 [INFO] [stderr] Compiling serde_derive_internals v0.29.1 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling schemars_derive v1.2.1 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling clap_complete v4.5.66 [INFO] [stderr] Compiling bincode v1.3.3 [INFO] [stderr] Compiling schemars v1.2.1 [INFO] [stderr] Compiling todo-scan v0.1.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 59.67s [INFO] running `Command { std: "docker" "inspect" "e374fad6edf69509ffd49779ce1964981a80b70ff7d2e28a47529927584e59c5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e374fad6edf69509ffd49779ce1964981a80b70ff7d2e28a47529927584e59c5", kill_on_drop: false }` [INFO] [stdout] e374fad6edf69509ffd49779ce1964981a80b70ff7d2e28a47529927584e59c5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] f896f438014264738190903ef5c8db5730ebaa998c0c4039a1c0ed334d14ce84 [INFO] running `Command { std: "docker" "start" "-a" "f896f438014264738190903ef5c8db5730ebaa998c0c4039a1c0ed334d14ce84", kill_on_drop: false }` [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling float-cmp v0.10.0 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling normalize-line-endings v0.3.0 [INFO] [stderr] Compiling assert_cmd v2.1.2 [INFO] [stderr] Compiling difflib v0.4.0 [INFO] [stderr] Compiling wait-timeout v0.2.1 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling bstr v1.12.1 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Compiling globset v0.4.18 [INFO] [stderr] Compiling ignore v0.4.25 [INFO] [stderr] Compiling todo-scan v0.1.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 43.75s [INFO] running `Command { std: "docker" "inspect" "f896f438014264738190903ef5c8db5730ebaa998c0c4039a1c0ed334d14ce84", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f896f438014264738190903ef5c8db5730ebaa998c0c4039a1c0ed334d14ce84", kill_on_drop: false }` [INFO] [stdout] f896f438014264738190903ef5c8db5730ebaa998c0c4039a1c0ed334d14ce84 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] f7beeb12a5d2058d5c494b5c78683fa295a32981a81585ce91d99575ae4a8f94 [INFO] running `Command { std: "docker" "start" "-a" "f7beeb12a5d2058d5c494b5c78683fa295a32981a81585ce91d99575ae4a8f94", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/todo_scan-7ebcb452783c6d88) [INFO] [stdout] [INFO] [stdout] running 833 tests [INFO] [stdout] test blame::tests::test_compute_age_days_future_timestamp ... ok [INFO] [stdout] test blame::tests::test_parse_duration_days_with_suffix ... ok [INFO] [stdout] test blame::tests::test_parse_duration_days_invalid ... ok [INFO] [stdout] test blame::tests::test_parse_duration_days_bare_number ... ok [INFO] [stdout] test blame::tests::test_parse_porcelain_blame_multiple_lines ... ok [INFO] [stdout] test blame::tests::test_parse_porcelain_blame_non_parseable_line_number ... ok [INFO] [stdout] test blame::tests::test_parse_porcelain_blame_empty ... ok [INFO] [stdout] test blame::tests::test_parse_porcelain_blame_short_header ... ok [INFO] [stdout] test blame::tests::test_parse_porcelain_blame_single_line ... ok [INFO] [stdout] test blame::tests::test_timestamp_to_date_string_epoch ... ok [INFO] [stdout] test blame::tests::test_parse_porcelain_blame_uncommitted ... ok [INFO] [stdout] test brief::tests::test_all_priorities_with_no_diff ... ok [INFO] [stdout] test blame::tests::test_parse_porcelain_blame_unparseable_author_time ... ok [INFO] [stdout] test blame::tests::test_timestamp_to_date_string ... ok [INFO] [stdout] test brief::tests::test_basic_counts ... ok [INFO] [stdout] test brief::tests::test_empty_scan ... ok [INFO] [stdout] test brief::tests::test_single_file_counts_as_one ... ok [INFO] [stdout] test brief::tests::test_top_urgent_none_when_all_normal ... ok [INFO] [stdout] test brief::tests::test_top_urgent_prefers_urgent_over_high ... ok [INFO] [stdout] test brief::tests::test_top_urgent_selected ... ok [INFO] [stdout] test brief::tests::test_top_urgent_tiebreak_by_tag_severity ... ok [INFO] [stdout] test brief::tests::test_trend_from_diff ... ok [INFO] [stdout] test cache::tests::test_config_hash_changes_with_exclude_dirs ... ok [INFO] [stdout] test cache::tests::test_config_hash_changes_with_exclude_patterns ... ok [INFO] [stdout] test blame::tests::test_compute_age_days ... ok [INFO] [stdout] test cache::tests::test_config_hash_changes_with_tags ... ok [INFO] [stdout] test cache::tests::test_deserialize_with_limit_accepts_valid_data ... ok [INFO] [stdout] test cache::tests::test_deserialize_with_limit_rejects_oversized_data ... ok [INFO] [stdout] test cache::tests::test_mtime_miss_returns_none ... ok [INFO] [stdout] test cache::tests::test_mtime_hit_returns_cached_items ... ok [INFO] [stdout] test cache::tests::test_prune_removes_deleted_files ... ok [INFO] [stdout] test cache::tests::test_config_hash_deterministic ... ok [INFO] [stdout] test cache::tests::test_content_hash_hit_returns_cached_items ... ok [INFO] [stdout] test cache::tests::test_content_hash_miss_returns_none ... ok [INFO] [stdout] test check::tests::test_block_tags_case_insensitive ... ok [INFO] [stdout] test check::tests::test_block_tags_detection ... ok [INFO] [stdout] test check::tests::test_config_block_tags_merged_with_overrides ... ok [INFO] [stdout] test check::tests::test_config_expired_from_config ... ok [INFO] [stdout] test check::tests::test_config_max_new_used_when_override_is_none ... ok [INFO] [stdout] test check::tests::test_config_max_used_when_override_is_none ... ok [INFO] [stdout] test check::tests::test_deadline_on_exact_today_not_expired ... ok [INFO] [stdout] test check::tests::test_empty_scan_always_passes ... ok [INFO] [stdout] test check::tests::test_expired_flag_not_set_ignores_deadline ... ok [INFO] [stdout] test check::tests::test_expired_deadline_detected ... ok [INFO] [stdout] test check::tests::test_fail_when_over_max ... ok [INFO] [stdout] test cache::tests::test_load_missing_file_returns_none ... ok [INFO] [stdout] test cache::tests::test_load_corrupt_file_returns_none ... ok [INFO] [stdout] test cache::tests::test_save_load_roundtrip ... ok [INFO] [stdout] test cache::tests::test_save_load_roundtrip_with_deadline ... ok [INFO] [stdout] test check::tests::test_item_without_deadline_passes_expired_check ... ok [INFO] [stdout] test check::tests::test_max_new_passes_when_under_limit ... ok [INFO] [stdout] test check::tests::test_pass_when_under_max ... ok [INFO] [stdout] test clean::tests::test_config_disables_duplicates ... ok [INFO] [stdout] test clean::tests::test_different_messages_no_duplicate ... ok [INFO] [stdout] test clean::tests::test_duplicate_case_insensitive ... ok [INFO] [stdout] test clean::tests::test_duplicate_whitespace_normalization ... ok [INFO] [stdout] test check::tests::test_max_new_with_diff ... ok [INFO] [stdout] test check::tests::test_max_new_without_diff_passes ... ok [INFO] [stdout] test check::tests::test_future_deadline_passes ... ok [INFO] [stdout] test check::tests::test_multiple_violations_combined ... ok [INFO] [stdout] test check::tests::test_pass_with_no_violations ... ok [INFO] [stdout] test clean::tests::test_duplicate_exact_match ... ok [INFO] [stdout] test clean::tests::test_config_disables_stale ... ok [INFO] [stdout] test clean::tests::test_extract_issue_number_empty ... ok [INFO] [stdout] test clean::tests::test_extract_issue_number ... ok [INFO] [stdout] test clean::tests::test_issue_checker_error_skips_issue ... ok [INFO] [stdout] test clean::tests::test_multiple_items_same_issue_number ... ok [INFO] [stdout] test clean::tests::test_mixed_stale_and_duplicate_violations ... ok [INFO] [stdout] test clean::tests::test_extract_issue_number_hash_only ... ok [INFO] [stdout] test clean::tests::test_empty_messages_not_duplicated ... ok [INFO] [stdout] test clean::tests::test_extract_issue_number_with_leading_whitespace ... ok [INFO] [stdout] test clean::tests::test_normalize_message_only_whitespace ... ok [INFO] [stdout] test clean::tests::test_open_issue_not_flagged ... ok [INFO] [stdout] test clean::tests::test_normalize_message ... ok [INFO] [stdout] test clean::tests::test_normalize_message_empty ... ok [INFO] [stdout] test clean::tests::test_jira_refs_not_checked ... ok [INFO] [stdout] test clean::tests::test_no_issue_checker_skips_stale ... ok [INFO] [stdout] test clean::tests::test_passed_when_no_violations ... ok [INFO] [stdout] test clean::tests::test_run_clean_cli_since_overrides_config ... ok [INFO] [stdout] test clean::tests::test_since_filter_flags_closed_with_no_timestamp ... ok [INFO] [stdout] test clean::tests::test_since_filter_flags_old_closed ... ok [INFO] [stdout] test clean::tests::test_run_clean_since_from_config ... ok [INFO] [stdout] test clean::tests::test_since_filter_future_closed_at_yields_zero_age ... ok [INFO] [stdout] test clean::tests::test_since_filter_skips_recently_closed ... ok [INFO] [stdout] test clean::tests::test_stale_closed_issue_detected ... ok [INFO] [stdout] test clean::tests::test_violations_sorted_by_file_then_line ... ok [INFO] [stdout] test clean::tests::test_three_duplicates_creates_two_violations ... ok [INFO] [stdout] test cmd::filter::tests::empty_filters_retain_all ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_author ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_author_no_match ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_invalid_tag_string_retains_none ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_multiple_priorities ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_multiple_tags ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_normal_priority ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_path ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_path_no_matches ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_priority ... ok [INFO] [stdout] test cmd::filter::tests::filter_by_tag ... ok [INFO] [stdout] test cmd::filter::tests::filter_combined ... ok [INFO] [stdout] test cmd::filter::tests::filter_preserves_order ... ok [INFO] [stdout] test cmd::filter::tests::filter_single_item_matches ... ok [INFO] [stdout] test config::coverage_tests::test_default_config_has_all_expected_fields ... ok [INFO] [stdout] test config::coverage_tests::test_find_config_file_returns_none_when_no_file ... ok [INFO] [stdout] test cmd::filter::tests::invalid_glob_returns_error ... ok [INFO] [stdout] test config::coverage_tests::test_find_config_file_searches_upward ... ok [INFO] [stdout] test config::coverage_tests::test_load_invalid_toml_returns_error ... ok [INFO] [stdout] test config::coverage_tests::test_load_reads_config_from_file ... ok [INFO] [stdout] test config::coverage_tests::test_load_returns_default_when_no_config_file ... ok [INFO] [stdout] test config::coverage_tests::test_tags_pattern_empty_tags ... ok [INFO] [stdout] test config::coverage_tests::test_tags_pattern_single_tag ... ok [INFO] [stdout] test config::coverage_tests::test_full_config_from_toml ... ok [INFO] [stdout] test config::tests::schema_is_up_to_date ... ok [INFO] [stdout] test config::tests::test_config_from_toml ... ok [INFO] [stdout] test config::tests::test_default_config_tags_pattern ... ok [INFO] [stdout] test config::tests::test_find_config_file_returns_none_for_empty_dir ... ok [INFO] [stdout] test config::tests::test_find_config_file_returns_path_when_found ... ok [INFO] [stdout] test config::tests::test_load_finds_config_in_grandparent_dir ... ok [INFO] [stdout] test config::tests::test_load_finds_config_in_current_dir ... ok [INFO] [stdout] test config::tests::test_load_finds_config_in_parent_dir ... ok [INFO] [stdout] test config::tests::test_load_invalid_toml_returns_error ... ok [INFO] [stdout] test config::tests::test_load_returns_default_when_no_config_file ... ok [INFO] [stdout] test config::tests::test_load_with_full_config ... ok [INFO] [stdout] test config::tests::test_tags_pattern_escapes_parentheses ... ok [INFO] [stdout] test config::tests::test_tags_pattern_default_tags_unaffected ... ok [INFO] [stdout] test config::tests::test_tags_pattern_escapes_pipe_literal ... ok [INFO] [stdout] test config::tests::test_tags_pattern_escapes_regex_metacharacters ... ok [INFO] [stdout] test config::tests::test_workspace_config_default ... ok [INFO] [stdout] test config::tests::test_workspace_config_empty_section ... ok [INFO] [stdout] test config::tests::test_workspace_config_from_toml ... ok [INFO] [stdout] test clean::tests::test_parse_iso8601_timestamp_partial_date ... ok [INFO] [stdout] test clean::tests::test_parse_iso8601_timestamp_empty_string ... ok [INFO] [stdout] test clean::tests::test_parse_iso8601_timestamp_embedded_in_string ... ok [INFO] [stdout] test clean::tests::test_parse_iso8601_timestamp_no_match ... ok [INFO] [stdout] test clean::tests::test_parse_iso8601_timestamp ... ok [INFO] [stdout] test context::tests::test_extract_context_at_file_start ... ok [INFO] [stdout] test clean::tests::test_parse_iso8601_timestamp_with_timezone_offset ... ok [INFO] [stdout] test context::tests::test_build_rich_context_basic ... ok [INFO] [stdout] test context::tests::test_build_rich_context_with_related_todos ... ok [INFO] [stdout] test context::tests::test_extract_context_at_file_end ... ok [INFO] [stdout] test context::tests::test_extract_context_basic ... ok [INFO] [stdout] test context::tests::test_collect_context_map_basic ... ok [INFO] [stdout] test context::tests::test_collect_context_map_multiple_items_same_file ... ok [INFO] [stdout] test context::tests::test_extract_context_large_n ... ok [INFO] [stdout] test context::tests::test_extract_context_more_than_available ... ok [INFO] [stdout] test context::tests::test_extract_context_target_beyond_file ... ok [INFO] [stdout] test context::tests::test_extract_context_zero_lines ... ok [INFO] [stdout] test context::tests::test_parse_location_invalid_line ... ok [INFO] [stdout] test context::tests::test_collect_context_map_file_not_found ... ok [INFO] [stdout] test context::tests::test_parse_location_empty_file ... ok [INFO] [stdout] test context::tests::test_extract_context_target_zero ... ok [INFO] [stdout] test context::tests::test_parse_location_no_colon ... ok [INFO] [stdout] test context::tests::test_parse_location_valid ... ok [INFO] [stdout] test context::tests::test_parse_location_windows_path ... ok [INFO] [stdout] test context::tests::test_read_file_context_basic ... ok [INFO] [stdout] test context::tests::test_read_file_context_file_not_found ... ok [INFO] [stdout] test context::tests::test_resolve_location_falls_back_to_file_line ... ok [INFO] [stdout] test context::tests::test_read_file_context_line_beyond_file ... ok [INFO] [stdout] test context::tests::test_resolve_location_matches_id ... ok [INFO] [stdout] test date_utils::tests::days_to_ymd_epoch_zero ... ok [INFO] [stdout] test context::tests::test_resolve_location_no_match_no_colon ... ok [INFO] [stdout] test context::tests::test_read_file_context_line_zero ... ok [INFO] [stdout] test date_utils::tests::days_to_ymd_negative_days ... ok [INFO] [stdout] test context::tests::test_resolve_location_id_takes_priority ... ok [INFO] [stdout] test date_utils::tests::format_iso8601_utc_known_timestamp ... ok [INFO] [stdout] test date_utils::tests::format_iso8601_utc_end_of_day ... ok [INFO] [stdout] test date_utils::tests::now_iso8601_format ... ok [INFO] [stdout] test date_utils::tests::days_to_ymd_known_date ... ok [INFO] [stdout] test date_utils::tests::format_iso8601_utc_epoch_zero ... ok [INFO] [stdout] test date_utils::tests::roundtrip_days_ymd ... ok [INFO] [stdout] test date_utils::tests::days_to_ymd_far_negative ... ok [INFO] [stdout] test deadline::tests::test_deserialize_json ... ok [INFO] [stdout] test date_utils::tests::ymd_to_days_known_date ... ok [INFO] [stdout] test date_utils::tests::ymd_to_days_roundtrip_leap_year ... ok [INFO] [stdout] test date_utils::tests::ymd_to_days_negative_year ... ok [INFO] [stdout] test deadline::tests::test_display ... ok [INFO] [stdout] test deadline::tests::test_deserialize_invalid_format ... ok [INFO] [stdout] test deadline::tests::test_is_expired_month_boundary ... ok [INFO] [stdout] test deadline::tests::test_display_padded ... ok [INFO] [stdout] test deadline::tests::test_deserialize_quarter_format ... ok [INFO] [stdout] test deadline::tests::test_is_expired_same_date ... ok [INFO] [stdout] test deadline::tests::test_is_expired_future_date ... ok [INFO] [stdout] test deadline::tests::test_is_expired_year_boundary ... ok [INFO] [stdout] test deadline::tests::test_parse_date_format ... ok [INFO] [stdout] test deadline::tests::test_is_expired_past_date ... ok [INFO] [stdout] test deadline::tests::test_parse_date_with_whitespace ... ok [INFO] [stdout] test deadline::tests::test_parse_garbage ... ok [INFO] [stdout] test deadline::tests::test_parse_invalid_day ... ok [INFO] [stdout] test deadline::tests::test_parse_invalid_quarter ... ok [INFO] [stdout] test deadline::tests::test_parse_invalid_month ... ok [INFO] [stdout] test date_utils::tests::ymd_to_days_epoch ... ok [INFO] [stdout] test deadline::tests::test_parse_quarter_q2 ... ok [INFO] [stdout] test deadline::tests::test_parse_quarter_q3 ... ok [INFO] [stdout] test date_utils::tests::ymd_to_days_january_adjusts_year ... ok [INFO] [stdout] test deadline::tests::test_parse_quarter_q4 ... ok [INFO] [stdout] test deadline::tests::test_parse_two_part_string ... ok [INFO] [stdout] test deadline::tests::test_parse_quarter_q1 ... ok [INFO] [stdout] test deadline::tests::test_parse_quarter_lowercase ... ok [INFO] [stdout] test deadline::tests::test_serialize_deserialize_roundtrip ... ok [INFO] [stdout] test deadline::tests::test_serialize_json ... ok [INFO] [stdout] test deadline::tests::test_today_returns_valid_deadline ... ok [INFO] [stdout] test diff::tests::test_compute_diff_empty_repo_with_empty_current ... ok [INFO] [stdout] test diff::tests::test_compute_diff_added_todos ... ok [INFO] [stdout] test diff::tests::test_compute_diff_all_tags ... ok [INFO] [stdout] test diff::tests::test_compute_diff_deleted_file ... ok [INFO] [stdout] test diff::tests::test_compute_diff_empty_scan_results ... ok [INFO] [stdout] test diff::tests::test_compute_diff_binary_file_in_base_is_skipped ... ok [INFO] [stdout] test diff::tests::test_compute_diff_counts_match_entries ... ok [INFO] [stdout] test diff::tests::test_compute_diff_not_a_git_repo ... ok [INFO] [stdout] test diff::tests::test_compute_diff_line_number_change_only_is_not_a_diff ... ok [INFO] [stdout] test diff::tests::test_compute_diff_rejects_ref_starting_with_dash ... ok [INFO] [stdout] test diff::tests::test_compute_diff_no_changes ... ok [INFO] [stdout] test diff::tests::test_compute_diff_mixed_added_and_removed ... ok [INFO] [stdout] test diff::tests::test_compute_diff_multiple_files_only_one_changed ... ok [INFO] [stdout] test diff::tests::test_compute_diff_multiple_todos_same_file ... ok [INFO] [stdout] test diff::tests::test_compute_diff_diff_against_earlier_commit ... ok [INFO] [stdout] test diff::tests::test_compute_diff_preserves_base_ref_in_result ... ok [INFO] [stdout] test diff::tests::test_compute_diff_new_untracked_file ... ok [INFO] [stdout] test diff::tests::test_compute_diff_tag_change_is_added_and_removed ... ok [INFO] [stdout] test diff::tests::test_compute_diff_with_invalid_git_ref ... ok [INFO] [stdout] test diff::tests::test_compute_diff_with_author_and_priority ... ok [INFO] [stdout] test diff::tests::test_compute_diff_with_new_file_in_subdirectory ... ok [INFO] [stdout] test diff::tests::test_detect_changed_files_deleted_file ... ok [INFO] [stdout] test diff::tests::test_compute_diff_removed_todos ... ok [INFO] [stdout] test diff::tests::test_detect_changed_files_fallback_includes_all_base_and_current ... ok [INFO] [stdout] test diff::tests::test_detect_changed_files_fallback_on_invalid_ref ... ok [INFO] [stdout] test diff::tests::test_compute_diff_todo_message_change_is_added_and_removed ... ok [INFO] [stdout] test git::tests::test_git_command_returns_stdout ... ok [INFO] [stdout] test git::tests::test_git_command_failure ... ok [INFO] [stdout] test init::tests::test_build_config_toml_all_tags ... ok [INFO] [stdout] test git::tests::test_git_command_success ... ok [INFO] [stdout] test init::tests::test_build_config_toml_empty ... ok [INFO] [stdout] test diff::tests::test_detect_changed_files_empty_inputs ... ok [INFO] [stdout] test init::tests::test_build_config_toml_with_check_max ... ok [INFO] [stdout] test init::tests::test_cmd_init_non_interactive_creates_config ... ok [INFO] [stdout] test init::tests::test_cmd_init_non_interactive_fails_if_exists ... ok [INFO] [stdout] test init::tests::test_cmd_init_non_interactive_go_project_includes_vendor ... ok [INFO] [stdout] test init::tests::test_build_config_toml_basic ... ok [INFO] [stdout] test init::tests::test_cmd_init_non_interactive_node_project_includes_node_modules ... ok [INFO] [stdout] test init::tests::test_build_config_toml_parseable ... ok [INFO] [stdout] test init::tests::test_collect_suggested_dirs_empty ... ok [INFO] [stdout] test init::tests::test_collect_suggested_dirs_full_overlap_deduplicates ... ok [INFO] [stdout] test init::tests::test_collect_suggested_dirs_multiple_hints_overlapping ... ok [INFO] [stdout] test init::tests::test_collect_suggested_dirs_single_hint ... ok [INFO] [stdout] test init::tests::test_detect_go_project ... ok [INFO] [stdout] test init::tests::test_cmd_init_non_interactive_rust_project_includes_target ... ok [INFO] [stdout] test init::tests::test_detect_multiple_project_types ... ok [INFO] [stdout] test init::tests::test_collect_suggested_dirs_deduplicates ... ok [INFO] [stdout] test init::tests::test_detect_no_project ... ok [INFO] [stdout] test init::tests::test_detect_python_requirements_txt ... ok [INFO] [stdout] test diff::tests::test_compute_diff_with_named_branch_ref ... ok [INFO] [stdout] test init::tests::test_detect_node_project ... ok [INFO] [stdout] test lint::tests::test_config_max_message_length_from_config ... ok [INFO] [stdout] test lint::tests::test_config_overrides_defaults ... ok [INFO] [stdout] test init::tests::test_detect_python_project ... ok [INFO] [stdout] test lint::tests::test_config_require_author_used_when_override_empty ... ok [INFO] [stdout] test lint::tests::test_config_require_issue_ref_used_when_override_empty ... ok [INFO] [stdout] test lint::tests::test_cli_overrides_config ... ok [INFO] [stdout] test git::tests::test_git_command_invalid_args ... ok [INFO] [stdout] test diff::tests::test_compute_diff_with_subdirectory_files ... ok [INFO] [stdout] test lint::tests::test_max_message_length_at_boundary ... ok [INFO] [stdout] test lint::tests::test_no_bare_tags_allows_non_empty_message ... ok [INFO] [stdout] test lint::tests::test_multiple_violations ... ok [INFO] [stdout] test lint::tests::test_no_bare_tags_suggestion_text ... ok [INFO] [stdout] test lint::tests::test_no_bare_tags_whitespace_only_message ... ok [INFO] [stdout] test lint::tests::test_max_message_length ... ok [INFO] [stdout] test lint::tests::test_require_author_case_insensitive_match ... ok [INFO] [stdout] test lint::tests::test_require_author_ignores_unmatched_tags ... ok [INFO] [stdout] test lint::tests::test_require_author_missing ... ok [INFO] [stdout] test lint::tests::test_require_author_present ... ok [INFO] [stdout] test diff::tests::test_detect_changed_files_new_file_not_in_base ... ok [INFO] [stdout] test lint::tests::test_require_issue_ref_missing ... ok [INFO] [stdout] test lint::tests::test_require_issue_ref_present ... ok [INFO] [stdout] test init::tests::test_detect_rust_project ... ok [INFO] [stdout] test lint::tests::test_require_colon_missing ... ok [INFO] [stdout] test lint::tests::test_require_colon_present ... ok [INFO] [stdout] test diff::tests::test_detect_changed_files_with_modified_file ... ok [INFO] [stdout] test lint::tests::test_violations_sorted_by_file_then_line ... ok [INFO] [stdout] test model::tests::priority_numeric_order_values ... ok [INFO] [stdout] test model::tests::priority_ord_equality ... ok [INFO] [stdout] test model::tests::priority_ord_sorting ... ok [INFO] [stdout] test lint::tests::test_file_not_found_skips_raw_text_rules ... ok [INFO] [stdout] test model::tests::id_returns_same_value_as_match_key ... ok [INFO] [stdout] test lint::tests::test_uppercase_tag_passes_for_uppercase ... ok [INFO] [stdout] test model::tests::package_status_serializes ... ok [INFO] [stdout] test model::tests::relationship_serializes ... ok [INFO] [stdout] test model::tests::relate_result_serializes_with_clusters ... ok [INFO] [stdout] test model::tests::relate_result_serializes_without_optionals ... ok [INFO] [stdout] test model::tests::severity_from_item_by_tag ... ok [INFO] [stdout] test model::tests::severity_from_item_urgent_always_error ... ok [INFO] [stdout] test model::tests::severity_sarif_level ... ok [INFO] [stdout] test model::tests::priority_ord_urgent_gt_high_gt_normal ... ok [INFO] [stdout] test model::tests::severity_github_actions_str ... ok [INFO] [stdout] test lint::tests::test_empty_scan_passes ... ok [INFO] [stdout] test model::tests::workspace_kind_serializes_lowercase ... ok [INFO] [stdout] test model::tests::tag_display ... ok [INFO] [stdout] test model::tests::workspace_kind_display ... ok [INFO] [stdout] test model::tests::tag_from_str_valid_cases ... ok [INFO] [stdout] test model::tests::tag_from_str_invalid ... ok [INFO] [stdout] test output::github_actions::tests::test_escape_message_carriage_return ... ok [INFO] [stdout] test model::tests::workspace_result_serializes ... ok [INFO] [stdout] test output::github_actions::tests::test_format_blame_basic ... ok [INFO] [stdout] test output::github_actions::tests::test_format_blame_not_stale ... ok [INFO] [stdout] test output::github_actions::tests::test_escape_property_commas ... ok [INFO] [stdout] test output::github_actions::tests::test_format_check_pass ... ok [INFO] [stdout] test output::github_actions::tests::test_format_clean_fail ... ok [INFO] [stdout] test output::github_actions::tests::test_escape_special_characters ... ok [INFO] [stdout] test output::github_actions::tests::test_format_check_fail ... ok [INFO] [stdout] test output::github_actions::tests::test_format_diff_added_and_removed ... ok [INFO] [stdout] test output::github_actions::tests::test_format_item_annotation_with_deadline ... ok [INFO] [stdout] test output::github_actions::tests::test_format_list_single_item ... ok [INFO] [stdout] test output::github_actions::tests::test_format_list_urgent_escalates_to_error ... ok [INFO] [stdout] test output::github_actions::tests::test_format_clean_pass ... ok [INFO] [stdout] test output::github_actions::tests::test_format_list_severity_mapping ... ok [INFO] [stdout] test output::github_actions::tests::test_format_lint_pass ... ok [INFO] [stdout] test output::github_actions::tests::test_format_search_with_items ... ok [INFO] [stdout] test output::github_actions::tests::test_format_search_escapes_query_with_newline ... ok [INFO] [stdout] test output::html::tests::test_render_html_contains_doctype ... ok [INFO] [stdout] test output::html::tests::test_render_html_bar_list_escapes_html_in_names ... ok [INFO] [stdout] test output::html::tests::test_render_html_escapes_script_tag_case_insensitive ... ok [INFO] [stdout] test output::html::tests::test_render_html_embeds_valid_json ... ok [INFO] [stdout] test output::markdown::tests::test_escape_cell_escapes_brackets ... ok [INFO] [stdout] test output::markdown::tests::test_escape_cell_replaces_newline_with_space ... ok [INFO] [stdout] test output::markdown::tests::test_escape_cell_removes_carriage_return ... ok [INFO] [stdout] test output::html::tests::test_render_html_escapes_script_tags ... ok [INFO] [stdout] test output::markdown::tests::test_escape_cell_escapes_backtick ... ok [INFO] [stdout] test output::markdown::tests::test_format_blame_not_stale ... ok [INFO] [stdout] test output::markdown::tests::test_format_blame_escapes_author ... ok [INFO] [stdout] test output::markdown::tests::test_format_blame_with_stale_entry ... ok [INFO] [stdout] test output::markdown::tests::test_escape_cell_still_escapes_pipe ... ok [INFO] [stdout] test output::markdown::tests::test_format_check_fail ... ok [INFO] [stdout] test output::markdown::tests::test_format_clean_fail_no_detail ... ok [INFO] [stdout] test output::markdown::tests::test_format_clean_fail_with_duplicate ... ok [INFO] [stdout] test output::markdown::tests::test_format_clean_pass ... ok [INFO] [stdout] test output::markdown::tests::test_format_check_pass ... ok [INFO] [stdout] test output::markdown::tests::test_format_diff_table ... ok [INFO] [stdout] test output::markdown::tests::test_format_clean_fail_with_issue_ref ... ok [INFO] [stdout] test output::markdown::tests::test_format_lint_fail_with_suggestion ... ok [INFO] [stdout] test output::markdown::tests::test_format_list_escapes_author ... ok [INFO] [stdout] test output::markdown::tests::test_format_lint_escapes_rule ... ok [INFO] [stdout] test output::markdown::tests::test_format_lint_fail_without_suggestion ... ok [INFO] [stdout] test output::markdown::tests::test_format_lint_pass ... ok [INFO] [stdout] test output::markdown::tests::test_format_list_escapes_issue_ref ... ok [INFO] [stdout] test output::markdown::tests::test_format_list_table_headers ... ok [INFO] [stdout] test output::markdown::tests::test_format_list_with_deadline ... ok [INFO] [stdout] test output::markdown::tests::test_format_list_with_items ... ok [INFO] [stdout] test output::markdown::tests::test_format_search_escapes_query ... ok [INFO] [stdout] test output::markdown::tests::test_format_list_escapes_pipe ... ok [INFO] [stdout] test output::markdown::tests::test_priority_str_values ... ok [INFO] [stdout] test output::markdown::tests::test_format_search_with_items ... ok [INFO] [stdout] test output::sarif::tests::test_format_check_sarif_pass ... ok [INFO] [stdout] test output::sarif::tests::test_format_check_sarif_fail ... ok [INFO] [stdout] test output::sarif::tests::test_format_blame_sarif ... ok [INFO] [stdout] test output::sarif::tests::test_format_clean_sarif_deduplicates_rules ... ok [INFO] [stdout] test output::sarif::tests::test_format_clean_sarif_fail_no_properties ... ok [INFO] [stdout] test output::sarif::tests::test_format_clean_sarif_fail_with_issue_ref ... ok [INFO] [stdout] test output::sarif::tests::test_format_clean_sarif_fail_with_duplicate ... ok [INFO] [stdout] test output::sarif::tests::test_format_clean_sarif_pass ... ok [INFO] [stdout] test output::sarif::tests::test_format_diff_sarif_has_diff_status ... ok [INFO] [stdout] test output::github_actions::tests::test_format_lint_escapes_rule_in_title ... ok [INFO] [stdout] test output::sarif::tests::test_format_lint_sarif_fail_with_suggestion ... ok [INFO] [stdout] test output::sarif::tests::test_format_diff_sarif_removed ... ok [INFO] [stdout] test output::sarif::tests::test_format_lint_sarif_fail_without_suggestion ... ok [INFO] [stdout] test output::sarif::tests::test_format_lint_sarif_deduplicates_rules ... ok [INFO] [stdout] test output::sarif::tests::test_format_list_sarif_empty ... ok [INFO] [stdout] test output::sarif::tests::test_format_list_sarif_structure ... ok [INFO] [stdout] test output::sarif::tests::test_format_list_sarif_rules_deduplication ... ok [INFO] [stdout] test output::sarif::tests::test_format_search_sarif ... ok [INFO] [stdout] test output::sarif::tests::test_format_list_sarif_severity ... ok [INFO] [stdout] test output::tests::test_apply_detail_full_on_serialized_item ... ok [INFO] [stdout] test output::tests::test_apply_detail_full_adds_match_key ... ok [INFO] [stdout] test output::tests::test_apply_detail_minimal_no_crash_if_fields_absent ... ok [INFO] [stdout] test output::tests::test_apply_detail_minimal_on_serialized_item ... ok [INFO] [stdout] test output::tests::test_apply_detail_normal_injects_id_and_keeps_fields ... ok [INFO] [stdout] test output::tests::test_apply_detail_minimal_removes_fields ... ok [INFO] [stdout] test output::tests::test_bar_count_equals_max ... ok [INFO] [stdout] test output::tests::test_bar_count_greater_than_max_still_works ... ok [INFO] [stdout] test output::tests::test_bar_count_zero_returns_empty ... ok [INFO] [stdout] test output::tests::test_bar_all_zeros ... ok [INFO] [stdout] test output::tests::test_bar_exact_division ... ok [INFO] [stdout] test output::tests::test_bar_full_width ... ok [INFO] [stdout] test output::tests::test_bar_function ... ok [INFO] [stdout] test output::tests::test_bar_half_width ... ok [INFO] [stdout] test output::tests::test_bar_large_values ... ok [INFO] [stdout] test output::tests::test_bar_max_zero_returns_empty ... ok [INFO] [stdout] test output::tests::test_bar_small_fraction_rounds_up ... ok [INFO] [stdout] test output::tests::test_bar_tiny_fraction ... ok [INFO] [stdout] test output::tests::test_bar_uses_block_character ... ok [INFO] [stdout] test output::tests::test_bar_width_one ... ok [INFO] [stdout] test output::tests::test_bar_width_zero ... ok [INFO] [stdout] test output::tests::test_colorize_tag_all_variants ... ok [INFO] [stdout] test output::tests::test_colorize_tag_bug_is_red_bold ... ok [INFO] [stdout] test output::tests::test_colorize_tag_fixme_is_red ... ok [INFO] [stdout] test output::tests::test_colorize_tag_hack_is_magenta ... ok [INFO] [stdout] test output::tests::test_colorize_tag_note_is_blue ... ok [INFO] [stdout] test output::tests::test_colorize_tag_returns_correct_text_for_all_tags ... ok [INFO] [stdout] test output::tests::test_colorize_tag_todo_is_yellow ... ok [INFO] [stdout] test output::tests::test_colorize_tag_xxx_is_red ... ok [INFO] [stdout] test output::tests::test_group_by_author ... ok [INFO] [stdout] test output::tests::test_group_by_dir ... ok [INFO] [stdout] test output::tests::test_group_items_by_author_mixed ... ok [INFO] [stdout] test output::tests::test_group_items_by_author_sorted_alphabetically ... ok [INFO] [stdout] test output::tests::test_group_items_by_dir_sorted_alphabetically ... ok [INFO] [stdout] test output::tests::test_group_items_by_file_groups_correctly ... ok [INFO] [stdout] test output::tests::test_group_items_by_priority_all_same_priority ... ok [INFO] [stdout] test output::tests::test_group_items_by_priority_only_urgent ... ok [INFO] [stdout] test output::tests::test_group_items_by_priority_sorted_urgency_first ... ok [INFO] [stdout] test output::tests::test_group_items_by_tag_all_six_tags_sorted ... ok [INFO] [stdout] test output::tests::test_group_items_by_tag_multiple_items_same_tag ... ok [INFO] [stdout] test output::tests::test_group_items_by_tag_sorted_by_severity_descending ... ok [INFO] [stdout] test output::tests::test_group_items_empty_input ... ok [INFO] [stdout] test output::tests::test_group_items_multiple_groups_insertion_order_preserved ... ok [INFO] [stdout] test output::tests::test_group_items_multiple_same_group_insertion_order_by_tag ... ok [INFO] [stdout] test output::tests::test_group_items_preserves_insertion_order_within_group ... ok [INFO] [stdout] test output::tests::test_group_items_single_item ... ok [INFO] [stdout] test output::tests::test_group_key_author_with_author ... ok [INFO] [stdout] test output::tests::test_group_key_author_without_author ... ok [INFO] [stdout] test output::tests::test_group_key_dir_bare_filename_no_slash ... ok [INFO] [stdout] test output::tests::test_group_key_dir_deeply_nested ... ok [INFO] [stdout] test output::tests::test_group_key_dir_dotfile ... ok [INFO] [stdout] test output::tests::test_group_key_dir_single_level ... ok [INFO] [stdout] test output::tests::test_group_key_dir_top_level_file ... ok [INFO] [stdout] test output::tests::test_group_key_dir_windows_style_path ... ok [INFO] [stdout] test output::tests::test_group_key_dir_with_subdirectory ... ok [INFO] [stdout] test output::tests::test_group_key_file ... ok [INFO] [stdout] test output::tests::test_group_key_priority_high ... ok [INFO] [stdout] test output::tests::test_group_key_priority_normal ... ok [INFO] [stdout] test output::tests::test_group_key_priority_urgent ... ok [INFO] [stdout] test output::tests::test_group_key_tag ... ok [INFO] [stdout] test output::tests::test_group_key_tag_all_variants ... ok [INFO] [stdout] test output::tests::test_inject_id_field_basic ... ok [INFO] [stdout] test output::tests::test_inject_id_field_colons_in_fields ... ok [INFO] [stdout] test output::tests::test_inject_id_field_empty_message ... ok [INFO] [stdout] test output::tests::test_inject_id_field_lowercases_message ... ok [INFO] [stdout] test output::tests::test_inject_id_field_message_with_whitespace_only ... ok [INFO] [stdout] test output::tests::test_inject_id_field_missing_fields_uses_defaults ... ok [INFO] [stdout] test output::tests::test_inject_id_field_overwrites_existing_id ... ok [INFO] [stdout] test output::tests::test_inject_id_field_special_chars_in_file ... ok [INFO] [stdout] test output::tests::test_inject_id_field_preserves_existing_fields ... ok [INFO] [stdout] test output::tests::test_inject_id_field_special_chars_in_message ... ok [INFO] [stdout] test output::tests::test_inject_id_field_trims_message ... ok [INFO] [stdout] test output::tests::test_inject_id_field_unicode_in_message ... ok [INFO] [stdout] test output::tests::test_inject_id_field_with_partial_fields ... ok [INFO] [stdout] test output::tests::test_print_blame_json_serialization_path ... ok [INFO] [stdout] test output::tests::test_print_check_json_serialization_path ... ok [INFO] [stdout] test output::tests::test_print_check_json_serialization_path_passed ... ok [INFO] [stdout] test output::tests::test_print_clean_json_serialization_path ... ok [INFO] [stdout] test output::tests::test_print_clean_json_serialization_path_passed ... ok [INFO] [stdout] test output::tests::test_print_diff_json_serialization_path ... ok [INFO] [stdout] test output::tests::test_print_diff_json_serialization_path_full ... ok [INFO] [stdout] test output::tests::test_print_diff_json_with_empty_entries ... ok [INFO] [stdout] test output::tests::test_print_lint_json_serialization_path ... ok [INFO] [stdout] test output::tests::test_print_lint_json_serialization_path_passed ... ok [INFO] [stdout] test output::tests::test_print_list_json_serialization_path_full ... ok [INFO] [stdout] test output::tests::test_print_list_json_serialization_path_minimal ... ok [INFO] [stdout] test lint::tests::test_uppercase_tag_with_file ... ok [INFO] [stdout] test output::tests::test_print_list_json_with_context ... ok [INFO] [stdout] test lint::tests::test_no_bare_tags_detects_empty_message ... ok [INFO] [stdout] test output::tests::test_print_list_json_with_empty_items ... ok [INFO] [stdout] test output::tests::test_print_search_json_serialization_path ... ok [INFO] [stdout] test output::sarif::tests::test_format_lint_sarif_pass ... ok [INFO] [stdout] test output::sarif::tests::test_item_to_result_with_deadline ... ok [INFO] [stdout] test output::tests::test_apply_detail_minimal_on_item_without_optional_fields ... ok [INFO] [stdout] test output::tests::test_bar_both_max_and_width_zero ... ok [INFO] [stdout] test output::tests::test_print_list_json_serialization_path ... ok [INFO] [stdout] test output::tests::test_sanitize_empty_string ... ok [INFO] [stdout] test output::tests::test_sanitize_long_string_with_control_chars ... ok [INFO] [stdout] test output::tests::test_sanitize_mixed_valid_invalid ... ok [INFO] [stdout] test output::tests::test_sanitize_only_control_chars ... ok [INFO] [stdout] test output::tests::test_sanitize_preserves_normal_ascii ... ok [INFO] [stdout] test output::tests::test_sanitize_preserves_tab ... ok [INFO] [stdout] test output::tests::test_sanitize_preserves_unicode_emoji ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_all_low_control_except_tab ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_backspace ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_ansi_color_code ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_cr_lf ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_bell ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_null_bytes ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_full_ansi_escape_sequence ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_ansi_escape ... ok [INFO] [stdout] test output::tests::test_sanitize_tab_preserved_among_stripped_chars ... ok [INFO] [stdout] test output::tests::text_print_blame_with_stale_and_fresh ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_delete_0x7f ... ok [INFO] [stdout] test output::tests::test_sanitize_strips_form_feed ... ok [INFO] [stdout] test output::tests::text_print_brief_high_only ... ok [INFO] [stdout] test output::tests::text_print_brief_with_urgent_and_trend ... ok [INFO] [stdout] test output::tests::text_print_check_failed ... ok [INFO] [stdout] test output::tests::text_print_clean_failed_with_stale_and_duplicates ... ok [INFO] [stdout] test output::tests::text_print_context_no_related ... ok [INFO] [stdout] test output::tests::text_print_clean_passed ... ok [INFO] [stdout] test output::tests::text_print_brief_no_urgent_no_trend ... ok [INFO] [stdout] test output::tests::text_print_context_with_related ... ok [INFO] [stdout] test output::tests::text_print_brief_with_budget ... ok [INFO] [stdout] test output::tests::text_print_diff_added_and_removed ... ok [INFO] [stdout] test output::tests::text_print_check_passed ... ok [INFO] [stdout] test output::tests::text_print_initial_summary_json_format ... ok [INFO] [stdout] test output::tests::text_print_diff_with_context ... ok [INFO] [stdout] test output::tests::text_print_initial_summary ... ok [INFO] [stdout] test output::tests::text_print_lint_failed_with_suggestions ... ok [INFO] [stdout] test output::tests::text_print_list_detail_minimal ... ok [INFO] [stdout] test output::tests::text_print_list_group_by_priority ... ok [INFO] [stdout] test output::tests::text_print_list_with_context_map ... ok [INFO] [stdout] test output::tests::text_print_list_with_future_deadline ... ok [INFO] [stdout] test output::tests::text_print_list_with_ignored_count_no_show ... ok [INFO] [stdout] test output::tests::text_print_list_with_ignored_items ... ok [INFO] [stdout] test output::tests::text_print_relate_empty ... ok [INFO] [stdout] test output::tests::text_print_relate_with_clusters ... ok [INFO] [stdout] test output::tests::text_print_relate_with_relationships_no_clusters ... ok [INFO] [stdout] test output::tests::text_print_relate_with_target ... ok [INFO] [stdout] test output::tests::text_print_list_group_by_tag ... ok [INFO] [stdout] test output::tests::text_print_report_to_file ... ok [INFO] [stdout] test output::tests::text_print_list_show_ignored_non_file_grouping ... ok [INFO] [stdout] test output::tests::text_print_search_detail_minimal ... ok [INFO] [stdout] test output::tests::text_print_search_non_file_grouping ... ok [INFO] [stdout] test output::tests::text_print_search_basic ... ok [INFO] [stdout] test output::tests::text_print_search_with_context ... ok [INFO] [stdout] test output::tests::text_print_search_with_author_issue_deadline ... ok [INFO] [stdout] test output::tests::text_print_stats_full ... ok [INFO] [stdout] test output::tests::text_print_stats_negative_trend ... ok [INFO] [stdout] test output::tests::text_print_tasks_no_output_dir ... ok [INFO] [stdout] test output::tests::text_print_stats_empty ... ok [INFO] [stdout] test output::tests::text_print_tasks_empty ... ok [INFO] [stdout] test output::tests::text_print_tasks_with_items ... ok [INFO] [stdout] test output::tests::text_print_watch_event_below_max_threshold ... ok [INFO] [stdout] test output::tests::text_print_watch_event_removed_negative_delta ... ok [INFO] [stdout] test output::tests::text_print_watch_event_zero_delta ... ok [INFO] [stdout] test output::tests::text_print_watch_event_added_positive_delta ... ok [INFO] [stdout] test output::tests::text_print_watch_event_with_max_threshold_warning ... ok [INFO] [stdout] test output::tests::text_print_workspace_list_mixed_statuses ... ok [INFO] [stdout] test output::tests::text_print_workspace_list_npm_kind ... ok [INFO] [stdout] test relate::tests::build_clusters_empty_items ... ok [INFO] [stdout] test relate::tests::build_clusters_connected_components ... ok [INFO] [stdout] test relate::tests::build_clusters_no_relationships ... ok [INFO] [stdout] test relate::tests::build_clusters_disjoint_groups ... ok [INFO] [stdout] test relate::tests::build_clusters_three_way_chain ... ok [INFO] [stdout] test relate::tests::build_clusters_sorts_by_size_descending ... ok [INFO] [stdout] test relate::tests::compute_relations_empty_input ... ok [INFO] [stdout] test relate::tests::compute_relations_single_item ... ok [INFO] [stdout] test relate::tests::compute_suggested_order_by_priority_then_severity ... ok [INFO] [stdout] test relate::tests::compute_relations_filters_by_min_score ... ok [INFO] [stdout] test relate::tests::extract_keywords_empty_string ... ok [INFO] [stdout] test relate::tests::extract_keywords_single_char_words_filtered ... ok [INFO] [stdout] test relate::tests::filter_for_item_no_matches ... ok [INFO] [stdout] test relate::tests::extract_keywords_removes_stopwords_and_lowercases ... ok [INFO] [stdout] test relate::tests::filter_for_item_filters_correctly ... ok [INFO] [stdout] test output::tests::text_print_lint_passed ... ok [INFO] [stdout] test output::tests::text_print_list_basic_group_by_file ... ok [INFO] [stdout] test output::tests::text_print_list_detail_full_with_deadline ... ok [INFO] [stdout] test relate::tests::generate_theme_includes_directory_names ... ok [INFO] [stdout] test relate::tests::generate_theme_root_dir_file ... ok [INFO] [stdout] test relate::tests::generate_theme_empty ... ok [INFO] [stdout] test relate::tests::jaccard_empty_sets ... ok [INFO] [stdout] test relate::tests::generate_theme_extracts_top_keywords ... ok [INFO] [stdout] test relate::tests::jaccard_identical_sets ... ok [INFO] [stdout] test relate::tests::score_pair_same_author ... ok [INFO] [stdout] test relate::tests::score_pair_all_factors_combined ... ok [INFO] [stdout] test relate::tests::score_pair_different_files_no_proximity ... ok [INFO] [stdout] test relate::tests::jaccard_partial_overlap ... ok [INFO] [stdout] test relate::tests::score_pair_same_tag_bonus ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_all_buckets ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_day_179_in_fourth_bucket ... ok [INFO] [stdout] test relate::tests::score_pair_same_file_proximity_beyond_threshold ... ok [INFO] [stdout] test relate::tests::score_pair_shared_keywords ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_day_364_in_fifth_bucket ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_day_27_in_second_bucket ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_day_6_is_first_bucket ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_exactly_180_days ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_exactly_28_days ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_day_89_in_third_bucket ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_exactly_365_days ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_exactly_7_days ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_boundary_exactly_90_days ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_day_zero ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_empty ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_single_bucket ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_very_old_item ... ok [INFO] [stdout] test report::tests::test_build_age_histogram_multiple_in_same_bucket ... ok [INFO] [stdout] test relate::tests::score_pair_same_file_proximity_within_threshold ... ok [INFO] [stdout] test relate::tests::score_pair_same_issue_ref ... ok [INFO] [stdout] test report::tests::test_compute_report_empty_scan_no_history ... ok [INFO] [stdout] test report::tests::test_default_age_histogram_labels ... ok [INFO] [stdout] test report::tests::test_default_age_histogram_all_zero ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_all ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_basic ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_both_zero ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_empty ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_four_from_ten ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_large_sample_exceeds_total ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_large_values ... ok [INFO] [stdout] test report::tests::test_default_age_histogram_returns_six_buckets ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_total_one_sample_one ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_total_one_sample_zero ... ok [INFO] [stdout] test report::tests::test_compute_history_non_git_returns_error ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_equal ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_total_two_sample_two ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_one ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_total_two_sample_one ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_total_zero_sample_zero ... ok [INFO] [stdout] test report::tests::test_compute_report_history_count_positive_non_git ... ok [INFO] [stdout] test report::tests::test_select_sample_indices_two_from_ten ... ok [INFO] [stdout] test report::tests::test_compute_report_with_items_blame_fails ... ok [INFO] [stdout] test scanner::tests::test_author_with_special_chars ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_empty_directory ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_exclude_dirs ... ok [INFO] [stdout] test report::tests::test_compute_history_empty_repo_returns_error ... ok [INFO] [stdout] test scanner::tests::test_basic_todo_detection ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_exclude_patterns ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_first_run_all_misses ... ok [INFO] [stdout] test output::tests::test_sanitize_multiple_escape_sequences ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_deleted_file_pruned ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_skips_binary_files ... ok [INFO] [stdout] test scanner::tests::test_comment_block_start ... ok [INFO] [stdout] test scanner::tests::test_comment_double_dash ... ok [INFO] [stdout] test scanner::tests::test_comment_block_middle_star ... ok [INFO] [stdout] test scanner::tests::test_comment_double_slash ... ok [INFO] [stdout] test scanner::tests::test_comment_hash ... ok [INFO] [stdout] test scanner::tests::test_comment_haskell_brace_dash ... ok [INFO] [stdout] test scanner::tests::test_comment_ocaml_paren_star ... ok [INFO] [stdout] test scanner::tests::test_case_insensitivity ... ok [INFO] [stdout] test scanner::tests::test_comment_percent ... ok [INFO] [stdout] test scanner::tests::test_comment_semicolon ... ok [INFO] [stdout] test scanner::tests::test_extract_issue_ref_both_jira_and_hash ... ok [INFO] [stdout] test scanner::tests::test_extract_issue_ref_empty_string ... ok [INFO] [stdout] test scanner::tests::test_extract_issue_ref_function ... ok [INFO] [stdout] test scanner::tests::test_extract_issue_ref_jira_only ... ok [INFO] [stdout] test scanner::tests::test_extract_issue_ref_no_reference ... ok [INFO] [stdout] test scanner::tests::test_extract_issue_ref_hash_only ... ok [INFO] [stdout] test scanner::tests::test_comment_html ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_matches_uncached_results ... ok [INFO] [stdout] test scanner::tests::test_fixme_with_author ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_second_run_all_hits ... ok [INFO] [stdout] test scanner::tests::test_ignore_inline_suppresses_item ... ok [INFO] [stdout] test scanner::tests::test_ignore_directory_scan_separates_ignored ... ok [INFO] [stdout] test scanner::tests::test_ignore_mixed_items ... ok [INFO] [stdout] test scanner::tests::test_ignore_next_line_only_affects_immediate_next ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_layer2_content_hash_hit ... ok [INFO] [stdout] test scanner::tests::test_ignore_no_items_affected_when_no_markers ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_block_start ... ok [INFO] [stdout] test scanner::tests::test_ignore_strips_marker_from_message ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_double_dash ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_double_slash ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_modified_file_detected ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_false_for_code ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_false_for_identifier ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_false_for_string_with_block_comment_prefix ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_false_for_string_with_comment_prefix ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_false_for_string_with_hash_prefix ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_html ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_inline ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_inline_after_code ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_no_comment_prefix_at_all ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_quoted_prefix_then_real_comment ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_semicolon_prefix ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_star_at_line_start_no_whitespace ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_hash ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_star_at_line_start_with_whitespace ... ok [INFO] [stdout] test scanner::tests::test_ignore_next_line_suppresses_following_item ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_false_for_string ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_star_not_at_line_start ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_tab_then_star ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_star_line_start ... ok [INFO] [stdout] test scanner::tests::test_is_in_comment_star_in_string_literal ... ok [INFO] [stdout] test scanner::tests::test_indented_comment ... ok [INFO] [stdout] test scanner::tests::test_multiple_tags_in_content ... ok [INFO] [stdout] test scanner::tests::test_ignore_next_line_blank_line_between_does_not_suppress ... ok [INFO] [stdout] test scanner::tests::test_inline_comment ... ok [INFO] [stdout] test scanner::tests::test_issue_ref_hash ... ok [INFO] [stdout] test scanner::tests::test_line_numbers_are_correct ... ok [INFO] [stdout] test scanner::tests::test_no_match_comment_prefix_in_string_literal ... ok [INFO] [stdout] test scanner::tests::test_issue_ref_jira ... ok [INFO] [stdout] test scanner::tests::test_match_real_comment_after_quoted_prefix ... ok [INFO] [stdout] test scanner::tests::test_no_match_enum_variant ... ok [INFO] [stdout] test scanner::tests::test_no_match_hash_prefix_in_string_literal ... ok [INFO] [stdout] test scanner::tests::test_cached_scan_skips_oversized_files ... ok [INFO] [stdout] test scanner::tests::test_no_match_fixme_suffix_in_comment ... ok [INFO] [stdout] test scanner::tests::test_no_match_in_identifier ... ok [INFO] [stdout] test scanner::tests::test_no_match_in_camel_case ... ok [INFO] [stdout] test scanner::tests::test_no_match_in_string_literal ... ok [INFO] [stdout] test scanner::tests::test_no_match_todos_in_comment ... ok [INFO] [stdout] test scanner::tests::test_no_match_noted_in_comment ... ok [INFO] [stdout] test scanner::tests::test_no_match_struct_name ... ok [INFO] [stdout] test scanner::tests::test_no_match_in_plain_code ... ok [INFO] [stdout] test scanner::tests::test_no_match_todo_scan_in_comment ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_comma_empty_left_with_date_right ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_comma_empty_right ... ok [INFO] [stdout] test scanner::tests::test_no_match_todox_in_comment ... ok [INFO] [stdout] test scanner::tests::test_no_match_on_plain_text ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_author_and_quarter ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_author_and_date ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_author_only ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_date_on_left_side ... ok [INFO] [stdout] test scanner::tests::test_prefix_outside_quotes_after_two_quotes ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_comma_neither_side_is_date ... ok [INFO] [stdout] test scanner::tests::test_prefix_outside_quotes_at_start ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_date_only ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_empty ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_whitespace_only ... ok [INFO] [stdout] test scanner::tests::test_prefix_outside_quotes_no_quotes ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_date_left_empty_right ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_quarter_format ... ok [INFO] [stdout] test scanner::tests::test_parse_paren_date_on_left_with_empty_right ... ok [INFO] [stdout] test scanner::tests::test_prefix_outside_quotes_inside_one_quote ... ok [INFO] [stdout] test scanner::tests::test_prefix_outside_quotes_nested_quotes ... ok [INFO] [stdout] test scanner::tests::test_scan_content_unknown_tag_skipped ... ok [INFO] [stdout] test scanner::tests::test_priority_high ... ok [INFO] [stdout] test scanner::tests::test_scan_content_no_matches ... ok [INFO] [stdout] test scanner::tests::test_scan_content_tag_followed_by_hyphen ... ok [INFO] [stdout] test scanner::tests::test_scan_content_no_colon ... ok [INFO] [stdout] test scanner::tests::test_scan_content_empty ... ok [INFO] [stdout] test scanner::tests::test_priority_urgent ... ok [INFO] [stdout] test scanner::tests::test_scan_content_empty_message ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_exclude_dirs ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_basic ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_exclude_patterns ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_empty ... ok [INFO] [stdout] test scanner::tests::test_scan_todo_no_parens_no_deadline ... ok [INFO] [stdout] test scanner::tests::test_scan_todo_with_author_and_date ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_counts_all_files ... ok [INFO] [stdout] test scanner::tests::test_should_skip_file_at_exact_limit ... ok [INFO] [stdout] test scanner::tests::test_scan_todo_with_quarter ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_skips_binary_files ... ok [INFO] [stdout] test scanner::tests::test_should_skip_file_over_limit ... ok [INFO] [stdout] test scanner::tests::test_should_skip_file_under_limit ... ok [INFO] [stdout] test scanner::tests::test_should_skip_file_zero_byte_file ... ok [INFO] [stdout] test scanner::tests::test_scan_todo_author_only_still_works ... ok [INFO] [stdout] test scanner::tests::test_scan_todo_with_date ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_files_scanned_count ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_multiple_files ... ok [INFO] [stdout] test scanner::tests::test_still_matches_todo_colon ... ok [INFO] [stdout] test search::tests::test_case_insensitive_issue_ref_match ... ok [INFO] [stdout] test search::tests::test_case_insensitive_match ... ok [INFO] [stdout] test search::tests::test_empty_scan ... ok [INFO] [stdout] test search::tests::test_exact_flag_stored_in_result ... ok [INFO] [stdout] test search::tests::test_exact_issue_ref_case_mismatch ... ok [INFO] [stdout] test search::tests::test_exact_issue_ref_match ... ok [INFO] [stdout] test scanner::tests::test_still_matches_todo_space ... ok [INFO] [stdout] test search::tests::test_file_count_deduplication ... ok [INFO] [stdout] test search::tests::test_issue_ref_match ... ok [INFO] [stdout] test search::tests::test_no_issue_ref_does_not_match ... ok [INFO] [stdout] test search::tests::test_no_match_empty_result ... ok [INFO] [stdout] test search::tests::test_exact_match_case_sensitive ... ok [INFO] [stdout] test search::tests::test_partial_message_match ... ok [INFO] [stdout] test search::tests::test_query_stored_in_result ... ok [INFO] [stdout] test stats::tests::test_author_counts ... ok [INFO] [stdout] test stats::tests::test_empty_scan ... ok [INFO] [stdout] test scanner::tests::test_xxx_tag ... ok [INFO] [stdout] test stats::tests::test_priority_counts ... ok [INFO] [stdout] test stats::tests::test_trend_from_diff ... ok [INFO] [stdout] test tasks::tests::test_action_verb_mapping ... ok [INFO] [stdout] test stats::tests::test_basic_counts ... ok [INFO] [stdout] test tasks::tests::test_build_active_form_empty_message ... ok [INFO] [stdout] test tasks::tests::test_build_active_form_with_message ... ok [INFO] [stdout] test scanner::tests::test_still_matches_todo_bang ... ok [INFO] [stdout] test tasks::tests::test_active_verb_mapping ... ok [INFO] [stdout] test tasks::tests::test_build_description_basic ... ok [INFO] [stdout] test stats::tests::test_hotspot_files_limited_to_5 ... ok [INFO] [stdout] test scanner::tests::test_should_skip_file_exactly_max_file_size ... ok [INFO] [stdout] test tasks::tests::test_build_description_with_author_and_issue ... ok [INFO] [stdout] test tasks::tests::test_build_description_with_context ... ok [INFO] [stdout] test tasks::tests::test_build_tasks_metadata ... ok [INFO] [stdout] test tasks::tests::test_build_subject_empty_message ... ok [INFO] [stdout] test tasks::tests::test_sort_by_priority_ordering ... ok [INFO] [stdout] test tasks::tests::test_sort_by_priority_same_priority_uses_tag_severity ... ok [INFO] [stdout] test tasks::tests::test_build_subject_with_message ... ok [INFO] [stdout] test scanner::tests::test_still_matches_todo_paren ... ok [INFO] [stdout] test watch::tests::test_collect_changed_files_dedup ... ok [INFO] [stdout] test watch::tests::test_collect_changed_files_empty_events ... ok [INFO] [stdout] test watch::tests::test_collect_changed_files_mixed_kinds ... ok [INFO] [stdout] test watch::tests::test_collect_changed_files_skips_non_any_kind ... ok [INFO] [stdout] test watch::tests::test_collect_changed_files_skips_unstrippable_prefix ... ok [INFO] [stdout] test scanner::tests::test_should_skip_file_one_over_max ... ok [INFO] [stdout] test watch::tests::test_build_watch_event_negative_delta ... ok [INFO] [stdout] test watch::tests::test_index_new_populates_items ... ok [INFO] [stdout] test watch::tests::test_build_watch_event_delta ... ok [INFO] [stdout] test watch::tests::test_build_watch_event_empty_index ... ok [INFO] [stdout] test watch::tests::test_build_watch_event_tag_summary_content ... ok [INFO] [stdout] test watch::tests::test_index_new_with_no_todo_files ... ok [INFO] [stdout] test watch::tests::test_index_remove_file ... ok [INFO] [stdout] test watch::tests::test_index_update_file_detects_removed ... ok [INFO] [stdout] test watch::tests::test_build_watch_event_zero_delta ... ok [INFO] [stdout] test watch::tests::test_index_update_file_detects_added ... ok [INFO] [stdout] test scanner::tests::test_scan_directory_skips_oversized_files ... ok [INFO] [stdout] test watch::tests::test_should_exclude_nested_dir ... ok [INFO] [stdout] test watch::tests::test_index_remove_nonexistent_file ... ok [INFO] [stdout] test watch::tests::test_should_exclude_patterns ... ok [INFO] [stdout] test watch::tests::test_should_exclude_dirs ... ok [INFO] [stdout] test watch::tests::test_update_file_error_nonexistent ... ok [INFO] [stdout] test watch::tests::test_index_update_file_unchanged ... ok [INFO] [stdout] test watch::tests::test_index_tag_counts ... ok [INFO] [stdout] test watch::tests::test_should_exclude_multiple_dirs ... ok [INFO] [stdout] test workspace::tests::cargo_glob_members ... ok [INFO] [stdout] test workspace::tests::detect_cargo_no_workspace_section ... ok [INFO] [stdout] test workspace::tests::auto_detect_disabled_skips_cargo ... ok [INFO] [stdout] test workspace::tests::detect_cargo_workspace ... ok [INFO] [stdout] test workspace::tests::detect_go_work_mixed_block_and_single_line ... ok [INFO] [stdout] test workspace::tests::detect_go_work_single_line_use ... ok [INFO] [stdout] test workspace::tests::detect_go_work_single_line_use_without_dot_slash ... ok [INFO] [stdout] test workspace::tests::detect_go_workspace ... ok [INFO] [stdout] test workspace::tests::detect_cargo_workspace_without_members ... ok [INFO] [stdout] test watch::tests::test_should_exclude_invalid_regex_skipped ... ok [INFO] [stdout] test workspace::tests::detect_npm_no_workspaces_field ... ok [INFO] [stdout] test workspace::tests::detect_npm_workspace ... ok [INFO] [stdout] test watch::tests::test_update_file_new_file_not_in_index ... ok [INFO] [stdout] test workspace::tests::detect_nx_no_projects_key ... ok [INFO] [stdout] test workspace::tests::detect_nx_some_projects_exist_some_not ... ok [INFO] [stdout] test workspace::tests::detect_manual_workspace ... ok [INFO] [stdout] test workspace::tests::detect_nx_workspace ... ok [INFO] [stdout] test workspace::tests::detect_npm_workspaces_empty_array ... ok [INFO] [stdout] test workspace::tests::detect_pnpm_empty_packages_section ... ok [INFO] [stdout] test workspace::tests::detect_pnpm_workspace ... ok [INFO] [stdout] test workspace::tests::detect_nx_projects_point_to_nonexistent_dirs ... ok [INFO] [stdout] test workspace::tests::glob_prefix_empty_pattern ... ok [INFO] [stdout] test workspace::tests::glob_prefix_bracket_pattern ... ok [INFO] [stdout] test workspace::tests::glob_prefix_nested_glob ... ok [INFO] [stdout] test workspace::tests::detect_pnpm_yaml_with_comments_between_entries ... ok [INFO] [stdout] test workspace::tests::detect_pnpm_yaml_non_package_section_breaks_parse ... ok [INFO] [stdout] test workspace::tests::glob_prefix_no_glob_chars ... ok [INFO] [stdout] test workspace::tests::glob_prefix_question_mark ... ok [INFO] [stdout] test workspace::tests::glob_prefix_packages_star ... ok [INFO] [stdout] test workspace::tests::no_workspace_detected_in_empty_dir ... ok [INFO] [stdout] test workspace::tests::package_name_from_path_nested ... ok [INFO] [stdout] test workspace::tests::package_name_from_path_single ... ok [INFO] [stdout] test workspace::tests::package_name_from_path_deeply_nested ... ok [INFO] [stdout] test workspace::tests::package_name_from_path_empty ... ok [INFO] [stdout] test workspace::tests::glob_prefix_star_only ... ok [INFO] [stdout] test workspace::tests::package_name_from_path_trailing_slash ... ok [INFO] [stdout] test watch::tests::test_tag_counts_when_empty ... ok [INFO] [stdout] test workspace::tests::resolve_member_paths_glob_nonexistent_dir ... ok [INFO] [stdout] test workspace::tests::resolve_member_paths_mixed_existing_and_not ... ok [INFO] [stdout] test workspace::tests::resolve_member_paths_nonexistent_dir ... ok [INFO] [stdout] test workspace::tests::resolve_member_paths_with_dot_slash_prefix ... ok [INFO] [stdout] test watch::tests::test_total_count_multiple_files ... ok [INFO] [stdout] test watch::tests::test_update_file_no_todos_removes_entry ... ok [INFO] [stdout] test watch::tests::test_update_file_skips_oversized_file ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 833 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.53s [INFO] [stdout] [INFO] [stderr] Running tests/integration_blame.rs (/opt/rustwide/target/debug/deps/integration_blame-d92f95e716c38be7) [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test test_blame_basic_output ... ok [INFO] [stdout] test test_blame_empty_repo ... ok [INFO] [stdout] test test_blame_config_stale_threshold ... ok [INFO] [stdout] test test_blame_json_format ... ok [INFO] [stdout] test test_blame_github_actions_format ... ok [INFO] [stdout] test test_blame_json_contains_id_field ... ok [INFO] [stdout] test test_blame_filter_by_min_age ... ok [INFO] [stdout] test test_blame_sort_by_age ... ok [INFO] [stdout] test test_blame_sort_by_tag ... ok [INFO] [stdout] test test_blame_sort_by_author ... ok [INFO] [stdout] test test_blame_sarif_format ... ok [INFO] [stdout] test test_blame_markdown_format ... ok [INFO] [stdout] test test_blame_path_filter ... ok [INFO] [stdout] test test_blame_tag_filter ... ok [INFO] [stdout] test test_blame_filter_by_author ... ok [INFO] [stdout] test test_blame_stale_marker ... ok [INFO] [stderr] Running tests/integration_brief.rs (/opt/rustwide/target/debug/deps/integration_brief-ed599d1ed5527d8c) [INFO] [stdout] test test_blame_summary_line ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test test_brief_top_urgent_high_priority ... ok [INFO] [stdout] test test_brief_budget_limits_lines ... ok [INFO] [stdout] test test_brief_no_priority_shown_when_all_normal ... ok [INFO] [stdout] test test_brief_empty_project ... ok [INFO] [stdout] test test_brief_json_format ... ok [INFO] [stdout] test test_brief_with_priorities ... ok [INFO] [stdout] test test_brief_basic_output ... ok [INFO] [stdout] test test_brief_top_urgent_line ... ok [INFO] [stdout] test test_brief_with_trend ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Running tests/integration_cache.rs (/opt/rustwide/target/debug/deps/integration_cache-ffc8aa1b620d6628) [INFO] [stdout] running 5 tests [INFO] [stdout] test test_cache_detects_modified_file ... ok [INFO] [stdout] test test_consecutive_runs_produce_identical_results ... ok [INFO] [stdout] test test_no_cache_flag_produces_correct_output ... ok [INFO] [stdout] test test_check_command_works_with_cache ... ok [INFO] [stdout] test test_json_output_identical_with_and_without_cache ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] [stderr] Running tests/integration_check.rs (/opt/rustwide/target/debug/deps/integration_check-bf8e4b4684847761) [INFO] [stdout] [INFO] [stdout] running 20 tests [INFO] [stdout] test test_check_expired_author_and_date ... ok [INFO] [stdout] test test_check_fail_json_format ... ok [INFO] [stdout] test test_check_fail_over_max ... ok [INFO] [stdout] test test_check_expired_quarter_format ... ok [INFO] [stdout] test test_check_expired_deadline_fails ... ok [INFO] [stdout] test test_check_future_deadline_passes ... ok [INFO] [stdout] test test_check_json_format ... ok [INFO] [stdout] test test_check_max_does_not_count_ignored ... ok [INFO] [stdout] test test_check_markdown_format_fail ... ok [INFO] [stdout] test test_check_max_fails_without_ignore ... ok [INFO] [stdout] test test_check_block_tags ... ok [INFO] [stdout] test test_check_pass_no_constraints ... ok [INFO] [stdout] test test_check_github_actions_format_pass ... ok [INFO] [stdout] test test_check_no_expired_flag_ignores_deadline ... ok [INFO] [stdout] test test_check_markdown_format_pass ... ok [INFO] [stdout] test test_check_pass_under_max ... ok [INFO] [stdout] test test_check_github_actions_format_fail ... ok [INFO] [stdout] test test_check_since_max_new_passes ... ok [INFO] [stdout] test test_check_sarif_format ... ok [INFO] [stdout] test test_check_since_max_new_fails ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] [stderr] Running tests/integration_clean.rs (/opt/rustwide/target/debug/deps/integration_clean-cb122e1580774c2d) [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test test_clean_check_exit_0_no_violations ... ok [INFO] [stdout] test test_clean_duplicates_whitespace_normalized ... ok [INFO] [stdout] test test_clean_fail_duplicates ... ok [INFO] [stdout] test test_clean_github_actions_format_fail ... ok [INFO] [stdout] test test_clean_empty_project ... ok [INFO] [stdout] test test_clean_json_format_pass ... ok [INFO] [stdout] test test_clean_config_disables_duplicates ... ok [INFO] [stdout] test test_clean_duplicates_case_insensitive ... ok [INFO] [stdout] test test_clean_check_exit_1_with_violations ... ok [INFO] [stdout] test test_clean_no_issue_refs_no_stale ... ok [INFO] [stdout] test test_clean_json_format_fail ... ok [INFO] [stdout] test test_clean_github_actions_format_pass ... ok [INFO] [stdout] test test_clean_markdown_format_fail ... ok [INFO] [stdout] test test_clean_no_check_exit_0_even_with_violations ... ok [INFO] [stdout] test test_clean_markdown_format_pass ... ok [INFO] [stdout] test test_clean_sarif_format_fail ... ok [INFO] [stdout] test test_clean_sarif_format_pass ... ok [INFO] [stdout] test test_clean_multiple_violations_same_file ... ok [INFO] [stdout] test test_clean_pass_no_duplicates ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s [INFO] [stdout] [INFO] [stderr] Running tests/integration_completions.rs (/opt/rustwide/target/debug/deps/integration_completions-6190225508e33041) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test test_completions_bash ... ok [INFO] [stdout] test test_completions_zsh ... ok [INFO] [stderr] Running tests/integration_context.rs (/opt/rustwide/target/debug/deps/integration_context-d319a4b37fbb3649) [INFO] [stdout] test test_completions_fish ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test test_context_custom_window ... ok [INFO] [stdout] test test_context_resolves_stable_id ... ok [INFO] [stdout] test test_context_invalid_format ... ok [INFO] [stdout] test test_context_related_todos ... ok [INFO] [stdout] test test_context_json_output ... ok [INFO] [stdout] test test_context_file_not_found ... ok [INFO] [stdout] test test_context_text_output ... ok [INFO] [stderr] Running tests/integration_diff.rs (/opt/rustwide/target/debug/deps/integration_diff-ab7e7edbb8943473) [INFO] [stdout] test test_context_related_todos_text_format ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 19 tests [INFO] [stdout] test test_diff_full_detail_auto_context_json ... ok [INFO] [stdout] test test_diff_mixed_changes ... ok [INFO] [stdout] test test_diff_github_actions_format ... ok [INFO] [stdout] test test_diff_new_untracked_file ... ok [INFO] [stdout] test test_diff_deleted_file ... ok [INFO] [stdout] test test_diff_json_contains_id_field ... ok [INFO] [stdout] test test_diff_markdown_format ... ok [INFO] [stdout] test test_diff_no_changes ... ok [INFO] [stdout] test test_diff_renamed_file ... ok [INFO] [stdout] test test_diff_detail_minimal_json ... ok [INFO] [stdout] test test_diff_shows_added_todos ... ok [INFO] [stdout] test test_diff_json_format ... ok [INFO] [stdout] test test_diff_sarif_format ... ok [INFO] [stdout] test test_diff_tag_filter ... ok [INFO] [stdout] test test_diff_shows_removed_todos ... ok [INFO] [stdout] test test_diff_with_context ... ok [INFO] [stdout] test test_diff_with_multiple_files_only_one_changed ... ok [INFO] [stdout] test test_diff_unchanged_files_no_false_positives ... ok [INFO] [stderr] Running tests/integration_init.rs (/opt/rustwide/target/debug/deps/integration_init-0e71bcaf1dfa3dd9) [INFO] [stdout] test test_diff_tag_filter_multiple_tags ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.48s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test test_init_empty_project_no_exclude_dirs ... ok [INFO] [stdout] test test_init_creates_config ... ok [INFO] [stdout] test test_init_detects_rust_project ... ok [INFO] [stdout] test test_init_refuses_overwrite_in_non_interactive ... ok [INFO] [stdout] test test_init_config_has_all_default_tags ... ok [INFO] [stdout] test test_init_detects_node_project ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running tests/integration_lint.rs (/opt/rustwide/target/debug/deps/integration_lint-bb96ccde223a1ca4) [INFO] [stdout] [INFO] [stdout] running 29 tests [INFO] [stdout] test test_lint_exit_code_0_on_pass ... ok [INFO] [stdout] test test_lint_fail_bare_tag ... ok [INFO] [stdout] test test_lint_config_file_disable_defaults ... ok [INFO] [stdout] test test_lint_empty_project ... ok [INFO] [stdout] test test_lint_config_file_require_author ... ok [INFO] [stdout] test test_lint_fail_bare_tag_no_colon ... ok [INFO] [stdout] test test_lint_fail_message_too_long ... ok [INFO] [stdout] test test_lint_fail_lowercase_tag ... ok [INFO] [stdout] test test_lint_fail_missing_colon ... ok [INFO] [stdout] test test_lint_fail_missing_author ... ok [INFO] [stdout] test test_lint_json_format_fail ... ok [INFO] [stdout] test test_lint_json_format_pass ... ok [INFO] [stdout] test test_lint_exit_code_1_on_fail ... ok [INFO] [stdout] test test_lint_fail_mixed_case_tag ... ok [INFO] [stdout] test test_lint_fail_missing_issue_ref ... ok [INFO] [stdout] test test_lint_multiple_violations_same_file ... ok [INFO] [stdout] test test_lint_github_actions_format_fail ... ok [INFO] [stdout] test test_lint_github_actions_format_pass ... ok [INFO] [stdout] test test_lint_pass_issue_ref_present ... ok [INFO] [stdout] test test_lint_multiple_files ... ok [INFO] [stdout] test test_lint_pass_message_within_limit ... ok [INFO] [stdout] test test_lint_markdown_format_fail ... ok [INFO] [stdout] test test_lint_markdown_format_pass ... ok [INFO] [stdout] test test_lint_pass_with_author_and_issue ... ok [INFO] [stdout] test test_lint_require_author_ignores_other_tags ... ok [INFO] [stdout] test test_lint_pass_valid_todos ... ok [INFO] [stdout] test test_lint_sarif_format_pass ... ok [INFO] [stdout] test test_lint_pass_author_present ... ok [INFO] [stdout] test test_lint_sarif_format_fail ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s [INFO] [stdout] [INFO] [stderr] Running tests/integration_list.rs (/opt/rustwide/target/debug/deps/integration_list-e591f9268dfb550e) [INFO] [stdout] [INFO] [stdout] running 55 tests [INFO] [stdout] test test_list_detail_full_text_auto_context ... ok [INFO] [stdout] test test_list_detail_default_is_normal ... ok [INFO] [stdout] test test_list_detail_full_json_includes_match_key ... ok [INFO] [stdout] test test_list_context_shows_surrounding_lines ... ok [INFO] [stdout] test test_list_author_and_deadline_in_json ... ok [INFO] [stdout] test test_list_detail_minimal_json_only_core_fields ... ok [INFO] [stdout] test test_list_empty_project ... ok [INFO] [stdout] test test_list_detail_minimal_hides_author_and_issue ... ok [INFO] [stdout] test test_list_filter_composition ... ok [INFO] [stdout] test test_list_filter_author ... ok [INFO] [stdout] test test_list_context_json_includes_context_field ... ok [INFO] [stdout] test test_list_alias_ls ... ok [INFO] [stdout] test test_list_filter_path ... ok [INFO] [stdout] test test_list_deadline_in_json ... ok [INFO] [stdout] test test_list_excludes_ignored_items_by_default ... ok [INFO] [stdout] test test_list_filter_normal_priority ... ok [INFO] [stdout] test test_list_exclude_dirs_config ... ok [INFO] [stdout] test test_list_filter_priority ... ok [INFO] [stdout] test test_list_group_by_dir ... ok [INFO] [stdout] test test_list_full_detail_auto_context_json ... ok [INFO] [stdout] test test_list_group_by_author ... ok [INFO] [stdout] test test_list_finds_todos ... ok [INFO] [stdout] test test_list_group_by_priority ... ok [INFO] [stdout] test test_list_group_by_tag ... ok [INFO] [stdout] test test_list_filters_false_positives ... ok [INFO] [stdout] test test_list_github_actions_format ... ok [INFO] [stdout] test test_list_json_full_detail_has_both_id_and_match_key ... ok [INFO] [stdout] test test_list_ignore_next_line_works_e2e ... ok [INFO] [stdout] test test_list_json_format ... ok [INFO] [stdout] test test_list_group_by_with_json ... ok [INFO] [stdout] test test_list_markdown_format ... ok [INFO] [stdout] test test_list_no_deadline_null_in_json ... ok [INFO] [stdout] test test_list_json_contains_id_field_at_minimal_detail ... ok [INFO] [stdout] test test_list_no_ignored_shows_no_suffix ... ok [INFO] [stdout] test test_list_ignore_strips_marker_from_message ... ok [INFO] [stdout] test test_list_quarter_deadline_in_json ... ok [INFO] [stdout] test test_list_sort_by_tag ... ok [INFO] [stdout] test test_list_show_ignored_with_group_by_tag ... ok [INFO] [stdout] test test_list_multi_language_comments ... ok [INFO] [stdout] test test_list_text_context_lines_with_group_by_tag ... ok [INFO] [stdout] test test_list_limit ... ok [INFO] [stdout] test test_list_sarif_format ... ok [INFO] [stdout] test test_list_sort_by_priority ... ok [INFO] [stdout] test test_list_text_issue_ref_no_double_hash ... ok [INFO] [stdout] test test_list_json_contains_id_field_at_normal_detail ... ok [INFO] [stdout] test test_list_show_ignored_reveals_suppressed ... ok [INFO] [stdout] test test_list_tag_filter ... ok [INFO] [stdout] test test_list_text_search_expired_deadline_in_group_by_tag ... ok [INFO] [stdout] test test_list_text_context_lines ... ok [INFO] [stdout] test test_list_without_context_no_context_lines ... ok [INFO] [stdout] test test_list_text_minimal_suppresses_metadata ... ok [INFO] [stdout] test test_list_text_shows_author_and_issue_ref ... ok [INFO] [stdout] test test_list_text_shows_expired_deadline ... ok [INFO] [stdout] test test_list_text_shows_deadline ... ok [INFO] [stdout] test test_list_with_author_and_issue ... ok [INFO] [stderr] Running tests/integration_relate.rs (/opt/rustwide/target/debug/deps/integration_relate-6f4ed9dca1ffe4e5) [INFO] [stdout] [INFO] [stdout] test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.74s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test test_relate_empty_scan ... ok [INFO] [stdout] test test_relate_cluster_output ... ok [INFO] [stdout] test test_relate_json_format ... ok [INFO] [stdout] test test_relate_keyword_detection ... ok [INFO] [stdout] test test_relate_min_score_threshold ... ok [INFO] [stdout] test test_relate_for_filter ... ok [INFO] [stdout] test test_relate_cross_reference_same_issue ... ok [INFO] [stdout] test test_relate_no_relationships ... ok [INFO] [stdout] test test_relate_proximity_detection ... ok [INFO] [stdout] test test_relate_proximity_threshold_flag ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s [INFO] [stdout] [INFO] [stderr] Running tests/integration_report.rs (/opt/rustwide/target/debug/deps/integration_report-cd1c286e002468a4) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test test_report_contains_all_sections ... ok [INFO] [stdout] test test_report_embedded_json_valid ... ok [INFO] [stdout] test test_report_creates_html_file ... ok [INFO] [stdout] test test_report_custom_output_path ... ok [INFO] [stdout] test test_report_empty_project ... ok [INFO] [stdout] test test_report_default_output_path ... ok [INFO] [stderr] Running tests/integration_search.rs (/opt/rustwide/target/debug/deps/integration_search-6e02e080700c6beb) [INFO] [stdout] test test_report_with_history ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 25 tests [INFO] [stdout] test test_search_alias_s ... ok [INFO] [stdout] test test_search_detail_minimal_json ... ok [INFO] [stdout] test test_search_exact_flag ... ok [INFO] [stdout] test test_search_github_actions_format ... ok [INFO] [stdout] test test_search_detail_minimal_hides_author ... ok [INFO] [stdout] test test_search_issue_ref ... ok [INFO] [stdout] test test_search_author_filter ... ok [INFO] [stdout] test test_search_json_format ... ok [INFO] [stdout] test test_search_no_matches ... ok [INFO] [stdout] test test_search_context_lines ... ok [INFO] [stdout] test test_search_full_detail_auto_context ... ok [INFO] [stdout] test test_search_json_contains_id_field ... ok [INFO] [stdout] test test_search_path_filter ... ok [INFO] [stdout] test test_search_sort_by_priority ... ok [INFO] [stdout] test test_search_markdown_format ... ok [INFO] [stdout] test test_search_basic_substring_case_insensitive ... ok [INFO] [stdout] test test_search_sarif_format ... ok [INFO] [stdout] test test_search_text_context_lines ... ok [INFO] [stdout] test test_search_summary_line_format ... ok [INFO] [stdout] test test_search_sort_by_tag ... ok [INFO] [stdout] test test_search_text_group_by_tag ... ok [INFO] [stdout] test test_search_text_shows_deadline ... ok [INFO] [stdout] test test_search_text_minimal_suppresses_metadata ... ok [INFO] [stdout] test test_search_tag_filter ... ok [INFO] [stdout] test test_search_text_shows_expired_deadline ... ok [INFO] [stderr] Running tests/integration_stats.rs (/opt/rustwide/target/debug/deps/integration_stats-8ee9d44701c1e462) [INFO] [stdout] [INFO] [stdout] test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.47s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test test_stats_bar_chart_present ... ok [INFO] [stdout] test test_stats_with_authors ... ok [INFO] [stdout] test test_stats_hotspot_files ... ok [INFO] [stdout] test test_stats_empty_project ... ok [INFO] [stdout] test test_stats_json_format ... ok [INFO] [stdout] test test_stats_priority_counts ... ok [INFO] [stdout] test test_stats_basic_output ... ok [INFO] [stdout] test test_stats_with_trend_json ... ok [INFO] [stdout] test test_stats_with_trend ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s [INFO] [stdout] [INFO] [stderr] Running tests/integration_tasks.rs (/opt/rustwide/target/debug/deps/integration_tasks-9a4ed6a85fee4fc1) [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test test_tasks_dry_run_outputs_json ... ok [INFO] [stdout] test test_tasks_empty_project ... ok [INFO] [stdout] test test_tasks_filter_by_author ... ok [INFO] [stdout] test test_tasks_filter_by_priority ... ok [INFO] [stdout] test test_tasks_context_in_description ... ok [INFO] [stdout] test test_tasks_output_writes_files ... ok [INFO] [stdout] test test_tasks_priority_ordering ... ok [INFO] [stdout] test test_tasks_subject_action_verb_prefix ... ok [INFO] [stdout] test test_tasks_filter_by_normal_priority ... ok [INFO] [stdout] test test_tasks_metadata_fields ... ok [INFO] [stdout] test test_tasks_filter_by_path ... ok [INFO] [stdout] test test_tasks_invalid_path_glob ... ok [INFO] [stdout] test test_tasks_text_empty_project ... ok [INFO] [stdout] test test_tasks_since_only_new_todos ... ok [INFO] [stdout] test test_tasks_tag_filter ... ok [INFO] [stdout] test test_tasks_text_format ... ok [INFO] [stderr] Running tests/integration_watch.rs (/opt/rustwide/target/debug/deps/integration_watch-9f5a7f87a3746a6e) [INFO] [stdout] test test_tasks_dry_run_skips_file_write ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test test_watch_alias_w ... ok [INFO] [stdout] test test_watch_initial_summary_text ... ok [INFO] [stdout] test test_watch_help ... ok [INFO] [stdout] test test_watch_initial_summary_json ... ok [INFO] [stdout] test test_watch_stopped_message ... ok [INFO] [stdout] test test_watch_max_warning ... ok [INFO] [stdout] test test_watch_detects_file_change ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 14 tests [INFO] [stderr] Running tests/integration_workspace.rs (/opt/rustwide/target/debug/deps/integration_workspace-c87f2926fb8a5c75) [INFO] [stdout] test check_workspace_no_workspace ... ok [INFO] [stdout] test package_flag_invalid_name ... ok [INFO] [stdout] test check_workspace_passes ... ok [INFO] [stdout] test check_workspace_fails_over_max ... ok [INFO] [stdout] test workspace_list_cargo ... ok [INFO] [stdout] test workspace_list_npm ... ok [INFO] [stdout] test workspace_list_json ... ok [INFO] [stdout] test workspace_list_alias ... ok [INFO] [stdout] test workspace_list_no_workspace ... ok [INFO] [stdout] test check_workspace_block_tags ... ok [INFO] [stdout] test workspace_list_go ... ok [INFO] [stdout] test workspace_list_text_shows_package_status ... ok [INFO] [stdout] test list_with_package_flag ... ok [INFO] [stdout] test workspace_list_pnpm ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "f7beeb12a5d2058d5c494b5c78683fa295a32981a81585ce91d99575ae4a8f94", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f7beeb12a5d2058d5c494b5c78683fa295a32981a81585ce91d99575ae4a8f94", kill_on_drop: false }` [INFO] [stdout] f7beeb12a5d2058d5c494b5c78683fa295a32981a81585ce91d99575ae4a8f94