[INFO] fetching crate seshat-detectors 0.8.0...
[INFO] testing seshat-detectors-0.8.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate seshat-detectors 0.8.0 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate seshat-detectors 0.8.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate seshat-detectors 0.8.0
[INFO] tweaked toml for crates.io crate seshat-detectors 0.8.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate seshat-detectors 0.8.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate seshat-detectors 0.8.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded unicode-ident v1.0.26
[INFO] [stderr]   Downloaded proc-macro2 v1.0.107
[INFO] [stderr]   Downloaded thiserror v2.0.21
[INFO] [stderr]   Downloaded quote v1.0.47
[INFO] [stderr]   Downloaded zmij v1.0.23
[INFO] [stderr]   Downloaded seshat-core v0.8.0
[INFO] [stderr]   Downloaded crossbeam-deque v0.8.8
[INFO] [stderr]   Downloaded either v1.18.0
[INFO] [stderr]   Downloaded thiserror-impl v2.0.21
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.21
[INFO] [stderr]   Downloaded crossbeam-utils v0.8.23
[INFO] [stderr]   Downloaded serde_derive v1.0.229
[INFO] [stderr]   Downloaded serde_core v1.0.229
[INFO] [stderr]   Downloaded rayon-core v1.13.0
[INFO] [stderr]   Downloaded serde v1.0.229
[INFO] [stderr]   Downloaded memchr v2.8.3
[INFO] [stderr]   Downloaded serde_json v1.0.151
[INFO] [stderr]   Downloaded rayon v1.12.0
[INFO] [stderr]   Downloaded syn v2.0.119
[INFO] [stderr]   Downloaded syn v3.0.6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453
[INFO] running `Command { std: "docker" "start" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling unicode-ident v1.0.26
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.21
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling crossbeam-deque v0.8.8
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling either v1.18.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling syn v3.0.6
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling seshat-core v0.8.0
[INFO] [stderr]    Compiling seshat-detectors v0.8.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.07s
[INFO] running `Command { std: "docker" "inspect" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling seshat-core v0.8.0
[INFO] [stderr]    Compiling seshat-detectors v0.8.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 9.24s
[INFO] running `Command { std: "docker" "inspect" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/seshat_detectors-9917ea942a889b23)
[INFO] [stdout] 
[INFO] [stdout] running 528 tests
[INFO] [stdout] test confidence::tests::aggregate_collapses_whitespace_only_singleton_to_composite ... ok
[INFO] [stdout] test confidence::tests::aggregate_groups_by_detector_and_description ... ok
[INFO] [stdout] test confidence::tests::aggregate_collapses_empty_snippet_singleton_to_composite ... ok
[INFO] [stdout] test confidence::tests::composite_all_markers_under_cap_discloses_marker_status ... ok
[INFO] [stdout] test confidence::tests::composite_header_calls_out_omitted_init_py_markers ... ok
[INFO] [stdout] test confidence::tests::composite_header_does_not_lie_about_informative_when_all_markers ... ok
[INFO] [stdout] test confidence::tests::composite_header_says_violate_when_no_one_follows ... ok
[INFO] [stdout] test confidence::tests::composite_header_shows_split_for_mixed_bucket ... ok
[INFO] [stdout] test confidence::tests::composite_header_verb_all_conforming_plural ... ok
[INFO] [stdout] test confidence::tests::composite_header_verb_all_conforming_singular ... ok
[INFO] [stdout] test confidence::tests::aggregate_empty_findings ... ok
[INFO] [stdout] test confidence::tests::aggregate_dedups_evidence_by_file_line_endline ... ok
[INFO] [stdout] test confidence::tests::aggregate_computes_trend_from_file_dates ... ok
[INFO] [stdout] test confidence::tests::composite_header_verb_all_violating_singular ... ok
[INFO] [stdout] test confidence::tests::aggregate_does_not_collapse_anchored_evidence ... ok
[INFO] [stdout] test confidence::tests::composite_header_verb_mixed_shows_follow_violate_split ... ok
[INFO] [stdout] test confidence::tests::composite_lists_every_row_when_under_cap ... ok
[INFO] [stdout] test confidence::tests::composite_renders_multi_line_import_snippet_as_first_line ... ok
[INFO] [stdout] test confidence::tests::composite_descriptor_takes_first_line_only ... ok
[INFO] [stdout] test confidence::tests::aggregate_collapses_multi_file_file_level_evidence_into_one_composite_row ... ok
[INFO] [stdout] test confidence::tests::confidence_partial ... ok
[INFO] [stdout] test confidence::tests::confidence_zero_total_returns_zero ... ok
[INFO] [stdout] test confidence::tests::aggregate_preserves_line0_snippet ... ok
[INFO] [stdout] test confidence::tests::ext_data_includes_trend_and_adoption_rate ... ok
[INFO] [stdout] test confidence::tests::ext_data_merges_with_existing ... ok
[INFO] [stdout] test confidence::tests::longest_common_prefix_caps_at_directory_depth ... ok
[INFO] [stdout] test confidence::tests::aggregate_preserves_singleton_with_useful_descriptor ... ok
[INFO] [stdout] test confidence::tests::longest_common_prefix_excludes_filename_and_stops_at_divergence ... ok
[INFO] [stdout] test confidence::tests::aggregate_lays_out_mixed_evidence_as_anchored_prefix_then_filelevel_tail ... ok
[INFO] [stdout] test confidence::tests::composite_descriptor_passes_through_single_line ... ok
[INFO] [stdout] test confidence::tests::composite_truncates_with_summary_when_over_cap ... ok
[INFO] [stdout] test confidence::tests::select_diverse_sample_drops_python_init_markers ... ok
[INFO] [stdout] test confidence::tests::confidence_none_adopted ... ok
[INFO] [stdout] test confidence::tests::select_diverse_sample_falls_back_when_all_rows_are_markers ... ok
[INFO] [stdout] test confidence::tests::aggregate_single_finding ... ok
[INFO] [stdout] test confidence::tests::composite_descriptor_returns_none_for_empty_or_whitespace ... ok
[INFO] [stdout] test confidence::tests::select_diverse_sample_returns_input_when_under_cap ... ok
[INFO] [stdout] test confidence::tests::composite_round_robins_across_top_level_subtrees ... ok
[INFO] [stdout] test confidence::tests::trend_364_days_ago_is_stable ... ok
[INFO] [stdout] test confidence::tests::confidence_all_adopted ... ok
[INFO] [stdout] test confidence::tests::trend_365_days_ago_is_declining ... ok
[INFO] [stdout] test confidence::tests::trend_89_days_ago_is_rising ... ok
[INFO] [stdout] test confidence::tests::trend_366_days_ago_is_declining ... ok
[INFO] [stdout] test confidence::tests::trend_all_none_returns_unknown ... ok
[INFO] [stdout] test confidence::tests::trend_90_days_ago_is_stable ... ok
[INFO] [stdout] test confidence::tests::trend_empty_dates_returns_unknown ... ok
[INFO] [stdout] test confidence::tests::composite_header_verb_all_violating_plural ... ok
[INFO] [stdout] test confidence::tests::trend_ignores_none_dates ... ok
[INFO] [stdout] test confidence::tests::composite_listing_marks_non_conforming_rows ... ok
[INFO] [stdout] test confidence::tests::trend_p90_with_multiple_dates ... ok
[INFO] [stdout] test confidence::tests::aggregate_keeps_distinct_evidence ... ok
[INFO] [stdout] test confidence::tests::weight_at_strong_boundary_is_moderate ... ok
[INFO] [stdout] test confidence::tests::weight_moderate_above_threshold ... ok
[INFO] [stdout] test confidence::tests::weight_one_is_strong ... ok
[INFO] [stdout] test confidence::tests::weight_at_moderate_boundary_is_weak ... ok
[INFO] [stdout] test confidence::tests::weight_weak_above_threshold ... ok
[INFO] [stdout] test confidence::tests::weight_zero_is_info ... ok
[INFO] [stdout] test dependency_usage::tests::canonical_is_most_used_in_domain ... ok
[INFO] [stdout] test dependency_usage::tests::classify_domain_python_database ... ok
[INFO] [stdout] test dependency_usage::tests::classify_domain_rust_http ... ok
[INFO] [stdout] test confidence::tests::weight_at_weak_boundary_is_info ... ok
[INFO] [stdout] test dependency_usage::tests::classify_domain_ts_testing ... ok
[INFO] [stdout] test dependency_usage::tests::classify_domain_unknown_returns_none ... ok
[INFO] [stdout] test dependency_usage::tests::cross_file_empty_files ... ok
[INFO] [stdout] test dependency_usage::tests::empty_dependencies_produces_no_findings ... ok
[INFO] [stdout] test dependency_usage::tests::evidence_includes_import_paths ... ok
[INFO] [stdout] test dependency_usage::tests::canonical_lib_finding_skipped_when_dep_has_no_anchor ... ok
[INFO] [stdout] test confidence::tests::weight_strong_above_threshold ... ok
[INFO] [stdout] test dependency_usage::tests::classify_domain_rust_logging ... ok
[INFO] [stdout] test dependency_usage::tests::fallback_evidence_zeroed_by_snippet_contains_filter ... ok
[INFO] [stdout] test dependency_usage::tests::detector_name ... ok
[INFO] [stdout] test dependency_usage::tests::dependency_usage_detector_produces_call_site_snippets_with_context ... ok
[INFO] [stdout] test confidence::tests::trend_single_date_rising ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_db_dep_by_name ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_finding_uses_observation_nature ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_http_dep_by_name ... ok
[INFO] [stdout] test dependency_usage::tests::file_module_path_typescript ... ok
[INFO] [stdout] test confidence::tests::trend_p90_mostly_recent ... ok
[INFO] [stdout] test dependency_usage::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test dependency_usage::tests::file_module_path_python ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_multiple_unknown_deps ... ok
[INFO] [stdout] test dependency_usage::tests::file_module_path_rust ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_test_dep_by_name ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_log_dep_by_name ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_unrelated_package_returns_none ... ok
[INFO] [stdout] test confidence::tests::weight_below_weak_threshold_is_info ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_case_insensitive ... ok
[INFO] [stdout] test dependency_usage::tests::is_internal_python ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_cli_dep_by_name ... ok
[INFO] [stdout] test dependency_usage::tests::is_internal_rust ... ok
[INFO] [stdout] test dependency_usage::tests::canonical_lib_finding_falls_back_to_import_line ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_not_emitted_for_known_package ... ok
[INFO] [stdout] test dependency_usage::tests::javascript_domain_classification ... ok
[INFO] [stdout] test dependency_usage::tests::python_domain_classification ... ok
[INFO] [stdout] test dependency_usage::tests::normalize_path_resolves_dot_dot ... ok
[INFO] [stdout] test dependency_usage::tests::root_package_js_ts ... ok
[INFO] [stdout] test dependency_usage::tests::root_package_python ... ok
[INFO] [stdout] test dependency_usage::tests::reqwest_import_shows_call_site_evidence ... ok
[INFO] [stdout] test dependency_usage::tests::root_package_rust ... ok
[INFO] [stdout] test dependency_usage::tests::is_internal_ts_js ... ok
[INFO] [stdout] test dependency_usage::tests::python_wrapper_pattern_detected ... ok
[INFO] [stdout] test dependency_usage::tests::serde_derive_macro_used_as_evidence ... ok
[INFO] [stdout] test dependency_usage::tests::single_file_no_wrapper_detection ... ok
[INFO] [stdout] test dependency_usage::tests::supports_all_languages ... ok
[INFO] [stdout] test dependency_usage::tests::multiple_domains_detected_independently ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_known_package_returns_none ... ok
[INFO] [stdout] test dependency_usage::tests::canonical_lib_finding_paired_with_anchor_is_emitted ... ok
[INFO] [stdout] test dependency_usage::tests::no_dead_dependency_observations_produced ... ok
[INFO] [stdout] test dependency_usage::tests::typescript_wrapper_pattern_detected ... ok
[INFO] [stdout] test dependency_usage::tests::unscoped_call_sites_contaminate_dependency_findings ... ok
[INFO] [stdout] test dependency_usage::tests::unknown_package_produces_no_domain_finding ... ok
[INFO] [stdout] test dependency_usage::tests::wrapper_and_violators_aggregate_into_single_bucket ... ok
[INFO] [stdout] test error_handling::tests::empty_rust_file_produces_no_findings ... ok
[INFO] [stdout] test dependency_usage::tests::wrapper_file_not_flagged_as_violator ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_serialization_dep_by_name ... ok
[INFO] [stdout] test error_handling::tests::detector_name ... ok
[INFO] [stdout] test error_handling::tests::js_detects_error_handler_functions ... ok
[INFO] [stdout] test dependency_usage::tests::wrapper_minority_no_convention ... ok
[INFO] [stdout] test error_handling::tests::py_detects_builtin_exception_only ... ok
[INFO] [stdout] test error_handling::tests::py_detects_custom_exception_hierarchy ... ok
[INFO] [stdout] test error_handling::tests::py_empty_file_produces_no_findings ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_anyhow ... ok
[INFO] [stdout] test dependency_usage::tests::heuristic_validation_dep_by_name ... ok
[INFO] [stdout] test error_handling::tests::empty_py_file_produces_no_findings ... ok
[INFO] [stdout] test dependency_usage::tests::typescript_testing_library_detected ... ok
[INFO] [stdout] test error_handling::tests::empty_ts_file_produces_no_findings ... ok
[INFO] [stdout] test dependency_usage::tests::two_http_libs_in_same_file_no_conflict_observation ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_from_impls_for_error_types ... ok
[INFO] [stdout] test error_handling::tests::empty_js_file_produces_no_findings ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_manual_error_trait_impl ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_snafu ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_error_stack ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_context_wrapping ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_eyre ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_miette ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_custom_error_enums ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_displaydoc ... ok
[INFO] [stdout] test dependency_usage::tests::no_wrapper_no_convention ... ok
[INFO] [stdout] test dependency_usage::tests::single_rust_http_library_is_canonical ... ok
[INFO] [stdout] test error_handling::tests::rust_thiserror_shows_err_construction_call_site ... ok
[INFO] [stdout] test error_handling::tests::supports_all_languages ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_thiserror ... ok
[INFO] [stdout] test error_handling::tests::ts_detects_custom_error_classes ... ok
[INFO] [stdout] test error_handling::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test error_handling::tests::rust_flags_thiserror_and_anyhow_conflict ... ok
[INFO] [stdout] test error_handling::tests::js_detects_custom_error_classes ... ok
[INFO] [stdout] test error_handling::tests::py_detects_contextlib_usage ... ok
[INFO] [stdout] test error_handling::tests::rust_heuristic_derive_error_without_known_lib ... ok
[INFO] [stdout] test error_handling::tests::py_detects_error_functions ... ok
[INFO] [stdout] test error_handling::tests::rust_detects_color_eyre ... ok
[INFO] [stdout] test error_handling::tests::rust_thiserror_preferred_over_anyhow_detection ... ok
[INFO] [stdout] test error_handling::tests::ts_detects_result_either_pattern ... ok
[INFO] [stdout] test export_patterns::tests::js_no_exports_no_module_exports ... ok
[INFO] [stdout] test error_handling::tests::ts_no_findings_for_non_error_classes ... ok
[INFO] [stdout] test export_patterns::tests::js_barrel_exports_index_file ... ok
[INFO] [stdout] test export_patterns::tests::js_pure_cjs_file ... ok
[INFO] [stdout] test export_patterns::tests::js_default_exports ... ok
[INFO] [stdout] test export_patterns::tests::js_mixed_default_and_named ... ok
[INFO] [stdout] test export_patterns::tests::js_mixed_esm_and_cjs_file ... ok
[INFO] [stdout] test error_handling::tests::ts_detects_type_guard_functions ... ok
[INFO] [stdout] test error_handling::tests::unscoped_call_sites_contaminate_rust_error_handling ... ok
[INFO] [stdout] test export_patterns::tests::detect_dispatches_to_correct_language ... ok
[INFO] [stdout] test export_patterns::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test export_patterns::tests::detector_name ... ok
[INFO] [stdout] test export_patterns::tests::evidence_capped_at_five_entries ... ok
[INFO] [stdout] test export_patterns::tests::js_mixed_esm_with_require_calls_only ... ok
[INFO] [stdout] test export_patterns::tests::js_module_exports_commonjs ... ok
[INFO] [stdout] test export_patterns::tests::js_named_exports ... ok
[INFO] [stdout] test export_patterns::tests::js_pure_esm_file ... ok
[INFO] [stdout] test export_patterns::tests::python_all_export_pattern ... ok
[INFO] [stdout] test export_patterns::tests::python_exports_without_all ... ok
[INFO] [stdout] test export_patterns::tests::python_init_with_all_and_exports ... ok
[INFO] [stdout] test export_patterns::tests::js_unknown_module_system_no_finding ... ok
[INFO] [stdout] test export_patterns::tests::python_init_file_reexport ... ok
[INFO] [stdout] test export_patterns::tests::python_no_exports_no_findings ... ok
[INFO] [stdout] test export_patterns::tests::rust_mod_declarations_in_lib ... ok
[INFO] [stdout] test export_patterns::tests::rust_pub_use_reexports ... ok
[INFO] [stdout] test export_patterns::tests::rust_mod_declarations_in_regular_file ... ok
[INFO] [stdout] test export_patterns::tests::rust_pub_visibility_pattern ... ok
[INFO] [stdout] test export_patterns::tests::supported_languages_all ... ok
[INFO] [stdout] test export_patterns::tests::ts_mixed_default_and_named ... ok
[INFO] [stdout] test export_patterns::tests::rust_no_public_items_no_findings ... ok
[INFO] [stdout] test export_patterns::tests::ts_no_exports_produces_no_findings ... ok
[INFO] [stdout] test file_structure::tests::config_at_root ... ok
[INFO] [stdout] test export_patterns::tests::ts_barrel_exports_via_path ... ok
[INFO] [stdout] test file_structure::tests::all_findings_have_correct_detector_name ... ok
[INFO] [stdout] test export_patterns::tests::ts_named_exports_only ... ok
[INFO] [stdout] test export_patterns::tests::ts_default_exports_only ... ok
[INFO] [stdout] test export_patterns::tests::ts_barrel_exports_via_ir_flag ... ok
[INFO] [stdout] test file_structure::tests::by_layer_wins_over_by_feature ... ok
[INFO] [stdout] test export_patterns::tests::ts_type_only_exports ... ok
[INFO] [stdout] test file_structure::tests::by_type_wins_over_by_feature ... ok
[INFO] [stdout] test file_structure::tests::config_in_config_dir ... ok
[INFO] [stdout] test file_structure::tests::cargo_toml_at_root ... ok
[INFO] [stdout] test file_structure::tests::config_nested_deeply_not_at_root_or_config_dir ... ok
[INFO] [stdout] test file_structure::tests::crates_directory_with_feature ... ok
[INFO] [stdout] test file_structure::tests::deeply_nested_by_type ... ok
[INFO] [stdout] test file_structure::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test file_structure::tests::detector_name ... ok
[INFO] [stdout] test file_structure::tests::detects_by_feature_orders_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_by_feature_under_lib ... ok
[INFO] [stdout] test file_structure::tests::detects_by_layer_application_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_by_feature_users_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_by_type_controllers_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_by_layer_domain_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_by_type_handlers_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_by_layer_infrastructure_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_lib_directory ... ok
[INFO] [stdout] test file_structure::tests::detects_by_layer_ports_dir ... ok
[INFO] [stdout] test file_structure::tests::empty_path_no_findings ... ok
[INFO] [stdout] test file_structure::tests::eslint_config_at_root ... ok
[INFO] [stdout] test file_structure::tests::no_feature_for_hidden_dir ... ok
[INFO] [stdout] test file_structure::tests::evidence_has_file_path ... ok
[INFO] [stdout] test file_structure::tests::dockerfile_at_root ... ok
[INFO] [stdout] test file_structure::tests::path_components_root_file ... ok
[INFO] [stdout] test file_structure::tests::path_components_simple ... ok
[INFO] [stdout] test file_structure::tests::pyproject_toml_at_root ... ok
[INFO] [stdout] test file_structure::tests::supports_all_languages ... ok
[INFO] [stdout] test file_structure::tests::does_not_emit_uses_tests_directory_when_tests_is_the_only_common_dir ... ok
[INFO] [stdout] test file_structure::tests::path_components_deep ... ok
[INFO] [stdout] test import_organization::tests::classify_python_internal ... ok
[INFO] [stdout] test import_organization::tests::classify_python_stdlib ... ok
[INFO] [stdout] test file_structure::tests::detects_by_type_middleware_dir ... ok
[INFO] [stdout] test file_structure::tests::detects_src_directory ... ok
[INFO] [stdout] test import_organization::tests::all_same_group_no_grouping_finding ... ok
[INFO] [stdout] test file_structure::tests::detects_by_type_models_dir ... ok
[INFO] [stdout] test file_structure::tests::non_config_file_no_config_finding ... ok
[INFO] [stdout] test file_structure::tests::makefile_at_root ... ok
[INFO] [stdout] test file_structure::tests::package_json_at_root ... ok
[INFO] [stdout] test import_organization::tests::classify_python_external ... ok
[INFO] [stdout] test file_structure::tests::detects_by_type_services_dir ... ok
[INFO] [stdout] test import_organization::tests::javascript_module_exports_detection ... ok
[INFO] [stdout] test import_organization::tests::mixed_ts_groups_ordered_with_separation ... ok
[INFO] [stdout] test import_organization::tests::python_bare_import_preference ... ok
[INFO] [stdout] test import_organization::tests::classify_rust_internal ... ok
[INFO] [stdout] test file_structure::tests::works_for_all_languages ... ok
[INFO] [stdout] test import_organization::tests::classify_rust_external ... ok
[INFO] [stdout] test import_organization::tests::classify_rust_stdlib ... ok
[INFO] [stdout] test import_organization::tests::classify_ts_external ... ok
[INFO] [stdout] test import_organization::tests::classify_ts_internal ... ok
[INFO] [stdout] test import_organization::tests::classify_ts_node_builtin ... ok
[INFO] [stdout] test import_organization::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test import_organization::tests::python_canonical_grouping ... ok
[INFO] [stdout] test import_organization::tests::detector_name ... ok
[INFO] [stdout] test import_organization::tests::empty_imports_produces_no_findings ... ok
[INFO] [stdout] test import_organization::tests::follows_convention_correctly_set ... ok
[INFO] [stdout] test import_organization::tests::import_grouping_description_is_subset_independent ... ok
[INFO] [stdout] test file_structure::tests::detects_utils_directory ... ok
[INFO] [stdout] test file_structure::tests::falls_back_to_non_test_common_dir_when_path_contains_tests ... ok
[INFO] [stdout] test import_organization::tests::rust_canonical_order_with_separation ... ok
[INFO] [stdout] test import_organization::tests::rust_use_grouping_statistics ... ok
[INFO] [stdout] test import_organization::tests::unordered_imports_remain_a_separate_observation ... ok
[INFO] [stdout] test import_organization::tests::typescript_barrel_export_detection ... ok
[INFO] [stdout] test logging_observability::tests::classify_rust_logging_coverage ... ok
[INFO] [stdout] test import_organization::tests::python_from_import_preference ... ok
[INFO] [stdout] test import_organization::tests::rust_unordered_imports ... ok
[INFO] [stdout] test import_organization::tests::rust_ordered_without_separation ... ok
[INFO] [stdout] test import_organization::tests::typescript_type_only_interleaved ... ok
[INFO] [stdout] test logging_observability::tests::heuristic_api_shape_log_level_imports ... ok
[INFO] [stdout] test logging_observability::tests::heuristic_name_based_matches_unknown_logging_names ... ok
[INFO] [stdout] test logging_observability::tests::empty_file_no_findings ... ok
[INFO] [stdout] test logging_observability::tests::heuristic_name_based_dep_with_log_in_name ... ok
[INFO] [stdout] test logging_observability::tests::heuristic_name_based_observability_in_name ... ok
[INFO] [stdout] test logging_observability::tests::evidence_capped_at_max ... ok
[INFO] [stdout] test import_organization::tests::single_import_produces_no_findings ... ok
[INFO] [stdout] test logging_observability::tests::classify_js_ts_logging_coverage ... ok
[INFO] [stdout] test logging_observability::tests::heuristic_api_shape_insufficient_names ... ok
[INFO] [stdout] test logging_observability::tests::js_winston_detected ... ok
[INFO] [stdout] test logging_observability::tests::js_conflicting_libraries ... ok
[INFO] [stdout] test logging_observability::tests::no_heuristic_for_unrelated_dep ... ok
[INFO] [stdout] test import_organization::tests::snippet_header_carries_order_qualifier_for_review ... ok
[INFO] [stdout] test logging_observability::tests::classify_python_logging_coverage ... ok
[INFO] [stdout] test logging_observability::tests::detector_name ... ok
[INFO] [stdout] test logging_observability::tests::no_logging_no_findings ... ok
[INFO] [stdout] test logging_observability::tests::python_conflicting_libraries ... ok
[INFO] [stdout] test logging_observability::tests::python_loguru_detected ... ok
[INFO] [stdout] test logging_observability::tests::python_stdlib_logging_via_import ... ok
[INFO] [stdout] test logging_observability::tests::python_import_and_dep_deduplication ... ok
[INFO] [stdout] test import_organization::tests::typescript_type_only_grouped ... ok
[INFO] [stdout] test logging_observability::tests::logging_detector_produces_call_site_snippets_with_context ... ok
[INFO] [stdout] test import_organization::tests::supports_all_languages ... ok
[INFO] [stdout] test logging_observability::tests::python_stdlib_unstructured ... ok
[INFO] [stdout] test logging_observability::tests::python_structlog_structured ... ok
[INFO] [stdout] test logging_observability::tests::heuristic_name_based_does_not_double_count_known_lib ... ok
[INFO] [stdout] test logging_observability::tests::rust_tracing_subscriber_classified ... ok
[INFO] [stdout] test logging_observability::tests::rust_log_unstructured ... ok
[INFO] [stdout] test logging_observability::tests::supports_all_languages ... ok
[INFO] [stdout] test logging_observability::tests::rust_tracing_library_detected ... ok
[INFO] [stdout] test logging_observability::tests::heuristic_name_based_import_with_tracing_in_name ... ok
[INFO] [stdout] test logging_observability::tests::ts_bunyan_detected ... ok
[INFO] [stdout] test logging_observability::tests::rust_tracing_structured ... ok
[INFO] [stdout] test logging_observability::tests::rust_conflicting_libraries_flagged ... ok
[INFO] [stdout] test logging_observability::tests::ts_pino_http_classified ... ok
[INFO] [stdout] test logging_observability::tests::rust_log_library_detected ... ok
[INFO] [stdout] test logging_observability::tests::ts_winston_import_shows_logger_info_call_site ... ok
[INFO] [stdout] test naming::tests::classify_empty_and_underscore_only ... ok
[INFO] [stdout] test naming::tests::classify_pascal_case ... ok
[INFO] [stdout] test logging_observability::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test logging_observability::tests::known_library_takes_priority_over_heuristic ... ok
[INFO] [stdout] test naming::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test logging_observability::tests::rust_tracing_detector_produces_call_site_evidence ... ok
[INFO] [stdout] test naming::tests::conforming_and_non_conforming_aggregate_into_single_bucket ... ok
[INFO] [stdout] test naming::tests::conforming_files_aggregate_into_one_description ... ok
[INFO] [stdout] test logging_observability::tests::ts_pino_structured ... ok
[INFO] [stdout] test logging_observability::tests::rust_slog_detected ... ok
[INFO] [stdout] test naming::tests::detector_name_is_correct ... ok
[INFO] [stdout] test naming::tests::conforming_ts_files_use_kebab_case_description ... ok
[INFO] [stdout] test naming::tests::classify_single_word ... ok
[INFO] [stdout] test naming::tests::classify_snake_case ... ok
[INFO] [stdout] test naming::tests::classify_with_leading_underscores ... ok
[INFO] [stdout] test logging_observability::tests::unscoped_call_sites_contaminate_rust_logging ... ok
[INFO] [stdout] test naming::tests::classify_camel_case ... ok
[INFO] [stdout] test naming::tests::function_naming_descriptions_are_language_wide_not_per_file_percent ... ok
[INFO] [stdout] test naming::tests::mixed_naming_styles_in_typescript ... ok
[INFO] [stdout] test naming::tests::detector_supports_all_languages ... ok
[INFO] [stdout] test naming::tests::js_camel_case_functions_follow_convention ... ok
[INFO] [stdout] test naming::tests::js_camel_case_params_follow_convention ... ok
[INFO] [stdout] test naming::tests::classify_kebab_case ... ok
[INFO] [stdout] test naming::tests::classify_screaming_snake ... ok
[INFO] [stdout] test naming::tests::js_snake_case_params_deviate ... ok
[INFO] [stdout] test naming::tests::no_params_produces_no_param_finding ... ok
[INFO] [stdout] test naming::tests::non_conforming_file_shares_description_with_conforming ... ok
[INFO] [stdout] test naming::tests::naming_descriptions_are_stable_across_languages ... ok
[INFO] [stdout] test naming::tests::param_evidence_capped_at_10 ... ok
[INFO] [stdout] test naming::tests::python_camel_case_functions_deviate ... ok
[INFO] [stdout] test naming::tests::parameter_naming_dedups_by_function_line ... ok
[INFO] [stdout] test naming::tests::parameter_naming_one_evidence_per_function ... ok
[INFO] [stdout] test naming::tests::python_camel_case_params_deviate ... ok
[INFO] [stdout] test naming::tests::mixed_naming_styles_in_python ... ok
[INFO] [stdout] test naming::tests::rust_camel_case_params_deviate ... ok
[INFO] [stdout] test naming::tests::rust_file_naming_snake_case ... ok
[INFO] [stdout] test naming::tests::python_snake_case_params_follow_convention ... ok
[INFO] [stdout] test naming::tests::rust_camel_case_functions_deviate ... ok
[INFO] [stdout] test naming::tests::rust_pascal_case_types_follow_convention ... ok
[INFO] [stdout] test naming::tests::empty_file_produces_no_findings ... ok
[INFO] [stdout] test naming::tests::rust_snake_case_params_follow_convention ... ok
[INFO] [stdout] test logging_observability::tests::ts_winston_detected ... ok
[INFO] [stdout] test naming::tests::file_naming_nonconforming_snippet_contains_stem_and_case ... ok
[INFO] [stdout] test naming::tests::rust_snake_case_functions_follow_convention ... ok
[INFO] [stdout] test naming::tests::python_pascal_case_classes_follow_convention ... ok
[INFO] [stdout] test naming::tests::file_naming_snippet_survives_detect_with_source ... ok
[INFO] [stdout] test naming::tests::function_naming_dedups_repeated_function_entries ... ok
[INFO] [stdout] test naming::tests::single_upper_word_matches_pascal_and_screaming ... ok
[INFO] [stdout] test naming::tests::ts_camel_case_functions_follow_convention ... ok
[INFO] [stdout] test naming::tests::single_word_file_uses_expected_pattern_in_description ... ok
[INFO] [stdout] test naming::tests::single_word_params_treated_as_conforming ... ok
[INFO] [stdout] test naming::tests::ts_camel_case_params_follow_convention ... ok
[INFO] [stdout] test naming::tests::ts_mixed_function_naming ... ok
[INFO] [stdout] test naming::tests::python_snake_case_functions_follow_convention ... ok
[INFO] [stdout] test naming::tests::ts_mixed_param_naming ... ok
[INFO] [stdout] test naming::tests::mixed_naming_styles_in_rust ... ok
[INFO] [stdout] test naming::tests::ts_pascal_case_types_follow_convention ... ok
[INFO] [stdout] test naming::tests::rust_special_files_excluded ... ok
[INFO] [stdout] test naming::tests::screaming_snake_constants_detected ... ok
[INFO] [stdout] test naming::tests::ts_snake_case_file_deviates ... ok
[INFO] [stdout] test naming::tests::python_init_file_excluded ... ok
[INFO] [stdout] test naming::tests::single_lower_word_matches_expected_conventions ... ok
[INFO] [stdout] test naming::tests::single_word_function_treated_as_conforming ... ok
[INFO] [stdout] test naming::tests::ts_kebab_case_file_follows_convention ... ok
[INFO] [stdout] test pipeline::tests::all_detectors_returns_vec ... ok
[INFO] [stdout] test pipeline::tests::internal_names_handles_windows_paths_in_multi_segment_root ... ok
[INFO] [stdout] test naming::tests::ts_snake_case_params_deviate ... ok
[INFO] [stdout] test pipeline::tests::cross_file_enrichment_handles_partial_source_map ... ok
[INFO] [stdout] test pipeline::tests::heuristic_subject_extraction ... ok
[INFO] [stdout] test pipeline::tests::cross_file_finding_gets_snippet_from_source_map ... ok
[INFO] [stdout] test pipeline::tests::cross_file_finding_leaves_empty_snippet_when_source_absent ... ok
[INFO] [stdout] test pipeline::tests::internal_names_includes_rust_keywords_for_rust_project ... ok
[INFO] [stdout] test pipeline::tests::internal_names_empty_root_harvests_from_top ... ok
[INFO] [stdout] test pipeline::tests::heuristic_subject_anchored_on_marker_not_last_colon ... ok
[INFO] [stdout] test pipeline::tests::internal_names_collects_mod_declarations ... ok
[INFO] [stdout] test pipeline::tests::internal_names_collects_workspace_crates_from_paths ... ok
[INFO] [stdout] test pipeline::tests::internal_names_captures_single_subdir_python_package ... ok
[INFO] [stdout] test naming::tests::type_and_parameter_naming_descriptions_are_language_wide ... ok
[INFO] [stdout] test pipeline::tests::internal_names_collects_python_top_level_packages ... ok
[INFO] [stdout] test pipeline::tests::internal_names_captures_single_src_package ... ok
[INFO] [stdout] test pipeline::tests::internal_names_omits_rust_keywords_for_non_rust_project ... ok
[INFO] [stdout] test pipeline::tests::internal_names_works_on_absolute_paths ... ok
[INFO] [stdout] test pipeline::tests::pipeline_uses_detect_when_source_absent ... ok
[INFO] [stdout] test pipeline::tests::pipeline_uses_detect_with_source_when_source_present ... ok
[INFO] [stdout] test pipeline::tests::internal_names_no_phantom_substring_prefix ... ok
[INFO] [stdout] test pipeline::tests::pipeline_empty_file_list ... ok
[INFO] [stdout] test pipeline::tests::internal_names_skips_vendored_directories ... ok
[INFO] [stdout] test pipeline::tests::pipeline_runs_rust_detector_on_rust_file ... ok
[INFO] [stdout] test pipeline::tests::pipeline_no_detectors ... ok
[INFO] [stdout] test pipeline::tests::pipeline_runs_detector_on_file ... ok
[INFO] [stdout] test pipeline::tests::run_detectors_drops_heuristic_for_internal_workspace_crate ... ok
[INFO] [stdout] test pipeline::tests::progress_callback_receives_correct_values ... ok
[INFO] [stdout] test pipeline::tests::package_is_internal_handles_paths_and_normalisation ... ok
[INFO] [stdout] test pipeline::tests::pipeline_skips_unsupported_language ... ok
[INFO] [stdout] test pipeline::tests::pipeline_processes_multiple_files ... ok
[INFO] [stdout] test pipeline::tests::run_detectors_keeps_non_heuristic_findings ... ok
[INFO] [stdout] test pipeline::tests::internal_names_single_python_file_deep_path_captures_every_directory ... ok
[INFO] [stdout] test pipeline::tests::strip_path_prefix_accepts_mixed_separators_in_multi_segment_root ... ok
[INFO] [stdout] test pipeline::tests::strip_path_prefix_rejects_partial_segment_match ... ok
[INFO] [stdout] test snippet::tests::last_line ... ok
[INFO] [stdout] test snippet::tests::line_start_equals_clamped_end_returns_empty ... ok
[INFO] [stdout] test snippet::tests::single_line ... ok
[INFO] [stdout] test snippet::tests::max_lines_zero_returns_empty ... ok
[INFO] [stdout] test snippet::tests::utf8_multibyte_no_panic ... ok
[INFO] [stdout] test test_patterns::tests::classify_js_ts_test_frameworks ... ok
[INFO] [stdout] test test_patterns::tests::classify_python_test_frameworks ... ok
[INFO] [stdout] test test_patterns::tests::config_file_conftest_pytest_detected ... ok
[INFO] [stdout] test test_patterns::tests::config_file_vitest_detected ... ok
[INFO] [stdout] test test_patterns::tests::config_file_jest_detected ... ok
[INFO] [stdout] test snippet::tests::empty_source_returns_empty ... ok
[INFO] [stdout] test snippet::tests::line_greater_than_end_line_returns_empty ... ok
[INFO] [stdout] test test_patterns::tests::config_file_non_test_file_returns_none ... ok
[INFO] [stdout] test snippet::tests::end_beyond_eof_clamped ... ok
[INFO] [stdout] test snippet::tests::line_zero_returns_empty ... ok
[INFO] [stdout] test snippet::tests::max_lines_truncation ... ok
[INFO] [stdout] test test_patterns::tests::detect_with_source_sets_real_snippet ... ok
[INFO] [stdout] test test_patterns::tests::detector_name ... ok
[INFO] [stdout] test test_patterns::tests::empty_file_no_findings ... ok
[INFO] [stdout] test test_patterns::tests::evidence_capped_at_max ... ok
[INFO] [stdout] test pipeline::tests::segment_after_accepts_windows_separators ... ok
[INFO] [stdout] test test_patterns::tests::heuristic_assert_dep_detected ... ok
[INFO] [stdout] test pipeline::tests::internal_names_single_python_file_captures_parent_directories ... ok
[INFO] [stdout] test pipeline::tests::segment_after_does_not_abort_on_first_terminal_marker ... ok
[INFO] [stdout] test snippet::tests::first_line ... ok
[INFO] [stdout] test test_patterns::tests::conftest_py_emits_observation_finding ... ok
[INFO] [stdout] test snippet::tests::normal_range ... ok
[INFO] [stdout] test test_patterns::tests::heuristic_mock_dep_detected ... ok
[INFO] [stdout] test test_patterns::tests::heuristic_spec_import_detected ... ok
[INFO] [stdout] test test_patterns::tests::heuristic_test_dep_detected ... ok
[INFO] [stdout] test test_patterns::tests::is_heuristic_test_dep_helper ... ok
[INFO] [stdout] test test_patterns::tests::js_separate_test_dir ... ok
[INFO] [stdout] test test_patterns::tests::known_framework_takes_priority_over_heuristic ... ok
[INFO] [stdout] test test_patterns::tests::known_test_framework_not_flagged_as_heuristic ... ok
[INFO] [stdout] test test_patterns::tests::non_test_file_produces_no_findings ... ok
[INFO] [stdout] test test_patterns::tests::python_colocated_test_file ... ok
[INFO] [stdout] test test_patterns::tests::python_pytest_fixtures_detected ... ok
[INFO] [stdout] test test_patterns::tests::python_pytest_parametrize_detected ... ok
[INFO] [stdout] test test_patterns::tests::python_separate_tests_dir ... ok
[INFO] [stdout] test test_patterns::tests::jest_config_file_emits_observation_finding ... ok
[INFO] [stdout] test test_patterns::tests::python_pytest_markers_detected ... ok
[INFO] [stdout] test test_patterns::tests::python_pytest_framework_from_import ... ok
[INFO] [stdout] test test_patterns::tests::no_heuristic_for_unrelated_dep ... ok
[INFO] [stdout] test test_patterns::tests::python_test_prefix_naming ... ok
[INFO] [stdout] test test_patterns::tests::python_unittest_setup_teardown ... ok
[INFO] [stdout] test test_patterns::tests::rust_builtin_test_framework_detected ... ok
[INFO] [stdout] test test_patterns::tests::python_unittest_framework_detected ... ok
[INFO] [stdout] test test_patterns::tests::js_jest_detected ... ok
[INFO] [stdout] test pipeline::tests::segment_after_finds_marker ... ok
[INFO] [stdout] test test_patterns::tests::rust_inline_test_module_detected ... ok
[INFO] [stdout] test test_patterns::tests::rust_test_file_shows_assert_macro_call_site ... ok
[INFO] [stdout] test test_patterns::tests::rust_separate_tests_dir ... ok
[INFO] [stdout] test test_patterns::tests::rust_test_naming_convention ... ok
[INFO] [stdout] test test_patterns::tests::rust_setup_builder_pattern ... ok
[INFO] [stdout] test test_patterns::tests::ts_hooks_detected ... ok
[INFO] [stdout] test test_patterns::tests::ts_jest_framework_from_dep ... ok
[INFO] [stdout] test test_patterns::tests::python_test_class_detected ... ok
[INFO] [stdout] test test_patterns::tests::ts_jest_framework_from_import ... ok
[INFO] [stdout] test test_patterns::tests::ts_separate_tests_dir ... ok
[INFO] [stdout] test test_patterns::tests::unknown_framework_fallback_in_test_dir ... ok
[INFO] [stdout] test test_patterns::tests::ts_jest_imports_shows_expect_call_site ... ok
[INFO] [stdout] test test_patterns::tests::ts_jest_inferred_from_globals ... ok
[INFO] [stdout] test test_patterns::tests::ts_spec_file_colocated ... ok
[INFO] [stdout] test test_patterns::tests::ts_vitest_framework_detected ... ok
[INFO] [stdout] test test_patterns::tests::unknown_framework_fallback_python ... ok
[INFO] [stdout] test test_patterns::tests::unscoped_call_sites_contaminate_ts_test_finding ... ok
[INFO] [stdout] test trait_def::tests::detect_cross_file_default_returns_empty_vec ... ok
[INFO] [stdout] test test_patterns::tests::supports_all_languages ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_caps_snippet_at_max_lines ... ok
[INFO] [stdout] test test_patterns::tests::vitest_config_file_emits_observation_finding ... ok
[INFO] [stdout] test trait_def::tests::default_snippet_max_lines_is_ten ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_does_not_upgrade_evidence_without_detector_opt_in ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_extract_snippet_for_ts_call_site ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_mixed_pre_populated_and_empty_evidence ... ok
[INFO] [stdout] test test_patterns::tests::test_file_placement_detection ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_preserves_line_zero_and_extracted_snippets ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_preserves_parser_snippet_sets_ssl ... ok
[INFO] [stdout] test test_patterns::tests::ts_mocha_framework_detected ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_fills_empty_snippet_from_source ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_includes_context_before_for_empty_snippets ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_universal_upgrade_violates_fr8 ... ok
[INFO] [stdout] test trait_def::tests::enrich_evidence_does_not_clobber_existing_snippet_start_line ... ok
[INFO] [stdout] test trait_def::tests::enrich_evidence_handles_line_at_file_start_without_underflow ... ok
[INFO] [stdout] test trait_def::tests::enrich_evidence_skips_file_level_anchor ... ok
[INFO] [stdout] test trait_def::tests::enrich_evidence_skips_when_line_is_zero ... ok
[INFO] [stdout] test trait_def::tests::provided_detect_with_source_works_without_override ... ok
[INFO] [stdout] test trait_def::tests::stub_returns_no_findings ... ok
[INFO] [stdout] test test_patterns::tests::test_patterns_detector_shows_test_annotation_in_snippet ... ok
[INFO] [stdout] test trait_def::tests::detect_with_source_retains_original_evidence_when_no_call_sites ... ok
[INFO] [stdout] test usage_evidence::tests::basic_import_to_call_match ... ok
[INFO] [stdout] test usage_evidence::tests::cross_module_mismatch_no_false_positive ... ok
[INFO] [stdout] test usage_evidence::tests::dedup_by_callee_two_identical_calls ... ok
[INFO] [stdout] test usage_evidence::tests::distinct_start_lines_are_not_collapsed ... ok
[INFO] [stdout] test usage_evidence::tests::diverse_callees_preserved ... ok
[INFO] [stdout] test usage_evidence::tests::empty_calls_returns_empty ... ok
[INFO] [stdout] test usage_evidence::tests::empty_imports_returns_empty ... ok
[INFO] [stdout] test trait_def::tests::trait_is_object_safe ... ok
[INFO] [stdout] test usage_evidence::tests::fluent_chain_collapses_into_single_evidence ... ok
[INFO] [stdout] test usage_evidence::tests::hyphenated_rust_crate_top_level_extraction_bug ... ok
[INFO] [stdout] test test_patterns::tests::ts_colocated_test_file ... ok
[INFO] [stdout] test usage_evidence::tests::javascript_dedup_by_callee ... ok
[INFO] [stdout] test usage_evidence::tests::javascript_empty_calls_returns_empty ... ok
[INFO] [stdout] test usage_evidence::tests::namespaced_call_module_match ... ok
[INFO] [stdout] test usage_evidence::tests::javascript_function_calls_matched ... ok
[INFO] [stdout] test usage_evidence::tests::macro_call_synthetic_function_call_has_empty_snippet_without_source ... ok
[INFO] [stdout] test usage_evidence::tests::namespaced_wildcard_matches ... ok
[INFO] [stdout] test trait_def::tests::enrich_evidence_fills_empty_snippet_with_context_window ... ok
[INFO] [stdout] test usage_evidence::tests::macro_call_synthetic_function_call_has_snippet_with_source ... ok
[INFO] [stdout] test trait_def::tests::enrich_evidence_only_sets_snippet_start_line_when_parser_snippet_present ... ok
[INFO] [stdout] test trait_def::tests::stub_supports_all_languages ... ok
[INFO] [stdout] test usage_evidence::tests::max_limit_respected ... ok
[INFO] [stdout] test usage_evidence::tests::method_call_receiver_in_import_names ... ok
[INFO] [stdout] test usage_evidence::tests::method_call_with_wildcard_prelude_does_not_over_attribute ... ok
[INFO] [stdout] test usage_evidence::tests::namespaced_call_type_in_import_names ... ok
[INFO] [stdout] test test_patterns::tests::ts_describe_it_naming ... ok
[INFO] [stdout] test usage_evidence::tests::no_match_when_callee_not_in_import_names ... ok
[INFO] [stdout] test usage_evidence::tests::python_function_calls_matched ... ok
[INFO] [stdout] test usage_evidence::tests::python_no_matching_calls_returns_empty ... ok
[INFO] [stdout] test usage_evidence::tests::rust_function_calls_matched ... ok
[INFO] [stdout] test usage_evidence::tests::rust_macro_and_function_calls_combined ... ok
[INFO] [stdout] test usage_evidence::tests::rust_macro_calls_matched ... ok
[INFO] [stdout] test usage_evidence::tests::scoped_call_sites_only_include_matching_imports ... ok
[INFO] [stdout] test usage_evidence::tests::multiple_imports_from_same_module_all_names_considered ... ok
[INFO] [stdout] test usage_evidence::tests::scoped_npm_package_imp_top_not_split_by_slash ... ok
[INFO] [stdout] test usage_evidence::tests::snippet_from_call_preserved ... ok
[INFO] [stdout] test usage_evidence::tests::typescript_function_calls_matched ... ok
[INFO] [stdout] test usage_evidence::tests::typescript_max_limit_respected ... ok
[INFO] [stdout] test usage_evidence::tests::unrelated_namespaced_call_with_wildcard_prelude_does_not_match ... ok
[INFO] [stdout] test usage_evidence::tests::unscoped_call_sites_include_mixed_library_calls ... ok
[INFO] [stdout] test usage_evidence::tests::no_wildcard_means_no_fallback_for_method_calls ... ok
[INFO] [stdout] test usage_evidence::tests::python_method_call_matched ... ok
[INFO] [stdout] test usage_evidence::tests::rust_no_imports_returns_empty ... ok
[INFO] [stdout] test usage_evidence::tests::typescript_unrelated_calls_not_matched ... ok
[INFO] [stdout] test pipeline::tests::failing_detector_is_skipped_others_still_run ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 528 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/snippet_quality.rs (/opt/rustwide/target/debug/deps/snippet_quality-bacd438083a0d34a)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test fluent_chain_collapses_to_single_evidence ... ok
[INFO] [stdout] test rayon_canonical_finding_anchors_at_import_line_only ... ok
[INFO] [stdout] test parameter_naming_emits_one_evidence_per_function ... ok
[INFO] [stdout] test no_duplicate_canonical_logging_across_multiple_files ... ok
[INFO] [stdout] test convention_findings_have_anchored_or_file_level_evidence ... ok
[INFO] [stdout] test python_file_stem_internal_names_filtered ... ok
[INFO] [stdout] test no_heuristic_findings_for_internal_modules ... ok
[INFO] [stdout] test python_flat_layout_internal_packages_filtered ... ok
[INFO] [stdout] test no_duplicate_evidence_across_detectors ... ok
[INFO] [stdout] test python_stdlib_imports_dont_produce_heuristic_findings ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests seshat_detectors
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test src/pipeline.rs - pipeline (line 9) ... ignored
[INFO] [stdout] test src/trait_def.rs - trait_def::ConventionDetector (line 109) ... ignored
[INFO] [stdout] test src/trait_def.rs - trait_def::ConventionDetector (line 129) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.24s; merged doctests compilation took 0.23s
[INFO] running `Command { std: "docker" "inspect" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453", kill_on_drop: false }`
[INFO] [stdout] 544a69c9bcdc39241fd25c80ca8ee50d0f35fdc1dcdb523d46305bd347c6d453
