[INFO] fetching crate speccheck-core 0.4.1...
[INFO] testing speccheck-core-0.4.1 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate speccheck-core 0.4.1 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate speccheck-core 0.4.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate speccheck-core 0.4.1
[INFO] tweaked toml for crates.io crate speccheck-core 0.4.1 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate speccheck-core 0.4.1 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 speccheck-core 0.4.1 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]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded varisat-formula v0.2.2
[INFO] [stderr]   Downloaded varisat v0.2.2
[INFO] [stderr]   Downloaded vec_mut_scan v0.3.0
[INFO] [stderr]   Downloaded varisat-internal-proof v0.2.2
[INFO] [stderr]   Downloaded varisat-internal-macros v0.2.2
[INFO] [stderr]   Downloaded partial_ref v0.3.3
[INFO] [stderr]   Downloaded varisat-dimacs v0.2.2
[INFO] [stderr]   Downloaded speccheck-nli v0.4.1
[INFO] [stderr]   Downloaded varisat-checker v0.2.2
[INFO] [stderr]   Downloaded partial_ref_derive v0.3.3
[INFO] [stderr]   Downloaded peg-macros v0.6.3
[INFO] [stderr]   Downloaded peg-runtime v0.6.3
[INFO] [stderr]   Downloaded peg v0.6.3
[INFO] [stderr]   Downloaded gherkin v0.15.0
[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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028
[INFO] running `Command { std: "docker" "start" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028", 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" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028" "/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" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028", 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" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling varisat-formula v0.2.2
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling partial_ref_derive v0.3.3
[INFO] [stderr]    Compiling object v0.37.3
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling smawk v0.3.2
[INFO] [stderr]    Compiling peg-runtime v0.6.3
[INFO] [stderr]    Compiling rustc-demangle v0.1.27
[INFO] [stderr]    Compiling pxfm v0.1.28
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling fax v0.2.6
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling partial_ref v0.3.3
[INFO] [stderr]    Compiling peg-macros v0.6.3
[INFO] [stderr]    Compiling textwrap v0.16.2
[INFO] [stderr]    Compiling varisat-internal-proof v0.2.2
[INFO] [stderr]    Compiling owo-colors v4.3.0
[INFO] [stderr]    Compiling varisat v0.2.2
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling varisat-dimacs v0.2.2
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling gherkin v0.15.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling typed-builder-macro v0.23.2
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling pulldown-cmark v0.12.2
[INFO] [stderr]    Compiling terminal_size v0.4.4
[INFO] [stderr]    Compiling varisat-checker v0.2.2
[INFO] [stderr]    Compiling zip v0.6.6
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling supports-color v3.0.2
[INFO] [stderr]    Compiling peg v0.6.3
[INFO] [stderr]    Compiling quick-xml v0.36.2
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling ordered-float v2.10.1
[INFO] [stderr]    Compiling miette-derive v7.6.0
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling typed-builder v0.23.2
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]    Compiling supports-hyperlinks v3.2.0
[INFO] [stderr]    Compiling vec_mut_scan v0.3.0
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling leb128 v0.2.5
[INFO] [stderr]    Compiling supports-unicode v3.0.0
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling speccheck-nli v0.4.1
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling varisat-internal-macros v0.2.2
[INFO] [stderr]    Compiling backtrace-ext v0.2.1
[INFO] [stderr]    Compiling miette v7.6.0
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling tiff v0.11.3
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling docx-rs v0.4.20
[INFO] [stderr]    Compiling speccheck-core v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 17s
[INFO] running `Command { std: "docker" "inspect" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028", 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" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling docx-rs v0.4.20
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling varisat v0.2.2
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling backtrace v0.3.76
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling backtrace-ext v0.2.1
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]    Compiling miette v7.6.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling speccheck-core v0.4.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 18s
[INFO] running `Command { std: "docker" "inspect" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028", 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" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.27s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/speccheck_core-617b28ed40a07350)
[INFO] [stdout] 
[INFO] [stdout] running 1003 tests
[INFO] [stdout] test audit_log::tests::append_then_read_last ... ok
[INFO] [stdout] test audit_log::tests::canonical_body_is_deterministic_across_metadata_orderings ... ok
[INFO] [stdout] test audit_log::tests::file_hash_round_trips_through_serde ... ok
[INFO] [stdout] test aibom::tests::aibom_with_flagged_requirements ... ok
[INFO] [stdout] test aibom::tests::empty_aibom ... ok
[INFO] [stdout] test aibom::tests::aibom_findings_by_severity_counted ... ok
[INFO] [stdout] test aibom::tests::aibom_with_clean_file ... ok
[INFO] [stdout] test aibom::tests::aibom_multiple_files ... ok
[INFO] [stdout] test audit_log::tests::genesis_prev_hash_is_64_hex_zeroes ... ok
[INFO] [stdout] test aibom::tests::content_hash_differs_for_different_content ... ok
[INFO] [stdout] test calibration::tests::adjusted_confidence_clamped_to_unit ... ok
[INFO] [stdout] test aibom::tests::aibom_json_format ... ok
[INFO] [stdout] test audit_log::tests::verify_tolerates_blank_lines ... ok
[INFO] [stdout] test audit_log::tests::chain_extends_correctly ... ok
[INFO] [stdout] test aibom::tests::aibom_rules_used_preserved ... ok
[INFO] [stdout] test audit_log::tests::sha256_hex_known_vectors ... ok
[INFO] [stdout] test aibom::tests::aibom_content_hash_present ... ok
[INFO] [stdout] test calibration::tests::adjusted_confidence_base_times_weight ... ok
[INFO] [stdout] test calibration::tests::display_summary_empty ... ok
[INFO] [stdout] test audit_log::tests::verify_rejects_unknown_schema_version ... ok
[INFO] [stdout] test audit_log::tests::verify_detects_missing_entry ... ok
[INFO] [stdout] test audit_log::tests::verify_detects_reorder ... ok
[INFO] [stdout] test aibom::tests::content_hash_deterministic ... ok
[INFO] [stdout] test calibration::tests::display_summary_with_data ... ok
[INFO] [stdout] test calibration::tests::weight_bayesian_smoothing_all_useful ... ok
[INFO] [stdout] test calibration::tests::reset_clears_all_data ... ok
[INFO] [stdout] test calibration::tests::load_save_roundtrip ... ok
[INFO] [stdout] test calibration::tests::weight_bayesian_smoothing_mixed ... ok
[INFO] [stdout] test audit_log::tests::verify_detects_mid_chain_tampering ... ok
[INFO] [stdout] test calibration::tests::feedback_reduces_confidence_on_noisy_rules ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::manifest_is_canonical_sorted_keys ... ok
[INFO] [stdout] test calibration::tests::load_invalid_json_returns_error ... ok
[INFO] [stdout] test calibration::tests::load_nonexistent_returns_default ... ok
[INFO] [stdout] test calibration::tests::record_mixed_feedback ... ok
[INFO] [stdout] test calibration::tests::record_not_useful_feedback ... ok
[INFO] [stdout] test calibration::tests::record_useful_feedback ... ok
[INFO] [stdout] test calibration::tests::weight_bayesian_smoothing_mostly_not_useful ... ok
[INFO] [stdout] test calibration::tests::empty_calibration_no_adjustment ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::verify_errors_on_missing_manifest ... ok
[INFO] [stdout] test calibration::tests::weight_bayesian_smoothing_no_feedback ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::emit_produces_manifest_and_all_sections ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::slug_basic ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::slug_no_trailing_hyphen ... ok
[INFO] [stdout] test cert_pack::tests::manifest_round_trips_through_canonical_json ... ok
[INFO] [stdout] test config::tests::config_invalid_regex_does_not_crash ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::missing_narrative_renders_placeholder_not_provided ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::requirements_status_section_reflects_aibom ... ok
[INFO] [stdout] test config::tests::config_rule_packs_pointing_to_nonexistent_file ... ok
[INFO] [stdout] test config::tests::config_severity_override_for_off_rule_returns_none ... ok
[INFO] [stdout] test config::tests::config_nli_threshold_boundary_values ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::sections_catalogue_has_no_duplicate_ids ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::provided_narrative_is_rendered_verbatim ... ok
[INFO] [stdout] test config::tests::config_severity_parsing_case_insensitive ... ok
[INFO] [stdout] test config::tests::default_config_all_rules_enabled ... ok
[INFO] [stdout] test config::tests::config_with_all_rules_disabled ... ok
[INFO] [stdout] test config::tests::config_with_conflicting_overrides ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::emit_is_idempotent_by_content_hash ... ok
[INFO] [stdout] test config::tests::invalid_toml_syntax ... ok
[INFO] [stdout] test config::tests::config_with_empty_custom_rules_array ... ok
[INFO] [stdout] test config::tests::is_rule_enabled_off ... ok
[INFO] [stdout] test config::tests::invalid_regex_in_custom_rule_gives_error ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::verify_detects_deleted_evidence_file ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::manifest_hashes_match_file_bytes ... ok
[INFO] [stdout] test config::tests::parse_min_confidence_invalid_negative ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::verify_clean_pack_reports_no_issues ... ok
[INFO] [stdout] test config::tests::parse_min_confidence_custom ... ok
[INFO] [stdout] test config::tests::parse_min_confidence_default ... ok
[INFO] [stdout] test config::tests::parse_nli_config_invalid_threshold ... ok
[INFO] [stdout] test config::tests::load_config_reads_from_file ... ok
[INFO] [stdout] test config::tests::parse_minimal_config ... ok
[INFO] [stdout] test config::tests::parse_config_no_rule_packs_defaults_empty ... ok
[INFO] [stdout] test config::tests::parse_nli_config_custom ... ok
[INFO] [stdout] test config::tests::parse_min_confidence_invalid_too_high ... ok
[INFO] [stdout] test config::tests::parse_nli_llm_zero_timeout ... ok
[INFO] [stdout] test config::tests::parse_nli_config_defaults ... ok
[INFO] [stdout] test config::tests::parse_nli_provider_defaults_to_heuristic ... ok
[INFO] [stdout] test config::tests::parse_nli_provider_invalid ... ok
[INFO] [stdout] test config::tests::parse_nli_provider_llm ... ok
[INFO] [stdout] test config::tests::severity_override_returns_correct_value ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::verify_pack_without_audit_log_reports_none ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::verify_is_robust_against_extra_files ... ok
[INFO] [stdout] test config::tests::parse_nli_llm_defaults ... ok
[INFO] [stdout] test config::tests::parse_nli_provider_case_insensitive ... ok
[INFO] [stdout] test config::tests::parse_nli_provider_heuristic_explicit ... ok
[INFO] [stdout] test config::tests::parse_valid_config ... ok
[INFO] [stdout] test config::tests::parse_config_with_rule_packs ... ok
[INFO] [stdout] test config::tests::parse_min_confidence_boundary_values ... ok
[INFO] [stdout] test cert_pack::tests::slug_truncates_and_strips_trailing_hyphens ... ok
[INFO] [stdout] test config::tests::invalid_severity_gives_descriptive_error ... ok
[INFO] [stdout] test config::tests::parse_nli_config_zero_batch_size ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::verify_chain_checks_embedded_audit_log ... ok
[INFO] [stdout] test constraint::tests::normalize_strips_article ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::readme_references_all_sections ... ok
[INFO] [stdout] test convert::tests::convert_to_gherkin_basic ... ok
[INFO] [stdout] test convert::tests::convert_empty_document ... ok
[INFO] [stdout] test convert::tests::convert_preserves_nested_sections ... ok
[INFO] [stdout] test convert::tests::convert_roundtrip_preserves_ids ... ok
[INFO] [stdout] test convert::tests::convert_to_ears_basic ... ok
[INFO] [stdout] test cert_pack::annex_iv::tests::verify_detects_modified_section_file ... ok
[INFO] [stdout] test convert::tests::convert_to_markdown_basic ... ok
[INFO] [stdout] test convert::tests::convert_to_markdown_with_frontmatter ... ok
[INFO] [stdout] test convert::tests::convert_to_yaml_basic ... ok
[INFO] [stdout] test convert::tests::convert_yaml_with_frontmatter ... ok
[INFO] [stdout] test convert::tests::target_format_from_str ... ok
[INFO] [stdout] test convert::tests::target_format_extension ... ok
[INFO] [stdout] test coverage::tests::format_human_shows_per_source_tags ... ok
[INFO] [stdout] test convert::tests::ears_already_shall_not_double_wrapped ... ok
[INFO] [stdout] test coverage::tests::inline_evidence_detects_tc_reference ... ok
[INFO] [stdout] test convert::tests::yaml_escape_special_chars ... ok
[INFO] [stdout] test coverage::tests::inline_evidence_ignores_unidentified_requirements ... ok
[INFO] [stdout] test coverage::tests::map_merge_deduplicates_evidence ... ok
[INFO] [stdout] test coverage::tests::toml_loader_errors_on_malformed ... ok
[INFO] [stdout] test coverage::tests::junit_loader_errors_on_malformed_xml ... ok
[INFO] [stdout] test coverage::tests::junit_loader_links_via_name_pattern ... ok
[INFO] [stdout] test coverage::tests::junit_loader_links_via_property ... ok
[INFO] [stdout] test coverage::tests::report_stacks_evidence_from_all_sources ... ok
[INFO] [stdout] test coverage::tests::toml_loader_maps_requirements_to_tests ... ok
[INFO] [stdout] test coverage::tests::toml_loader_returns_empty_on_missing_file ... ok
[INFO] [stdout] test dashboard::tests::load_history_errors_on_bad_json ... ok
[INFO] [stdout] test dashboard::tests::load_history_errors_on_missing_dir ... ok
[INFO] [stdout] test dashboard::tests::load_history_reads_and_sorts_by_timestamp ... ok
[INFO] [stdout] test dashboard::tests::render_empty_history_shows_empty_state ... ok
[INFO] [stdout] test coverage::tests::junit_loader_skips_failing_testcases ... ok
[INFO] [stdout] test dashboard::tests::render_escapes_html_in_commit_sha ... ok
[INFO] [stdout] test dashboard::tests::render_handles_missing_commit_sha ... ok
[INFO] [stdout] test dashboard::tests::render_is_deterministic_for_same_input ... ok
[INFO] [stdout] test depgraph::tests::circular_dependency_detected ... ok
[INFO] [stdout] test depgraph::tests::critical_path_computed ... ok
[INFO] [stdout] test dashboard::tests::render_multi_baseline_trends ... ok
[INFO] [stdout] test depgraph::tests::cycle_in_human_output ... ok
[INFO] [stdout] test depgraph::tests::cross_file_dependencies ... ok
[INFO] [stdout] test depgraph::tests::diamond_dependency ... ok
[INFO] [stdout] test dashboard::tests::render_sparkline_has_polyline_with_n_points ... ok
[INFO] [stdout] test coverage::tests::report_marks_uncovered_requirements ... ok
[INFO] [stdout] test depgraph::tests::empty_graph ... ok
[INFO] [stdout] test depgraph::tests::dot_format_output ... ok
[INFO] [stdout] test depgraph::tests::single_requirement_no_deps ... ok
[INFO] [stdout] test depgraph::tests::empty_graph_human_format ... ok
[INFO] [stdout] test diagnostics::tests::diagnostic_confidence_field ... ok
[INFO] [stdout] test depgraph::tests::human_format_output ... ok
[INFO] [stdout] test diagnostics::tests::finding_serialization ... ok
[INFO] [stdout] test depgraph::tests::json_format_structure ... ok
[INFO] [stdout] test depgraph::tests::linear_dependency_chain ... ok
[INFO] [stdout] test dashboard::tests::render_single_baseline_shows_current_stats ... ok
[INFO] [stdout] test diff::tests::diff_all_removed ... ok
[INFO] [stdout] test diagnostics::tests::severity_display ... ok
[INFO] [stdout] test diagnostics::tests::severity_ordering ... ok
[INFO] [stdout] test diff::tests::diff_added_requirement ... ok
[INFO] [stdout] test depgraph::tests::leaves_and_roots_correct ... ok
[INFO] [stdout] test diff::tests::diff_all_added ... ok
[INFO] [stdout] test diff::tests::diff_empty_documents ... ok
[INFO] [stdout] test diff::tests::diff_human_readable_empty ... ok
[INFO] [stdout] test diff::tests::diff_human_readable_output ... ok
[INFO] [stdout] test dashboard::tests::load_history_skips_non_json_files ... ok
[INFO] [stdout] test diff::tests::diff_identical_documents ... ok
[INFO] [stdout] test diagnostics::tests::finding_confidence_defaults_on_deserialize ... ok
[INFO] [stdout] test diff::tests::diff_identical_documents_no_changes ... ok
[INFO] [stdout] test constraint::tests::extract_between ... ok
[INFO] [stdout] test diff::tests::diff_modified_requirement_by_id ... ok
[INFO] [stdout] test diff::tests::diff_moved_by_text_no_id ... ok
[INFO] [stdout] test diff::tests::diff_no_match_below_threshold ... ok
[INFO] [stdout] test diff::tests::diff_removed_requirement ... ok
[INFO] [stdout] test diff::tests::diff_moved_requirement ... ok
[INFO] [stdout] test diff::tests::diff_json_output ... ok
[INFO] [stdout] test diff::tests::diff_text_similarity_matching ... ok
[INFO] [stdout] test diff::tests::diff_json_output_empty ... ok
[INFO] [stdout] test diff::tests::diff_two_empty_documents ... ok
[INFO] [stdout] test diff::tests::diff_with_no_ids_only_text_matching ... ok
[INFO] [stdout] test diff::tests::text_similarity_completely_different ... ok
[INFO] [stdout] test diff::tests::text_similarity_empty_strings ... ok
[INFO] [stdout] test diff::tests::text_similarity_identical ... ok
[INFO] [stdout] test diff::tests::text_similarity_one_empty_one_not ... ok
[INFO] [stdout] test docx_writer::tests::returns_parse_error_for_non_docx_input ... ok
[INFO] [stdout] test github::tests::github_annotations_empty ... ok
[INFO] [stdout] test github::tests::github_annotations_error ... ok
[INFO] [stdout] test github::tests::github_annotations_escapes_newlines ... ok
[INFO] [stdout] test docx_writer::tests::returns_read_error_for_missing_input ... ok
[INFO] [stdout] test github::tests::github_annotations_escapes_percent ... ok
[INFO] [stdout] test github::tests::github_annotations_info_uses_notice ... ok
[INFO] [stdout] test docx_writer::tests::coalesces_multi_run_paragraph_across_boundary ... ok
[INFO] [stdout] test github::tests::github_annotations_multiple_files ... ok
[INFO] [stdout] test github::tests::github_annotations_warning ... ok
[INFO] [stdout] test github::tests::write_github_annotations_returns_count ... ok
[INFO] [stdout] test incose::tests::all_incose_attributes_covered ... ok
[INFO] [stdout] test docx_writer::tests::replaces_word_in_single_run_paragraph ... ok
[INFO] [stdout] test constraint::tests::extract_at_least ... ok
[INFO] [stdout] test incose::tests::clean_spec_gets_100 ... ok
[INFO] [stdout] test incose::tests::human_readable_format ... ok
[INFO] [stdout] test incose::tests::human_judgment_attributes_not_scored ... ok
[INFO] [stdout] test incose::tests::spider_chart_has_all_categories ... ok
[INFO] [stdout] test docx_writer::tests::leaves_paragraphs_without_matches_untouched ... ok
[INFO] [stdout] test incose::tests::violations_reduce_score ... ok
[INFO] [stdout] test incose::tests::scored_attributes_are_scored ... ok
[INFO] [stdout] test ir::tests::frontmatter_with_extra_fields ... ok
[INFO] [stdout] test ir::tests::requirement_kind_equality ... ok
[INFO] [stdout] test incose::tests::zero_requirements_gives_perfect_score ... ok
[INFO] [stdout] test ir::tests::source_span_default_is_zero ... ok
[INFO] [stdout] test junit::tests::emit_junit_counts_tests_failures_and_errors ... ok
[INFO] [stdout] test junit::tests::emit_junit_carries_severity_in_failure_type_attribute ... ok
[INFO] [stdout] test docx_writer::tests::noop_passthrough_preserves_text_when_no_replacements_match ... ok
[INFO] [stdout] test constraint::tests::extract_not_exceed ... ok
[INFO] [stdout] test constraint::tests::extract_less_than ... ok
[INFO] [stdout] test junit::tests::emit_junit_is_deterministic_for_same_input ... ok
[INFO] [stdout] test incose::tests::spider_chart_format_json ... ok
[INFO] [stdout] test ir::tests::spec_format_equality ... ok
[INFO] [stdout] test junit::tests::emit_junit_emits_synthetic_clean_testcase_when_clean_files_exist ... ok
[INFO] [stdout] test junit::tests::emit_junit_escapes_xml_metacharacters_in_attributes_and_text ... ok
[INFO] [stdout] test docx_writer::tests::apply_replacements_reports_paragraph_count ... ok
[INFO] [stdout] test markdown_report::tests::epoch_days_to_date_known_date ... ok
[INFO] [stdout] test junit::tests::emit_junit_names_testcases_by_path_line_and_rule ... ok
[INFO] [stdout] test docx_writer::tests::applies_multiple_replacements_in_order ... ok
[INFO] [stdout] test junit::tests::emit_junit_produces_valid_xml_header_and_root ... ok
[INFO] [stdout] test docx_writer::tests::empty_replacements_list_is_a_noop_copy ... ok
[INFO] [stdout] test markdown_report::tests::category_name_mapping ... ok
[INFO] [stdout] test markdown_report::tests::epoch_days_to_date_epoch ... ok
[INFO] [stdout] test markdown_report::tests::format_timestamp_is_nonempty ... ok
[INFO] [stdout] test markdown_report::tests::recommendations_high_ambiguity ... ok
[INFO] [stdout] test junit::tests::emit_junit_omits_clean_testcase_when_all_files_have_findings ... ok
[INFO] [stdout] test incose::tests::incose_violations_affect_conforming ... ok
[INFO] [stdout] test metrics::tests::aggregate_empty ... ok
[INFO] [stdout] test markdown_report::tests::recommendations_low_testability ... ok
[INFO] [stdout] test metrics::tests::baseline_serializes_schema_version_and_commit_sha ... ok
[INFO] [stdout] test metrics::tests::baseline_deserializes_legacy_without_schema_version_or_commit_sha ... ok
[INFO] [stdout] test metrics::tests::category_breakdown_json_is_sorted_deterministically ... ok
[INFO] [stdout] test metrics::tests::category_breakdown_populated ... ok
[INFO] [stdout] test metrics::tests::aggregate_multiple ... ok
[INFO] [stdout] test metrics::tests::aggregate_single_file_same_as_individual ... ok
[INFO] [stdout] test metrics::tests::compare_improvement ... ok
[INFO] [stdout] test metrics::tests::compare_regression ... ok
[INFO] [stdout] test metrics::tests::completeness_score_with_sections ... ok
[INFO] [stdout] test metrics::tests::coverage_ratio_all_covered ... ok
[INFO] [stdout] test metrics::tests::coverage_ignores_unidentified ... ok
[INFO] [stdout] test metrics::tests::coverage_ratio_none_covered ... ok
[INFO] [stdout] test metrics::tests::empty_document_metrics ... ok
[INFO] [stdout] test metrics::tests::coverage_ratio_partial ... ok
[INFO] [stdout] test metrics::tests::format_human_output ... ok
[INFO] [stdout] test metrics::tests::format_human_zero_requirements ... ok
[INFO] [stdout] test metrics::tests::format_comparison_output ... ok
[INFO] [stdout] test metrics::tests::format_coverage_human_output ... ok
[INFO] [stdout] test metrics::tests::metrics_massive_ambiguity_capped_at_100 ... ok
[INFO] [stdout] test metrics::tests::metrics_all_requirements_identified ... ok
[INFO] [stdout] test metrics::tests::metrics_no_requirements_identified ... ok
[INFO] [stdout] test metrics::tests::metrics_with_ambiguity_findings ... ok
[INFO] [stdout] test metrics::tests::grade_from_score ... ok
[INFO] [stdout] test metrics::tests::metrics_with_requirements ... ok
[INFO] [stdout] test metrics::tests::score_on_empty_document_has_valid_grade ... ok
[INFO] [stdout] test metrics::tests::metrics_with_testability_findings ... ok
[INFO] [stdout] test parser::docx_parser::tests::classify_requirement_by_id ... ok
[INFO] [stdout] test parser::docx_parser::tests::classify_requirement_by_content ... ok
[INFO] [stdout] test metrics::tests::overall_score_in_range ... ok
[INFO] [stdout] test metrics::tests::nested_sections_counted ... ok
[INFO] [stdout] test parser::docx_parser::tests::extract_req_id_absent ... ok
[INFO] [stdout] test parser::docx_parser::tests::docx_parser_extensions ... ok
[INFO] [stdout] test parser::docx_parser::tests::docx_parser_probe_returns_false ... ok
[INFO] [stdout] test parser::docx_parser::tests::extract_req_id_present ... ok
[INFO] [stdout] test parser::docx_parser::tests::is_requirement_text_non_requirement ... ok
[INFO] [stdout] test parser::docx_parser::tests::is_requirement_text_shall ... ok
[INFO] [stdout] test parser::docx_parser::tests::native_parse_corrupted_docx_returns_error ... ok
[INFO] [stdout] test parser::docx_parser::tests::native_parse_empty_docx ... ok
[INFO] [stdout] test constraint::tests::no_constraints_from_plain_text ... ok
[INFO] [stdout] test parser::docx_parser::tests::pandoc_fallback_to_native ... ok
[INFO] [stdout] test parser::docx_parser::tests::parse_heading_style_heading1 ... ok
[INFO] [stdout] test parser::docx_parser::tests::parse_nonexistent_file_returns_error ... ok
[INFO] [stdout] test parser::docx_parser::tests::parse_heading_style_title ... ok
[INFO] [stdout] test parser::docx_parser::tests::parse_heading_style_non_heading ... ok
[INFO] [stdout] test parser::docx_parser::tests::native_parse_of_programmatic_docx ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_event_driven ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_no_shall_returns_none ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_event_with_option ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_option_if ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_option_where ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_event_with_state ... ok
[INFO] [stdout] test parser::ears::tests::extensions_returns_ears ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_ubiquitous ... ok
[INFO] [stdout] test parser::ears::tests::parse_empty_content ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_state_driven ... ok
[INFO] [stdout] test parser::ears::tests::detect_pattern_state_with_option ... ok
[INFO] [stdout] test parser::ears::tests::parse_event_driven_pattern ... ok
[INFO] [stdout] test parser::ears::tests::parse_event_driven_with_option_pattern ... ok
[INFO] [stdout] test parser::ears::tests::parse_event_driven_with_state_pattern ... ok
[INFO] [stdout] test parser::docx_parser::tests::has_pandoc_does_not_panic ... ok
[INFO] [stdout] test parser::ears::tests::parse_multiple_requirements ... ok
[INFO] [stdout] test parser::ears::tests::parse_option_driven_where_pattern ... ok
[INFO] [stdout] test parser::ears::tests::parse_ubiquitous_pattern ... ok
[INFO] [stdout] test parser::ears::tests::parse_utf8_in_ears_requirement ... ok
[INFO] [stdout] test parser::ears::tests::parse_whitespace_only ... ok
[INFO] [stdout] test parser::ears::tests::path_preserved ... ok
[INFO] [stdout] test parser::ears::tests::parse_plain_text_no_ears_keywords ... ok
[INFO] [stdout] test parser::ears::tests::probe_detects_ears_content ... ok
[INFO] [stdout] test parser::ears::tests::raw_text_preserved ... ok
[INFO] [stdout] test parser::ears::tests::skip_comments_and_blank_lines ... ok
[INFO] [stdout] test parser::ears::tests::skip_lines_without_shall ... ok
[INFO] [stdout] test parser::ears::tests::source_spans_are_accurate ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::extensions_returns_feature ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_background_steps ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_empty_file ... ok
[INFO] [stdout] test parser::ears::tests::parse_state_driven_pattern ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::format_is_gherkin ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_feature_with_empty_scenario ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_feature_with_multiple_rules_and_scenarios ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_feature_with_rule ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_feature_with_tags ... ok
[INFO] [stdout] test parser::ears::tests::parse_only_comments ... ok
[INFO] [stdout] test parser::ears::tests::parse_option_driven_if_pattern ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_simple_feature ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_invalid_gherkin_returns_error ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_whitespace_only_file ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::probe_detects_gherkin ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::source_spans_are_populated ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::step_type_classification ... ok
[INFO] [stdout] test parser::reqif_parser::tests::classify_reqif_functional ... ok
[INFO] [stdout] test parser::reqif_parser::tests::classify_reqif_nonfunctional ... ok
[INFO] [stdout] test parser::reqif_parser::tests::compute_line_number_first_line ... ok
[INFO] [stdout] test parser::reqif_parser::tests::compute_line_number_second_line ... ok
[INFO] [stdout] test parser::reqif_parser::tests::extensions_include_reqif_and_reqifz ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_multiple_scenarios ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_scenario_outline_with_examples ... ok
[INFO] [stdout] test parser::reqif_parser::tests::parse_empty_reqif ... ok
[INFO] [stdout] test parser::reqif_parser::tests::parse_minimal_reqif ... ok
[INFO] [stdout] test parser::reqif_parser::tests::parse_reqif_invalid_xml ... ok
[INFO] [stdout] test parser::reqif_parser::tests::parse_reqif_with_hierarchy ... ok
[INFO] [stdout] test parser::reqif_parser::tests::strip_xhtml_empty ... ok
[INFO] [stdout] test parser::reqif_parser::tests::strip_xhtml_nested_elements ... ok
[INFO] [stdout] test parser::reqif_parser::tests::strip_xhtml_no_tags ... ok
[INFO] [stdout] test parser::reqif_parser::tests::strip_xhtml_simple_tags ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::parse_feature_with_description ... ok
[INFO] [stdout] test parser::gherkin_parser::tests::raw_text_preserved ... ok
[INFO] [stdout] test parser::reqif_parser::tests::probe_detects_reqif_content ... ok
[INFO] [stdout] test parser::reqif_parser::tests::strip_xhtml_with_entities ... ok
[INFO] [stdout] test parser::tests::could_keyword_creates_requirement ... ok
[INFO] [stdout] test parser::reqif_parser::tests::parse_reqif_with_xhtml_values ... ok
[INFO] [stdout] test parser::reqif_parser::tests::strip_xhtml_table ... ok
[INFO] [stdout] test parser::tests::extensions_returns_md_and_markdown ... ok
[INFO] [stdout] test parser::tests::heading_depth_preserved ... ok
[INFO] [stdout] test parser::tests::code_blocks_are_skipped ... ok
[INFO] [stdout] test parser::tests::may_modal_creates_requirement ... ok
[INFO] [stdout] test parser::tests::must_keyword_creates_requirement ... ok
[INFO] [stdout] test parser::tests::may_as_month_does_not_create_requirement ... ok
[INFO] [stdout] test parser::tests::multiple_requirements_in_section ... ok
[INFO] [stdout] test parser::tests::non_requirement_list_items_skipped ... ok
[INFO] [stdout] test parser::tests::offset_to_line_col_beyond_text_length ... ok
[INFO] [stdout] test parser::tests::offset_to_line_col_second_line ... ok
[INFO] [stdout] test parser::tests::offset_to_line_col_first_line ... ok
[INFO] [stdout] test parser::tests::parse_empty_file ... ok
[INFO] [stdout] test parser::tests::parse_frontmatter_only_no_body ... ok
[INFO] [stdout] test parser::tests::parse_deeply_nested_h6_sections ... ok
[INFO] [stdout] test parser::tests::parse_frontmatter_without_domain_or_version ... ok
[INFO] [stdout] test parser::tests::parse_gherkin_step_in_markdown_list ... ok
[INFO] [stdout] test parser::tests::parse_html_blocks_embedded_in_markdown ... ok
[INFO] [stdout] test parser::tests::parse_code_block_with_requirement_keywords_not_extracted ... ok
[INFO] [stdout] test parser::tests::parse_inline_code_in_requirement ... ok
[INFO] [stdout] test parser::tests::parse_frontmatter_with_windows_line_endings ... ok
[INFO] [stdout] test parser::tests::parse_mixed_line_endings ... ok
[INFO] [stdout] test parser::tests::parse_nested_sections ... ok
[INFO] [stdout] test parser::tests::parse_multiple_top_level_h1_sections ... ok
[INFO] [stdout] test parser::tests::parse_nfr_id_classified_correctly ... ok
[INFO] [stdout] test parser::tests::parse_requirement_before_any_heading ... ok
[INFO] [stdout] test parser::tests::parse_requirement_with_explicit_id ... ok
[INFO] [stdout] test parser::tests::parse_user_story_in_paragraph ... ok
[INFO] [stdout] test parser::tests::parse_utf8_special_characters ... ok
[INFO] [stdout] test parser::tests::parse_very_long_lines ... ok
[INFO] [stdout] test parser::tests::parse_simple_heading_and_requirement ... ok
[INFO] [stdout] test constraint::tests::extract_exact ... ok
[INFO] [stdout] test parser::tests::parse_whitespace_only_file ... ok
[INFO] [stdout] test parser::tests::parse_yaml_frontmatter ... ok
[INFO] [stdout] test parser::tests::parse_windows_line_endings ... ok
[INFO] [stdout] test parser::tests::path_preserved ... ok
[INFO] [stdout] test parser::tests::raw_text_preserved ... ok
[INFO] [stdout] test parser::tests::requirement_from_paragraph ... ok
[INFO] [stdout] test parser::tests::preserve_source_spans ... ok
[INFO] [stdout] test parser::tests::probe_detects_markdown ... ok
[INFO] [stdout] test parser::tests::should_keyword_creates_requirement ... ok
[INFO] [stdout] test parser::tests::will_keyword_creates_requirement ... ok
[INFO] [stdout] test parser::yaml_parser::tests::empty_sections_list ... ok
[INFO] [stdout] test constraint::tests::extract_greater_than ... ok
[INFO] [stdout] test parser::yaml_parser::tests::extensions_returns_yaml_and_yml ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_deeply_nested_yaml_structure ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_empty_file ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_whitespace_only_file ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_full_yaml_spec ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_requirements_map_format ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_with_requirement_missing_text_field ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_with_special_characters_in_text ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_with_nfr_classification ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_with_service_metadata ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_with_constraint_classification ... ok
[INFO] [stdout] test parser::yaml_parser::tests::raw_text_preserved ... ok
[INFO] [stdout] test parser::yaml_parser::tests::section_with_no_requirements ... ok
[INFO] [stdout] test parser::yaml_parser::tests::source_spans_are_populated ... ok
[INFO] [stdout] test parser::yaml_parser::tests::probe_detects_yaml_spec ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_invalid_yaml ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_with_subsections ... ok
[INFO] [stdout] test parser::yaml_parser::tests::parse_yaml_without_metadata ... ok
[INFO] [stdout] test parser::yaml_parser::tests::path_preserved ... ok
[INFO] [stdout] test parser::yaml_parser::tests::performance_classification_by_content ... ok
[INFO] [stdout] test pipeline::tests::dedup_keeps_tst_when_it_has_higher_severity ... ok
[INFO] [stdout] test pipeline::tests::dedup_drops_tst_when_com_has_equal_or_higher_severity ... ok
[INFO] [stdout] test pipeline::tests::dedup_leaves_unrelated_diagnostics_alone ... ok
[INFO] [stdout] test pipeline::tests::dedup_does_not_collapse_distinct_spans ... ok
[INFO] [stdout] test pipeline::tests::dedup_handles_empty_and_singletons ... ok
[INFO] [stdout] test markdown_report::tests::report_no_findings_message ... ok
[INFO] [stdout] test constraint::tests::extract_rate ... ok
[INFO] [stdout] test markdown_report::tests::report_includes_recommendations ... ok
[INFO] [stdout] test markdown_report::tests::report_contains_executive_summary ... ok
[INFO] [stdout] test markdown_report::tests::report_includes_baseline_comparison ... ok
[INFO] [stdout] test markdown_report::tests::report_contains_quality_breakdown ... ok
[INFO] [stdout] test markdown_report::tests::report_includes_findings ... ok
[INFO] [stdout] test markdown_report::tests::report_contains_frontmatter ... ok
[INFO] [stdout] test markdown_report::tests::report_includes_fix_suggestion ... ok
[INFO] [stdout] test profile::tests::acronym_whitelist_extends_global_list ... ok
[INFO] [stdout] test profile::tests::builtin_profile_content_returns_toml ... ok
[INFO] [stdout] test profile::tests::custom_rules_from_profile_fire ... ok
[INFO] [stdout] test profile::tests::external_profile_file_loads ... ok
[INFO] [stdout] test profile::tests::invalid_profile_toml_gives_error ... ok
[INFO] [stdout] test profile::tests::parse_minimal_profile ... ok
[INFO] [stdout] test profile::tests::parse_valid_profile ... ok
[INFO] [stdout] test profile::tests::profile_invalid_min_confidence ... ok
[INFO] [stdout] test profile::tests::profile_invalid_regex_gives_error ... ok
[INFO] [stdout] test profile::tests::profile_invalid_severity_gives_error ... ok
[INFO] [stdout] test profile::tests::profile_merges_into_config ... ok
[INFO] [stdout] test profile::tests::profile_plus_config_merge_correctly ... ok
[INFO] [stdout] test profile::tests::resolve_builtin_profile ... ok
[INFO] [stdout] test pipeline::tests::pipeline_corpus_produces_findings_for_cross_file_duplicates ... ok
[INFO] [stdout] test profile::tests::builtin_profiles_parse_without_error ... ok
[INFO] [stdout] test profile::tests::resolve_external_profile_by_path ... ok
[INFO] [stdout] test pipeline::tests::pipeline_with_no_rules_enabled ... ok
[INFO] [stdout] test profile::tests::resolve_unknown_profile_errors ... ok
[INFO] [stdout] test profile::tests::severity_overrides_apply ... ok
[INFO] [stdout] test rdjsonl::tests::emit_empty_produces_empty_string ... ok
[INFO] [stdout] test rdjsonl::tests::fix_suggestion_round_trips_as_rdf_suggestion ... ok
[INFO] [stdout] test rdjsonl::tests::no_suggestions_field_when_no_fix ... ok
[INFO] [stdout] test rdjsonl::tests::rule_id_lands_in_code_value ... ok
[INFO] [stdout] test rdjsonl::tests::severity_maps_to_rdf_constants ... ok
[INFO] [stdout] test rdjsonl::tests::emit_one_per_line_and_trailing_newline ... ok
[INFO] [stdout] test rdjsonl::tests::each_line_is_independently_valid_json ... ok
[INFO] [stdout] test rdjsonl::tests::location_range_carries_start_and_end ... ok
[INFO] [stdout] test pipeline::tests::pipeline_corpus_with_many_files ... ok
[INFO] [stdout] test pipeline::tests::pipeline_empty_document ... ok
[INFO] [stdout] test pipeline::tests::pipeline_diagnostics_have_confidence_scores ... ok
[INFO] [stdout] test pipeline::tests::pipeline_corpus_with_zero_files ... ok
[INFO] [stdout] test pipeline::tests::pipeline_confidence_filtering_works ... ok
[INFO] [stdout] test report::tests::report_escapes_html_in_messages ... ok
[INFO] [stdout] test report::tests::report_groups_by_category ... ok
[INFO] [stdout] test rule_pack::tests::load_rule_pack_missing_file ... ok
[INFO] [stdout] test rule_pack::tests::parse_pack_invalid_regex ... ok
[INFO] [stdout] test rule_pack::tests::parse_pack_invalid_severity ... ok
[INFO] [stdout] test rule_pack::tests::parse_pack_invalid_toml ... ok
[INFO] [stdout] test rule_pack::tests::parse_pack_no_rules ... ok
[INFO] [stdout] test rule_pack::tests::parse_valid_rule_pack ... ok
[INFO] [stdout] test rules::ambiguity::tests::escape_hatch_does_not_fire_on_clean_text ... ok
[INFO] [stdout] test rules::ambiguity::tests::escape_hatch_fires_on_and_so_on ... ok
[INFO] [stdout] test rules::ambiguity::tests::escape_hatch_fires_on_etc ... ok
[INFO] [stdout] test rules::ambiguity::tests::escape_hatch_fix_on_and_so_on ... ok
[INFO] [stdout] test rules::ambiguity::tests::escape_hatch_fix_suggests_removal ... ok
[INFO] [stdout] test pipeline::tests::pipeline_returns_empty_for_clean_document ... ok
[INFO] [stdout] test rules::ambiguity::tests::implicit_reference_does_not_fire_on_explicit_subject ... ok
[INFO] [stdout] test rule_pack::tests::load_rule_packs_resolves_relative_paths ... ok
[INFO] [stdout] test rules::ambiguity::tests::implicit_reference_fires_on_it ... ok
[INFO] [stdout] test rules::ambiguity::tests::implicit_reference_fires_on_this ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_boundary_does_not_fire_on_text_without_units ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_boundary_does_not_fire_with_maximum ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_boundary_does_not_fire_with_at_least ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_boundary_fires_on_numeric_without_range ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_on_http_404 ... ok
[INFO] [stdout] test report::tests::empty_report_shows_no_findings ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_on_factor ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_on_http_status ... ok
[INFO] [stdout] test report::tests::multiple_files_in_report ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_on_percentage ... ok
[INFO] [stdout] test pipeline::tests::pipeline_walks_nested_subsections ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_on_req_id ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_on_v_prefix ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_with_known_unit ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_with_mb ... ok
[INFO] [stdout] test rules::ambiguity::tests::multiple_rules_fire_on_same_requirement ... ok
[INFO] [stdout] test rules::ambiguity::tests::negation_scope_does_not_fire_on_clean_text ... ok
[INFO] [stdout] test rules::ambiguity::tests::negation_scope_does_not_fire_on_simple_negation ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_on_version ... ok
[INFO] [stdout] test rules::ambiguity::tests::negation_scope_fires_on_not_always ... ok
[INFO] [stdout] test rules::ambiguity::tests::passive_no_agent_does_not_fire_on_active_voice ... ok
[INFO] [stdout] test rules::ambiguity::tests::negation_scope_fires_on_not_all ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_with_requests ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_fires_on_payload_without_unit ... ok
[INFO] [stdout] test rules::ambiguity::tests::passive_no_agent_does_not_fire_with_agent ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_fires_on_bare_number ... ok
[INFO] [stdout] test rules::ambiguity::tests::passive_no_agent_fires_on_passive ... ok
[INFO] [stdout] test rules::ambiguity::tests::temporal_ambiguity_does_not_fire_with_precise_timing ... ok
[INFO] [stdout] test rules::ambiguity::tests::temporal_ambiguity_fires_on_after ... ok
[INFO] [stdout] test rules::ambiguity::tests::temporal_ambiguity_fires_on_eventually ... ok
[INFO] [stdout] test rules::ambiguity::tests::undefined_comparative_fires_on_better ... ok
[INFO] [stdout] test rules::ambiguity::tests::undefined_comparative_does_not_fire_on_clean_text ... ok
[INFO] [stdout] test rules::ambiguity::tests::undefined_comparative_fires_on_faster ... ok
[INFO] [stdout] test rules::ambiguity::tests::undefined_comparative_does_not_fire_with_baseline ... ok
[INFO] [stdout] test rules::ambiguity::tests::missing_units_does_not_fire_with_seconds ... ok
[INFO] [stdout] test rules::ambiguity::tests::temporal_ambiguity_does_not_fire_on_clean_text ... ok
[INFO] [stdout] test rules::ambiguity::tests::vague_quantifier_does_not_fire_on_clean_text ... ok
[INFO] [stdout] test rules::ambiguity::tests::vague_quantifier_fires_on_a_lot_of ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_does_not_fire_on_must ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_does_not_fire_on_shall ... ok
[INFO] [stdout] test rules::ambiguity::tests::vague_quantifier_fires_on_several ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_fires_on_should ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_fires_on_might ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_fix_preserves_case ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_fix_suggests_shall ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_fix_on_could ... ok
[INFO] [stdout] test rules::ambiguity::tests::weak_modal_fix_on_might ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_fires_on_appropriate ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_case_insensitive ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_does_not_fire_on_clean_text ... ok
[INFO] [stdout] test rules::completeness::tests::com001_does_not_fire_on_section_without_functional_reqs ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_respects_word_boundaries ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_fix_for_sufficient ... ok
[INFO] [stdout] test rules::completeness::tests::com001_does_not_fire_when_req_mentions_error ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_fix_suggests_replacement ... ok
[INFO] [stdout] test rules::completeness::tests::com001_fires_on_section_without_error_handling ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_span_accuracy ... ok
[INFO] [stdout] test rules::completeness::tests::com001_does_not_fire_with_error_subsection ... ok
[INFO] [stdout] test rules::ambiguity::tests::weasel_word_multiple_matches ... ok
[INFO] [stdout] test rules::completeness::tests::com002_does_not_fire_on_non_shall_requirement ... ok
[INFO] [stdout] test rules::completeness::tests::com002_does_not_fire_with_acceptance_subsection ... ok
[INFO] [stdout] test report::tests::report_groups_by_severity ... ok
[INFO] [stdout] test rules::completeness::tests::com002_does_not_fire_with_http_status_code ... ok
[INFO] [stdout] test rules::completeness::tests::com002_does_not_fire_with_protocol_name ... ok
[INFO] [stdout] test report::tests::report_includes_file_locations ... ok
[INFO] [stdout] test rules::completeness::tests::com002_does_not_fire_with_time_duration ... ok
[INFO] [stdout] test report::tests::report_includes_summary_stats ... ok
[INFO] [stdout] test rules::completeness::tests::com002_skipped_by_named_standard_inline ... ok
[INFO] [stdout] test rules::completeness::tests::com002_fires_on_req_without_acceptance_criteria ... ok
[INFO] [stdout] test rules::completeness::tests::com002_skipped_by_mechanism_clause ... ok
[INFO] [stdout] test rules::completeness::tests::com002_does_not_fire_when_given_when_then_follows ... ok
[INFO] [stdout] test rules::completeness::tests::com002_skipped_by_countable_event_threshold ... ok
[INFO] [stdout] test rules::completeness::tests::com002_uses_req_id_when_available ... ok
[INFO] [stdout] test pipeline::tests::pipeline_runs_all_rules ... ok
[INFO] [stdout] test report::tests::report_includes_rule_explanations ... ok
[INFO] [stdout] test rules::completeness::tests::com002_still_fires_on_bare_verb_object ... ok
[INFO] [stdout] test rules::contradiction::tests::con001_does_not_fire_on_single_requirement ... ok
[INFO] [stdout] test rules::completeness::tests::com003_does_not_fire_with_boundary_in_text ... ok
[INFO] [stdout] test rules::completeness::tests::com003_does_not_fire_on_simple_req ... ok
[INFO] [stdout] test rules::completeness::tests::com003_does_not_fire_with_boundary_sibling ... ok
[INFO] [stdout] test rules::contradiction::tests::con001_does_not_fire_on_different_objects ... ok
[INFO] [stdout] test rules::completeness::tests::com003_fires_on_input_without_boundary ... ok
[INFO] [stdout] test rules::completeness::tests::com003_fires_on_external_call ... ok
[INFO] [stdout] test pipeline::tests::pipeline_with_only_semantic_rules_semantic_disabled ... ok
[INFO] [stdout] test rules::completeness::tests::com003_fires_on_numeric_without_boundary ... ok
[INFO] [stdout] test rules::contradiction::tests::con001_fires_with_must_modal ... ok
[INFO] [stdout] test rules::contradiction::tests::con002_fires_on_lower_bound_exceeds_upper ... ok
[INFO] [stdout] test rules::contradiction::tests::con004_does_not_fire_on_unrelated_requirements ... ok
[INFO] [stdout] test rules::contradiction::tests::con001_fires_on_shall_vs_shall_not ... ok
[INFO] [stdout] test rules::contradiction::tests::con003_does_not_fire_on_single_requirement ... ok
[INFO] [stdout] test rules::contradiction::tests::con004_fires_on_always_vs_never ... ok
[INFO] [stdout] test rules::contradiction::tests::con004_fires_on_enable_vs_disable ... ok
[INFO] [stdout] test rules::contradiction::tests::con002_does_not_fire_on_consistent_values ... ok
[INFO] [stdout] test pipeline::tests::pipeline_document_where_every_requirement_triggers_rules ... ok
[INFO] [stdout] test rules::contradiction::tests::con004_fires_on_allow_vs_deny ... ok
[INFO] [stdout] test rules::contradiction::tests::con003_does_not_fire_on_different_actions ... ok
[INFO] [stdout] test rules::contradiction::tests::con003_fires_on_before_vs_after ... ok
[INFO] [stdout] test pipeline::tests::pipeline_sorts_diagnostics_by_location ... ok
[INFO] [stdout] test rules::contradiction::tests::con002_does_not_fire_on_different_parameters ... ok
[INFO] [stdout] test rules::contradiction::tests::con002_fires_on_exact_vs_upper_bound ... ok
[INFO] [stdout] test rules::contradiction::tests::con003_fires_with_prior_to_vs_following ... ok
[INFO] [stdout] test rules::contradiction::tests::con006_is_deterministic_phase ... ok
[INFO] [stdout] test rules::contradiction::tests::con002_fires_on_different_exact_values ... ok
[INFO] [stdout] test rules::contradiction::tests::keyword_overlap_partial ... ok
[INFO] [stdout] test rules::contradiction::tests::nli_contradiction_is_semantic_phase ... ok
[INFO] [stdout] test rules::contradiction::tests::nli_contradiction_with_noop_detector_produces_nothing ... ok
[INFO] [stdout] test rules::criterion::tests::boundary_below_above ... ok
[INFO] [stdout] test rules::contradiction::tests::keyword_overlap_both_empty ... ok
[INFO] [stdout] test rules::criterion::tests::boundary_between_and ... ok
[INFO] [stdout] test rules::contradiction::tests::nli_contradiction_no_detector_produces_nothing ... ok
[INFO] [stdout] test rules::contradiction::tests::nli_contradiction_skips_short_requirements ... ok
[INFO] [stdout] test rules::criterion::tests::boundary_up_to ... ok
[INFO] [stdout] test rules::contradiction::tests::nli_contradiction_below_threshold_no_fire ... ok
[INFO] [stdout] test rules::contradiction::tests::nli_contradiction_fires_above_threshold ... ok
[INFO] [stdout] test rules::criterion::tests::boundary_shall_not_exceed ... ok
[INFO] [stdout] test rules::criterion::tests::composite_still_flags_genuinely_vague_requirements ... ok
[INFO] [stdout] test rules::criterion::tests::criticality_asil ... ok
[INFO] [stdout] test rules::criterion::tests::criticality_dal ... ok
[INFO] [stdout] test rules::contradiction::tests::keyword_overlap_identical ... ok
[INFO] [stdout] test rules::criterion::tests::criticality_safety_goal ... ok
[INFO] [stdout] test rules::criterion::tests::enumeration_three_items ... ok
[INFO] [stdout] test rules::criterion::tests::boundary_within_plus_minus ... ok
[INFO] [stdout] test rules::criterion::tests::composite_recognises_real_spec_examples ... ok
[INFO] [stdout] test rules::criterion::tests::enumeration_two_items_too_short ... ok
[INFO] [stdout] test rules::criterion::tests::enumeration_with_and ... ok
[INFO] [stdout] test rules::criterion::tests::boundary_shall_be_limited ... ok
[INFO] [stdout] test rules::criterion::tests::criticality_fha ... ok
[INFO] [stdout] test rules::contradiction::tests::con004_does_not_fire_without_opposing_qualifier ... ok
[INFO] [stdout] test rules::criterion::tests::list_header_as_follows ... ok
[INFO] [stdout] test rules::criterion::tests::list_header_the_following ... ok
[INFO] [stdout] test rules::criterion::tests::list_header_trailing_colon ... ok
[INFO] [stdout] test rules::criterion::tests::criticality_sil ... ok
[INFO] [stdout] test rules::criterion::tests::mechanism_clause_negative_using_best_practices ... ok
[INFO] [stdout] test rules::criterion::tests::mechanism_clause_negative_via_email ... ok
[INFO] [stdout] test rules::criterion::tests::mechanism_clause_through_hsm ... ok
[INFO] [stdout] test rules::criterion::tests::mechanism_clause_using_oauth ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_inline_compliant_with_fips ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_hipaa_paragraph_bracket ... ok
[INFO] [stdout] test rules::criterion::tests::mechanism_clause_via_uds_service ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_inline_conforming_to_autosar ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_emir_article_bracket ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_inline_in_accordance_with_hipaa ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_inline_mil_prf ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_negative_meet_the_standard ... ok
[INFO] [stdout] test rules::criterion::tests::no_colon_no_enumeration ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_alone_does_not_match ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_consecutive_cycles ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_degrees ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_iterations ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_lux ... ok
[INFO] [stdout] test rules::criterion::tests::no_list_header_in_freeform ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_inline_per_sae ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_negative_bare_comply ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_milliseconds ... ok
[INFO] [stdout] test rules::criterion::tests::no_boundary_in_freeform_prose ... ok
[INFO] [stdout] test rules::criterion::tests::no_criticality_when_no_brackets ... ok
[INFO] [stdout] test rules::criterion::tests::named_standard_pci_dss_bracket ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_nm ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_no_number_for_cycles_does_not_match ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_retries ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_percent ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_duplicate_exact_match ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_duplicate_single_file_no_fire ... ok
[INFO] [stdout] test rules::criterion::tests::mechanism_clause_via_arinc ... ok
[INFO] [stdout] test rules::cross_file::tests::undefined_reference_fires ... ok
[INFO] [stdout] test rules::cross_file::tests::undefined_reference_multiple_refs ... ok
[INFO] [stdout] test rules::criterion::tests::numeric_unit_psi ... ok
[INFO] [stdout] test rules::cross_file::tests::undefined_reference_self_ref_no_fire ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_contradiction_same_file_no_fire ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_duplicate_different_text_no_fire ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_duplicate_no_false_positive_same_file ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_contradiction_fires ... ok
[INFO] [stdout] test rules::custom::tests::custom_regex_rule_no_match ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_rules_have_correct_ids ... ok
[INFO] [stdout] test rules::cross_file::tests::undefined_reference_valid_ref_no_fire ... ok
[INFO] [stdout] test rules::cross_file::tests::cross_file_contradiction_no_overlap_no_fire ... ok
[INFO] [stdout] test rules::custom::tests::custom_regex_rule_fires_on_match ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear001_does_not_fire_on_proper_trigger ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear001_fires_on_empty_trigger ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear001_allows_valid_short_trigger ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear001_does_not_fire_on_non_event_driven ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear002_does_not_fire_on_valid_two_keyword_pattern ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear002_does_not_fire_on_non_ears ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear002_fires_on_three_distinct_keywords ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear001_fires_on_when_shall_directly ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear001_fires_on_short_trigger ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear002_fires_on_excessive_keyword_repetition ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear003_does_not_fire_on_complete_requirement ... ok
[INFO] [stdout] test rules::custom::tests::custom_regex_rule_multiple_matches ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear003_does_not_fire_on_non_conditional ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear003_fires_on_empty_action ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear003_fires_on_if_without_shall ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear003_does_not_fire_on_where_with_shall ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear003_fires_on_missing_shall ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear002_does_not_fire_on_single_keyword ... ok
[INFO] [stdout] test rules::gaming::tests::gam001_does_not_fire_on_conditional_return ... ok
[INFO] [stdout] test rules::ears_rules::tests::ear003_fires_on_while_without_shall ... ok
[INFO] [stdout] test rules::gaming::tests::gam002_does_not_fire_on_concrete_criterion ... ok
[INFO] [stdout] test rules::gaming::tests::gam001_fires_on_return_without_constraint ... ok
[INFO] [stdout] test rules::gaming::tests::gam001_does_not_fire_on_non_return_req ... ok
[INFO] [stdout] test rules::gaming::tests::gam001_does_not_fire_on_if_condition ... ok
[INFO] [stdout] test rules::gaming::tests::gam001_does_not_fire_with_based_on ... ok
[INFO] [stdout] test rules::gaming::tests::gam001_does_not_fire_with_computation_constraint ... ok
[INFO] [stdout] test rules::gaming::tests::gam002_does_not_fire_on_single_req ... ok
[INFO] [stdout] test rules::gaming::tests::gam002_fires_on_tautological_criterion ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_does_not_fire_on_bounded_domain ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_does_not_fire_on_enumerated_set ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_does_not_fire_on_api_requests ... ok
[INFO] [stdout] test rules::gaming::tests::gam004_does_not_fire_on_normal_req ... ok
[INFO] [stdout] test rules::gaming::tests::gam004_does_not_fire_with_availability_percentage ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_does_not_fire_with_defined_in_reference ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_does_not_fire_on_temporal_every ... ok
[INFO] [stdout] test rules::gaming::tests::gam005_does_not_fire_when_req_is_negative ... ok
[INFO] [stdout] test rules::gaming::tests::gam004_fires_on_complete_without_errors ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_fires_on_every_unbounded ... ok
[INFO] [stdout] test rules::gaming::tests::gam004_does_not_fire_with_measurable_criterion ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_fires_on_unbounded_all ... ok
[INFO] [stdout] test rules::gaming::tests::gam005_does_not_fire_on_non_action_req ... ok
[INFO] [stdout] test rules::contradiction::tests::con006_fires_on_at_least_vs_not_exceed_conflict ... ok
[INFO] [stdout] test rules::gaming::tests::gam003_does_not_fire_on_every_request ... ok
[INFO] [stdout] test rules::gaming::tests::gam005_does_not_fire_with_negative_sibling ... ok
[INFO] [stdout] test rules::gaming::tests::gam004_fires_on_shall_not_crash ... ok
[INFO] [stdout] test rules::incose::tests::absolute_does_not_fire_on_probabilistic ... ok
[INFO] [stdout] test rules::gaming::tests::gam005_fires_on_positive_only ... ok
[INFO] [stdout] test rules::incose::tests::absolute_fires_on_always ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_does_not_fire_on_cryptography_general_terms ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_md5 ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_does_not_fire_on_modern_rsa ... ok
[INFO] [stdout] test rules::incose::tests::absolute_fires_on_zero_downtime ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_ecb_mode ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_md4_and_md2 ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_3des_variants ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_bare_des ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_does_not_fire_on_word_containing_des ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_sha1_variants ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_rc4 ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_short_rsa ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fires_on_unix_crypt ... ok
[INFO] [stdout] test rules::contradiction::tests::con006_does_not_fire_on_consistent_constraints ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_does_not_fire_on_sha256_or_sha384 ... ok
[INFO] [stdout] test rules::incose::tests::grammar_tool_no_op_when_checker_absent ... ok
[INFO] [stdout] test rules::incose::tests::grammar_tool_emits_no_findings_when_mock_returns_empty ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_flags_multiple_primitives_in_one_requirement ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_fix_is_fixable ... ok
[INFO] [stdout] test rules::incose::tests::missing_shall_fires_on_should ... ok
[INFO] [stdout] test rules::incose::tests::missing_shall_fires_on_must ... ok
[INFO] [stdout] test rules::incose::tests::grammar_tool_surfaces_mock_findings ... ok
[INFO] [stdout] test rules::incose::tests::missing_shall_does_not_fire_on_shall ... ok
[INFO] [stdout] test rules::incose::tests::deprecated_crypto_rule_id_is_016 ... ok
[INFO] [stdout] test rules::incose::tests::negative_does_not_fire_on_positive ... ok
[INFO] [stdout] test rules::incose::tests::plural_subject_does_not_fire_on_singular ... ok
[INFO] [stdout] test rules::incose::tests::oblique_symbol_fires_on_and_or ... ok
[INFO] [stdout] test rules::incose::tests::oblique_symbol_skips_technical_terms ... ok
[INFO] [stdout] test rules::incose::tests::parenthetical_skips_references ... ok
[INFO] [stdout] test rules::incose::tests::parenthetical_fires_on_qualifying_parens ... ok
[INFO] [stdout] test rules::incose::tests::negative_fires_on_shall_not ... ok
[INFO] [stdout] test rules::incose::tests::purpose_does_not_fire_on_normal_requirement ... ok
[INFO] [stdout] test rules::incose::tests::oblique_symbol_does_not_fire_on_clean ... ok
[INFO] [stdout] test rules::incose::tests::singular_does_not_fire_without_shall ... ok
[INFO] [stdout] test rules::incose::tests::purpose_fires_on_in_order_to ... ok
[INFO] [stdout] test rules::incose::tests::purpose_fires_on_so_that ... ok
[INFO] [stdout] test rules::incose::tests::singular_fires_on_two_shalls ... ok
[INFO] [stdout] test rules::incose::tests::plural_subject_fires_on_users ... ok
[INFO] [stdout] test rules::incose::tests::plural_subject_skips_false_positive_singulars ... ok
[INFO] [stdout] test rules::incose::tests::tolerance_does_not_fire_with_bound ... ok
[INFO] [stdout] test rules::incose::tests::solution_fires_on_via_rest ... ok
[INFO] [stdout] test rules::incose::tests::solution_fires_on_kafka ... ok
[INFO] [stdout] test rules::incose::tests::singular_does_not_fire_on_one_shall ... ok
[INFO] [stdout] test rules::incose::tests::parenthetical_skips_abbreviations ... ok
[INFO] [stdout] test rules::incose::tests::missing_shall_skips_declarative_text ... ok
[INFO] [stdout] test rules::incose::tests::solution_does_not_fire_on_abstract ... ok
[INFO] [stdout] test rules::contradiction::tests::con006_fires_on_between_vs_at_least_conflict ... ok
[INFO] [stdout] test rules::incose::tests::oblique_symbol_is_fixable ... ok
[INFO] [stdout] test rules::incose::tests::tolerance_does_not_fire_without_numeric ... ok
[INFO] [stdout] test rules::incose::tests::universal_does_not_fire_without_quantifier ... ok
[INFO] [stdout] test rules::incose::tests::tolerance_does_not_fire_with_pm_notation ... ok
[INFO] [stdout] test rules::semantic::tests::amb011_fires_on_near_duplicates_same_section ... ok
[INFO] [stdout] test rules::incose::tests::tolerance_fires_on_bare_value ... ok
[INFO] [stdout] test rules::semantic::tests::amb011_does_not_fire_on_different_requirements ... ok
[INFO] [stdout] test rules::semantic::tests::amb011_skips_short_requirements ... ok
[INFO] [stdout] test rules::incose::tests::universal_skips_bounded_phrases ... ok
[INFO] [stdout] test rules::semantic::tests::amb011_does_not_fire_across_sections ... ok
[INFO] [stdout] test rules::incose::tests::universal_fires_on_all_inputs ... ok
[INFO] [stdout] test rules::incose::tests::universal_fires_on_every_user ... ok
[INFO] [stdout] test rules::semantic::tests::amb011_does_not_fire_on_exact_duplicates ... ok
[INFO] [stdout] test rules::semantic::tests::amb013_does_not_fire_on_or_only ... ok
[INFO] [stdout] test rules::semantic::tests::amb013_does_not_fire_on_and_only ... ok
[INFO] [stdout] test rules::semantic::tests::amb012_does_not_fire_without_adverb ... ok
[INFO] [stdout] test rules::semantic::tests::amb012_does_not_fire_on_single_verb ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_check_requirement_returns_empty ... ok
[INFO] [stdout] test rules::contradiction::tests::con006_does_not_fire_on_no_numeric_constraints ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_has_correct_id_and_severity ... ok
[INFO] [stdout] test rules::semantic::tests::amb013_fires_on_or_and_pattern ... ok
[INFO] [stdout] test rules::semantic::tests::amb012_fires_on_adverb_before_conjoined_verbs ... ok
[INFO] [stdout] test rules::contradiction::tests::con006_does_not_fire_on_different_parameters ... ok
[INFO] [stdout] test rules::semantic::tests::significant_words_extracts_correctly ... ok
[INFO] [stdout] test rules::semantic::tests::texts_differ_nontrivially_detects_differences ... ok
[INFO] [stdout] test rules::structure::tests::significant_words_filters_stopwords ... ok
[INFO] [stdout] test rules::structure::tests::str001_does_not_fire_on_non_shall_text ... ok
[INFO] [stdout] test rules::structure::tests::str001_does_not_fire_with_explicit_id ... ok
[INFO] [stdout] test rules::structure::tests::str001_fires_on_req_without_id ... ok
[INFO] [stdout] test rules::semantic::tests::amb012_fires_on_securely ... ok
[INFO] [stdout] test rules::structure::tests::str001_accepts_fr_and_nfr_prefixes ... ok
[INFO] [stdout] test rules::structure::tests::str001_does_not_fire_with_id_in_text ... ok
[INFO] [stdout] test rules::semantic::tests::texts_differ_nontrivially_ignores_case_and_whitespace ... ok
[INFO] [stdout] test rules::semantic::tests::amb013_fires_on_and_or_pattern ... ok
[INFO] [stdout] test report::tests::report_is_self_contained_html ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_collects_across_sections ... ok
[INFO] [stdout] test rules::structure::tests::str002_counts_subsection_requirements ... ok
[INFO] [stdout] test rules::structure::tests::str002_does_not_fire_under_threshold ... ok
[INFO] [stdout] test rules::structure::tests::str002_fires_on_oversized_section ... ok
[INFO] [stdout] test rules::structure::tests::str003_does_not_fire_under_heading ... ok
[INFO] [stdout] test rules::structure::tests::str003_fires_multiple_orphans ... ok
[INFO] [stdout] test rules::structure::tests::str003_fires_on_root_level_requirement ... ok
[INFO] [stdout] test rules::structure::tests::str004_detects_across_sections ... ok
[INFO] [stdout] test rules::structure::tests::str004_does_not_fire_on_different_requirements ... ok
[INFO] [stdout] test rules::structure::tests::str004_skips_short_requirements ... ok
[INFO] [stdout] test rules::structure::tests::str004_fires_on_duplicate_requirements ... ok
[INFO] [stdout] test rules::structure::tests::str005_does_not_fire_on_between_x_and_y ... ok
[INFO] [stdout] test rules::structure::tests::str005_severity_is_info ... ok
[INFO] [stdout] test rules::structure::tests::str006_does_not_fire_when_glossary_defines_acronym ... ok
[INFO] [stdout] test rules::structure::tests::str006_does_not_fire_on_well_known_acronym ... ok
[INFO] [stdout] test rules::structure::tests::str006_does_not_fire_with_parenthetical_definition ... ok
[INFO] [stdout] test rules::structure::tests::str006_fires_multiple_undefined_acronyms ... ok
[INFO] [stdout] test rules::structure::tests::str006_fires_on_undefined_acronym ... ok
[INFO] [stdout] test rules::structure::tests::str005_does_not_fire_on_shall_support_x_and_y ... ok
[INFO] [stdout] test rules::structure::tests::str005_does_not_fire_on_single_shall ... ok
[INFO] [stdout] test rules::structure::tests::str005_fires_on_must_and_must ... ok
[INFO] [stdout] test rules::structure::tests::str005_does_not_fire_on_validate_and_return ... ok
[INFO] [stdout] test rules::structure::tests::str007_does_not_fire_on_abstract_requirement ... ok
[INFO] [stdout] test rules::structure::tests::str005_fires_on_shall_and_shall ... ok
[INFO] [stdout] test rules::structure::tests::str005_fires_on_shall_comma_shall_and_shall ... ok
[INFO] [stdout] test rules::structure::tests::str006_severity_is_info ... ok
[INFO] [stdout] test rules::contradiction::tests::con006_fires_on_different_exact_rate_values ... ok
[INFO] [stdout] test rules::structure::tests::str007_does_not_fire_on_port_443 ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_django ... ok
[INFO] [stdout] test rules::structure::tests::str007_does_not_fire_on_protocol ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_angular ... ok
[INFO] [stdout] test rules::structure::tests::str007_does_not_fire_on_port_80 ... ok
[INFO] [stdout] test rules::structure::tests::str007_case_insensitive_databases ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_ip_address ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_implemented_in_python ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_cloud_service ... ok
[INFO] [stdout] test rules::structure::tests::str007_does_not_fire_on_algorithm ... ok
[INFO] [stdout] test rules::structure::tests::str007_does_not_fire_on_data_format ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_file_path ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_specific_framework ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_non_standard_port ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_does_not_fire_with_consistent_terminology ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_specific_database ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_redis ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_implementation_language ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_lambda_function ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_does_not_fire_on_single_occurrence ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_s3_bucket ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_mysql ... ok
[INFO] [stdout] test rules::structure::tests::str007_multiple_issues_in_one_requirement ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_port_3000 ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_use_pandas ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_using_go ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_sqlite ... ok
[INFO] [stdout] test rules::structure::tests::word_overlap_ratio_disjoint ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_windows_path ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_fires_on_inconsistent_terms_user_customer ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_mongodb ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_fires_on_authenticate_login ... ok
[INFO] [stdout] test rules::style::tests::sty002_does_not_fire_on_consistent_markers ... ok
[INFO] [stdout] test rules::style::tests::sty002_fires_on_mixed_markers ... ok
[INFO] [stdout] test rules::structure::tests::word_overlap_ratio_identical ... ok
[INFO] [stdout] test rules::structure::tests::str007_fires_on_specific_library ... ok
[INFO] [stdout] test rules::style::tests::sty003_fires_on_mixed_modals ... ok
[INFO] [stdout] test rules::style::tests::sty001_does_not_fire_on_sequential_levels ... ok
[INFO] [stdout] test rules::style::tests::sty004_does_not_fire_on_balanced_sections ... ok
[INFO] [stdout] test rules::structure::tests::str007_severity_is_info ... ok
[INFO] [stdout] test rules::style::tests::sty003_does_not_fire_on_single_req ... ok
[INFO] [stdout] test rules::structure::tests::str007_rule_id ... ok
[INFO] [stdout] test rules::style::tests::sty001_does_not_fire_on_single_heading ... ok
[INFO] [stdout] test rules::style::tests::sty001_fires_on_level_jump ... ok
[INFO] [stdout] test rules::style::tests::sty001_fix_for_h1_to_h4_jump ... ok
[INFO] [stdout] test rules::style::tests::sty004_fires_on_imbalanced_sections ... ok
[INFO] [stdout] test rules::style::tests::sty001_fix_suggests_correct_level ... ok
[INFO] [stdout] test rules::style::tests::sty006_fires_on_shall_be_responsible_for ... ok
[INFO] [stdout] test rules::style::tests::sty005_fires_on_heading_followed_by_many_requirements ... ok
[INFO] [stdout] test rules::style::tests::sty006_fires_on_shall_be_capable_of ... ok
[INFO] [stdout] test rules::style::tests::sty005_does_not_fire_on_few_requirements ... ok
[INFO] [stdout] test rules::style::tests::sty006_fires_on_shall_be_able_to ... ok
[INFO] [stdout] test rules::style::tests::sty003_tie_defaults_to_shall ... ok
[INFO] [stdout] test rules::style::tests::sty006_does_not_fire_on_plain_shall ... ok
[INFO] [stdout] test rules::semantic::tests::amb014_fires_on_delete_remove ... ok
[INFO] [stdout] test rules::style::tests::sty006_fires_on_shall_ensure_that ... ok
[INFO] [stdout] test rules::style::tests::sty005_does_not_fire_on_section_without_requirements ... ok
[INFO] [stdout] test rules::style::tests::sty006_does_not_fire_on_shall_be_without_able ... ok
[INFO] [stdout] test rules::style::tests::sty006_case_insensitive ... ok
[INFO] [stdout] test rules::style::tests::sty005_does_not_fire_with_intro_text ... ok
[INFO] [stdout] test rules::style::tests::sty006_fires_on_shall_provide_the_ability_to ... ok
[INFO] [stdout] test rules::testability::tests::tst002_fires_on_simple_without_metric ... ok
[INFO] [stdout] test rules::testability::tests::tst001_fires_on_untestable_requirement ... ok
[INFO] [stdout] test rules::testability::tests::tst002_does_not_fire_with_percentage_metric ... ok
[INFO] [stdout] test rules::testability::tests::tst001_does_not_fire_on_non_shall_text ... ok
[INFO] [stdout] test rules::testability::tests::tst002_fires_on_clean_and_elegant ... ok
[INFO] [stdout] test rules::tests::category_prefix ... ok
[INFO] [stdout] test rules::tests::category_prefix_cross_file ... ok
[INFO] [stdout] test rules::tests::category_prefix_style ... ok
[INFO] [stdout] test rules::tests::category_prefix_ears ... ok
[INFO] [stdout] test rules::tests::custom_rule_match_everything_pattern ... ok
[INFO] [stdout] test rules::tests::diagnostic_has_confidence_field ... ok
[INFO] [stdout] test rules::testability::tests::tst002_does_not_fire_with_metrics ... ok
[INFO] [stdout] test rules::testability::tests::tst002_fires_on_easy_to_use ... ok
[INFO] [stdout] test rules::testability::tests::tst002_fires_on_user_friendly ... ok
[INFO] [stdout] test rules::testability::tests::tst001_does_not_fire_with_measurable_metric ... ok
[INFO] [stdout] test rules::testability::tests::tst002_does_not_fire_without_subjective_terms ... ok
[INFO] [stdout] test rules::style::tests::sty003_does_not_fire_on_consistent_modals ... ok
[INFO] [stdout] test rules::style::tests::sty006_fires_on_shall_have_the_capability_to ... ok
[INFO] [stdout] test rules::style::tests::sty006_fix_suggests_shall ... ok
[INFO] [stdout] test rules::testability::tests::tst001_does_not_fire_with_given_when_then ... ok
[INFO] [stdout] test rules::testability::tests::tst001_does_not_fire_with_action_verb ... ok
[INFO] [stdout] test rules::testability::tests::tst001_fires_on_vague_shall ... ok
[INFO] [stdout] test rules::tests::rule_id_display ... ok
[INFO] [stdout] test rules::tests::builtin_registry_has_all_rules ... ok
[INFO] [stdout] test rules::tests::registry_phase_filter ... ok
[INFO] [stdout] test rules::tests::with_config_adds_custom_rules ... ok
[INFO] [stdout] test rules::tests::with_config_and_packs_adds_pack_rules ... ok
[INFO] [stdout] test rules::tests::requirement_with_only_punctuation ... ok
[INFO] [stdout] test rules::tests::registry_get_by_id ... ok
[INFO] [stdout] test rules::tests::weasel_word_rule_produces_high_confidence ... ok
[INFO] [stdout] test rules::tests::requirement_with_only_whitespace ... ok
[INFO] [stdout] test rules::tests::very_long_requirement_does_not_hang ... ok
[INFO] [stdout] test rules::tests::all_rule_ids_unique ... ok
[INFO] [stdout] test rules::tests::different_rules_produce_different_confidence_levels ... ok
[INFO] [stdout] test rules::tests::implicit_reference_rule_produces_lower_confidence ... ok
[INFO] [stdout] test rules::tests::multiple_rules_fire_on_single_requirement ... ok
[INFO] [stdout] test rules::tests::requirement_containing_every_weasel_word ... ok
[INFO] [stdout] test sarif::tests::sarif_normalize_windows_paths ... ok
[INFO] [stdout] test rules::tests::requirement_with_empty_text ... ok
[INFO] [stdout] test rules::tests::with_config_and_packs_empty_packs ... ok
[INFO] [stdout] test rules::tests::with_config_empty_custom_rules_array ... ok
[INFO] [stdout] test rules::tests::with_config_default_disables_high_fp_rules ... ok
[INFO] [stdout] test rules::tests::with_config_disables_rule ... ok
[INFO] [stdout] test sarif::tests::sarif_severity_mapping ... ok
[INFO] [stdout] test rules::tests::with_config_overrides_severity ... ok
[INFO] [stdout] test sarif::tests::sarif_partial_fingerprints_present ... ok
[INFO] [stdout] test sarif::tests::sarif_file_paths_and_line_numbers ... ok
[INFO] [stdout] test sarif::tests::sarif_empty_results ... ok
[INFO] [stdout] test sarif::tests::sarif_multiple_files ... ok
[INFO] [stdout] test sat_checker::tests::between_vs_at_least_conflict ... ok
[INFO] [stdout] test sat_checker::tests::consistent_constraints_no_conflict ... ok
[INFO] [stdout] test sat_checker::tests::different_exact_values ... ok
[INFO] [stdout] test sarif::tests::sarif_fingerprints_are_stable ... ok
[INFO] [stdout] test sat_checker::tests::different_parameters_no_conflict ... ok
[INFO] [stdout] test sarif::tests::sarif_fix_included_in_result ... ok
[INFO] [stdout] test sat_checker::tests::exact_value_outside_range ... ok
[INFO] [stdout] test sat_checker::tests::lower_bound_exceeds_upper_bound ... ok
[INFO] [stdout] test template::tests::all_templates_have_frontmatter ... ok
[INFO] [stdout] test template::tests::all_names_list ... ok
[INFO] [stdout] test template::tests::all_templates_have_requirement_ids ... ok
[INFO] [stdout] test sat_checker::tests::three_constraints_combined_unsat ... ok
[INFO] [stdout] test template::tests::cli_tool_template_has_sections ... ok
[INFO] [stdout] test template::tests::data_pipeline_template_has_sections ... ok
[INFO] [stdout] test template::tests::domain_name ... ok
[INFO] [stdout] test template::tests::library_template_has_sections ... ok
[INFO] [stdout] test template::tests::microservice_template_has_sections ... ok
[INFO] [stdout] test template::tests::parse_cli_tool ... ok
[INFO] [stdout] test template::tests::parse_data_pipeline ... ok
[INFO] [stdout] test template::tests::parse_library ... ok
[INFO] [stdout] test template::tests::parse_microservice ... ok
[INFO] [stdout] test template::tests::parse_unknown ... ok
[INFO] [stdout] test template::tests::parse_web_api ... ok
[INFO] [stdout] test template::tests::web_api_template_has_sections ... ok
[INFO] [stdout] test testcase::tests::gherkin_preserves_pre_at_tag_prefix ... ok
[INFO] [stdout] test testcase::tests::gherkin_render_omits_tag_line_when_no_metadata ... ok
[INFO] [stdout] test testcase::tests::gherkin_render_uses_correct_keywords ... ok
[INFO] [stdout] test testcase::tests::json_deserialization_applies_defaults_for_missing_optional_fields ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_accepts_heading_with_no_separator ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_accepts_hyphen_separator_in_title ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_accepts_numbered_list_in_preconditions ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_accepts_synonym_section_headings ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_captures_notes_prose ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_errors_on_empty_document ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_errors_on_missing_steps_and_expected ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_ignores_preamble_before_first_test ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_preserves_duplicate_ids ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_preserves_inline_markdown_in_list_items ... ok
[INFO] [stdout] test testcase::tests::json_roundtrip_preserves_all_fields ... ok
[INFO] [stdout] test testcase::tests::markdown_parser_trims_whitespace_in_verifies_csv ... ok
[INFO] [stdout] test testcase::tests::markdown_render_contains_all_fields ... ok
[INFO] [stdout] test testcase::tests::markdown_render_omits_empty_sections ... ok
[INFO] [stdout] test testcase::tests::markdown_roundtrips_through_parser ... ok
[INFO] [stdout] test testcase::tests::priority_parse_accepts_common_casings ... ok
[INFO] [stdout] test testcase::tests::render_feature_wraps_scenarios_in_feature_block ... ok
[INFO] [stdout] test testcase::tests::render_markdown_suite_separates_cases_with_hr ... ok
[INFO] [stdout] test testcase::tests::split_csv_trims_and_skips_empty ... ok
[INFO] [stdout] test testcase::tests::split_heading_id_title_fallback_splits_on_whitespace ... ok
[INFO] [stdout] test testcase::tests::strip_list_marker_handles_variants ... ok
[INFO] [stdout] test testcase::tests::markdown_parses_suite_with_multiple_cases ... ok
[INFO] [stdout] test tests::builder_invalid_profile_returns_error ... ok
[INFO] [stdout] test template::tests::all_templates_have_overview_and_glossary ... ok
[INFO] [stdout] test sarif::tests::sarif_result_count_matches_diagnostics ... ok
[INFO] [stdout] test sarif::tests::sarif_result_has_rule_id_and_message ... ok
[INFO] [stdout] test sarif::tests::sarif_result_severity_mapping ... ok
[INFO] [stdout] test tests::detect_parser_by_extension ... ok
[INFO] [stdout] test tests::lint_file_on_fixture_returns_findings ... ok
[INFO] [stdout] test sarif::tests::sarif_schema_and_version ... ok
[INFO] [stdout] test sarif::tests::sarif_rule_definitions_included ... ok
[INFO] [stdout] test rules::tests::with_config_disables_all_rules ... ok
[INFO] [stdout] test pipeline::tests::pipeline_many_requirements_does_not_panic ... ok
[INFO] [stdout] test tests::reexported_types_are_accessible ... ok
[INFO] [stdout] test trace::tests::acceptance_criteria_reference_detected ... ok
[INFO] [stdout] test trace::tests::backward_reference_detected ... ok
[INFO] [stdout] test trace::tests::cross_file_traceability ... ok
[INFO] [stdout] test trace::tests::csv_escaping ... ok
[INFO] [stdout] test trace::tests::csv_format_structure ... ok
[INFO] [stdout] test trace::tests::empty_documents ... ok
[INFO] [stdout] test trace::tests::empty_matrix_human_format ... ok
[INFO] [stdout] test trace::tests::forward_reference_detected ... ok
[INFO] [stdout] test trace::tests::human_format_contains_table ... ok
[INFO] [stdout] test trace::tests::json_format_structure ... ok
[INFO] [stdout] test trace::tests::multiple_references_in_one_requirement ... ok
[INFO] [stdout] test trace::tests::requirements_without_ids_counted ... ok
[INFO] [stdout] test trace::tests::self_reference_excluded ... ok
[INFO] [stdout] test trace::tests::single_requirement_no_references ... ok
[INFO] [stdout] test trace::tests::test_reference_detected ... ok
[INFO] [stdout] test tests::builder_with_config_str ... ok
[INFO] [stdout] test trace::tests::trace_matrix_circular_references ... ok
[INFO] [stdout] test trace::tests::trace_matrix_csv_empty ... ok
[INFO] [stdout] test trace::tests::trace_matrix_json_with_no_ids ... ok
[INFO] [stdout] test trace::tests::trace_matrix_human_format_with_no_ids ... ok
[INFO] [stdout] test trace::tests::trace_matrix_with_no_ids ... ok
[INFO] [stdout] test trace::tests::undefined_reference_orphan ... ok
[INFO] [stdout] test trace::tests::trace_matrix_zero_documents ... ok
[INFO] [stdout] test trace::tests::unreferenced_definition_orphan ... ok
[INFO] [stdout] test sarif::tests::sarif_tool_metadata ... ok
[INFO] [stdout] test sarif::tests::sarif_special_characters_in_messages ... ok
[INFO] [stdout] test sarif::tests::sarif_write_to_buffer ... ok
[INFO] [stdout] test sarif::tests::sarif_valid_json_roundtrip ... ok
[INFO] [stdout] test tests::builder_default_builds_successfully ... ok
[INFO] [stdout] test tests::lint_string_known_bad_content ... ok
[INFO] [stdout] test tests::lint_string_with_empty_content ... ok
[INFO] [stdout] test sarif::tests::sarif_exactly_5000_results_no_truncation ... ok
[INFO] [stdout] test tests::builder_with_min_confidence_filters_low_confidence ... ok
[INFO] [stdout] test sarif::tests::sarif_truncation_at_5000_results ... ok
[INFO] [stdout] test tests::lint_string_returns_findings_for_bad_spec ... ok
[INFO] [stdout] test tests::to_sarif_produces_valid_json ... ok
[INFO] [stdout] test tests::builder_with_disabled_rules_suppresses_those_rules ... ok
[INFO] [stdout] test tests::builder_with_profile_changes_behavior ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1003 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.51s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/e2e_pipeline.rs (/opt/rustwide/target/release/deps/e2e_pipeline-bad1d03738ae8270)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test pipeline_lint_then_score_clean_spec ... FAILED
[INFO] [stdout] test pipeline_depgraph_from_spec ... FAILED
[INFO] [stdout] test pipeline_lint_then_score_bad_spec ... FAILED
[INFO] [stdout] test pipeline_convert_roundtrip ... FAILED
[INFO] [stdout] test pipeline_trace_matrix_from_spec ... FAILED
[INFO] [stdout] test pipeline_quality_comparison_clean_vs_bad ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- pipeline_lint_then_score_clean_spec stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'pipeline_lint_then_score_clean_spec' (3221) panicked at tests/e2e_pipeline.rs:17:5:
[INFO] [stdout] clean-spec.md fixture must exist
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e3b964227e1 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5e3b9643a94a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5e3b96426d4c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5e3b963fe026 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5e3b9641a909 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5e3b963b5fc0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5e3b9641aac2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5e3b963fe104 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5e3b963f6be9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5e3b963feccd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5e3b9643b12c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5e3b961db5b4 - <e2e_pipeline[e1abb4d9c1a0a2b4]::pipeline_lint_then_score_clean_spec::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   12:     0x5e3b963a92ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]   13:     0x5e3b963b6915 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   14:     0x5e3b963b01d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   15:     0x5e3b963b9a72 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   16:     0x5e3b96421b59 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   17:     0x7fad763fbdfa - <unknown>
[INFO] [stdout]   18:     0x7fad7648f3d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- pipeline_depgraph_from_spec stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'pipeline_depgraph_from_spec' (3219) panicked at tests/e2e_pipeline.rs:126:55:
[INFO] [stdout] should read spec: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e3b964227e1 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5e3b9643a94a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5e3b96426d4c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5e3b963fe026 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5e3b9641a909 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5e3b963b5fc0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5e3b9641aac2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5e3b963fe0d2 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5e3b963f6be9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5e3b963feccd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5e3b9643b12c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5e3b9643af02 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x5e3b961da8fd - <e2e_pipeline[e1abb4d9c1a0a2b4]::pipeline_depgraph_from_spec::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5e3b963a92ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]   14:     0x5e3b963b6915 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5e3b963b01d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5e3b963b9a72 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5e3b96421b59 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x7fad763fbdfa - <unknown>
[INFO] [stdout]   19:     0x7fad7648f3d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- pipeline_lint_then_score_bad_spec stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'pipeline_lint_then_score_bad_spec' (3220) panicked at tests/e2e_pipeline.rs:49:5:
[INFO] [stdout] bad-spec.md fixture must exist
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e3b964227e1 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5e3b9643a94a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5e3b96426d4c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5e3b963fe026 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5e3b9641a909 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5e3b963b5fc0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5e3b9641aac2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5e3b963fe104 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5e3b963f6be9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5e3b963feccd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5e3b9643b12c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5e3b961db131 - <e2e_pipeline[e1abb4d9c1a0a2b4]::pipeline_lint_then_score_bad_spec::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   12:     0x5e3b963a92ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]   13:     0x5e3b963b6915 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   14:     0x5e3b963b01d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   15:     0x5e3b963b9a72 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   16:     0x5e3b96421b59 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   17:     0x7fad763fbdfa - <unknown>
[INFO] [stdout]   18:     0x7fad7648f3d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- pipeline_convert_roundtrip stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'pipeline_convert_roundtrip' (3218) panicked at tests/e2e_pipeline.rs:77:55:
[INFO] [stdout] should read spec: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e3b964227e1 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5e3b9643a94a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5e3b96426d4c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5e3b963fe026 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5e3b9641a909 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5e3b963b5fc0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5e3b9641aac2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5e3b963fe0d2 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5e3b963f6be9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5e3b963feccd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5e3b9643b12c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5e3b9643af02 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x5e3b961da2ba - <e2e_pipeline[e1abb4d9c1a0a2b4]::pipeline_convert_roundtrip::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5e3b963a92ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]   14:     0x5e3b963b6915 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5e3b963b01d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5e3b963b9a72 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5e3b96421b59 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x7fad763fbdfa - <unknown>
[INFO] [stdout]   19:     0x7fad7648f3d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- pipeline_trace_matrix_from_spec stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'pipeline_trace_matrix_from_spec' (3223) panicked at tests/e2e_pipeline.rs:105:55:
[INFO] [stdout] should read spec: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e3b964227e1 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5e3b9643a94a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5e3b96426d4c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5e3b963fe026 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5e3b9641a909 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5e3b963b5fc0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5e3b9641aac2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5e3b963fe0d2 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5e3b963f6be9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5e3b963feccd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5e3b9643b12c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5e3b9643af02 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x5e3b961dac7a - <e2e_pipeline[e1abb4d9c1a0a2b4]::pipeline_trace_matrix_from_spec::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5e3b963a92ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]   14:     0x5e3b963b6915 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5e3b963b01d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5e3b963b9a72 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5e3b96421b59 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x7fad763fbdfa - <unknown>
[INFO] [stdout]   19:     0x7fad7648f3d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- pipeline_quality_comparison_clean_vs_bad stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'pipeline_quality_comparison_clean_vs_bad' (3222) panicked at tests/e2e_pipeline.rs:146:62:
[INFO] [stdout] should read: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e3b964227e1 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5e3b9643a94a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5e3b96426d4c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5e3b963fe026 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5e3b9641a909 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5e3b963b5fc0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5e3b9641aac2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5e3b963fe0d2 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5e3b963f6be9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5e3b963feccd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5e3b9643b12c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5e3b9643af02 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x5e3b961dbb62 - <e2e_pipeline[e1abb4d9c1a0a2b4]::pipeline_quality_comparison_clean_vs_bad::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5e3b963a92ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]   14:     0x5e3b963b6915 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5e3b963b01d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5e3b963b9a72 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5e3b96421b59 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x7fad763fbdfa - <unknown>
[INFO] [stdout]   19:     0x7fad7648f3d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     pipeline_convert_roundtrip
[INFO] [stdout]     pipeline_depgraph_from_spec
[INFO] [stdout]     pipeline_lint_then_score_bad_spec
[INFO] [stdout]     pipeline_lint_then_score_clean_spec
[INFO] [stdout]     pipeline_quality_comparison_clean_vs_bad
[INFO] [stdout]     pipeline_trace_matrix_from_spec
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 6 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test e2e_pipeline`
[INFO] running `Command { std: "docker" "inspect" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028", kill_on_drop: false }`
[INFO] [stdout] 537d70c87c23c6dce52affaa7fc193672c8d2f5670a347c01fbd0fbdd6a8a028
