[INFO] fetching crate skill-veil 0.3.0...
[INFO] testing skill-veil-0.3.0 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate skill-veil 0.3.0 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate skill-veil 0.3.0
[INFO] finished tweaking crates.io crate skill-veil 0.3.0
[INFO] tweaked toml for crates.io crate skill-veil 0.3.0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate skill-veil 0.3.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate skill-veil 0.3.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded toon-format v0.4.5
[INFO] [stderr]   Downloaded filetime v0.2.28
[INFO] [stderr]   Downloaded yara-x-proto v1.17.0
[INFO] [stderr]   Downloaded ascii_tree v0.1.1
[INFO] [stderr]   Downloaded text-size v1.1.1
[INFO] [stderr]   Downloaded pulley-macros v43.0.2
[INFO] [stderr]   Downloaded yara-x-macros v1.19.0
[INFO] [stderr]   Downloaded wasmtime-internal-versioned-export-macros v43.0.2
[INFO] [stderr]   Downloaded cranelift-bitset v0.130.2
[INFO] [stderr]   Downloaded cranelift-codegen-shared v0.130.2
[INFO] [stderr]   Downloaded wasmtime-internal-jit-icache-coherence v43.0.2
[INFO] [stderr]   Downloaded walrus-macro v0.26.0
[INFO] [stderr]   Downloaded cranelift-native v0.130.2
[INFO] [stderr]   Downloaded cranelift-control v0.130.2
[INFO] [stderr]   Downloaded cranelift-srcgen v0.130.2
[INFO] [stderr]   Downloaded wasmtime-internal-jit-debug v43.0.2
[INFO] [stderr]   Downloaded countme v3.0.1
[INFO] [stderr]   Downloaded wasmtime-internal-unwinder v43.0.2
[INFO] [stderr]   Downloaded cranelift-entity v0.130.2
[INFO] [stderr]   Downloaded leb128 v0.2.5
[INFO] [stderr]   Downloaded md2 v0.10.2
[INFO] [stderr]   Downloaded rowan v0.16.1
[INFO] [stderr]   Downloaded wasmprinter v0.245.1
[INFO] [stderr]   Downloaded cranelift-bforest v0.130.2
[INFO] [stderr]   Downloaded cranelift-assembler-x64-meta v0.130.2
[INFO] [stderr]   Downloaded cranelift-assembler-x64 v0.130.2
[INFO] [stderr]   Downloaded wasmtime-internal-fiber v43.0.2
[INFO] [stderr]   Downloaded dsa v0.6.3
[INFO] [stderr]   Downloaded pulldown-cmark-escape v0.10.1
[INFO] [stderr]   Downloaded wasmtime-internal-core v43.0.2
[INFO] [stderr]   Downloaded cranelift-frontend v0.130.2
[INFO] [stderr]   Downloaded protobuf-parse v3.7.2
[INFO] [stderr]   Downloaded pulley-interpreter v43.0.2
[INFO] [stderr]   Downloaded intaglio v1.13.3
[INFO] [stderr]   Downloaded wasm-encoder v0.245.1
[INFO] [stderr]   Downloaded protobuf-codegen v3.7.2
[INFO] [stderr]   Downloaded asn1-rs v0.7.1
[INFO] [stderr]   Downloaded cranelift-isle v0.130.2
[INFO] [stderr]   Downloaded annotate-snippets v0.12.15
[INFO] [stderr]   Downloaded cranelift-codegen-meta v0.130.2
[INFO] [stderr]   Downloaded daachorse v3.0.2
[INFO] [stderr]   Downloaded zip v8.2.0
[INFO] [stderr]   Downloaded yara-x-parser v1.16.0
[INFO] [stderr]   Downloaded pulldown-cmark v0.10.3
[INFO] [stderr]   Downloaded psl v2.1.203
[INFO] [stderr]   Downloaded wasmtime-internal-cranelift v43.0.2
[INFO] [stderr]   Downloaded walrus v0.26.1
[INFO] [stderr]   Downloaded compact_str v0.9.0
[INFO] [stderr]   Downloaded wasmtime-environ v43.0.2
[INFO] [stderr]   Downloaded wasmparser v0.245.1
[INFO] [stderr]   Downloaded hmac-sha256 v1.1.14
[INFO] [stderr]   Downloaded ort-sys v2.0.0-rc.12
[INFO] [stderr]   Downloaded rustls v0.23.39
[INFO] [stderr]   Downloaded object v0.38.1
[INFO] [stderr]   Downloaded ort v2.0.0-rc.12
[INFO] [stderr]   Downloaded fastembed v5.13.4
[INFO] [stderr]   Downloaded lzma-rust2 v0.15.7
[INFO] [stderr]   Downloaded skill-veil-core v0.3.0
[INFO] [stderr]   Downloaded yara-x v1.16.0
[INFO] [stderr]   Downloaded wasmtime v43.0.2
[INFO] [stderr]   Downloaded cranelift-codegen v0.130.2
[INFO] [stderr]   Downloaded clap v4.5.57
[INFO] [stderr]   Downloaded clap_builder v4.5.57
[INFO] [stderr]   Downloaded clap_lex v0.7.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86
[INFO] running `Command { std: "docker" "start" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86", 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" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86" "/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" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86", 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" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling cc v1.2.55
[INFO] [stderr]    Compiling zmij v1.0.20
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling pulldown-cmark v0.10.3
[INFO] [stderr]    Compiling colorchoice v1.0.4
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling rustls v0.23.39
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling bumpalo v3.20.2
[INFO] [stderr]    Compiling pulldown-cmark-escape v0.10.1
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling clap_lex v0.7.7
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling clap_builder v4.5.57
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling zopfli v0.8.3
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling filetime v0.2.28
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling tree-sitter-python v0.25.0
[INFO] [stderr]    Compiling tree-sitter-typescript v0.23.2
[INFO] [stderr]    Compiling tree-sitter-javascript v0.25.0
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling tar v0.4.46
[INFO] [stderr]    Compiling tree-sitter v0.26.9
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling clap v4.5.57
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling serde_yaml_ng v0.10.0
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling toon-format v0.4.5
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling skill-veil-core v0.3.0
[INFO] [stderr]    Compiling ureq v2.12.1
[INFO] [stderr]    Compiling skill-veil v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 21s
[INFO] running `Command { std: "docker" "inspect" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86", 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" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86" "/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 skill-veil v0.3.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 38.38s
[INFO] running `Command { std: "docker" "inspect" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86", 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" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86" "/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.26s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/skill_veil-9643b92f0da81c83)
[INFO] [stdout] 
[INFO] [stdout] running 732 tests
[INFO] [stdout] test abandoned::client::tests::parse_crates_extracts_updated_at ... ok
[INFO] [stdout] test abandoned::client::tests::parse_pypi_extracts_yanked_and_upload_time ... ok
[INFO] [stdout] test abandoned::client::tests::parse_npm_without_deprecation_is_clean ... ok
[INFO] [stdout] test abandoned::client::tests::parse_pypi_not_yanked_has_no_reason ... ok
[INFO] [stdout] test abandoned::client::tests::parse_npm_extracts_modified_and_deprecation ... ok
[INFO] [stdout] test abandoned::client::tests::safe_name_accepts_real_names_and_rejects_url_shaping ... ok
[INFO] [stdout] test abandoned::render::tests::render_lists_flagged_packages ... ok
[INFO] [stdout] test abandoned::tests::classify_passes_fresh_package ... ok
[INFO] [stdout] test abandoned::tests::classify_flags_stale_package ... ok
[INFO] [stdout] test abandoned::tests::classify_flags_deprecated_over_stale ... ok
[INFO] [stdout] test abandoned::client::tests::scoped_name_path_segment_encodes_slash ... ok
[INFO] [stdout] test abandoned::tests::enablement_combines_flag_config_and_env ... ok
[INFO] [stdout] test benchmark_output::tests::append_family_metrics_emits_nothing_when_all_families_are_empty ... ok
[INFO] [stdout] test benchmark_output::tests::append_family_metrics_omits_empty_families_to_avoid_nan_in_text_report ... ok
[INFO] [stdout] test abandoned::render::tests::render_sanitises_control_bytes ... ok
[INFO] [stdout] test benchmark_output::tests::benchmark_renderers_sanitise_control_sequences ... ok
[INFO] [stdout] test abandoned::tests::empty_package_returns_none_without_network ... ok
[INFO] [stdout] test abandoned::cache::tests::distinct_ecosystems_do_not_collide ... ok
[INFO] [stdout] test abandoned::tests::classify_without_timestamp_is_not_flagged ... ok
[INFO] [stdout] test color::tests::always_overrides_no_color ... ok
[INFO] [stdout] test abandoned::cache::tests::round_trips_within_ttl ... ok
[INFO] [stdout] test cli_args::tests::vt_download_limit_default_is_500 ... ok
[INFO] [stdout] test color::tests::empty_no_color_does_not_disable ... ok
[INFO] [stdout] test cli_args::tests::scan_finding_limit_zero_is_rejected ... ok
[INFO] [stdout] test cli_args::tests::fail_below_accepts_boundary_values ... ok
[INFO] [stdout] test cli_args::tests::vt_download_clean_flag_is_parsed ... ok
[INFO] [stdout] test color::tests::never_forces_disabled_regardless_of_env ... ok
[INFO] [stdout] test cli_args::tests::vt_download_limit_zero_is_rejected ... ok
[INFO] [stdout] test cli_args::tests::vt_download_clean_conflicts_with_query ... ok
[INFO] [stdout] test commands::adjudication_eval::tests::parses_concatenated_pretty_json_consensus ... ok
[INFO] [stdout] test cli_args::tests::vt_download_clean_defaults_to_false ... ok
[INFO] [stdout] test color::tests::no_color_env_disables_auto_mode_on_tty ... ok
[INFO] [stdout] test commands::adjudication_eval::tests::eval_report_serializes_stable_schema ... ok
[INFO] [stdout] test commands::adjudication_eval::tests::downgrade_lever_replays_recorded_consensus_without_live_calls ... ok
[INFO] [stdout] test commands::disposition::tests::verdict_arg_maps_one_to_one ... ok
[INFO] [stdout] test commands::adjudication_eval::tests::eval_uses_core_compute_metrics_definition ... ok
[INFO] [stdout] test commands::disposition::tests::missing_overlay_is_empty_not_error ... ok
[INFO] [stdout] test commands::gold::tests::build_marks_no_consensus_as_disputed ... ok
[INFO] [stdout] test commands::adjudication_eval::tests::downgrade_lever_keeps_malicious_when_consensus_not_reached ... ok
[INFO] [stdout] test cli_args::tests::cli_command_tree_is_valid ... ok
[INFO] [stdout] test commands::gold::tests::vt_label_for_rejects_payload_sha_mismatch ... ok
[INFO] [stdout] test commands::gold::tests::vt_label_from_code_insight_verdict ... ok
[INFO] [stdout] test commands::gold::tests::vt_vs_llm_disagreement_marks_disputed ... ok
[INFO] [stdout] test commands::promptintel::tests::below_threshold_trips ... ok
[INFO] [stdout] test commands::promptintel::tests::all_errors_do_not_trip ... ok
[INFO] [stdout] test commands::promptintel::tests::errored_prompts_do_not_inflate_rate_past_gate ... ok
[INFO] [stdout] test commands::gold::tests::vt_label_falls_back_to_analysis_stats_then_none ... ok
[INFO] [stdout] test commands::gold::tests::vt_label_rejects_verdict_substring_matches ... ok
[INFO] [stdout] test commands::promptintel::tests::errors_are_disjoint_from_denominator ... ok
[INFO] [stdout] test commands::gold::tests::validate_sample_sha_rejects_path_syntax ... ok
[INFO] [stdout] test commands::promptintel::tests::no_threshold_never_trips ... ok
[INFO] [stdout] test commands::promptintel::tests::empty_corpus_passes_any_threshold ... ok
[INFO] [stdout] test commands::promptintel::tests::boundary_equal_passes ... ok
[INFO] [stdout] test commands::promptintel::tests::report_draft_read_rejects_oversized_json ... ok
[INFO] [stdout] test commands::promptintel::tests::terminal_snippet_removes_layout_controls_after_truncation ... ok
[INFO] [stdout] test commands::promptintel::tests::report_draft_read_rejects_symlinked_json ... ok
[INFO] [stdout] test commands::promptintel::tests::zero_detections_trips ... ok
[INFO] [stdout] test commands::promptintel::tests::report_draft_read_accepts_valid_json_under_cap ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_accepts_default_user_cache_outside_scan_path ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_broken_symlink_override_when_canonicalize_fails ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_accepts_override_outside_scan_file_parent ... ok
[INFO] [stdout] test commands::promptintel::tests::resolve_cache_root_accepts_override_without_user_cache ... ok
[INFO] [stdout] test commands::promptintel::tests::resolve_cache_root_rejects_missing_user_cache_without_override ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_missing_default_user_cache_inside_scan_path ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_missing_user_cache_without_override ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_default_user_cache_inside_scan_path ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_root_for_never_lives_inside_scan_path ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_key_for_is_canonical_path_dependent ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_symlinked_default_namespace ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_override_inside_scan_file_parent ... ok
[INFO] [stdout] test commands::scan::enrichment::tests::consolidate_iocs_deduplicates_across_results ... ok
[INFO] [stdout] test commands::scan::enrichment::tests::enrichment_banner_includes_informational_disclaimer ... ok
[INFO] [stdout] test cli_args::tests::fail_below_rejects_out_of_range ... ok
[INFO] [stdout] test commands::scan::llm::tests::format_llm_enrichment_strips_control_bytes_from_primary_path ... ok
[INFO] [stdout] test commands::gold::tests::build_rejects_path_like_consensus_id ... ok
[INFO] [stdout] test commands::gold::tests::consensus_tie_is_not_resolved_to_first_label ... ok
[INFO] [stdout] test commands::scan::llm::tests::format_llm_pkg_strips_control_bytes_from_parse_error_excerpt ... ok
[INFO] [stdout] test commands::scan::llm::tests::format_llm_pkg_strips_control_bytes_from_ok_verdict_fields ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_root_for_uses_override_when_provided ... ok
[INFO] [stdout] test commands::scan::llm::tests::format_llm_pkg_strips_control_bytes_from_provider_error_message ... ok
[INFO] [stdout] test commands::scan::llm::tests::is_primary_artifact_path_rejects_unrelated_basename ... ok
[INFO] [stdout] test commands::scan::llm::tests::is_primary_artifact_path_handles_lexical_equality ... ok
[INFO] [stdout] test commands::gold::tests::consensus_requires_two_distinct_providers ... ok
[INFO] [stdout] test commands::scan::llm::tests::read_primary_contents_for_paths_propagates_io_error_for_missing_file ... ok
[INFO] [stdout] test commands::gold::tests::validate_sample_sha_accepts_lowercase_sha256 ... ok
[INFO] [stdout] test commands::scan::llm::tests::read_primary_contents_for_paths_rejects_symlinked_file ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_symlinked_override_when_canonicalize_succeeds ... ok
[INFO] [stdout] test commands::scan::llm::tests::read_primary_contents_for_paths_rejects_hardlinked_file ... ok
[INFO] [stdout] test commands::scan::llm::tests::read_primary_contents_for_paths_rejects_oversized_file ... ok
[INFO] [stdout] test commands::scan::llm::tests::resolve_supporting_artifact_path_skips_primary_artifact ... ok
[INFO] [stdout] test commands::scan::llm::tests::resolve_supporting_artifact_path_accepts_nested_package_file ... ok
[INFO] [stdout] test commands::scan::cache::tests::cache_base_dir_rejects_missing_override_when_canonicalize_fails ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::engine_fires_rule_when_provider_evaluator_matches_above_threshold ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::long_body_is_clipped_with_truncation_flag ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::provider_network_error_returns_skipped ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::parses_json_inside_markdown_fence ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::match_true_above_threshold_returns_match ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::prompt_envelope_carries_all_inputs ... ok
[INFO] [stdout] test commands::scan::llm::tests::resolve_supporting_artifact_path_rejects_parent_escape ... ok
[INFO] [stdout] test commands::scan::llm::tests::resolve_supporting_artifact_path_rejects_symlink_escape ... ok
[INFO] [stdout] test commands::scan::llm::tests::read_primary_contents_for_paths_returns_contents_in_order ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::match_true_below_threshold_returns_nomatch ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::collect_scan_bodies_accepts_small_target_file ... ok
[INFO] [stdout] test commands::disposition::tests::record_appends_and_round_trips ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::oversized_prompt_is_skipped_before_provider_call ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::collect_scan_bodies_rejects_symlink_target_directory ... ok
[INFO] [stdout] test commands::gold::tests::build_writes_sample_paths_relative_to_manifest_directory ... ok
[INFO] [stdout] test commands::disposition::tests::save_overlay_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::short_body_is_not_clipped ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::unauthorized_provider_returns_skipped ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::match_false_returns_nomatch_even_at_high_confidence ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::collect_scan_bodies_rejects_oversized_target_file ... ok
[INFO] [stdout] test commands::scan::nova_llm_eval::tests::unparseable_response_returns_skipped ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::collect_scan_bodies_rejects_hardlinked_target_file ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::collect_scan_bodies_rejects_symlink_target_file ... ok
[INFO] [stdout] test commands::scan::llm::tests::is_primary_artifact_path_matches_relative_basename_against_absolute_primary ... ok
[INFO] [stdout] test commands::scan::llm::tests::is_primary_artifact_path_rejects_same_basename_in_subdir ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::failing_embedder_returns_skipped ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::render_text_block_shows_semantic_and_llm_hits_with_scores ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::body_is_clipped_before_embedding ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::collect_scan_bodies_skips_symlink_entries_in_directory ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::identical_pattern_and_body_match ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::cosine_similarity_orthogonal_is_zero ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::cosine_similarity_rejects_zero_magnitude_input ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::disjoint_alphabets_do_not_match ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::similarity_below_threshold_does_not_fire ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::render_text_block_sanitises_nova_control_sequences ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::wired_evaluator_does_two_sided_vendor_host_discrimination ... ok
[INFO] [stdout] test commands::scan::promptintel::tests::format_enrichment_sanitises_feed_entry_id ... ok
[INFO] [stdout] test commands::scan::promptintel::tests::resolve_cache_root_rejects_missing_user_cache_without_override ... ok
[INFO] [stdout] test commands::scan::tests::nova_attribution_single_and_empty_result_sets ... ok
[INFO] [stdout] test commands::scan::tests::nova_hit_attributed_to_owning_package_in_multi_package_scan ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::load_all_rules_rejects_hardlinked_rule_file ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::cosine_similarity_rejects_mismatched_dimensions ... ok
[INFO] [stdout] test commands::scan::promptintel::tests::resolve_cache_root_accepts_override_without_user_cache ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::cosine_similarity_self_similar_is_one ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::engine_fires_rule_when_semantic_evaluator_matches_above_threshold ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::pattern_embedding_is_cached_across_calls ... ok
[INFO] [stdout] test commands::scan::tests::nova_hit_on_entrypoint_attaches_to_its_own_result ... ok
[INFO] [stdout] test commands::scan::tests::nova_semantics_default_on_with_opt_out ... ok
[INFO] [stdout] test commands::scan::nova_run::tests::load_all_rules_rejects_symlink_install_dir ... ok
[INFO] [stdout] test commands::scan::tests::local_ci_strict_enterprise_presets_leave_taint_adjudication_off ... ok
[INFO] [stdout] test commands::scan::tests::structured_formats_suppress_trailing_text_blocks ... ok
[INFO] [stdout] test commands::scan::tests::triage_preset_does_not_alter_unrelated_preset_fields ... ok
[INFO] [stdout] test commands::scan::tests::triage_preset_enables_taint_adjudication ... ok
[INFO] [stdout] test commands::scan::vt::tests::format_vt_enrichment_strips_ansi_control_bytes_from_indicators ... ok
[INFO] [stdout] test commands::scan::tests::update_notifier_rejects_missing_user_cache_even_with_scan_cache_override ... ok
[INFO] [stdout] test config::limits::tests::cloud_provider_uses_model_table ... ok
[INFO] [stdout] test config::limits::tests::cloud_provider_skips_cap_with_probed_tokens ... ok
[INFO] [stdout] test config::limits::tests::user_override_always_wins_over_table ... ok
[INFO] [stdout] test config::limits::tests::limits_have_sane_defaults ... ok
[INFO] [stdout] test config::providers::tests::provider_kind_parsing ... ok
[INFO] [stdout] test config::providers::tests::resolve_llm_provider_override_rejects_unknown_value ... ok
[INFO] [stdout] test config::limits::tests::probed_tokens_overflow_saturates ... ok
[INFO] [stdout] test config::limits::tests::unknown_model_falls_back_to_default ... ok
[INFO] [stdout] test config::limits::tests::local_provider_override_escapes_cap ... ok
[INFO] [stdout] test config::limits::tests::local_provider_cap_applies_to_probed_tokens ... ok
[INFO] [stdout] test config::limits::tests::model_lookup_is_case_insensitive_and_prefix_matched ... ok
[INFO] [stdout] test commands::scan::nova_semantics_eval::tests::short_body_is_not_clipped ... ok
[INFO] [stdout] test config::limits::tests::cloud_provider_large_probe_does_not_panic ... ok
[INFO] [stdout] test commands::scan::tests::update_notifier_ignores_scan_cache_override ... ok
[INFO] [stdout] test commands::vt::tests::cross_check_scan_root_uses_real_extracted_cache ... ok
[INFO] [stdout] test config::resolution::file_io::tests::file_format_debug_marks_absent_credentials_distinctly ... ok
[INFO] [stdout] test commands::scan::tests::write_scan_output_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test commands::vt::tests::cross_check_scan_root_rejects_symlinked_extracted_cache ... ok
[INFO] [stdout] test config::resolution::file_io::tests::file_format_rejects_unknown_top_level_fields ... ok
[INFO] [stdout] test commands::scan::vt::tests::format_vt_enrichment_strips_control_bytes_from_provider_strings ... ok
[INFO] [stdout] test config::limits::tests::local_provider_caps_at_60k_when_using_table ... ok
[INFO] [stdout] test config::resolution::file_io::tests::file_llm_limits_rejects_unknown_fields ... ok
[INFO] [stdout] test config::resolution::file_io::tests::parses_unified_toml_with_llm_sections ... ok
[INFO] [stdout] test config::resolution::file_io::tests::file_format_debug_redacts_config_credentials ... ok
[INFO] [stdout] test config::resolution::file_io::tests::file_provider_params_rejects_unknown_fields ... ok
[INFO] [stdout] test config::resolution::file_io::tests::read_config_file_bounded_rejects_oversized_file ... ok
[INFO] [stdout] test config::resolution::file_io::tests::read_file_if_exists_loads_world_readable_file_with_warning ... ok
[INFO] [stdout] test config::resolution::file_io::tests::parses_unified_toml_with_vt_and_llm_sections ... ok
[INFO] [stdout] test config::resolution::file_io::tests::read_file_if_exists_returns_none_for_missing_path ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::env_var_overrides_file_api_key ... ok
[INFO] [stdout] test config::resolution::file_io::tests::vt_section_rejects_unknown_subkeys ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::grok_accepts_grok_api_key_alias ... ok
[INFO] [stdout] test config::resolution::file_io::tests::read_config_file_bounded_rejects_symlinked_config ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::grok_accepts_xai_api_key_primary ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::grok_primary_env_wins_over_alias ... ok
[INFO] [stdout] test config::resolution::file_io::tests::read_file_if_exists_returns_none_for_unreadable_file ... FAILED
[INFO] [stdout] test config::resolution::provider_resolution::tests::perplexity_accepts_perplexity_api_alias ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::perplexity_accepts_perplexity_api_key_primary ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::ollama_cloud_accepts_ollama_api_key_alias ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::ollama_cloud_primary_env_wins_over_alias ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::perplexity_primary_env_wins_over_alias ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_accepts_https_for_remote_provider ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_accepts_local_provider_loopback_http_with_api_key ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_accepts_loopback_http_for_remote_provider_dev_proxy ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_ensures_active_provider_has_entry ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_accepts_local_provider_http_without_api_key ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_accepts_localhost_http_for_ollama ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_rejects_base_url_with_embedded_credentials ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_rejects_base_url_with_query_or_fragment ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_rejects_local_provider_http_when_api_key_configured ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_rejects_non_http_base_url ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_rejects_unknown_provider ... ok
[INFO] [stdout] test config::resolution::tests::extract_abandoned_settings_defaults_when_absent ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::resolve_llm_rejects_remote_provider_with_http_scheme ... ok
[INFO] [stdout] test config::resolution::provider_resolution::tests::unknown_llm_section_key_is_rejected ... ok
[INFO] [stdout] test config::resolution::tests::extract_vt_apikey_drops_whitespace_only_value ... ok
[INFO] [stdout] test config::resolution::tests::extract_vt_apikey_returns_none_when_section_absent ... ok
[INFO] [stdout] test config::tests::provider_override_populates_env_key_without_file_section ... ok
[INFO] [stdout] test config::resolution::tests::extract_vt_apikey_returns_trimmed_value_when_present ... ok
[INFO] [stdout] test config::tests::provider_override_preserves_existing_entry ... ok
[INFO] [stdout] test config::resolution::tests::extract_abandoned_settings_reads_section_and_clamps_invalid_values ... ok
[INFO] [stdout] test config::tests::unified_config_debug_redacts_top_level_credentials ... ok
[INFO] [stdout] test dataset::filtering::tests::extract_package_id_handles_mixed_separators ... ok
[INFO] [stdout] test dataset::filtering::tests::extract_package_id_handles_windows_path ... ok
[INFO] [stdout] test dataset::filtering::tests::extract_package_id_handles_unix_path ... ok
[INFO] [stdout] test dataset::filtering::tests::extract_package_id_rejects_short_or_non_hex_segments ... ok
[INFO] [stdout] test config::tests::provider_params_debug_redacts_api_key ... ok
[INFO] [stdout] test dataset::filtering::tests::extract_package_id_returns_none_when_no_hex_segment ... ok
[INFO] [stdout] test dataset::preparation::tests::extract_zip_package_cached_rejects_dotted_filenames ... ok
[INFO] [stdout] test dataset::preparation::tests::extract_zip_package_cached_rejects_symlinked_output_dir ... ok
[INFO] [stdout] test dataset::preparation::tests::extract_zip_package_cached_rejects_symlinked_staging_dir ... ok
[INFO] [stdout] test dataset::preparation::tests::extract_zip_package_rejects_oversized_declared_size_without_writing ... ok
[INFO] [stdout] test dataset::preparation::tests::extract_zip_package_preserves_honest_archives ... ok
[INFO] [stdout] test config::tests::provider_params_debug_marks_absent_key_distinctly ... ok
[INFO] [stdout] test dataset::preparation::tests::extract_zip_package_rejects_zip_slip_entries ... ok
[INFO] [stdout] test dataset::preparation::tests::sanitize_package_name_passes_through_benign_stems ... ok
[INFO] [stdout] test dataset::preparation::tests::finalize_extraction_rejects_non_cross_device_rename_failure ... ok
[INFO] [stdout] test dataset::preparation::tests::finalize_extraction_publishes_then_clears_staging ... ok
[INFO] [stdout] test dataset::preparation::tests::prepare_dataset_packages_rejects_symlinked_extraction_cache ... ok
[INFO] [stdout] test dataset::tests::default_dataset_scan_options_disable_inline_suppressions ... ok
[INFO] [stdout] test dataset::preparation::tests::sanitize_package_name_replaces_pure_dot_stems ... ok
[INFO] [stdout] test dataset::tests::hard_scan_failure_dominates_clean_findings ... ok
[INFO] [stdout] test dataset::preparation::tests::sanitize_package_name_replaces_stems_with_separators ... ok
[INFO] [stdout] test dataset::tests::hard_scan_failure_yields_runtime_error ... ok
[INFO] [stdout] test dataset::preparation::tests::zip_source_signature_streams_stable_hash ... ok
[INFO] [stdout] test dataset::tests::no_hard_failure_preserves_findings_boolean ... ok
[INFO] [stdout] test dataset::preparation::tests::extract_zip_package_enforces_aggregate_cap_across_entries ... ok
[INFO] [stdout] test init::extract::tests::extracts_regular_files_into_dest ... ok
[INFO] [stdout] test dataset::tests::many_hard_failures_are_summarised ... ok
[INFO] [stdout] test init::download::tests::release_assets_url_format_is_pinned ... ok
[INFO] [stdout] test init::extract::tests::rejects_absolute_path_entry ... ok
[INFO] [stdout] test init::extract::tests::rejects_dotdot_path_traversal ... ok
[INFO] [stdout] test init::extract::tests::rejects_hardlinked_tarball_input ... ok
[INFO] [stdout] test init::extract::tests::rejects_symlink_entries ... ok
[INFO] [stdout] test init::extract::tests::rejects_duplicate_regular_file_entry ... ok
[INFO] [stdout] test init::extract::tests::rejects_non_empty_extraction_dir ... ok
[INFO] [stdout] test init::extract::tests::rejects_symlink_extraction_dir ... ok
[INFO] [stdout] test init::keys::tests::skill_veil_rules_2026_key_matches_published_hex ... ok
[INFO] [stdout] test init::extract::tests::rejects_symlink_tarball_input ... ok
[INFO] [stdout] test init::keys::tests::every_trusted_key_is_canonical ... ok
[INFO] [stdout] test init::nova::tests::load_pointer_rejects_malformed_tarball_sha256 ... ok
[INFO] [stdout] test init::manifest::tests::parses_canonical_v1_manifest ... ok
[INFO] [stdout] test init::manifest::tests::rejects_unsupported_schema_version ... ok
[INFO] [stdout] test init::nova::tests::new_commit_tarball_digest_is_accepted ... ok
[INFO] [stdout] test init::nova::tests::same_commit_same_tarball_digest_is_accepted ... ok
[INFO] [stdout] test init::nova::tests::read_string_bounded_rejects_oversized_commit_json ... ok
[INFO] [stdout] test init::nova::tests::load_pointer_rejects_path_like_commit_sha ... ok
[INFO] [stdout] test init::download::tests::stream_reader_to_file_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test init::nova::tests::same_commit_tarball_digest_change_is_rejected ... ok
[INFO] [stdout] test init::nova::tests::validate_sha_shape_rejects_url_smuggling ... ok
[INFO] [stdout] test init::tests::create_install_root_sets_owner_only_permissions ... ok
[INFO] [stdout] test init::tests::current_install_is_empty_when_pointers_missing ... ok
[INFO] [stdout] test init::nova::tests::load_pointer_rejects_oversized_json ... ok
[INFO] [stdout] test init::nova::tests::missing_pointer_is_ok_none ... ok
[INFO] [stdout] test init::tests::current_install_is_empty_when_cache_root_missing ... ok
[INFO] [stdout] test init::tests::current_install_rejects_path_like_nova_pointer_commit ... ok
[INFO] [stdout] test init::nova::tests::stream_reader_to_file_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test init::tests::current_install_rejects_symlinked_cache_root ... ok
[INFO] [stdout] test init::tests::current_install_rejects_symlinked_nova_pointer ... ok
[INFO] [stdout] test init::tests::current_install_rejects_path_like_skill_veil_pointer_version ... ok
[INFO] [stdout] test init::tests::current_install_rejects_symlinked_rules_root ... ok
[INFO] [stdout] test init::tests::install_pointer_read_accepts_valid_json_under_cap ... ok
[INFO] [stdout] test init::nova::tests::pointer_round_trip ... ok
[INFO] [stdout] test init::tests::install_pointer_read_rejects_hardlinked_json ... ok
[INFO] [stdout] test init::tests::current_install_rejects_unsafe_trusted_key_id ... ok
[INFO] [stdout] test init::tests::install_pointer_read_rejects_oversized_json ... ok
[INFO] [stdout] test init::tests::current_install_rejects_missing_skill_veil_version_dir ... ok
[INFO] [stdout] test init::tests::install_pointer_read_rejects_symlinked_json ... ok
[INFO] [stdout] test init::tests::prepare_install_root_rejects_symlinked_cache_root ... ok
[INFO] [stdout] test init::tests::current_install_rejects_symlinked_nova_install_dir ... ok
[INFO] [stdout] test init::tests::remove_existing_install_dir_rejects_symlinked_path ... ok
[INFO] [stdout] test init::tests::current_install_rejects_symlinked_skill_veil_version_dir ... ok
[INFO] [stdout] test init::update_check::tests::hardlinked_marker_is_not_recent ... ok
[INFO] [stdout] test init::update_check::tests::env_disable_short_circuits_notify ... ok
[INFO] [stdout] test init::tests::validate_version_accepts_canonical_tags ... ok
[INFO] [stdout] test init::tests::validate_version_rejects_url_smuggling ... ok
[INFO] [stdout] test init::tests::nova_pointer_write_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test init::tests::nova_pointer_round_trips_independently ... ok
[INFO] [stdout] test init::update_check::tests::read_string_bounded_rejects_oversized_body ... ok
[INFO] [stdout] test init::update_check::tests::validate_nova_sha_rejects_display_unsafe_shapes ... ok
[INFO] [stdout] test init::update_check::tests::skipped_behaviour_does_nothing ... ok
[INFO] [stdout] test init::tests::write_and_read_skill_veil_pointer_round_trip ... ok
[INFO] [stdout] test init::tests::write_current_pointer_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test init::update_check::tests::symlink_marker_is_not_recent ... ok
[INFO] [stdout] test init::verify::tests::all_zero_signature_is_rejected_by_every_trusted_key ... ok
[INFO] [stdout] test init::update_check::tests::validate_release_tag_rejects_display_unsafe_shapes ... ok
[INFO] [stdout] test init::update_check::tests::marker_file_within_ttl_is_recent ... ok
[INFO] [stdout] test init::verify::tests::extra_file_outside_manifest_is_rejected ... ok
[INFO] [stdout] test init::update_check::tests::touch_marker_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test init::verify::tests::extra_symlink_outside_manifest_is_rejected ... ok
[INFO] [stdout] test init::verify::tests::duplicate_manifest_paths_are_rejected ... ok
[INFO] [stdout] test init::verify::tests::happy_path_passes_full_verification ... ok
[INFO] [stdout] test init::verify::tests::invalid_base64_in_signature_returns_named_error ... ok
[INFO] [stdout] test init::verify::tests::manifest_absolute_paths_are_rejected_before_file_read ... ok
[INFO] [stdout] test init::verify::tests::manifest_entry_hardlink_is_rejected ... ok
[INFO] [stdout] test init::verify::tests::missing_extracted_file_fails_with_path_in_error ... ok
[INFO] [stdout] test init::verify::tests::manifest_entry_symlink_is_rejected ... ok
[INFO] [stdout] test init::verify::tests::manifest_entry_at_per_file_cap_passes_verification ... ok
[INFO] [stdout] test init::verify::tests::wrong_length_signature_returns_named_error ... ok
[INFO] [stdout] test init::verify::tests::manifest_entry_over_per_file_cap_is_rejected ... ok
[INFO] [stdout] test init::verify::tests::manifest_parent_paths_are_rejected_before_file_read ... ok
[INFO] [stdout] test init::verify::tests::tampered_extracted_file_fails_sha256 ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_changes_when_base_url_differs ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_changes_when_model_differs ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_changes_when_sampling_fingerprint_differs ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_is_stable_and_hex ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_length_delimits_model_and_sampling_fields ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_with_followup_changes_when_followup_files_change ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_with_followup_changes_when_sampling_fingerprint_differs ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_with_empty_followup_differs_from_turn1_key ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_with_followup_is_stable_across_input_order ... ok
[INFO] [stdout] test llm::cache::tests::cache_key_with_followup_length_delimits_file_entries ... ok
[INFO] [stdout] test llm::cache::tests::load_fresh_expires_parse_and_bundle_errors_after_short_ttl ... ok
[INFO] [stdout] test llm::cache::tests::load_fresh_expires_provider_errors_after_short_ttl ... ok
[INFO] [stdout] test llm::cache::tests::load_fresh_keeps_recent_errors_to_avoid_retry_storms ... ok
[INFO] [stdout] test llm::cache::tests::load_fresh_keeps_successful_results_for_full_ttl ... ok
[INFO] [stdout] test llm::client::tests::drain_error_body_returns_body_string_on_success ... ok
[INFO] [stdout] test llm::enrich::tests::enrich_signature_is_read_only_on_scan_result ... ok
[INFO] [stdout] test llm::client::tests::drain_error_body_handles_response_without_content_length ... ok
[INFO] [stdout] test llm::cache::tests::persist_creates_parent_with_owner_only_permissions ... ok
[INFO] [stdout] test llm::enrich::tests::llm_enrichment_is_pure_value_type ... ok
[INFO] [stdout] test llm::enrich::tests::followup_turn_deduplicates_requested_paths_before_cap ... ok
[INFO] [stdout] test llm::cache::tests::persist_overwrite_leaves_no_tmp_residue ... ok
[INFO] [stdout] test llm::fp_review::tests::fp_eligible_requires_suspicious_and_reviewable_finding ... ok
[INFO] [stdout] test llm::cache::tests::persist_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test llm::fp_review::tests::candidate_rule_ids_dedup_and_exclude_non_reviewable ... ok
[INFO] [stdout] test llm::cache::tests::persist_writes_to_dest_path_atomically ... ok
[INFO] [stdout] test llm::fp_review::tests::fp_eligible_rejects_suspicious_with_only_malicious_or_hygiene_findings ... ok
[INFO] [stdout] test llm::fp_review::tests::fp_exit_override_softens_benign_fails_injection ... ok
[INFO] [stdout] test llm::fp_review::tests::fp_eligible_rejects_benign_and_malicious_verdicts ... ok
[INFO] [stdout] test llm::fp_review::tests::json_sidecar_marks_advisory_only ... ok
[INFO] [stdout] test llm::fp_review::tests::no_benign_majority_is_no_consensus ... ok
[INFO] [stdout] test llm::fp_review::tests::render_block_states_advisory_contract ... ok
[INFO] [stdout] test llm::fp_review::tests::single_benign_flip_is_injection_not_false_positive ... ok
[INFO] [stdout] test llm::prompt::builder::tests::manifest_bundle_wraps_primary_and_previews_with_untrusted_markers ... ok
[INFO] [stdout] test llm::fp_review::tests::two_benign_providers_yield_suspected_false_positive ... ok
[INFO] [stdout] test llm::prompt::builder::tests::estimate_followup_size_includes_findings_and_iocs ... ok
[INFO] [stdout] test llm::prompt::builder::tests::followup_bundle_wraps_primary_and_requested_files_with_untrusted_markers ... ok
[INFO] [stdout] test llm::prompt::builder::tests::followup_prompt_orders_equal_size_requested_files_by_path ... ok
[INFO] [stdout] test llm::prompt::builder::tests::manifest_prompt_orders_equal_size_artifacts_by_path ... ok
[INFO] [stdout] test llm::prompt::builder::tests::estimated_size_counts_findings_and_iocs ... ok
[INFO] [stdout] test llm::prompt::bundle::tests::cap_findings_keeps_critical_first_and_drops_low ... ok
[INFO] [stdout] test llm::fp_review::tests::render_block_adjudicate_mode_states_exit_code_effect ... ok
[INFO] [stdout] test llm::prompt::bundle::tests::serialise_finding_truncates_reason_to_max_chars ... ok
[INFO] [stdout] test llm::prompt::bundle::tests::cap_iocs_truncates_each_bucket_to_max_per_type ... ok
[INFO] [stdout] test llm::prompt::tests::system_prompt_contains_untrusted_data_warning ... ok
[INFO] [stdout] test llm::prompt::bundle::tests::finding_row_estimate_covers_truncated_reason_plus_overhead ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_handles_plain_json ... ok
[INFO] [stdout] test llm::prompt::builder::tests::manifest_bundle_exposes_findings_truncated_count ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_json_clamps_above_one ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_handles_fenced_json ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_handles_fenced_json_with_trailing_text ... ok
[INFO] [stdout] test llm::prompt::bundle::tests::encode_bundle_never_panics_and_fallback_chain_is_total ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_rejects_unknown_verdict_label ... ok
[INFO] [stdout] test llm::prompt::bundle::tests::toon_output_contains_table_header ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_json_clamps_below_zero ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_json_preserves_in_range_value ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_normalises_verdict_label_to_lowercase ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_returns_err_on_garbage ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::sanitize_llm_confidence_handles_infinities ... ok
[INFO] [stdout] test llm::prompt::bundle::tests::toon_serialization_shrinks_uniform_arrays ... ok
[INFO] [stdout] test llm::providers::anthropic::tests::parse_fails_when_content_missing ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::lmstudio_request_omits_bearer_when_api_key_unset ... ok
[INFO] [stdout] test llm::providers::anthropic::tests::parses_messages_envelope ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::lmstudio_request_includes_bearer_when_api_key_set ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::parse_lmstudio_ctx_prefers_loaded_over_max ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_rejects_empty_analysis ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::parse_verdict_handles_plain_json_with_internal_fence_text ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::parse_lmstudio_ctx_falls_back_to_max_when_loaded_absent ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::parse_lmstudio_ctx_rejects_values_exceeding_usize_max ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::parse_lmstudio_ctx_returns_none_for_unknown_model ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::parse_lmstudio_ctx_skips_entries_with_non_string_id ... ok
[INFO] [stdout] test llm::providers::lmstudio::tests::parse_lmstudio_ctx_returns_none_on_malformed_body ... ok
[INFO] [stdout] test llm::providers::ollama::tests::parse_fails_on_missing_content ... ok
[INFO] [stdout] test llm::providers::ollama::tests::probe_falls_back_to_num_ctx_parameter ... ok
[INFO] [stdout] test llm::providers::ollama::tests::probe_parses_model_info_context_length ... ok
[INFO] [stdout] test llm::providers::ollama::tests::probe_saturates_context_length_exceeding_usize_max ... ok
[INFO] [stdout] test llm::enrich::tests::followup_cache_key_respects_budget_dependent_prompt ... ok
[INFO] [stdout] test llm::providers::ollama::tests::parses_chat_response ... ok
[INFO] [stdout] test llm::providers::ollama::tests::probe_returns_none_when_field_absent ... ok
[INFO] [stdout] test llm::providers::openai::tests::parse_chat_completion_errors_on_missing_content ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::flip_signature_blocks_downgrade_path ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::fn_upgrade_gate_conclusive_rule_present_not_eligible ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::fn_upgrade_gate_non_fn_block_rule_not_eligible ... ok
[INFO] [stdout] test llm::providers::perplexity::tests::parses_perplexity_chat_completion_via_shared_parser ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::downgrade_only_malicious_and_only_to_suspicious ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::error_masked_round_is_not_a_flip ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::gate_non_malicious_not_eligible ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::consensus_requires_two_distinct_providers ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::downgrade_and_upgrade_gates_are_mutually_exclusive ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::fn_upgrade_gate_non_suspicious_core_not_eligible ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::fn_upgrade_gate_single_fn_rule_no_conclusive_is_eligible ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::gate_taint_only_block_is_eligible ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::gate_extra_block_rule_not_eligible ... ok
[INFO] [stdout] test llm::providers::openai::tests::parses_chat_completion_envelope ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::opt_in_off_is_always_identity ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::resolve_consensus_providers_defaults_to_validated_trio ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::resolve_consensus_providers_deduplicates_override_preserving_order ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::resolve_consensus_providers_honours_nonempty_override ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::upgrade_consensus_requires_two_distinct_malicious ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::validated_two_benign_consensus_is_not_a_flip ... ok
[INFO] [stdout] test main_tests::build_rule_pack_info_summarizes_rules ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::provider_verdict_parsing_fails_closed ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::resolve_consensus_providers_empty_override_falls_back_to_trio ... ok
[INFO] [stdout] test main_tests::diff_fail_on_accepts_value_form_and_rejects_flag_suffix_form ... ok
[INFO] [stdout] test main_tests::format_dataset_verdicts_text_full_includes_detailed_fields ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::upgrade_only_suspicious_and_only_to_malicious ... ok
[INFO] [stdout] test init::update_check::tests::marker_file_past_ttl_is_not_recent ... ok
[INFO] [stdout] test main_tests::format_text_output_sanitises_terminal_controlled_scan_fields ... ok
[INFO] [stdout] test main_tests::format_dataset_verdicts_text_analyst_summary_is_compact ... ok
[INFO] [stdout] test main_tests::format_diff_ci_summary_is_compact ... ok
[INFO] [stdout] test main_tests::format_text_output_explain_policy_focuses_on_policy_section ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::upgrade_off_is_always_identity ... ok
[INFO] [stdout] test main_tests::format_text_output_quiet_summary_hides_detailed_findings ... ok
[INFO] [stdout] test main_tests::tracing_writer_preserves_tabs_and_printable_unicode ... ok
[INFO] [stdout] test main_tests::format_text_output_finding_limit_is_a_per_package_budget ... ok
[INFO] [stdout] test main_tests::shipped_ci_template_invocations_parse_under_current_cli ... FAILED
[INFO] [stdout] test main_tests::terminal_error_sanitises_control_sequences ... ok
[INFO] [stdout] test main_tests::validate_fixture_case_attribute_expectation_fails_without_a_finding ... ok
[INFO] [stdout] test main_tests::validate_fixture_case_checks_full_expectations ... ok
[INFO] [stdout] test main_tests::github_action_run_step_uses_env_backed_inputs ... FAILED
[INFO] [stdout] test main_tests::tracing_writer_sanitises_control_sequences ... ok
[INFO] [stdout] test main_tests::validate_fixture_case_rejects_case_with_no_expectation ... ok
[INFO] [stdout] test main_tests::validate_rule_pack_reports_duplicates ... ok
[INFO] [stdout] test osv::client::tests::advisory_id_validation_accepts_real_ids_and_rejects_url_shaping ... ok
[INFO] [stdout] test osv::client::tests::decode_json_with_cap_accepts_body_under_cap ... ok
[INFO] [stdout] test osv::cache::tests::details_round_trip ... ok
[INFO] [stdout] test osv::client::tests::decode_json_with_cap_rejects_body_over_cap ... ok
[INFO] [stdout] test osv::render::tests::render_lists_dependency_and_advisory ... ok
[INFO] [stdout] test osv::render::tests::render_sanitises_control_bytes_from_advisory_strings ... ok
[INFO] [stdout] test osv::tests::empty_package_returns_none_without_network ... ok
[INFO] [stdout] test osv::tests::enablement_combines_flag_config_and_env ... ok
[INFO] [stdout] test osv::tests::network_fetch_budget_caps_uncached_advisories ... ok
[INFO] [stdout] test osv::tests::partition_separates_pinned_from_unpinned_and_dedups ... ok
[INFO] [stdout] test main_tests::update_benchmark_history_orders_by_generated_at_not_release_id ... ok
[INFO] [stdout] test osv::cache::tests::query_round_trips_within_ttl ... ok
[INFO] [stdout] test main_tests::update_benchmark_history_replaces_same_release ... ok
[INFO] [stdout] test osv::cache::tests::expired_entry_is_a_miss ... ok
[INFO] [stdout] test overlap::tests::render_states_advisory_and_lists_packages ... ok
[INFO] [stdout] test overlap::tests::distinct_hashes_do_not_overlap ... ok
[INFO] [stdout] test overlap::tests::basename_extracts_file_name ... ok
[INFO] [stdout] test overlap::tests::duplicate_within_one_package_is_not_overlap ... ok
[INFO] [stdout] test overlap::tests::shared_hash_across_two_packages_is_an_overlap ... ok
[INFO] [stdout] test promptintel::client::tests::remaining_for_extracts_success_value_and_none_on_failure ... ok
[INFO] [stdout] test promptintel::config::tests::env_var_takes_precedence_over_anything_else ... ok
[INFO] [stdout] test promptintel::config::tests::whitespace_env_var_is_treated_as_unset ... ok
[INFO] [stdout] test promptintel::client::tests::bounded_read_response_returns_decoded_body ... ok
[INFO] [stdout] test promptintel::config::tests::promptintel_config_debug_redacts_apikey ... ok
[INFO] [stdout] test promptintel::corpus::tests::ensure_child_dir_rejects_symlink_outside_corpus_root ... ok
[INFO] [stdout] test llm::enrich::tests::followup_turn_calls_provider_when_prompt_fits_budget ... ok
[INFO] [stdout] test llm::enrich::tests::followup_turn_rejects_prompt_over_budget_without_provider_call ... ok
[INFO] [stdout] test llm::prompt::verdict::tests::sanitize_llm_confidence_replaces_nan_with_zero ... ok
[INFO] [stdout] test llm::providers::grok::tests::parses_grok_chat_completion_via_shared_parser ... ok
[INFO] [stdout] test main_tests::format_text_output_includes_policy_escalation_reasons ... ok
[INFO] [stdout] test promptintel::corpus::tests::render_prompt_markdown_emits_h1_and_verbatim_body ... ok
[INFO] [stdout] test promptintel::corpus::tests::safe_filename_component_accepts_uuids_and_slugs ... ok
[INFO] [stdout] test promptintel::corpus::tests::safe_filename_component_rejects_path_traversal_and_control_chars ... ok
[INFO] [stdout] test promptintel::coverage::tests::rule_with_multiple_threats_counts_for_each ... ok
[INFO] [stdout] test promptintel::coverage::tests::threats_within_bucket_sort_gaps_first ... ok
[INFO] [stdout] test promptintel::coverage::tests::report_lists_every_bucket_even_without_hits ... ok
[INFO] [stdout] test promptintel::coverage::tests::unknown_threat_in_rule_surfaces_as_drift ... ok
[INFO] [stdout] test promptintel::coverage::tests::untagged_rules_count_total_but_not_tagged ... ok
[INFO] [stdout] test promptintel::cross_check::tests::detection_rate_rounds_to_one_decimal ... ok
[INFO] [stdout] test promptintel::cross_check::tests::grouped_render_omits_drift_block_when_empty ... ok
[INFO] [stdout] test promptintel::cross_check::tests::grouped_render_aggregates_bucket_total_across_threats ... ok
[INFO] [stdout] test promptintel::cross_check::tests::grouped_render_lists_every_bucket_in_canonical_order ... ok
[INFO] [stdout] test promptintel::cross_check::tests::detection_rate_is_zero_for_empty_bucket ... ok
[INFO] [stdout] test promptintel::cross_check::tests::grouped_render_sorts_within_bucket_by_missed_descending ... ok
[INFO] [stdout] test promptintel::cross_check::tests::grouped_render_surfaces_drift_threats ... ok
[INFO] [stdout] test promptintel::cross_check::tests::load_index_rejects_hardlinked_index ... ok
[INFO] [stdout] test promptintel::cross_check::tests::load_index_rejects_oversized_index ... ok
[INFO] [stdout] test promptintel::corpus::tests::write_prompt_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test promptintel::cross_check::tests::load_index_accepts_valid_index_under_cap ... ok
[INFO] [stdout] test promptintel::cross_check::tests::prompt_markdown_path_rejects_symlink_escape ... ok
[INFO] [stdout] test promptintel::cross_check::tests::record_separates_detected_from_total ... ok
[INFO] [stdout] test promptintel::cross_check::tests::severity_order_ranks_critical_above_low ... ok
[INFO] [stdout] test promptintel::cross_check::tests::render_text_sanitises_promptintel_control_sequences ... ok
[INFO] [stdout] test promptintel::cross_check::tests::prompt_markdown_path_rejects_escape_syntax ... ok
[INFO] [stdout] test promptintel::cross_check::tests::truncate_handles_unicode_titles ... ok
[INFO] [stdout] test promptintel::corpus::tests::write_prompt_writes_regular_markdown_file ... ok
[INFO] [stdout] test promptintel::cross_check::tests::truncate_passes_short_strings_through ... ok
[INFO] [stdout] test promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline ... FAILED
[INFO] [stdout] test osv::cache::tests::distinct_keys_do_not_collide ... ok
[INFO] [stdout] test promptintel::feed::enrich::tests::missing_cache_yields_empty_enrichment_with_none_total ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::calls_outside_window_do_not_count_against_hourly_cap ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::daily_cap_refuses_when_hourly_has_slack ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::empty_state_allows_first_call ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::hourly_cap_refuses_at_boundary ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::load_rejects_symlinked_cache_root ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::future_records_do_not_count_against_hourly_cap ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::load_rejects_symlinked_feed_dir ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::load_returns_empty_when_state_absent ... ok
[INFO] [stdout] test promptintel::feed::enrich::tests::hash_match_normalises_prefix_and_case ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::render_summary_lists_all_known_endpoints ... ok
[INFO] [stdout] test promptintel::feed::enrich::tests::revoked_entries_do_not_match ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::load_returns_empty_when_state_cache_exceeds_cap ... ok
[INFO] [stdout] test promptintel::feed::enrich::tests::multiple_matches_sort_by_severity_descending ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::record_call_evicts_entries_older_than_24h ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::unknown_endpoint_always_passes ... ok
[INFO] [stdout] test promptintel::feed::enrich::tests::empty_scan_iocs_against_populated_cache_returns_zero_matches_with_total ... ok
[INFO] [stdout] test promptintel::feed::store::tests::hash_lookup_strips_sha256_prefix_and_is_case_insensitive ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::save_creates_owner_only_feed_cache_dir ... ok
[INFO] [stdout] test promptintel::feed::store::tests::load_ignores_meta_when_meta_cache_exceeds_cap ... ok
[INFO] [stdout] test promptintel::feed::store::tests::load_rejects_symlinked_feed_dir ... ok
[INFO] [stdout] test promptintel::feed::store::tests::load_returns_empty_when_cache_absent ... ok
[INFO] [stdout] test promptintel::feed::store::tests::load_rejects_symlinked_cache_root ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::save_rejects_symlinked_cache_root ... ok
[INFO] [stdout] test promptintel::feed::store::tests::revoked_entries_are_excluded_from_index ... ok
[INFO] [stdout] test promptintel::feed::store::tests::load_returns_empty_when_feed_cache_exceeds_cap ... ok
[INFO] [stdout] test main_tests::format_text_output_finding_limit_none_renders_every_finding ... ok
[INFO] [stdout] test llm::taint_adjudication::tests::gate_compound_malicious_reason_not_eligible ... ok
[INFO] [stdout] test promptintel::feed::store::tests::save_rejects_symlinked_cache_root ... ok
[INFO] [stdout] test promptintel::feed::store::tests::unmatchable_kinds_are_skipped ... ok
[INFO] [stdout] test promptintel::feed::sync::tests::merge_appends_new_ids ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::save_replaces_symlinked_state_without_touching_target ... ok
[INFO] [stdout] test promptintel::feed::sync::tests::future_last_sync_uses_full_pull_without_since ... ok
[INFO] [stdout] test promptintel::feed::sync::tests::merge_replaces_existing_id_with_increment ... ok
[INFO] [stdout] test promptintel::feed::sync::tests::past_last_sync_uses_incremental_since ... ok
[INFO] [stdout] test promptintel::feed::ratelimit::tests::save_load_roundtrip_preserves_history ... ok
[INFO] [stdout] test promptintel::taxonomy::tests::bucket_names_are_unique ... ok
[INFO] [stdout] test promptintel::feed::sync::tests::merge_output_is_sorted_by_id ... ok
[INFO] [stdout] test promptintel::taxonomy::tests::every_threat_resolves_to_its_bucket ... ok
[INFO] [stdout] test promptintel::taxonomy::tests::taxonomy_shape_matches_upstream ... ok
[INFO] [stdout] test promptintel::feed::sync::tests::merge_preserves_untouched_entries ... ok
[INFO] [stdout] test promptintel::taxonomy::tests::threat_names_are_globally_unique ... ok
[INFO] [stdout] test promptintel::taxonomy::tests::lookup_is_case_sensitive ... ok
[INFO] [stdout] test promptintel::types::tests::feed_iocs_handle_all_upstream_encodings ... ok
[INFO] [stdout] test promptintel::types::tests::feed_action_tolerates_unknown_verb ... ok
[INFO] [stdout] test promptintel::types::tests::feed_confidence_accepts_int_and_float ... ok
[INFO] [stdout] test promptintel::types::tests::prompt_envelope_deserialises_real_shape ... ok
[INFO] [stdout] test promptintel::types::tests::prompt_tolerates_absent_optional_fields ... ok
[INFO] [stdout] test promptintel::feed::store::tests::save_load_roundtrip_preserves_entries_and_meta ... ok
[INFO] [stdout] test promptintel::types::tests::report_draft_rejects_long_title ... ok
[INFO] [stdout] test promptintel::types::tests::report_draft_rejects_out_of_range_confidence ... ok
[INFO] [stdout] test promptintel::types::tests::report_draft_rejects_short_title ... ok
[INFO] [stdout] test promptintel::types::tests::report_draft_validates_well_formed ... ok
[INFO] [stdout] test promptintel::types::tests::report_draft_serialises_iocs_with_type_key ... ok
[INFO] [stdout] test promptintel::types::tests::severity_rejects_non_lowercase ... ok
[INFO] [stdout] test promptintel::types::tests::report_draft_collects_every_failure ... ok
[INFO] [stdout] test rule_dirs::tests::cache_overlay_sits_between_env_and_legacy_fallback ... ok
[INFO] [stdout] test promptintel::types::tests::report_draft_rejects_empty_fingerprint ... ok
[INFO] [stdout] test promptintel::feed::store::tests::save_creates_owner_only_feed_cache_dir ... ok
[INFO] [stdout] test rule_dirs::tests::current_install_overlay_rejects_symlinked_cache_root ... ok
[INFO] [stdout] test promptintel::feed::store::tests::save_does_not_leak_tmp_files ... ok
[INFO] [stdout] test rule_dirs::tests::current_pointer_read_accepts_valid_json_under_cap ... ok
[INFO] [stdout] test rule_dirs::tests::env_var_paths_appear_first_and_skip_empties ... ok
[INFO] [stdout] test rule_dirs::tests::current_install_overlay_rejects_path_like_version ... ok
[INFO] [stdout] test rule_dirs::tests::legacy_cwd_fallback_is_always_present ... ok
[INFO] [stdout] test rule_dirs::tests::current_pointer_read_rejects_symlinked_json ... ok
[INFO] [stdout] test rule_dirs::tests::current_pointer_read_rejects_oversized_json ... ok
[INFO] [stdout] test rule_tools::tests::build_rule_pack_info_rejects_symlinked_root ... ok
[INFO] [stdout] test rule_tools::tests::format_rule_pack_info_text_sanitises_control_sequences ... ok
[INFO] [stdout] test rule_tools::tests::format_rules_validation_text_sanitises_control_sequences ... ok
[INFO] [stdout] test rule_tools::tests::parse_rule_source_rejects_unsupported_schema_version ... ok
[INFO] [stdout] test rule_tools::tests::read_rule_text_file_accepts_valid_text_under_cap ... ok
[INFO] [stdout] test rule_tools::tests::read_rule_text_file_rejects_hardlinked_text ... ok
[INFO] [stdout] test rule_dirs::tests::current_install_overlay_rejects_symlinked_install_dirs ... ok
[INFO] [stdout] test promptintel::feed::store::tests::save_replaces_symlinked_feed_without_touching_target ... ok
[INFO] [stdout] test rule_dirs::tests::current_pointer_read_rejects_hardlinked_json ... ok
[INFO] [stdout] test rule_tools::tests::validate_rules_directory_rejects_symlinked_root ... ok
[INFO] [stdout] test rule_tools::tests::read_rule_text_file_rejects_symlinked_text ... ok
[INFO] [stdout] test rule_tools::tests::validate_rules_directory_skips_symlinked_yaml_entries ... ok
[INFO] [stdout] test text_output::diff::tests::format_diff_text_preserves_paths_without_control_bytes ... ok
[INFO] [stdout] test rule_tools::tests::read_rule_text_file_rejects_oversized_text ... ok
[INFO] [stdout] test text_output::diff::tests::format_diff_text_sanitises_attacker_controlled_reason_and_rule_id ... ok
[INFO] [stdout] test text_output::diff::tests::format_diff_text_sanitises_attacker_controlled_artifact_path ... ok
[INFO] [stdout] test text_output::formats::tests::css_classes_are_distinct_per_band ... ok
[INFO] [stdout] test text_output::formats::tests::flow_escapes_stage_text ... ok
[INFO] [stdout] test text_output::formats::tests::is_pipeline_finding_matches_prefix ... ok
[INFO] [stdout] test text_output::formats::tests::pipeline_flow_renders_source_and_sink_stages ... ok
[INFO] [stdout] test text_output::formats::tests::single_stage_has_no_flow_diagram ... ok
[INFO] [stdout] test text_output::formats::tests::verdict_rank_orders_benign_below_malicious ... ok
[INFO] [stdout] test text_output::formats::tests::html_escape_leaves_plain_text_unchanged ... ok
[INFO] [stdout] test threat_mapping::tests::exact_match_applies_labels ... ok
[INFO] [stdout] test threat_mapping::tests::matcher_parse_distinguishes_exact_and_prefix ... ok
[INFO] [stdout] test threat_mapping::tests::prefix_glob_matches_family ... ok
[INFO] [stdout] test text_output::formats::tests::html_escape_neutralizes_markup ... ok
[INFO] [stdout] test text_output::formats::tests::empty_results_render_valid_html_shell ... ok
[INFO] [stdout] test threat_mapping::tests::overlapping_entries_union_and_dedup ... ok
[INFO] [stdout] test threat_mapping::tests::yaml_and_json_both_parse ... ok
[INFO] [stdout] test util::bounded_read::tests::read_response_with_cap_rejects_body_over_cap ... ok
[INFO] [stdout] test util::bounded_read::tests::read_text_file_with_cap_accepts_valid_text_under_cap ... ok
[INFO] [stdout] test util::bounded_read::tests::read_response_with_cap_accepts_body_at_cap ... ok
[INFO] [stdout] test rule_tools::tests::rule_directory_commands_skip_hardlinked_yaml_entries ... ok
[INFO] [stdout] test util::bounded_read::tests::read_text_file_with_cap_rejects_symlinked_text ... ok
[INFO] [stdout] test util::cache_io::tests::finalize_atomic_write_cleans_up_tmp_on_rename_failure ... ok
[INFO] [stdout] test util::bounded_read::tests::read_text_file_with_cap_rejects_hardlinked_text ... ok
[INFO] [stdout] test util::cache_io::tests::finalize_atomic_write_overwrites_existing_dest_atomically ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_file_with_cap_pre_allocation_is_capped ... ok
[INFO] [stdout] test util::bounded_read::tests::read_text_file_with_cap_rejects_oversized_text ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_file_with_cap_returns_none_when_over_cap ... ok
[INFO] [stdout] test util::bounded_read::tests::read_text_file_with_cap_rejects_non_regular_text ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_file_with_cap_returns_none_for_symlinked_file ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_reader_with_cap_returns_none_when_stream_exceeds_cap ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_file_with_cap_returns_none_for_hardlinked_file ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_reader_with_cap_accepts_stream_at_cap ... ok
[INFO] [stdout] test util::cache_io::tests::finalize_atomic_write_renames_tmp_to_dest_on_success ... ok
[INFO] [stdout] test util::hash::tests::sha256_file_with_cap_hashes_file_under_cap ... ok
[INFO] [stdout] test util::hash::tests::short_sha_takes_seven_chars_utf8_safe ... ok
[INFO] [stdout] test util::hash::tests::sha256_hex_matches_known_vectors ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_file_bounded_returns_bytes_when_under_cap ... ok
[INFO] [stdout] test util::cache_io::tests::write_cache_file_atomic_writes_bytes_to_dest ... ok
[INFO] [stdout] test util::http_status::tests::is_retryable_status_matches_429_and_5xx_only ... ok
[INFO] [stdout] test util::output_file::tests::write_output_file_atomic_creates_regular_file ... ok
[INFO] [stdout] test util::secure_fs::tests::create_dir_secure_does_not_narrow_existing_dir_mode ... ok
[INFO] [stdout] test util::secure_fs::tests::create_dir_secure_is_idempotent_on_existing_dir ... ok
[INFO] [stdout] test util::output_file::tests::write_output_file_atomic_rejects_symlinked_parent_dir ... ok
[INFO] [stdout] test util::secure_fs::tests::create_dir_secure_rejects_symlinked_target_dir ... ok
[INFO] [stdout] test util::secure_fs::tests::create_dir_secure_accepts_real_intermediate_dirs ... ok
[INFO] [stdout] test util::secure_fs::tests::create_dir_secure_rejects_symlinked_intermediate_dir ... ok
[INFO] [stdout] test util::secure_fs::tests::warn_if_file_world_readable_handles_missing_path ... ok
[INFO] [stdout] test util::secure_fs::tests::create_dir_secure_sets_owner_only_permissions_on_unix ... ok
[INFO] [stdout] test util::terminal_safe::tests::drain_error_body_returns_truncated_body_on_ok ... ok
[INFO] [stdout] test util::secure_fs::tests::warn_if_file_world_readable_runs_on_world_readable_file ... ok
[INFO] [stdout] test util::terminal_safe::tests::drain_error_body_returns_empty_on_read_error ... ok
[INFO] [stdout] test util::terminal_safe::tests::sanitise_for_terminal_neutralises_osc8_hyperlinks ... ok
[INFO] [stdout] test util::terminal_safe::tests::sanitise_for_terminal_preserves_printable_unicode ... ok
[INFO] [stdout] test util::terminal_safe::tests::sanitise_for_terminal_replaces_control_bytes_with_question_mark ... ok
[INFO] [stdout] test util::terminal_safe::tests::sanitise_for_terminal_replaces_bidi_format_controls ... ok
[INFO] [stdout] test util::terminal_safe::tests::sanitise_for_terminal_replaces_invisible_format_characters ... ok
[INFO] [stdout] test util::terminal_safe::tests::sanitise_for_terminal_replaces_layout_breakers ... ok
[INFO] [stdout] test util::terminal_safe::tests::terminal_path_strips_control_sequences ... ok
[INFO] [stdout] test util::output_file::tests::write_output_file_atomic_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test util::terminal_safe::tests::truncate_caps_long_payloads_with_suffix ... ok
[INFO] [stdout] test util::terminal_safe::tests::truncate_keeps_short_payloads_intact ... ok
[INFO] [stdout] test util::terminal_safe::tests::truncate_respects_utf8_char_boundary ... ok
[INFO] [stdout] test util::terminal_safe::tests::truncate_sanitises_control_bytes ... ok
[INFO] [stdout] test util::text::tests::clip_to_chars_leaves_short_text_untouched ... ok
[INFO] [stdout] test vt::client::allowlist_tests::rejects_malformed_urls ... ok
[INFO] [stdout] test util::text::tests::clip_to_chars_truncates_by_char_count ... ok
[INFO] [stdout] test vt::client::allowlist_tests::allows_legitimate_vt_storage_hosts ... ok
[INFO] [stdout] test vt::client::allowlist_tests::rejects_non_https_schemes ... ok
[INFO] [stdout] test vt::client::allowlist_tests::rejects_unrelated_hosts ... ok
[INFO] [stdout] test vt::client::allowlist_tests::rejects_subdomain_prefix_attack ... ok
[INFO] [stdout] test vt::client::download_integrity_tests::stream_response_to_aborts_when_body_exceeds_cap ... ok
[INFO] [stdout] test vt::client::download_integrity_tests::stream_response_to_rejects_symlinked_parent_dir ... ok
[INFO] [stdout] test vt::client::download_integrity_tests::stream_response_to_rejects_sha_mismatch ... ok
[INFO] [stdout] test vt::client::redirect_tests::agent_surfaces_302_as_error_instead_of_following_redirect ... ok
[INFO] [stdout] test vt::client::redirect_tests::file_download_rejects_invalid_sha_before_path_or_request ... ok
[INFO] [stdout] test vt::config::tests::empty_apikey_in_toml_body_is_treated_as_error_signal ... ok
[INFO] [stdout] test vt::config::tests::env_override_takes_precedence ... ok
[INFO] [stdout] test vt::client::redirect_tests::file_report_rejects_invalid_sha_before_request ... ok
[INFO] [stdout] test vt::config::tests::file_format_debug_redacts_apikey ... ok
[INFO] [stdout] test vt::config::tests::file_format_rejects_unknown_fields ... ok
[INFO] [stdout] test vt::client::download_integrity_tests::stream_response_to_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test vt::config::tests::file_format_debug_marks_absent_apikey_distinctly ... ok
[INFO] [stdout] test vt::config::tests::legacy_config_read_accepts_valid_toml_under_cap ... ok
[INFO] [stdout] test vt::config::tests::load_optional_signature_returns_optional_inside_result ... ok
[INFO] [stdout] test vt::config::tests::parses_key_from_toml_body ... ok
[INFO] [stdout] test vt::config::tests::rejects_empty_toml_body ... ok
[INFO] [stdout] test vt::config::tests::vt_config_debug_redacts_apikey ... ok
[INFO] [stdout] test vt::cross_check::classify::tests::classify_cases ... ok
[INFO] [stdout] test vt::cross_check::render::tests::render_baseline_rolls_up_per_sha_and_counts_suspicious_as_caught ... ok
[INFO] [stdout] test vt::cross_check::render::tests::render_markdown_labels_match_classification_buckets ... ok
[INFO] [stdout] test vt::cross_check::render::tests::render_markdown_sanitises_vt_control_sequences ... ok
[INFO] [stdout] test vt::config::tests::legacy_config_read_rejects_oversized_toml ... ok
[INFO] [stdout] test vt::cross_check::reports_cache::tests::load_reports_normalizes_uppercase_sha_to_lowercase ... ok
[INFO] [stdout] test vt::cross_check::reports_cache::tests::load_reports_rejects_payload_sha_that_disagrees_with_filename ... ok
[INFO] [stdout] test vt::config::tests::legacy_config_read_rejects_symlinked_toml ... ok
[INFO] [stdout] test vt::cross_check::reports_cache::tests::load_reports_rejects_symlinked_reports_dir ... ok
[INFO] [stdout] test vt::cross_check::reports_cache::tests::load_reports_skips_symlinked_json_entries ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::compute_file_sha256_accepts_file_under_default_cap ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::compute_file_sha256_rejects_file_over_cap ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::compute_file_sha256_rejects_symlinked_file ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_for_lookup_falls_back_to_file_hash_when_package_id_is_not_hex ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_for_lookup_finds_sha_in_bare_directory_ancestor ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_for_lookup_finds_sha_in_extracted_dir_ancestor ... ok
[INFO] [stdout] test promptintel::cross_check::tests::load_index_rejects_symlinked_index ... ok
[INFO] [stdout] test promptintel::cross_check::tests::prompt_markdown_path_accepts_downloaded_relative_path ... ok
[INFO] [stdout] test rule_tools::tests::parse_rule_source_accepts_supported_schema_version ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_for_lookup_uses_package_id_when_64_hex ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_from_ancestors_ignores_deep_ancestors ... ok
[INFO] [stdout] test util::hash::tests::sha256_file_with_cap_rejects_file_over_cap ... ok
[INFO] [stdout] test util::cache_io::tests::read_cache_file_bounded_returns_none_for_missing_file ... ok
[INFO] [stdout] test vt::cross_check::tests::summary_counts_split_we_missed_by_vt_tier ... ok
[INFO] [stdout] test vt::download::tests::canonical_download_sha_lowercases_hex ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_for_lookup_returns_none_when_file_missing_and_no_id ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_for_lookup_prefers_package_id_over_ancestor_walk ... ok
[INFO] [stdout] test vt::download::tests::default_query_false_returns_malicious_corpus_query ... ok
[INFO] [stdout] test vt::download::tests::canonical_download_sha_rejects_path_segments ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::compute_file_sha256_rejects_hardlinked_file ... ok
[INFO] [stdout] test vt::download::tests::persist_report_cleans_up_tmp_on_rename_failure ... ok
[INFO] [stdout] test vt::download::tests::default_query_true_returns_benign_corpus_query ... ok
[INFO] [stdout] test vt::download::tests::malicious_and_clean_queries_share_corpus_shape ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::compute_file_sha256_streams_correct_hash ... ok
[INFO] [stdout] test vt::download::tests::persist_report_writes_atomically_via_rename ... ok
[INFO] [stdout] test vt::download::tests::reports_dir_rejects_symlink_outside_download_dir ... ok
[INFO] [stdout] test util::cache_io::tests::write_cache_file_atomic_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test vt::download::tests::sample_cache_hit_rejects_hardlinked_cache_path ... ok
[INFO] [stdout] test vt::download::tests::report_cache_hit_accepts_matching_report ... ok
[INFO] [stdout] test vt::download::tests::sample_cache_hit_rejects_mismatched_sample_bytes ... ok
[INFO] [stdout] test vt::download::tests::saturating_sub_prevents_panic_on_duplicate_entries ... ok
[INFO] [stdout] test vt::download::tests::report_cache_hit_rejects_payload_sha_mismatch ... ok
[INFO] [stdout] test vt::enrich::tests::distinct_domains_hash_to_distinct_cache_keys ... ok
[INFO] [stdout] test vt::download::tests::sha256_file_with_cap_rejects_stream_over_cap ... ok
[INFO] [stdout] test vt::enrich::tests::distinct_ipv6_addresses_hash_to_distinct_cache_keys ... ok
[INFO] [stdout] test vt::enrich::tests::cache_file_path_is_safe ... ok
[INFO] [stdout] test vt::download::tests::report_cache_hit_rejects_invalid_json ... ok
[INFO] [stdout] test vt::download::tests::sample_cache_hit_rejects_symlinked_cache_path ... ok
[INFO] [stdout] test vt::download::tests::sample_cache_hit_accepts_matching_sample ... ok
[INFO] [stdout] test vt::enrich::tests::load_fresh_rejects_indicator_mismatch ... ok
[INFO] [stdout] test vt::download::tests::persist_report_overwrites_existing_report_atomically ... ok
[INFO] [stdout] test vt::download::tests::persist_report_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test vt::enrich::tests::enrich_iocs_signature_is_read_only_on_iocs ... ok
[INFO] [stdout] test vt::enrich::tests::load_fresh_expires_error_records_after_short_ttl ... ok
[INFO] [stdout] test vt::enrich::tests::load_fresh_keeps_error_records_within_short_ttl ... ok
[INFO] [stdout] test vt::enrich::tests::vt_enrichment_is_a_pure_value_type ... ok
[INFO] [stdout] test vt::enrich::tests::load_fresh_treats_future_dated_records_as_expired ... ok
[INFO] [stdout] test vt::cross_check::sha_lookup::tests::sha_for_lookup_ignores_non_hex_ancestor ... ok
[INFO] [stdout] test vt::tests::normalize_sha256_hex_accepts_and_lowercases_hex ... ok
[INFO] [stdout] test vt::tests::normalize_sha256_hex_rejects_path_syntax ... ok
[INFO] [stdout] test vt::enrich::tests::load_fresh_returns_record_when_young ... ok
[INFO] [stdout] test vt::types::tests::primary_ai_verdict_falls_back_then_none ... ok
[INFO] [stdout] test vt::types::tests::primary_ai_verdict_prefers_code_insight_by_category ... ok
[INFO] [stdout] test vt::enrich::tests::load_fresh_returns_none_for_expired ... ok
[INFO] [stdout] test vt::client::download_integrity_tests::stream_response_to_accepts_matching_sha ... ok
[INFO] [stdout] test vt::enrich::tests::persist_indicator_replaces_symlink_without_touching_target ... ok
[INFO] [stdout] test vt::enrich::tests::persist_indicator_writes_to_dest_path_atomically ... ok
[INFO] [stdout] test vt::enrich::tests::persist_indicator_overwrite_leaves_no_tmp_residue ... ok
[INFO] [stdout] test promptintel::client::tests::agent_surfaces_302_as_error_instead_of_following_redirect ... ok
[INFO] [stdout] test osv::tests::cached_advisories_do_not_consume_the_network_fetch_budget ... ok
[INFO] [stdout] test init::extract::tests::rejects_excessive_entry_count ... ok
[INFO] [stdout] test promptintel::cross_check::tests::build_summary_ignores_prompt_body_inline_suppressions ... ok
[INFO] [stdout] test commands::benchmark::tests::run_benchmark_ignores_sample_inline_suppressions ... ok
[INFO] [stdout] test promptintel::cross_check::tests::build_summary_rejects_index_path_escape ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- config::resolution::file_io::tests::read_file_if_exists_returns_none_for_unreadable_file stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'config::resolution::file_io::tests::read_file_if_exists_returns_none_for_unreadable_file' (2668) panicked at src/config/resolution/file_io.rs:471:9:
[INFO] [stdout] unreadable config MUST yield None (and produce a warn-level diagnostic, not silently look identical to a missing file)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5c6f15e81621 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5c6f15e9b41a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5c6f15e86c3c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5c6f15e57566 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5c6f15e77529 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5c6f15a5d5b0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5c6f15e77852 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5c6f15e57644 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5c6f15e4f719 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5c6f15e58abd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5c6f15e9bbfc - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5c6f157d73e6 - skill_veil[fbbcf46c172d08e9]::config::resolution::file_io::tests::read_file_if_exists_returns_none_for_unreadable_file
[INFO] [stdout]   12:     0x5c6f15905eb9 - <skill_veil[fbbcf46c172d08e9]::config::resolution::file_io::tests::read_file_if_exists_returns_none_for_unreadable_file::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5c6f15a5089b - 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:     0x5c6f15a5df05 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5c6f15a577c4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5c6f15a61062 - <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:     0x5c6f15e7fec9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x723255b62dfa - <unknown>
[INFO] [stdout]   19:     0x723255bf63d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- main_tests::shipped_ci_template_invocations_parse_under_current_cli stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'main_tests::shipped_ci_template_invocations_parse_under_current_cli' (2922) panicked at src/main_tests.rs:1133:45:
[INFO] [stdout] examples/ci directory: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5c6f15e81621 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5c6f15e9b41a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5c6f15e86c3c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5c6f15e57566 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5c6f15e77529 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5c6f15a5d5b0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5c6f15e77852 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5c6f15e57612 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5c6f15e4f719 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5c6f15e58abd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5c6f15e9bbfc - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5c6f15e9b9d2 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x5c6f15813308 - skill_veil[fbbcf46c172d08e9]::main_tests::shipped_ci_template_invocations_parse_under_current_cli
[INFO] [stdout]   13:     0x5c6f158fd879 - <skill_veil[fbbcf46c172d08e9]::main_tests::shipped_ci_template_invocations_parse_under_current_cli::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x5c6f15a5089b - 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]   15:     0x5c6f15a5df05 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   16:     0x5c6f15a577c4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x5c6f15a61062 - <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]   18:     0x5c6f15e7fec9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x723255b62dfa - <unknown>
[INFO] [stdout]   20:     0x723255bf63d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- main_tests::github_action_run_step_uses_env_backed_inputs stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'main_tests::github_action_run_step_uses_env_backed_inputs' (2921) panicked at src/main_tests.rs:1255:51:
[INFO] [stdout] read composite action: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5c6f15e81621 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5c6f15e9b41a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5c6f15e86c3c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5c6f15e57566 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5c6f15e77529 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5c6f15a5d5b0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5c6f15e77852 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5c6f15e57612 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5c6f15e4f719 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5c6f15e58abd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5c6f15e9bbfc - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5c6f15e9b9d2 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x5c6f1580fd7b - skill_veil[fbbcf46c172d08e9]::main_tests::github_action_run_step_uses_env_backed_inputs
[INFO] [stdout]   13:     0x5c6f158fd799 - <skill_veil[fbbcf46c172d08e9]::main_tests::github_action_run_step_uses_env_backed_inputs::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x5c6f15a5089b - 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]   15:     0x5c6f15a5df05 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   16:     0x5c6f15a577c4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x5c6f15a61062 - <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]   18:     0x5c6f15e7fec9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x723255b62dfa - <unknown>
[INFO] [stdout]   20:     0x723255bf63d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline' (2986) panicked at src/promptintel/cross_check.rs:1004:10:
[INFO] [stdout] vendored PromptIntel corpus must be scannable: reading PromptIntel corpus index at /opt/rustwide/workdir/../../benchmarks/promptintel-corpus/_index.json (run `skill-veil promptintel download` first)
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     No such file or directory (os error 2)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <core::io::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]    1: skill_veil::promptintel::cross_check::load_index_with_cap
[INFO] [stdout]    2: skill_veil::promptintel::cross_check::build_summary
[INFO] [stdout]    3: skill_veil::promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline
[INFO] [stdout]    4: <skill_veil::promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]    5: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]    6: test::run_test::{closure#0}
[INFO] [stdout]    7: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]    8: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]    9: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   10: <unknown>
[INFO] [stdout]   11: clone
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5c6f15e81621 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5c6f15e9b41a - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    2:     0x5c6f15e86c3c - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5c6f15e57566 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5c6f15e77529 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]    5:     0x5c6f15a5d5b0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]    6:     0x5c6f15e77852 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5c6f15e57612 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5c6f15e4f719 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5c6f15e58abd - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]   10:     0x5c6f15e9bbfc - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5c6f15e9b9d2 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]   12:     0x5c6f1582c21e - skill_veil[fbbcf46c172d08e9]::promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline
[INFO] [stdout]   13:     0x5c6f158fe769 - <skill_veil[fbbcf46c172d08e9]::promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x5c6f15a5089b - 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]   15:     0x5c6f15a5df05 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]   16:     0x5c6f15a577c4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x5c6f15a61062 - <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]   18:     0x5c6f15e7fec9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x723255b62dfa - <unknown>
[INFO] [stdout]   20:     0x723255bf63d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     config::resolution::file_io::tests::read_file_if_exists_returns_none_for_unreadable_file
[INFO] [stdout]     main_tests::github_action_run_step_uses_env_backed_inputs
[INFO] [stdout]     main_tests::shipped_ci_template_invocations_parse_under_current_cli
[INFO] [stdout]     promptintel::cross_check::tests::promptintel_vendored_corpus_meets_baseline
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 728 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.23s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin skill-veil`
[INFO] running `Command { std: "docker" "inspect" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86", kill_on_drop: false }`
[INFO] [stdout] c5dcface4c54c63e37572c519f292caf8cf0f7fb62afd024bb161d3905a6dd86
