[INFO] cloning repository https://github.com/thkt/claude-guardrails
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/thkt/claude-guardrails" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthkt%2Fclaude-guardrails", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthkt%2Fclaude-guardrails'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 69d5804c074076f420ff0e1782ed378c18350536
[INFO] testing thkt/claude-guardrails against 1.98.0-beta.1 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthkt%2Fclaude-guardrails" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/thkt/claude-guardrails
[INFO] finished tweaking git repo https://github.com/thkt/claude-guardrails
[INFO] tweaked toml for git repo https://github.com/thkt/claude-guardrails written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/thkt/claude-guardrails on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/thkt/claude-guardrails 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.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b
[INFO] running `Command { std: "docker" "start" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b", 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" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b", 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" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling owo-colors v4.3.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling unicode-linebreak v0.1.5
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling smawk v0.3.3
[INFO] [stderr]    Compiling oxc_data_structures v0.138.0
[INFO] [stderr]    Compiling rustc-hash v2.1.3
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling phf_shared v0.14.0
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]    Compiling oxc_estree v0.138.0
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling dragonbox_ecma v0.1.12
[INFO] [stderr]    Compiling textwrap v0.16.2
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling cow-utils v0.1.3
[INFO] [stderr]    Compiling nonmax v0.5.5
[INFO] [stderr]    Compiling unicode-id-start v1.4.0
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling phf_generator v0.14.0
[INFO] [stderr]    Compiling phf v0.14.0
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling rustls-pki-types v1.15.0
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling bytes v1.12.0
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling oxc_allocator v0.138.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling rustls v0.23.41
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling const-oid v0.10.2
[INFO] [stderr]    Compiling oxc_str v0.138.0
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling hybrid-array v0.4.13
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling num-bigint v0.4.8
[INFO] [stderr]    Compiling filetime v0.2.29
[INFO] [stderr]    Compiling itertools v0.15.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling webpki-roots v1.0.8
[INFO] [stderr]    Compiling ureq-proto v0.6.0
[INFO] [stderr]    Compiling seq-macro v0.3.6
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling utf8-zero v0.8.1
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling self_cell v1.2.2
[INFO] [stderr]    Compiling constant_time_eq v0.5.0
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tar v0.4.46
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling sha2 v0.11.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling oxc-miette-derive v3.0.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling oxc_ast_macros v0.138.0
[INFO] [stderr]    Compiling phf_macros v0.14.0
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling oxc-miette v3.0.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling oxc_span v0.138.0
[INFO] [stderr]    Compiling oxc_diagnostics v0.138.0
[INFO] [stderr]    Compiling oxc_regular_expression v0.138.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling oxc_index v5.0.0
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling oxc_syntax v0.138.0
[INFO] [stderr]    Compiling oxc_ast v0.138.0
[INFO] [stderr]    Compiling ureq v3.3.0
[INFO] [stderr]    Compiling oxc_ecmascript v0.138.0
[INFO] [stderr]    Compiling oxc_ast_visit v0.138.0
[INFO] [stderr]    Compiling oxc_parser v0.138.0
[INFO] [stderr]    Compiling oxc_semantic v0.138.0
[INFO] [stderr]    Compiling guardrails v0.21.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 09s
[INFO] running `Command { std: "docker" "inspect" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b", 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" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling guardrails v0.21.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 12.18s
[INFO] running `Command { std: "docker" "inspect" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b", 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" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.17s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/guardrails-7b4e595cdc89fc29)
[INFO] [stdout] 
[INFO] [stdout] running 972 tests
[INFO] [stdout] test analysis::ast::tests::returns_none_for_unsupported_type ... ok
[INFO] [stdout] test analysis::ast::tests::span_to_line_basic ... ok
[INFO] [stdout] test analysis::ast::tests::parses_valid_js ... ok
[INFO] [stdout] test analysis::ast_rules::tests::from_config_mirrors_rule_toggles ... ok
[INFO] [stdout] test analysis::ast_rules::tests::unsupported_type_returns_none ... ok
[INFO] [stdout] test analysis::ast::tests::static_key_resolves_string_and_static_template_keys ... ok
[INFO] [stdout] test analysis::ast_rules::tests::violation_vec_round_trips ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_inner_html_variable_assignment ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::allows_inner_html_string_literal ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_inner_html_empty_string_concat ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::allows_outer_html_string_literal ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_inner_html_template_with_expression ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::allows_inner_html_computed_string_key_literal ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_document_write_concat_with_variable ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::allows_inner_html_concat_of_literals ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_outer_html_variable_assignment ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::allows_inner_html_static_template ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_document_write_zero_args_intent ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_inner_html_computed_string_key ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_document_write_variable ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_document_writeln_variable ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_outer_html_computed_string_key ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::allows_document_write_literal ... ok
[INFO] [stdout] test analysis::ast_rules::tests::violation_survives_json_round_trip ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::ignores_non_document_write ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::ignores_benign_computed_template_key ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::ignores_unrelated_document_method ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::ignores_inner_html_dynamic_computed_key ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_bcrypt_with_precomputed_salt_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_create_hmac_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_jwt_sign_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_bcrypt_hash_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_parenthesized_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_template_callee_safe_source_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_template_callee_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_subtle_import_key_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_create_cipheriv_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_crypto_sink_wrapped_arg_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_insecure_fail_open_on_invalid_syntax ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_insecure_to_string_36_no_chain_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_fn_no_keyword_match_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_dedup_medium_before_high_keeps_high ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_insecure_to_string_36_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_fn_declaration_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_fn_arrow_with_parent_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_fn_object_property_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_insecure_test_file_excluded ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_short_word_bridge_fires ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_division_wrapper_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_multiplied_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_multiplication_pass_pattern_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_in_keyword_fn_dedup_to_one ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_fn_method_definition_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_react_key_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_math_floor_wrapper_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_token_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_snake_case_blocked ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_keyword_var_snake_case_jitter_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_set_timeout_jitter_allowed ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_to_fixed_blocked ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_bare_addeventlistener ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_globalthis_onmessage ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_function_expression_handler ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_for_each_violating_listener ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_globalthis_addeventlistener ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_tostring_in_keyword_fn_keeps_high ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_to_string_36_remains_high ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_param_array_pattern ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_param_destructure_without_origin ... ok
[INFO] [stdout] test analysis::ast_security::math_random::tests::math_random_to_string_no_arg_blocked ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_block_scope_shadow_inner_only ... ok
[INFO] [stdout] test analysis::ast_security::html::tests::detects_inner_html_computed_template_key ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_nested_arrow_shadow ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_bare_onmessage_without_origin ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_handler_in_class_method ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_nested_function_shadow ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_self_addeventlistener ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_window_arrow_without_origin_check ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_allowlist_check ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_handler_in_try_block ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_window_onmessage_without_origin ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_external_handler ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_self_onmessage_without_origin ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_with_alternative_param_name ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_var_clobber_of_param ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_assignment_destructure ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_bare_onmessage_with_origin_check ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_window_onmessage_function_expression ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_body_destructure ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_fires_on_window_onmessage_param_destructure_without_origin ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_body_destructure_renamed ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_computed_origin_access ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_computed_template_origin_access ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_destructured_origin_rename ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_globalthis_addeventlistener_with_origin_check ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_globalthis_computed_onmessage ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_non_message_event ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_origin_guard ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_param_destructure ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_globalthis_onmessage_with_origin_check ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_wildcard_fires_on_simple_first_arg ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_origin_reference_only ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_param_destructure_origin_only ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_validating_handler_in_class_method ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_validating_handler_in_try_block ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_zero_arg_callback ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_shadowed_event_in_inner_block ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_window_onmessage_with_origin_check ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_wildcard_silent_on_transfer_list ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_wildcard_fires_on_object_literal_first_arg ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_wildcard_fires_on_template_literal_callee ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_wildcard_fires_on_template_literal_star ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_worker_addeventlistener ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_wildcard_silent_on_explicit_origin ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_wildcard_silent_on_interpolated_template ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_validating_handler_nested_in_iife ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_globalthis_computed_addeventlistener ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_false_for_handler_less_file ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::postmessage_origin_missing_silent_on_window_onmessage_param_destructure_origin_only ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_false_for_no_message_handler ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_false_for_object_pattern_param ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_false_for_zero_arg_handler ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_true_for_identifier_handler_in_class_method ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_true_for_identifier_handler_in_named_function ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_true_for_identifier_param_onmessage_assignment ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_true_for_identifier_param_addeventlistener ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_bracket_form_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_benign_template_key_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_chain_computed_key_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_chain_proto_polluted_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_chain_constructor_prototype_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_lodash_defaults_deep_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_literal_proto_assignment_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_constructor_prototype_assignment_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_lodash_full_name_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_lodash_empty_literal_target_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_lodash_merge_request_input_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_lodash_merge_json_parse_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_object_assign_json_parse_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_lodash_safe_target_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_method_definition_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_normal_property_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_non_request_member_source_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_template_key_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_lodash_static_source_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_no_call_no_assignment_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_test_file_skipped ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_object_assign_null_proto_target_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_object_assign_multi_source_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_template_callee_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_object_assign_empty_literal_target_blocked ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_object_assign_request_input_blocked ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_true_for_identifier_onmessage_nested_in_iife ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_object_assign_static_source_allowed ... ok
[INFO] [stdout] test analysis::ast_security::postmessage::tests::requires_semantic_true_for_identifier_handler_nested_in_iife ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_record_lookup_patterns_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_pollution_key_read_allowed ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_detected_with_use_server_directive ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_alias_from_non_cp_module_not_detected ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_alias_of_non_cp_export_not_detected ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_variable_key_allowed ... ok
[INFO] [stdout] test analysis::ast_security::prototype_pollution::tests::prototype_pollution_static_proto_assignment_blocked ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_skipped_in_ui_component ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_literal_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::err_stack_detected_in_app_route ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_named_alias_dynamic_arg_blocked ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::fs_path_detected_with_use_server_directive ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::fs_path_skipped_in_ui_component ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::fs_dynamic_path_blocked ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::err_stack_skipped_when_only_use_server_no_api_path ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::err_stack_skipped_in_ui_component ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::err_stack_detected_in_pages_api ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_dynamic_arg_blocked ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::err_stack_skipped_in_util_file ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::child_process_named_alias_literal_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::detects_inline_use_server_inside_function_body ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::non_literal_require_variable_blocked ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::err_stack_detected_in_root_app_route ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::known_limitations_not_detected ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::inline_use_server_scope_exits_with_function ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::fs_path_skipped_in_util_file ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::require_detected_with_use_server_directive ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::nested_stack_in_object ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::non_response_callee_with_stack_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::non_spread_identifier_property_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::member_expression_template_key_callee_variants ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::fs_static_path_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::err_stack_callee_variants ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::member_expression_callee_variants ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::fs_boundary_conditions ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::require_dynamic_template_blocked ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::require_skipped_in_ui_component ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::require_static_template_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::stack_in_array ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::stack_in_conditional ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::require_string_literal_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::res_json_without_stack_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::require_no_args_safe ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::stack_in_logical ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::stack_in_spread_contexts_blocked ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::stack_in_template_literal ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_fires_with_single_quote_directive ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_silent_in_api_route_even_with_use_client ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_silent_inside_inline_use_server_in_client_component ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_fires_for_every_violation_in_file ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_silent_on_computed_access ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_silent_on_node_env ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_fail_open_on_invalid_syntax ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_fires_with_use_client_directive ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_silent_with_use_server_directive ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_log_level_allowed ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_fires_in_function_call_argument ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_literal_mid_chain_fires_per_node ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_multistage_chain_sensitive_first_blocked ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_nullish_coalescing_jwt_secret_blocked ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_multiline_logical_expression_blocked ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_in_use_server_action_return ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_public_and_sort_keys_allowed ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_silent_without_directive ... ok
[INFO] [stdout] test analysis::ast_security::server_io::tests::zero_arg_calls_safe ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_multistage_chain_sensitive_in_middle_blocked ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::client_env_leak_silent_on_next_public_prefix ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_multistage_coalesce_chain_blocked ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_multistage_chain_all_non_sensitive_allowed ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_next_public_allowed ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_apikey_prop_in_get_server_side_props ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_arrow_use_server_action ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_concise_arrow_get_server_side_props ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_arrow_get_server_side_props ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_env_secret_value_in_props ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_sensitive_keywords_all_blocked ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::env_var_fallback_short_circuit_or_api_key_blocked ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_multiple_violations_in_same_return ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_nested_object_in_props ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_helper_arrow_inside_use_server_arrow ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_helper_function_inside_gssp ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_helper_function_inside_use_server_file ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_in_named_function_other_than_gssp ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_concise_arrow_use_server_action ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_spread_property ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_fires_on_uppercase_property_name ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_variable_referenced_return ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_outside_ssr_scope ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::each_route_keyword_warns ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_next_public_env_value ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_safe_use_server_return ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_safe_property_names ... ok
[INFO] [stdout] test analysis::ast_security::ssr_env::tests::ssr_secret_bleed_silent_on_safe_arrow_use_server_action ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::comment_only_guard_still_warns ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::form_b_inverted_guard_passes ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::form_a_strict_equality_early_return_passes ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::lookalike_production_paths_excluded ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::guard_in_one_handler_suppresses_file_and_emits_once ... ok
[INFO] [stdout] test analysis::ast_security::tests::fail_open_on_invalid_or_unsupported_input ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::unit_test_file_out_of_scope ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::loose_equality_guards_pass ... ok
[INFO] [stdout] test analysis::ast_security::tests::multiple_bidi_reports_first ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::non_production_literal_still_warns ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::non_test_route_does_not_warn ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::pages_router_filename_endpoint_warns ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::reversed_operand_order_guard_passes ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::string_argument_router_out_of_scope ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::test_route_without_guard_warns ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::ternary_guard_passes ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::variable_bound_guard_passes ... ok
[INFO] [stdout] test analysis::ast_security::tests::no_bidi_safe ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::safe_regex_escaped_quantifier ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::dynamic_regexp_not_analyzed ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::safe_regex_char_class_quantifier ... ok
[INFO] [stdout] test analysis::ast_security::test_route_guard::tests::uppercase_keyword_segment_warns ... ok
[INFO] [stdout] test analysis::ast_security::tests::p1_and_p2_violations_coexist ... ok
[INFO] [stdout] test analysis::ast_security::tests::bidi_rli_in_comment_blocked ... ok
[INFO] [stdout] test analysis::ast_security::tests::bidi_rlo_in_code_blocked ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::safe_regex_quantified_group_with_optional_outer ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::unsafe_regex_brace_quantifier_blocked ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::safe_regex_non_capturing_group ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::safe_regex_simple_quantifier ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::safe_regex_lookaround_groups ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::unsafe_regex_digit_nested_blocked ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::unsafe_regex_nested_quantifier_blocked ... ok
[INFO] [stdout] test analysis::nesting::tests::blocks_deep_mixed_brackets ... ok
[INFO] [stdout] test analysis::nesting::tests::allows_minus_run ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::safe_regex_quantifier_inside_char_class ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::unsafe_regex_alternation_with_quantifier_blocked ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::unsafe_regex_nested_inside_non_capturing_group ... ok
[INFO] [stdout] test analysis::nesting::tests::blocks_deep_nested_parens ... ok
[INFO] [stdout] test analysis::nesting::tests::blocks_prefix_run ... ok
[INFO] [stdout] test analysis::ast_security::unsafe_regex::tests::unsafe_regex_optional_in_quantified_group_blocked ... ok
[INFO] [stdout] test analysis::nesting::tests::ignores_angle_generics ... ok
[INFO] [stdout] test analysis::nesting::tests::prefix_boundary ... ok
[INFO] [stdout] test analysis::nesting::tests::ignores_brackets_in_string ... ok
[INFO] [stdout] test analysis::oxlint::tests::build_args_allow_removes_from_defaults ... ok
[INFO] [stdout] test analysis::oxlint::tests::no_labels_gives_none_line ... ok
[INFO] [stdout] test analysis::oxlint::tests::help_fallback_to_message ... ok
[INFO] [stdout] test analysis::oxlint::tests::build_args_allows_eval_to_defer_to_custom_rule ... ok
[INFO] [stdout] test analysis::oxlint::tests::build_args_overlap_allow_holds_even_with_user_deny ... ok
[INFO] [stdout] test analysis::oxlint::tests::parse_single_diagnostic ... ok
[INFO] [stdout] test analysis::oxlint::tests::codeless_diagnostic_is_skipped_real_violations_survive ... ok
[INFO] [stdout] test analysis::nesting::tests::bracket_boundary ... ok
[INFO] [stdout] test analysis::ast_security::tests::bidi_alm_in_string_blocked ... ok
[INFO] [stdout] test analysis::ast_security::tests::bidi_rlm_in_string_blocked ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_nested ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_parens ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_skips_escaped_quote_inside_interpolation_string ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_skips_double_quote_string_inside_interpolation ... ok
[INFO] [stdout] test analysis::oxlint::tests::parse_empty_diagnostics ... ok
[INFO] [stdout] test analysis::nesting::tests::allows_realistic_depth ... ok
[INFO] [stdout] test analysis::oxlint::tests::build_args_custom_deny_adds ... ok
[INFO] [stdout] test analysis::oxlint::tests::build_args_default_has_five_deny ... ok
[INFO] [stdout] test analysis::scanner::tests::escape_at_end_of_input ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_balanced_braces ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_skips_single_quote_string_inside_interpolation ... ok
[INFO] [stdout] test analysis::scanner::tests::line_offsets_work ... ok
[INFO] [stdout] test analysis::scanner::tests::scanner_handles_block_comment ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_skips_string_braces ... ok
[INFO] [stdout] test analysis::scanner::tests::source_masks_flag_block_comment_bytes ... ok
[INFO] [stdout] test analysis::scanner::tests::scanner_handles_simple_string ... ok
[INFO] [stdout] test analysis::scanner::tests::extract_delimited_unmatched_returns_none ... ok
[INFO] [stdout] test analysis::scanner::tests::source_masks_preserve_template_interpolation_as_code ... ok
[INFO] [stdout] test analysis::scanner::tests::source_masks_flag_line_comment_bytes ... ok
[INFO] [stdout] test config::tests::default_oxlint_config_is_empty ... ok
[INFO] [stdout] test analysis::scanner::tests::scanner_handles_template_interpolation ... ok
[INFO] [stdout] test analysis::scanner::tests::scanner_handles_line_comment ... ok
[INFO] [stdout] test config::tests::biome_true_does_not_error ... ok
[INFO] [stdout] test config::tests::find_git_root_from_deep_subdir ... ok
[INFO] [stdout] test config::tests::merge_empty_project_config_no_change ... ok
[INFO] [stdout] test config::tests::merge_enabled_override ... ok
[INFO] [stdout] test config::tests::merge_partial_rules_override ... ok
[INFO] [stdout] test analysis::scanner::tests::source_masks_hide_string_content ... ok
[INFO] [stdout] test config::tests::oxlint_allow_from_tools_json ... ok
[INFO] [stdout] test config::tests::diff_aware_defaults_off_when_key_absent ... ok
[INFO] [stdout] test config::tests::merge_diff_aware_true_enables_flag ... ok
[INFO] [stdout] test config::tests::default_severity_threshold_is_high ... ok
[INFO] [stdout] test config::tests::merge_sets_explicit_source ... ok
[INFO] [stdout] test config::tests::oxlint_deny_from_tools_json ... ok
[INFO] [stdout] test config::tests::merge_severity_override ... ok
[INFO] [stdout] test config::tests::find_git_root_from_project_dir ... ok
[INFO] [stdout] test config::tests::with_project_overrides_from_legacy_config ... ok
[INFO] [stdout] test config::tests::with_project_overrides_from_tools_json ... ok
[INFO] [stdout] test config::tests::with_overrides_with_config_sets_explicit_source ... ok
[INFO] [stdout] test content::tests::apply_edit_deletion_with_empty_new_string ... ok
[INFO] [stdout] test content::tests::apply_edit_replace_all_replaces_every_occurrence ... ok
[INFO] [stdout] test content::tests::apply_edit_replaces_first_occurrence ... ok
[INFO] [stdout] test content::tests::apply_edit_returns_none_when_old_string_empty ... ok
[INFO] [stdout] test content::tests::apply_edit_returns_none_when_old_string_not_found ... ok
[INFO] [stdout] test content::tests::apply_edit_self_referential_new_string_does_not_cascade ... ok
[INFO] [stdout] test content::tests::degraded_reason_note_contains_actionable_text ... ok
[INFO] [stdout] test config::tests::with_project_overrides_malformed_guardrails_json_returns_error ... ok
[INFO] [stdout] test config::tests::with_project_overrides_tools_json_without_guardrails_ignores_legacy ... ok
[INFO] [stdout] test config::tests::with_project_overrides_no_config_returns_unchanged ... ok
[INFO] [stdout] test config::tests::with_project_overrides_malformed_legacy_config_returns_error ... ok
[INFO] [stdout] test config::tests::find_git_root_none_without_git ... ok
[INFO] [stdout] test config::tests::with_project_overrides_tools_json_takes_priority ... ok
[INFO] [stdout] test content::tests::edit_reads_full_file_and_applies_substitution ... ok
[INFO] [stdout] test config::tests::with_project_overrides_malformed_tools_json_returns_error ... ok
[INFO] [stdout] test config::tests::with_project_overrides_tools_json_without_guardrails_key ... ok
[INFO] [stdout] test config::tests::with_project_overrides_guardrails_json_takes_priority_over_legacy ... ok
[INFO] [stdout] test config::tests::with_project_overrides_from_guardrails_json ... ok
[INFO] [stdout] test content::tests::edit_falls_back_to_snippet_when_file_missing ... ok
[INFO] [stdout] test content::tests::edit_extracts_new_string ... ok
[INFO] [stdout] test content::tests::edit_falls_back_to_snippet_when_old_string_not_found ... ok
[INFO] [stdout] test content::tests::edit_resolution_retains_before_content ... ok
[INFO] [stdout] test content::tests::get_file_and_content_propagates_degraded_reason ... ok
[INFO] [stdout] test config::tests::with_project_overrides_guardrails_json_takes_priority_over_tools_json ... ok
[INFO] [stdout] test content::tests::invalid_path_or_content_returns_none ... ok
[INFO] [stdout] test content::tests::length_within_cap_accepts_at_exact_cap ... ok
[INFO] [stdout] test content::tests::length_within_cap_accepts_empty ... ok
[INFO] [stdout] test content::tests::length_within_cap_accepts_one_byte_under_cap ... ok
[INFO] [stdout] test content::tests::length_within_cap_accepts_zero_cap_only_for_empty ... ok
[INFO] [stdout] test content::tests::length_within_cap_rejects_one_byte_over_cap ... ok
[INFO] [stdout] test content::tests::multi_edit_all_none_returns_none ... ok
[INFO] [stdout] test content::tests::multi_edit_falls_back_when_file_missing ... ok
[INFO] [stdout] test content::tests::multi_edit_join_preserves_separator_before_empty_string ... ok
[INFO] [stdout] test content::tests::multi_edit_empty_edits_returns_none ... ok
[INFO] [stdout] test content::tests::multi_edit_joins_edits ... ok
[INFO] [stdout] test content::tests::read_file_capped_degrades_on_file_not_found ... ok
[INFO] [stdout] test content::tests::read_file_capped_degrades_on_non_utf8 ... ok
[INFO] [stdout] test content::tests::read_file_capped_returns_not_applicable_for_non_js ... ok
[INFO] [stdout] test content::tests::read_file_capped_degrades_on_symlink_pointing_outside_root ... ok
[INFO] [stdout] test content::tests::reconstruct_structured_full_multi_edit_replays_over_disk_file ... ok
[INFO] [stdout] test content::tests::reconstruct_structured_full_multi_edit_without_edits_is_not_applicable ... ok
[INFO] [stdout] test content::tests::reconstruct_structured_full_non_json_is_not_applicable ... ok
[INFO] [stdout] test content::tests::reconstruct_structured_full_write_json_without_content_is_not_applicable ... ok
[INFO] [stdout] test content::tests::reconstruct_structured_full_other_tool_is_not_applicable ... ok
[INFO] [stdout] test content::tests::read_file_capped_degrades_when_file_outside_explicit_root ... ok
[INFO] [stdout] test content::tests::resolve_edit_content_not_applicable_without_old_string ... ok
[INFO] [stdout] test content::tests::resolve_edit_content_degrades_on_old_string_not_found ... ok
[INFO] [stdout] test content::tests::read_file_capped_returns_full_for_valid_js ... ok
[INFO] [stdout] test content::tests::multi_edit_applies_sequentially_to_file ... ok
[INFO] [stdout] test content::tests::multi_edit_resolution_retains_original_before_content ... ok
[INFO] [stdout] test content::tests::resolve_multi_edit_content_degrades_on_mid_failure ... ok
[INFO] [stdout] test content::tests::unsupported_tool_returns_none ... ok
[INFO] [stdout] test content::tests::write_extracts_content ... ok
[INFO] [stdout] test content::tests::tool_name_deserializes_unknown_to_other_preserving_name ... ok
[INFO] [stdout] test content::tests::json_edit_supplies_structured_full_but_content_stays_snippet ... ok
[INFO] [stdout] test content::tests::reconstruct_structured_full_write_json_takes_whole_content ... ok
[INFO] [stdout] test download::tests::default_cache_dir_ends_with_guardrails_bin ... ok
[INFO] [stdout] test download::tests::detect_pin_returns_known_triple ... ok
[INFO] [stdout] test download::tests::download_too_large_classifies_as_data_error ... ok
[INFO] [stdout] test download::tests::download_url_linux_x64_has_correct_format ... ok
[INFO] [stdout] test content::tests::read_file_capped_accepts_file_within_explicit_root ... ok
[INFO] [stdout] test content::tests::reconstruct_structured_full_edit_json_without_new_string_is_not_applicable ... ok
[INFO] [stdout] test download::tests::download_url_darwin_arm64_has_correct_format ... ok
[INFO] [stdout] test download::tests::decode_hex_rejects_odd_length ... ok
[INFO] [stdout] test download::tests::pinned_checksum_table_is_well_formed ... ok
[INFO] [stdout] test download::tests::hex_round_trip_preserves_bytes ... ok
[INFO] [stdout] test download::tests::extract_rejects_tarball_with_absolute_path_entry ... ok
[INFO] [stdout] test download::tests::validate_entry_path_accepts_simple_filename ... ok
[INFO] [stdout] test download::tests::read_capped_accepts_payload_at_cap ... ok
[INFO] [stdout] test download::tests::extract_rejects_tarball_with_checksum_mismatch ... ok
[INFO] [stdout] test download::tests::validate_entry_path_rejects_absolute ... ok
[INFO] [stdout] test download::tests::read_capped_rejects_payload_over_cap ... ok
[INFO] [stdout] test download::tests::returns_network_failure_on_fetch_error ... ok
[INFO] [stdout] test download::tests::returns_cached_binary ... ok
[INFO] [stdout] test download::tests::extract_rejects_tarball_with_path_traversal_entry ... ok
[INFO] [stdout] test download::tests::validate_entry_path_rejects_parent_traversal ... ok
[INFO] [stdout] test hook::diff_aware::tests::caps_demotion_at_before_count_for_pasted_copy ... ok
[INFO] [stdout] test hook::demotion_surface::corpus_rules_match_allowlist_with_every_scenario ... ok
[INFO] [stdout] test hook::diff_aware::tests::keeps_non_allowlisted_rule_despite_matching_text ... ok
[INFO] [stdout] test hook::diff_aware::tests::keeps_violation_without_line_number ... ok
[INFO] [stdout] test hook::diff_aware::tests::read_failure_phrases_are_distinct_per_reason ... ok
[INFO] [stdout] test hook::precision::corpus_coverage_gate_detects_planted_gap ... ok
[INFO] [stdout] test download::tests::extract_writes_binary_when_checksum_matches ... ok
[INFO] [stdout] test hook::diff_aware::tests::keeps_all_when_project_root_is_unresolved ... ok
[INFO] [stdout] test config::tests::biome_false_normal_operation ... ok
[INFO] [stdout] test hook::diff_aware::tests::second_pass_requires_toggle_and_allowlisted_blocking ... ok
[INFO] [stdout] test hook::precision::corpus_covers_every_rule_with_fire_and_clean_samples ... ok
[INFO] [stdout] test hook::precision::corpus_rule_ids_exist_in_catalog ... ok
[INFO] [stdout] test hook::diff_aware::tests::demotes_same_trimmed_text_at_different_line_and_indent ... ok
[INFO] [stdout] test download::tests::parallel_extracts_converge_on_single_binary ... ok
[INFO] [stdout] test download::tests::extract_rejects_tarball_missing_expected_entry ... ok
[INFO] [stdout] test hook::precision::toggle_isolation_mapping_covers_catalog_exactly ... ok
[INFO] [stdout] test content::tests::read_file_capped_oversized_multibyte_split_degrades_oversized ... ok
[INFO] [stdout] test content::tests::read_file_capped_degrades_on_oversized_file ... ok
[INFO] [stdout] test content::tests::read_file_capped_accepts_exactly_max_size ... ok
[INFO] [stdout] test analysis::ast_security::tests::nfr001_performance_under_10ms ... ok
[INFO] [stdout] test hook::precision::every_toggle_fires_its_rules_under_single_toggle_isolation ... ok
[INFO] [stdout] test hook::diff_aware::tests::allowlisted_rules_report_every_occurrence ... ok
[INFO] [stdout] test hook::tests::collect_violations_clean_code ... ok
[INFO] [stdout] test hook::tests::collect_violations_deep_nesting_blocks_before_parse ... ok
[INFO] [stdout] test hook::precision::clean_samples_tally_fp_when_fired_and_tn_when_silent ... ok
[INFO] [stdout] test hook::precision::fire_samples_tally_tp_when_detected_and_fn_when_missed ... ok
[INFO] [stdout] test hook::tests::collect_violations_ast_security_disabled ... ok
[INFO] [stdout] test hook::tests::collect_violations_ast_security_detects_injection ... ok
[INFO] [stdout] test hook::precision::known_fn_in_corpus_does_not_fail_metrics ... ok
[INFO] [stdout] test hook::precision::ast_rule_fire_sample_detected_via_ast_path ... ok
[INFO] [stdout] test hook::precision::off_target_fires_count_as_unexpected_not_fp ... ok
[INFO] [stdout] test hook::tests::collect_violations_detects_eval ... ok
[INFO] [stdout] test hook::tests::collect_violations_bidi_detected_when_parse_fails ... ok
[INFO] [stdout] test hook::tests::load_config_or_note_pushes_note_and_falls_back_to_default_on_err ... ok
[INFO] [stdout] test hook::tests::collect_violations_invariant_toggle_off_skips_gate ... ok
[INFO] [stdout] test hook::tests::collect_violations_non_js_skips_js_rules ... ok
[INFO] [stdout] test hook::tests::load_config_or_note_returns_config_and_skips_notes_on_ok ... ok
[INFO] [stdout] test hook::tests::partition_custom_block_threshold ... ok
[INFO] [stdout] test hook::tests::partition_empty_violations ... ok
[INFO] [stdout] test hook::tests::partition_default_severity_routing ... ok
[INFO] [stdout] test hook::tests::resolve_project_root_or_note_pushes_note_on_err ... ok
[INFO] [stdout] test hook::tests::collect_violations_deep_nesting_skipped_when_all_ast_rules_disabled ... ok
[INFO] [stdout] test hook::tests::resolve_project_root_or_note_returns_path_and_skips_notes_on_ok ... ok
[INFO] [stdout] test hook::tests::json_edit_degraded_content_fails_open_with_note ... ok
[INFO] [stdout] test hook::tests::json_edit_fires_invariant_violation_end_to_end ... ok
[INFO] [stdout] test hook_exit::tests::input_error_is_sysexits_usage ... ok
[INFO] [stdout] test hook_exit::tests::pass_is_zero ... ok
[INFO] [stdout] test import_map::tests::cjs_destructure_with_alias_resolves_to_original ... ok
[INFO] [stdout] test hook_exit::tests::advisory_is_one ... ok
[INFO] [stdout] test hook::precision::metrics_computation_and_outputs_carry_all_counts ... ok
[INFO] [stdout] test hook_exit::tests::blocking_is_two ... ok
[INFO] [stdout] test hook::tests::collect_violations_deep_nesting_blocks_when_ast_security_disabled_but_parse_runs ... ok
[INFO] [stdout] test import_map::tests::cjs_namespace_resolves_to_namespace_kind ... ok
[INFO] [stdout] test import_map::tests::css_file_returns_empty_map ... ok
[INFO] [stdout] test hook_exit::tests::internal_is_sysexits_software ... ok
[INFO] [stdout] test import_map::tests::cjs_destructure_without_alias_uses_same_name ... ok
[INFO] [stdout] test import_map::tests::default_import_ignored ... ok
[INFO] [stdout] test hook::demotion_surface::corpus_pairs_classify_to_expected_counts_with_zero_bypass ... ok
[INFO] [stdout] test import_map::tests::duplicate_local_name_last_write_wins ... ok
[INFO] [stdout] test hook::tests::collect_violations_no_use_effect_detects_in_tsx ... ok
[INFO] [stdout] test hook::tests::collect_violations_disabled_rule_skipped ... ok
[INFO] [stdout] test import_map::tests::es_named_with_alias_resolves_to_original ... ok
[INFO] [stdout] test import_map::tests::mixed_value_and_type_specifier_only_value_registered ... ok
[INFO] [stdout] test import_map::tests::nested_destructure_ignored ... ok
[INFO] [stdout] test import_map::tests::multiple_imports_all_registered ... ok
[INFO] [stdout] test import_map::tests::es_namespace_resolves_to_namespace_kind ... ok
[INFO] [stdout] test import_map::tests::es_named_without_alias_uses_same_name ... ok
[INFO] [stdout] test import_map::tests::empty_file_resolves_none ... ok
[INFO] [stdout] test import_map::tests::nested_function_scope_not_collected ... ok
[INFO] [stdout] test import_map::tests::invalid_syntax_returns_empty ... ok
[INFO] [stdout] test import_map::tests::require_non_literal_source_ignored ... ok
[INFO] [stdout] test import_map::tests::mixed_default_and_named_only_named_registered ... ok
[INFO] [stdout] test import_map::tests::side_effect_import_ignored ... ok
[INFO] [stdout] test import_map::tests::type_only_import_declaration_ignored ... ok
[INFO] [stdout] test invariant::tests::bool_pin_against_string_value_is_type_mismatch ... ok
[INFO] [stdout] test import_map::tests::type_only_specifier_ignored ... ok
[INFO] [stdout] test invariant::tests::absent_invariants_file_skips_with_no_violation ... ok
[INFO] [stdout] test hook::tests::collect_violations_no_use_effect_disabled ... ok
[INFO] [stdout] test import_map::tests::unrelated_local_name_resolves_none ... ok
[INFO] [stdout] test invariant::tests::degraded_note_absent_pin_file_is_silent ... ok
[INFO] [stdout] test invariant::tests::degraded_note_surfaces_corrupt_pin_file ... ok
[INFO] [stdout] test invariant::tests::bom_prefixed_invariants_file_parses_and_enforces_pin ... ok
[INFO] [stdout] test invariant::tests::file_outside_git_root_is_skipped ... ok
[INFO] [stdout] test invariant::tests::corrupt_invariants_file_fails_closed_with_violation ... ok
[INFO] [stdout] test invariant::tests::empty_or_whitespace_invariants_file_fails_open_no_violation ... ok
[INFO] [stdout] test invariant::tests::flat_key_resolves_dot_path_no_violation_on_match ... ok
[INFO] [stdout] test invariant::tests::degraded_note_surfaces_only_for_pinned_file ... ok
[INFO] [stdout] test invariant::tests::matching_string_pin_produces_no_violation ... ok
[INFO] [stdout] test invariant::tests::file_with_resolvable_parent_outside_root_is_skipped ... ok
[INFO] [stdout] test invariant::tests::flat_key_wins_over_nested_on_collision ... ok
[INFO] [stdout] test invariant::tests::none_git_root_skips_pass ... ok
[INFO] [stdout] test invariant::tests::flips_flag_value_produces_violation ... ok
[INFO] [stdout] test invariant::tests::nested_object_resolves_dot_path_via_fallback ... ok
[INFO] [stdout] test invariant::tests::none_structured_full_skips_pass ... ok
[INFO] [stdout] test invariant::tests::full_content_with_mismatch_produces_violation ... ok
[INFO] [stdout] test invariant::tests::number_pin_off_by_one_produces_violation ... ok
[INFO] [stdout] test invariant::tests::null_pin_matches_null_but_rejects_non_null ... ok
[INFO] [stdout] test invariant::tests::uppercase_json_extension_is_structured_config ... ok
[INFO] [stdout] test io::color::tests::use_color_requires_tty_and_no_color_unset ... ok
[INFO] [stdout] test invariant::tests::undeclared_file_path_is_skipped ... ok
[INFO] [stdout] test invariant::tests::unparseable_content_fails_closed_with_violation ... ok
[INFO] [stdout] test invariant::tests::serde_json_number_equality_is_representation_strict ... ok
[INFO] [stdout] test io::color::tests::wrap_applies_ansi_codes ... ok
[INFO] [stdout] test invariant::tests::symlinked_ancestor_path_resolves_to_canonical_pin_key ... ok
[INFO] [stdout] test invariant::tests::removed_pin_path_is_unresolved_violation ... ok
[INFO] [stdout] test invariant::tests::scalar_file_entry_is_config_error ... ok
[INFO] [stdout] test invariant::tests::int_pin_vs_float_value_is_mismatch_both_directions ... ok
[INFO] [stdout] test invariant::tests::matching_flag_value_produces_no_violation ... ok
[INFO] [stdout] test invariant::tests::strips_multi_segment_git_root_prefix_then_matches_declaration ... ok
[INFO] [stdout] test io::envelope::tests::error_payload_includes_present_optional_fields ... ok
[INFO] [stdout] test invariant::tests::object_declared_value_is_config_error ... ok
[INFO] [stdout] test import_map::tests::require_with_template_literal_ignored ... ok
[INFO] [stdout] test io::envelope::tests::error_payload_omits_empty_candidates ... ok
[INFO] [stdout] test io::color::tests::wrap_returns_plain_text_without_color ... ok
[INFO] [stdout] test io::envelope::tests::error_code_exit_code_matches_sysexits_h ... ok
[INFO] [stdout] test io::envelope::tests::error_code_serializes_screaming_snake_case ... ok
[INFO] [stdout] test io::envelope::tests::error_envelope_wraps_payload_under_error_key ... ok
[INFO] [stdout] test io::envelope::tests::error_payload_omits_optional_next_step ... ok
[INFO] [stdout] test io::envelope::tests::success_envelope_ok_is_not_degraded ... ok
[INFO] [stdout] test io::envelope::tests::success_envelope_with_info_only_is_not_degraded ... ok
[INFO] [stdout] test io::envelope::tests::success_envelope_orders_degradations_before_info ... ok
[INFO] [stdout] test io::envelope::tests::success_envelope_with_empty_notes_is_not_degraded ... ok
[INFO] [stdout] test io::parse_json::tests::parses_pretty_printed_json_after_warnings ... ok
[INFO] [stdout] test io::parse_json::tests::parses_pretty_printed_json_with_nested_object ... ok
[INFO] [stdout] test io::parse_json::tests::returns_none_on_invalid_json_line ... ok
[INFO] [stdout] test io::output::tests::hint_action_skip_when_no_claude_dir ... ok
[INFO] [stdout] test io::envelope::tests::success_envelope_with_notes_sets_degraded ... ok
[INFO] [stdout] test io::parse_json::tests::parses_json_with_prefix_lines ... ok
[INFO] [stdout] test io::reporter::tests::format_json_report_emits_lowercase_severity ... ok
[INFO] [stdout] test io::reporter::tests::format_json_report_emits_origin_when_present ... ok
[INFO] [stdout] test io::output::tests::hint_action_hint_when_claude_dir_exists_without_tools_json ... ok
[INFO] [stdout] test io::parse_json::tests::parses_clean_json ... ok
[INFO] [stdout] test io::parse_json::tests::returns_none_on_empty_output ... ok
[INFO] [stdout] test io::reporter::tests::format_json_report_emits_null_for_missing_line ... ok
[INFO] [stdout] test io::output::tests::hint_does_not_write_tools_json_when_absent ... ok
[INFO] [stdout] test io::output::tests::hint_action_hint_when_tools_json_without_guardrails ... ok
[INFO] [stdout] test io::parse_json::tests::returns_none_on_no_json ... ok
[INFO] [stdout] test io::reporter::tests::format_json_report_omits_origin_when_absent ... ok
[INFO] [stdout] test io::reporter::tests::json_report_allow_when_warnings_only ... ok
[INFO] [stdout] test io::reporter::tests::format_rule_name_oxlint ... ok
[INFO] [stdout] test io::stdin::tests::oversized_is_fail_closed_blocking_exit ... ok
[INFO] [stdout] test io::output::tests::hint_action_skip_when_explicit_source ... ok
[INFO] [stdout] test io::stdin::tests::invalid_json_and_io_are_fail_open_input_error_exit ... ok
[INFO] [stdout] test io::reporter::tests::format_rule_name_guardrails ... ok
[INFO] [stdout] test io::reporter::tests::format_violations_multiple_issues_count ... ok
[INFO] [stdout] test io::reporter::tests::format_violations_single_issue ... ok
[INFO] [stdout] test io::reporter::tests::json_report_block_when_blocking_present ... ok
[INFO] [stdout] test io::reporter::tests::format_warnings_contains_warning_symbol ... ok
[INFO] [stdout] test io::reporter::tests::format_warnings_marks_preexisting_origin ... ok
[INFO] [stdout] test io::stdin::tests::parse_stdin_error_into_payload_maps_error_codes ... ok
[INFO] [stdout] test io::stdin::tests::parse_stdin_from_accepts_valid_write_payload ... ok
[INFO] [stdout] test io::stdin::tests::parse_stdin_from_rejects_invalid_json ... ok
[INFO] [stdout] test regex_compile::tests::compiles_valid_pattern ... ok
[INFO] [stdout] test resolve::tests::bench_try_resolve_bin_cost_per_call ... ignored, manual perf bench, run with --ignored --nocapture
[INFO] [stdout] test resolve::tests::classify_wait_disconnected_observed_when_sender_dropped ... ok
[INFO] [stdout] test resolve::tests::classify_wait_process_error_returns_error ... ok
[INFO] [stdout] test resolve::tests::classify_wait_timeout_distinct_from_disconnected ... ok
[INFO] [stdout] test io::reporter::tests::json_report_allow_when_no_blocking ... ok
[INFO] [stdout] test resolve::tests::format_thread_panic_extracts_str_payload ... ok
[INFO] [stdout] test resolve::tests::format_thread_panic_extracts_string_payload ... ok
[INFO] [stdout] test resolve::tests::finds_bin_in_direct_parent_node_modules ... ok
[INFO] [stdout] test resolve::tests::format_thread_panic_falls_back_for_non_string_payload ... ok
[INFO] [stdout] test io::stdin::tests::parse_stdin_from_invalid_utf8_within_cap_maps_io ... ok
[INFO] [stdout] test resolve::tests::accepts_bin_inside_project_root ... ok
[INFO] [stdout] test resolve::tests::classify_wait_exited_returns_status ... ok
[INFO] [stdout] test resolve::tests::returns_not_found_when_no_bin_exists ... ok
[INFO] [stdout] test resolve::tests::run_with_timeout_returns_none_on_spawn_failure ... ok
[INFO] [stdout] test resolve::tests::walks_up_to_find_node_modules ... ok
[INFO] [stdout] test resolve::tests::prefers_closest_node_modules ... ok
[INFO] [stdout] test rules::architecture::tests::detects_components_importing_pages ... ok
[INFO] [stdout] test resolve::tests::rejects_bin_outside_project_root ... ok
[INFO] [stdout] test rules::architecture::tests::detects_services_importing_ui ... ok
[INFO] [stdout] test resolve::tests::sibling_tree_bin_not_selected_when_file_inside_root ... ok
[INFO] [stdout] test rules::architecture::tests::detects_utils_importing_ui ... ok
[INFO] [stdout] test rules::bundle_size::tests::allows_specific_lodash_import ... ok
[INFO] [stdout] test rules::architecture::tests::allows_valid_imports ... ok
[INFO] [stdout] test resolve::tests::run_with_timeout_captures_stderr ... ok
[INFO] [stdout] test rules::bundle_size::tests::allows_specific_mui_icon_import ... ok
[INFO] [stdout] test rules::bundle_size::tests::allows_date_fns_specific_import ... ok
[INFO] [stdout] test resolve::tests::run_with_timeout_captures_stdout ... ok
[INFO] [stdout] test rules::bundle_size::tests::allows_dayjs ... ok
[INFO] [stdout] test rules::bundle_size::tests::detects_full_mui_icons_import ... ok
[INFO] [stdout] test rules::bundle_size::tests::detects_full_lodash_import ... ok
[INFO] [stdout] test rules::bundle_size::tests::ignores_comments ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::allows_cors_with_array_origin ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_cors_options_without_origin_property ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::allows_set_header_for_different_header ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::allows_cors_with_specific_origin ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_case_insensitive_header_name ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::allows_cors_with_function_origin ... ok
[INFO] [stdout] test rules::bundle_size::tests::detects_full_moment_import ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_cors_options_with_wildcard_origin ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_express_header_acao_wildcard ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_cors_with_no_arguments ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_in_pages_api ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_express_set_acao_wildcard ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_in_middleware_file ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::detects_set_header_acao_wildcard ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::empty_file_returns_no_violation ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::fail_open_on_invalid_syntax ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::fix_message_includes_concrete_snippet ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::skips_ui_component_file ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::skips_util_file ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::blocks_marker_in_block_comment ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::blocks_marker_in_line_comment ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::detects_in_any_file_type ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::detects_channel_marker ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::detects_multiple_markers ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::ignores_non_js_files ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::reports_correct_line_number ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::skips_dynamic_origin_expression ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::detects_multiple_markers_same_line ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::detects_thinking_marker ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::detects_to_functions_marker ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::does_not_skip_bare_filename_match ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::skips_own_source_file ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::line_number_is_one_indexed ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::skips_own_source_with_windows_separator ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::detects_start_assistant_marker ... ok
[INFO] [stdout] test rules::doc_catalog::bless_readme_rule_tables ... ignored, writes README.md / README.ja.md; run explicitly to regenerate the rule tables
[INFO] [stdout] test rules::cot_leakage_marker::tests::fix_message_includes_marker_name ... ok
[INFO] [stdout] test rules::cot_leakage_marker::tests::ignores_clean_content ... ok
[INFO] [stdout] test rules::doc_catalog::config_example_anchor_ignores_fence_language_tag ... ok
[INFO] [stdout] test rules::crypto_weak::tests::ignores_weak_algorithm_in_inline_comment ... ok
[INFO] [stdout] test rules::crypto_weak::tests::detects_uppercase_algorithm_names ... ok
[INFO] [stdout] test rules::crypto_weak::tests::detects_weak_algorithms ... ok
[INFO] [stdout] test rules::crypto_weak::tests::ignores_des_substring_in_identifier ... ok
[INFO] [stdout] test rules::doc_catalog::config_contract_excludes_deprecated_biome ... ok
[INFO] [stdout] test rules::doc_catalog::config_example_gate_detects_planted_drift ... ok
[INFO] [stdout] test rules::doc_catalog::config_toggles_gate_detects_planted_drift ... ok
[INFO] [stdout] test rules::doc_catalog::config_toggles_match_rule_docs ... ok
[INFO] [stdout] test rules::doc_catalog::readme_config_example_lists_all_toggles ... ok
[INFO] [stdout] test rules::doc_catalog::readme_rule_tables_match_catalog ... ok
[INFO] [stdout] test rules::doc_catalog::rule_docs_cover_catalog ... ok
[INFO] [stdout] test io::stdin::tests::parse_stdin_from_oversized_multibyte_split_maps_oversized ... ok
[INFO] [stdout] test rules::doc_catalog::when_to_disable_matches_table ... ok
[INFO] [stdout] test rules::dom_access::tests::allows_in_non_react_files ... ok
[INFO] [stdout] test rules::crypto_weak::tests::allows_strong_algorithms ... ok
[INFO] [stdout] test rules::eval::tests::css_file_not_analyzed ... ok
[INFO] [stdout] test rules::dom_access::tests::detects_create_element ... ok
[INFO] [stdout] test rules::eval::tests::detects_aliased_eval_named_import ... ok
[INFO] [stdout] test rules::eval::tests::detects_aliased_function_named_import ... ok
[INFO] [stdout] test rules::dom_access::tests::allows_useref_pattern ... ok
[INFO] [stdout] test rules::crypto_weak::tests::ignores_comments ... ok
[INFO] [stdout] test rules::dom_access::tests::detects_get_element_by_id ... ok
[INFO] [stdout] test rules::eval::tests::detects_cjs_destructured_eval_alias ... ok
[INFO] [stdout] test rules::dom_access::tests::detects_query_selector ... ok
[INFO] [stdout] test rules::eval::tests::detects_cjs_namespace_member_eval ... ok
[INFO] [stdout] test rules::eval::tests::detects_eval_call ... ok
[INFO] [stdout] test rules::eval::tests::detects_global_this_eval ... ok
[INFO] [stdout] test rules::eval::tests::detects_bracket_notation_eval ... ok
[INFO] [stdout] test rules::eval::tests::detects_bare_function_constructor ... ok
[INFO] [stdout] test io::stdin::tests::parse_stdin_from_rejects_oversized_input ... ok
[INFO] [stdout] test rules::dom_access::tests::ignores_comments ... ok
[INFO] [stdout] test rules::eval::tests::detects_multiple_eval_calls ... ok
[INFO] [stdout] test rules::eval::tests::detects_namespace_member_eval ... ok
[INFO] [stdout] test rules::eval::tests::empty_file ... ok
[INFO] [stdout] test rules::eval::tests::detects_namespace_member_function_new ... ok
[INFO] [stdout] test rules::eval::tests::detects_window_eval ... ok
[INFO] [stdout] test rules::eval::tests::ignores_non_js_file ... ok
[INFO] [stdout] test rules::eval::tests::eval_message_is_specific ... ok
[INFO] [stdout] test rules::eval::tests::ignores_comment ... ok
[INFO] [stdout] test rules::eval::tests::detects_new_function ... ok
[INFO] [stdout] test rules::eval::tests::ignores_non_global_member_eval ... ok
[INFO] [stdout] test rules::flaky_test::tests::allows_fake_timers_usage ... ok
[INFO] [stdout] test rules::eval::tests::ignores_non_target_identifiers ... ok
[INFO] [stdout] test rules::generated_file::tests::allows_normal_files ... ok
[INFO] [stdout] test rules::eval::tests::new_function_message_is_specific ... ok
[INFO] [stdout] test rules::flaky_test::tests::allows_waitfor_pattern ... ok
[INFO] [stdout] test rules::generated_file::tests::detects_g_files ... ok
[INFO] [stdout] test rules::generated_file::tests::detects_generated_directory ... ok
[INFO] [stdout] test rules::generated_file::tests::detects_auto_files ... ok
[INFO] [stdout] test rules::eval::tests::local_eval_identifier_always_flagged ... ok
[INFO] [stdout] test rules::generated_file::tests::detects_generated_ts ... ok
[INFO] [stdout] test rules::flaky_test::tests::ignores_non_test_files ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_github_token ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_bearer_token ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_gitlab_token ... ok
[INFO] [stdout] test rules::generated_file::tests::detects_underscore_generated ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_sk_prefix_api_key ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_slack_bot_token ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::ignores_comment ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_aws_key ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_password_with_sufficient_length ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::error_messages_differ_per_pattern ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::detects_password_assignment ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::ignores_mock_prefix ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::ignores_non_sensitive ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::test_prefix_matches_without_declaration_keyword ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::test_prefix_does_not_suppress_secret_value ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::ignores_short_password_value ... ok
[INFO] [stdout] test rules::http_resource::tests::allows_localhost ... ok
[INFO] [stdout] test rules::http_resource::tests::allows_https ... ok
[INFO] [stdout] test rules::http_resource::tests::allows_loopback ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::test_prefix_does_not_suppress_bearer ... ok
[INFO] [stdout] test rules::hardcoded_secrets::tests::ignores_test_prefix ... ok
[INFO] [stdout] test rules::eval::tests::fail_open_on_invalid_syntax ... ok
[INFO] [stdout] test rules::jwt_client::tests::allows_atob_plain_string ... ok
[INFO] [stdout] test rules::jwt_client::tests::allows_plain_code ... ok
[INFO] [stdout] test rules::jwt_client::tests::allows_jwt_verify ... ok
[INFO] [stdout] test rules::http_resource::tests::detects_http_axios ... ok
[INFO] [stdout] test rules::http_resource::tests::detects_http_on_line_with_localhost ... ok
[INFO] [stdout] test rules::http_resource::tests::detects_http_fetch ... ok
[INFO] [stdout] test rules::jwt_client::tests::detects_jwt_decode_snake_call ... ok
[INFO] [stdout] test rules::jwt_client::tests::detects_jwtdecode_camel_call ... ok
[INFO] [stdout] test rules::jwt_client::tests::detects_atob_jwt_variable ... ok
[INFO] [stdout] test rules::jwt_client::tests::detects_atob_token_variable ... ok
[INFO] [stdout] test rules::jwt_client::tests::ignores_comment ... ok
[INFO] [stdout] test rules::jwt_client::tests::reports_multiple_violations_on_different_lines ... ok
[INFO] [stdout] test rules::jwt_client::tests::detects_jwtdecode_with_generic_type ... ok
[INFO] [stdout] test rules::jwt_client::tests::detects_atob_split_token_dot ... ok
[INFO] [stdout] test rules::naming::tests::detects_lowercase_interface ... ok
[INFO] [stdout] test rules::naming::tests::detects_lowercase_type ... ok
[INFO] [stdout] test rules::jwt_client::tests::allows_atob_random_variable ... ok
[INFO] [stdout] test rules::naming::tests::detects_lowercase_component ... ok
[INFO] [stdout] test rules::no_use_effect::tests::allows_non_react_files ... ok
[INFO] [stdout] test rules::eval::tests::nfr001_eval_under_10ms ... ok
[INFO] [stdout] test rules::no_use_effect::tests::allows_use_layout_effect ... ok
[INFO] [stdout] test rules::no_use_effect::tests::allows_use_mount_effect ... ok
[INFO] [stdout] test rules::cors_wildcard::tests::nfr001_cors_under_10ms ... ok
[INFO] [stdout] test rules::no_use_effect::tests::detects_jsx_file ... ok
[INFO] [stdout] test rules::no_use_effect::tests::detects_react_dot_use_effect ... ok
[INFO] [stdout] test rules::no_use_effect::tests::detects_use_effect_call ... ok
[INFO] [stdout] test rules::no_use_effect::tests::ignores_block_comments ... ok
[INFO] [stdout] test rules::no_use_effect::tests::ignores_comments ... ok
[INFO] [stdout] test rules::no_use_effect::tests::ignores_string_literal ... ok
[INFO] [stdout] test rules::no_use_effect::tests::invalid_syntax_fail_open ... ok
[INFO] [stdout] test rules::no_use_effect::tests::reports_first_occurrence_only ... ok
[INFO] [stdout] test rules::open_redirect::tests::allows_empty_string ... ok
[INFO] [stdout] test rules::open_redirect::tests::allows_hash_string ... ok
[INFO] [stdout] test rules::open_redirect::tests::allows_query_string ... ok
[INFO] [stdout] test rules::open_redirect::tests::allows_relative_template ... ok
[INFO] [stdout] test rules::no_use_effect::tests::empty_file ... ok
[INFO] [stdout] test rules::open_redirect::tests::allows_string_literal ... ok
[INFO] [stdout] test rules::open_redirect::tests::allows_static_template_no_expressions ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_binary_rhs ... ok
[INFO] [stdout] test rules::naming::tests::detects_non_use_hook ... ok
[INFO] [stdout] test rules::naming::tests::allows_proper_use_hook ... ok
[INFO] [stdout] test rules::naming::tests::detects_u_prefixed_non_hook ... ok
[INFO] [stdout] test rules::flaky_test::tests::detects_flaky_patterns ... ok
[INFO] [stdout] test rules::flaky_test::tests::ignores_comments ... ok
[INFO] [stdout] test rules::naming::tests::allows_correct_naming ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_bracket_notation_window_location ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_bracket_notation_href ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_conditional_rhs ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_document_location_href ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_empty_quasi_template ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_location_replace ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_protocol_relative_template ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_location_href_variable ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_template_key_href ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_location_assign ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_window_location_property_assignment ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_protocol_relative_string ... ok
[INFO] [stdout] test rules::open_redirect::tests::fail_open_on_invalid_syntax ... ok
[INFO] [stdout] test rules::open_redirect::tests::ignores_non_js_files ... ok
[INFO] [stdout] test rules::open_redirect::tests::fix_message_includes_concrete_snippet ... ok
[INFO] [stdout] test rules::open_redirect::tests::ignores_comment ... ok
[INFO] [stdout] test rules::naming::tests::detects_use_lowercase_non_hook ... ok
[INFO] [stdout] test rules::open_redirect::tests::empty_file ... ok
[INFO] [stdout] test rules::open_redirect::tests::ignores_relocation_href ... ok
[INFO] [stdout] test rules::open_redirect::tests::ignores_template_key_non_location_member ... ok
[INFO] [stdout] test rules::raw_html::tests::ignores_comment ... ok
[INFO] [stdout] test rules::raw_html::tests::multiline_template_not_detected ... ok
[INFO] [stdout] test rules::security::tests::allows_dangerously_set_inner_html_in_ts_string ... ok
[INFO] [stdout] test rules::raw_html::tests::detects_template_literal_with_html ... ok
[INFO] [stdout] test rules::raw_html::tests::detects_html_concat_with_variable ... ok
[INFO] [stdout] test rules::security::tests::detects_dangerously_set_inner_html_with_whitespace ... ok
[INFO] [stdout] test rules::security::tests::detects_code_injection ... ok
[INFO] [stdout] test rules::open_redirect::tests::detects_document_location ... ok
[INFO] [stdout] test rules::sensitive_file::tests::blocks_env_example_for_safety ... ok
[INFO] [stdout] test rules::security::tests::detects_dangerously_set_inner_html_in_tsx_and_jsx ... ok
[INFO] [stdout] test rules::sensitive_file::tests::allows_normal_files ... ok
[INFO] [stdout] test rules::security::tests::detects_sensitive_storage ... ok
[INFO] [stdout] test rules::raw_html::tests::detects_inline_array_literal_join ... ok
[INFO] [stdout] test rules::sensitive_file::tests::detects_env_file ... ok
[INFO] [stdout] test rules::raw_html::tests::allows_literal_only_concat ... ok
[INFO] [stdout] test rules::sensitive_file::tests::detects_credentials_file ... ok
[INFO] [stdout] test rules::sensitive_file::tests::detects_key_files ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::detects_deeply_nested_calls ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::detects_sensitive_in_template_interpolation ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::allows_safe_logging ... ok
[INFO] [stdout] test rules::raw_html::tests::ignores_distant_join ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::handles_string_with_parens ... ok
[INFO] [stdout] test rules::security::tests::allows_safe_patterns ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::ignores_block_comments ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::ignores_comments ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::detects_standalone_chained_and_underscore_receiver ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::detects_template_literal_with_sensitive ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::url_in_string_not_treated_as_comment ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::ignores_inline_block_comment ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::ignores_multiline_block_comment ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::no_duplicate_violations ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::ignores_identifier_ending_in_logger_or_console ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::detects_sensitive_keywords ... ok
[INFO] [stdout] test rules::service_worker::tests::allows_unrelated_register_call ... ok
[INFO] [stdout] test rules::raw_html::tests::detects_html_join ... ok
[INFO] [stdout] test rules::service_worker::tests::detects_explicit_root_scope_double_quote ... ok
[INFO] [stdout] test rules::service_worker::tests::allows_non_root_scope ... ok
[INFO] [stdout] test rules::service_worker::tests::ignores_comment ... ok
[INFO] [stdout] test rules::service_worker::tests::allows_omitted_scope ... ok
[INFO] [stdout] test rules::sqli_concat::tests::allows_console_member_calls_with_dynamic_sql ... ok
[INFO] [stdout] test rules::sqli_concat::tests::allows_orm_where_clause ... ok
[INFO] [stdout] test rules::service_worker::tests::detects_nested_call_argument ... ok
[INFO] [stdout] test rules::sqli_concat::tests::allows_prepared_statement_with_numbered_placeholder ... ok
[INFO] [stdout] test rules::service_worker::tests::detects_explicit_root_scope_single_quote ... ok
[INFO] [stdout] test rules::sqli_concat::tests::allows_static_template_literal ... ok
[INFO] [stdout] test rules::sqli_concat::tests::detects_bare_exec_without_clause_keyword ... ok
[INFO] [stdout] test rules::service_worker::tests::detects_second_call_on_same_line ... ok
[INFO] [stdout] test rules::sqli_concat::tests::detects_bare_truncate_without_clause_keyword ... ok
[INFO] [stdout] test rules::sqli_concat::tests::detects_dynamic_sql_on_non_standard_sink_name ... ok
[INFO] [stdout] test rules::sqli_concat::tests::detects_drop_user_without_clause_keyword ... ok
[INFO] [stdout] test rules::sqli_concat::tests::detects_string_concat_with_sql_keyword ... ok
[INFO] [stdout] test rules::sqli_concat::tests::detects_template_literal_with_sql_keyword_and_interpolation ... ok
[INFO] [stdout] test rules::sqli_concat::tests::empty_file_returns_no_violation ... ok
[INFO] [stdout] test rules::sqli_concat::tests::ignores_concat_prose_with_embedded_keyword ... ok
[INFO] [stdout] test rules::sqli_concat::tests::fail_open_on_invalid_syntax ... ok
[INFO] [stdout] test rules::sqli_concat::tests::ignores_prose_on_unrelated_call_name ... ok
[INFO] [stdout] test rules::sqli_concat::tests::ignores_prose_with_lone_statement_keyword ... ok
[INFO] [stdout] test rules::sqli_concat::tests::ignores_sql_template_outside_call_argument ... ok
[INFO] [stdout] test rules::sqli_concat::tests::looks_like_sql_requires_leading_keyword ... ok
[INFO] [stdout] test hook::precision::corpus_fixtures_match_their_fire_clean_expectation ... ok
[INFO] [stdout] test rules::sqli_concat::tests::reports_correct_line_number ... ok
[INFO] [stdout] test rules::sync_io::tests::allows_in_config_files ... ok
[INFO] [stdout] test rules::sync_io::tests::allows_async_versions ... ok
[INFO] [stdout] test rules::sync_io::tests::allows_in_next_config ... ok
[INFO] [stdout] test rules::sync_io::tests::allows_in_root_build_esm_script ... ok
[INFO] [stdout] test rules::sync_io::tests::allows_in_scripts ... ok
[INFO] [stdout] test rules::sync_io::tests::detects_exists_sync ... ok
[INFO] [stdout] test rules::http_resource::tests::ignores_comment ... ok
[INFO] [stdout] test rules::eval::tests::detects_namespace_bracket_eval ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::detects_nested_function_call ... ok
[INFO] [stdout] test rules::service_worker::tests::detects_explicit_root_scope_backtick ... ok
[INFO] [stdout] test rules::sqli_concat::tests::allows_prepared_statement_with_question_mark ... ok
[INFO] [stdout] test rules::sqli_concat::tests::ignores_keyword_appearing_only_in_a_later_quasi ... ok
[INFO] [stdout] test rules::sqli_concat::tests::detects_dynamic_template_in_concat_chain ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_arg_bearing_arrow_with_assertion ... ok
[INFO] [stdout] test rules::sync_io::tests::detects_read_file_sync ... ok
[INFO] [stdout] test rules::sqli_concat::tests::ignores_non_js_files ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_async_test_with_assertion ... ok
[INFO] [stdout] test rules::sync_io::tests::known_limitation_frontend_mjs_sync_io_exempt ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_empty_test_placeholder ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_function_callback_with_assertion ... ok
[INFO] [stdout] test rules::sqli_concat::tests::nfr001_sqli_under_10ms ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_it_only_with_assertion ... ok
[INFO] [stdout] test rules::sync_io::tests::ignores_comments ... ok
[INFO] [stdout] test rules::sync_io::tests::detects_write_file_sync ... ok
[INFO] [stdout] test rules::sync_io::tests::detects_in_non_config_esm_module ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_test_with_assert ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_test_with_nested_braces_and_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_mock_matcher_alongside_value_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_negated_mock_assertion ... ok
[INFO] [stdout] test rules::raw_html::tests::ignores_unrelated_join_near_html_literal ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_non_tautological_equality ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_test_with_expect ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_weak_matcher_alongside_non_expect_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_function_callback_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_arg_bearing_arrow_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_negated_self_comparison ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_negated_weak_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_parenthesized_callee_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_test_each_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_missing_assertion_with_template_interpolation ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_test_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_computed_member_callee_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_spread_argument_call_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::allows_weak_matcher_alongside_strong_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_it_only_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_missing_assertion_with_string_braces ... ok
[INFO] [stdout] test rules::test_assertion::tests::fail_open_on_invalid_syntax ... ok
[INFO] [stdout] test rules::test_assertion::tests::flags_mock_only_with_called_with_matcher ... ok
[INFO] [stdout] test rules::test_assertion::tests::detects_test_with_nested_braces_no_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::flags_tautological_with_member_expression_target ... ok
[INFO] [stdout] test rules::test_assertion::tests::flags_mock_only_assertion_at_medium ... ok
[INFO] [stdout] test rules::test_assertion::tests::flags_tautological_assertion_at_medium ... ok
[INFO] [stdout] test rules::test_assertion::tests::flags_weak_and_mock_mix_without_value_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::flags_weak_only_assertion_at_low ... ok
[INFO] [stdout] test rules::test_assertion::tests::flags_only_weak_matchers_across_multiple_assertions ... ok
[INFO] [stdout] test rules::test_assertion::tests::handles_braces_in_string_literals ... ok
[INFO] [stdout] test rules::test_assertion::tests::ignores_describe_block_without_assertion ... ok
[INFO] [stdout] test rules::test_assertion::tests::handles_nested_template_interpolation ... ok
[INFO] [stdout] test rules::test_assertion::tests::handles_braces_in_single_quotes ... ok
[INFO] [stdout] test rules::test_assertion::tests::handles_template_literal_interpolation_with_braces ... ok
[INFO] [stdout] test rules::test_assertion::tests::handles_braces_in_template_literals ... ok
[INFO] [stdout] test rules::test_assertion::tests::handles_string_inside_interpolation ... ok
[INFO] [stdout] test rules::test_assertion::tests::handles_braces_in_comments ... ok
[INFO] [stdout] test rules::test_assertion::tests::ignores_member_call_not_rooted_at_test ... ok
[INFO] [stdout] test rules::test_assertion::tests::ignores_non_test_file ... ok
[INFO] [stdout] test rules::test_location::tests::allows_normal_files_in_src ... ok
[INFO] [stdout] test rules::test_assertion::tests::tautological_takes_priority_over_weak ... ok
[INFO] [stdout] test rules::test_location::tests::allows_files_outside_src ... ok
[INFO] [stdout] test rules::tests::blank_and_whitespace_only_lines_omitted ... ok
[INFO] [stdout] test rules::test_location::tests::allows_test_file_outside_src ... ok
[INFO] [stdout] test rules::tests::block_comment_with_code_after_close ... ok
[INFO] [stdout] test rules::tests::block_comment_single_line ... ok
[INFO] [stdout] test rules::test_location::tests::detects_test_file_in_src ... ok
[INFO] [stdout] test rules::tests::empty_content ... ok
[INFO] [stdout] test rules::tests::block_comment_with_code_before_open ... ok
[INFO] [stdout] test rules::test_location::tests::detects_tests_dir_in_src ... ok
[INFO] [stdout] test rules::tests::block_comment_body_without_star_prefix ... ok
[INFO] [stdout] test rules::tests::block_comment_markers_in_string_across_lines_ignored ... ok
[INFO] [stdout] test rules::tests::load_rules_respects_disabled_rule ... ok
[INFO] [stdout] test rules::tests::find_match_in_lines_skips_block_comments ... ok
[INFO] [stdout] test rules::tests::inline_block_comment_with_code_on_both_sides ... ok
[INFO] [stdout] test rules::tests::jsdoc_star_lines_outside_block_are_code ... ok
[INFO] [stdout] test rules::tests::load_rules_default_config_loads_all ... ok
[INFO] [stdout] test rules::tests::nested_style_block_comments ... ok
[INFO] [stdout] test rules::tests::no_comments ... ok
[INFO] [stdout] test rules::tests::re_api_or_middleware_rejects_near_miss_paths ... ok
[INFO] [stdout] test rules::tests::re_api_or_route_matches_app_route_segments ... ok
[INFO] [stdout] test rules::tests::re_api_file_rejects_near_miss_paths ... ok
[INFO] [stdout] test rules::tests::re_test_file_co_extends_to_esm ... ok
[INFO] [stdout] test rules::tests::re_js_file_matches_esm_and_classic_extensions ... ok
[INFO] [stdout] test rules::tests::re_js_file_rejects_commonjs_extensions ... ok
[INFO] [stdout] test rules::tests::re_react_file_excludes_esm_non_jsx_extensions ... ok
[INFO] [stdout] test rules::tests::rule_id_catalog_registered_and_unregistered_are_disjoint ... ok
[INFO] [stdout] test rules::tests::severity_from_linter_str ... ok
[INFO] [stdout] test rules::tests::single_line_comments_filtered ... ok
[INFO] [stdout] test rules::transaction::tests::allows_with_transaction_boundaries ... ok
[INFO] [stdout] test rules::tests::re_api_or_route_rejects_near_miss_paths ... ok
[INFO] [stdout] test rules::transaction::tests::detects_in_app_api_route ... ok
[INFO] [stdout] test rules::tests::re_api_file_matches_app_api_and_pages_api ... ok
[INFO] [stdout] test rules::tests::re_api_or_middleware_matches_middleware_files ... ok
[INFO] [stdout] test rules::tests::re_test_file_rejects_commonjs_test_extensions ... ok
[INFO] [stdout] test rules::tests::severity_orders_low_to_critical ... ok
[INFO] [stdout] test rules::sync_io::tests::allows_in_esm_config_files ... ok
[INFO] [stdout] test rules::transaction::tests::detects_when_keyword_in_comment ... ok
[INFO] [stdout] test rules::transaction::tests::detects_when_keyword_in_variable_name ... ok
[INFO] [stdout] test rules::tests::block_comment_markers_in_string_literal_ignored ... ok
[INFO] [stdout] test rules::transaction::tests::detects_in_app_route_segment ... ok
[INFO] [stdout] test rules::transaction::tests::detects_multiple_writes_without_transaction ... ok
[INFO] [stdout] test rules::transaction::tests::no_false_positive_for_set_add ... ok
[INFO] [stdout] test rules::transaction::tests::skips_non_target_directories ... ok
[INFO] [stdout] test rules::transaction::tests::detects_in_server_directory ... ok
[INFO] [stdout] test rules::transaction::tests::detects_in_pages_api ... ok
[INFO] [stdout] test rules::tests::rule_id_catalog_entries_match_allowlists ... ok
[INFO] [stdout] test rules::transaction::tests::detects_in_domain_directory ... ok
[INFO] [stdout] test rules::transaction::tests::skips_single_write ... ok
[INFO] [stdout] test temp_file::tests::creates_temp_file_with_correct_extension ... ok
[INFO] [stdout] test tests::classify_unsupported_platform_maps_to_data_error ... ok
[INFO] [stdout] test temp_file::tests::writes_content_to_temp_file ... ok
[INFO] [stdout] test temp_file::tests::defaults_to_ts_extension_when_none ... ok
[INFO] [stdout] test temp_file::tests::fallback_dir_injection_lands_in_supplied_directory ... ok
[INFO] [stdout] test tests::hook_mode_panic_fails_closed_with_blocking_exit ... ok
[INFO] [stdout] test temp_file::tests::falls_back_to_temp_dir_when_parent_missing ... ok
[INFO] [stdout] test tests::classify_cache_dir_unavailable_maps_to_io_error ... ok
[INFO] [stdout] test tests::classify_extract_failure_maps_to_io_error ... ok
[INFO] [stdout] test tests::classify_network_failure_maps_to_io_error ... ok
[INFO] [stdout] test tests::subcommand_panic_keeps_internal_exit ... ok
[INFO] [stdout] test rules::test_assertion::tests::nfr001_test_assertion_under_10ms ... ok
[INFO] [stdout] test regex_compile::tests::panics_with_symbol_tag_on_invalid_pattern - should panic ... ok
[INFO] [stdout] test resolve::tests::format_thread_panic_extracts_actual_thread_panic_str ... ok
[INFO] [stdout] test rules::tests::ast_test_check_panics_on_unsupported_extension - should panic ... ok
[INFO] [stdout] test rules::tests::ast_test_check_panics_on_parser_failure - should panic ... ok
[INFO] [stdout] test rules::sensitive_logging::tests::nfr001_sensitive_logging_under_10ms ... ok
[INFO] [stdout] test hook::precision::metrics_snapshot_measures_all_samples_under_10ms ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 970 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 2.57s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli/main.rs (/opt/rustwide/target/debug/deps/cli-a21589667a8a9f12)
[INFO] [stdout] 
[INFO] [stdout] running 57 tests
[INFO] [stdout] test config::disabled_config_with_json_emits_allow_decision ... ok
[INFO] [stdout] test config::disabled_config_skips_rule_evaluation ... ok
[INFO] [stdout] test diff_aware::write_to_new_file_blocks_all_without_skip_note ... ok
[INFO] [stdout] test config::hint_shown_when_tools_json_without_guardrails_key ... ok
[INFO] [stdout] test config::malformed_config_falls_back_to_defaults_and_keeps_detecting ... ok
[INFO] [stdout] test diff_aware::completed_demotion_reports_count_note_without_degraded ... ok
[INFO] [stdout] test diff_aware::second_pass_with_zero_demoted_omits_count_note ... ok
[INFO] [stdout] test dispatch::bidi_char_blocked_even_when_parse_fails ... ok
[INFO] [stdout] test diff_aware::edit_keeping_preexisting_violation_exits_advisory ... ok
[INFO] [stdout] test config::no_hint_when_guardrails_configured ... ok
[INFO] [stdout] test dispatch::invalid_json_exits_input_error ... ok
[INFO] [stdout] test dispatch::non_js_file_skips_js_rules ... ok
[INFO] [stdout] test dispatch::oversized_input_blocks_with_exit_two ... ok
[INFO] [stdout] test dispatch::deep_nesting_exits_two_not_aborts ... ok
[INFO] [stdout] test diff_aware::unparsable_before_content_skips_demotion_with_note ... ok
[INFO] [stdout] test diff_aware::degraded_edit_resolution_skips_demotion_with_note ... ok
[INFO] [stdout] test dispatch::unknown_tool_with_content_warns ... ok
[INFO] [stdout] test dispatch::unsupported_tool_exits_zero ... ok
[INFO] [stdout] test config::malformed_tools_json_marks_json_envelope_degraded ... ok
[INFO] [stdout] test dispatch::write_missing_content_exits_zero_with_warning ... ok
[INFO] [stdout] test config::no_hint_when_no_claude_dir ... ok
[INFO] [stdout] test diff_aware::toggle_off_omits_origin_from_json ... ok
[INFO] [stdout] test config::hint_shown_when_claude_dir_exists_without_tools_json ... ok
[INFO] [stdout] test diff_aware::edit_adding_new_violation_blocks_it_and_demotes_preexisting_one ... ok
[INFO] [stdout] test diff_aware::unreadable_before_file_skips_demotion_and_notes_failure ... FAILED
[INFO] [stdout] test dispatch::pipe_stderr_omits_ansi_escape ... ok
[INFO] [stdout] test dispatch::structural_rule_survives_child_round_trip ... ok
[INFO] [stdout] test edit::old_string_not_found_envelope_carries_specific_note ... ok
[INFO] [stdout] test json_envelope::json_mode_invalid_json_emits_error_envelope ... ok
[INFO] [stdout] test json_envelope::json_mode_missing_content_emits_allow ... ok
[INFO] [stdout] test json_envelope::json_mode_oversized_input_emits_error_envelope ... ok
[INFO] [stdout] test json_envelope::json_mode_unsupported_tool_emits_allow ... ok
[INFO] [stdout] test dispatch::blocking_violation_takes_precedence_over_advisory ... ok
[INFO] [stdout] test dispatch::deep_generics_exits_two_not_aborts ... ok
[INFO] [stdout] test dispatch::clean_code_exits_zero ... ok
[INFO] [stdout] test dispatch::violation_exits_two ... ok
[INFO] [stdout] test prefetch::parse_error_exits_64_with_stderr_message ... ok
[INFO] [stdout] test prefetch::prefetch_json_emits_success_envelope_when_cached ... ok
[INFO] [stdout] test prefetch::prefetch_json_io_error_envelope_when_cache_unavailable ... ok
[INFO] [stdout] test edit::edit_snippet_fallback_emits_degraded_true_in_json_envelope ... ok
[INFO] [stdout] test prefetch::prefetch_returns_zero_when_oxlint_already_cached ... ok
[INFO] [stdout] test edit::multi_edit_with_violation_exits_two ... ok
[INFO] [stdout] test prefetch::help_flag_exits_zero_and_lists_subcommands ... ok
[INFO] [stdout] test prefetch::prefetch_without_json_exits_io_error_with_stderr_diagnostic ... ok
[INFO] [stdout] test edit::multi_edit_mid_sequence_failure_propagates_to_envelope ... ok
[INFO] [stdout] test prefetch::version_flag_exits_zero ... ok
[INFO] [stdout] test edit::edit_with_violation_exits_two ... ok
[INFO] [stdout] test json_envelope::json_mode_clean_emits_allow_decision ... ok
[INFO] [stdout] test edit::edit_with_jsx_attribute_snippet_detects_via_full_file ... ok
[INFO] [stdout] test dispatch::warning_only_exits_advisory_with_stderr ... ok
[INFO] [stdout] test config::hint_shown_repeatedly_when_tools_json_absent ... ok
[INFO] [stdout] test dispatch::deep_ternary_never_aborts_fail_open ... ok
[INFO] [stdout] test json_envelope::json_mode_disabled_without_flag ... ok
[INFO] [stdout] test json_envelope::json_mode_violation_emits_block_decision ... ok
[INFO] [stdout] test json_envelope::json_mode_warning_only_keeps_allow_decision ... ok
[INFO] [stdout] test prefetch::outside_project_root_bin_emits_reject_note_in_envelope ... ok
[INFO] [stdout] test dispatch::deep_jsx_exits_two_not_aborts ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- diff_aware::unreadable_before_file_skips_demotion_and_notes_failure stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'diff_aware::unreadable_before_file_skips_demotion_and_notes_failure' (3403) panicked at tests/cli/diff_aware.rs:315:5:
[INFO] [stdout] envelope notes must state demotion was skipped: {"data":{"violations":[{"rule":"eval","severity":"high","fix":"Avoid eval(). Use JSON.parse() for data or safe alternatives.","file":"/tmp/.tmp8fIq1u/app.ts","line":1}],"decision":"block"},"degraded":false,"notes":[]}
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5df1d2be9171 - std[73adb7dc35730857]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5df1d2be9171 - std[73adb7dc35730857]::backtrace_rs::backtrace::trace_unsynchronized::<std[73adb7dc35730857]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5df1d2be9171 - std[73adb7dc35730857]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5df1d2be9171 - <<std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[6883ba1bc0fe4ed1]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5df1d2bfdc1a - <core[6883ba1bc0fe4ed1]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5df1d2bfdc1a - core[6883ba1bc0fe4ed1]::fmt::write
[INFO] [stdout]    6:     0x5df1d2bed8fc - std[73adb7dc35730857]::io::default_write_fmt::<alloc[55a36b64bcbf2c0d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:626:11
[INFO] [stdout]    7:     0x5df1d2bed8fc - <alloc[55a36b64bcbf2c0d]::vec::Vec<u8> as std[73adb7dc35730857]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/io/mod.rs:1730:13
[INFO] [stdout]    8:     0x5df1d2bc53b6 - <std[73adb7dc35730857]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5df1d2bc53b6 - std[73adb7dc35730857]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5df1d2be07d9 - std[73adb7dc35730857]::panicking::default_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5df1d2b469d0 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   12:     0x5df1d2b469d0 - test[980ffaebd391d06d]::test_main_inner::<test[980ffaebd391d06d]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5df1d2be0992 - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn for<'a, 'b> core[6883ba1bc0fe4ed1]::ops::function::Fn<(&'a std[73adb7dc35730857]::panic::PanicHookInfo<'b>,), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send + core[6883ba1bc0fe4ed1]::marker::Sync> as core[6883ba1bc0fe4ed1]::ops::function::Fn<(&std[73adb7dc35730857]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2333:9
[INFO] [stdout]   14:     0x5df1d2be0992 - std[73adb7dc35730857]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x5df1d2bc5462 - std[73adb7dc35730857]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x5df1d2bbcc49 - std[73adb7dc35730857]::sys::backtrace::__rust_end_short_backtrace::<std[73adb7dc35730857]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5df1d2bc620d - __rustc[a7b7b02e776dd976]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x5df1d2bfe3ac - core[6883ba1bc0fe4ed1]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5df1d2b1d1fe - cli[c803d2eb5e397fd9]::diff_aware::unreadable_before_file_skips_demotion_and_notes_failure
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/cli/diff_aware.rs:315:5
[INFO] [stdout]   20:     0x5df1d2b186a7 - cli[c803d2eb5e397fd9]::diff_aware::unreadable_before_file_skips_demotion_and_notes_failure::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/cli/diff_aware.rs:299:61
[INFO] [stdout]   21:     0x5df1d2b0e926 - <cli[c803d2eb5e397fd9]::diff_aware::unreadable_before_file_skips_demotion_and_notes_failure::{closure#0} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x5df1d2b39d0b - <fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5df1d2b39d0b - test[980ffaebd391d06d]::__rust_begin_short_backtrace::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, fn() -> core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x5df1d2b47355 - test[980ffaebd391d06d]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x5df1d2b47355 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x5df1d2b47355 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   27:     0x5df1d2b47355 - std[73adb7dc35730857]::panicking::catch_unwind::<core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>, core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x5df1d2b47355 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<test[980ffaebd391d06d]::run_test_in_process::{closure#0}>, core[6883ba1bc0fe4ed1]::result::Result<(), alloc[55a36b64bcbf2c0d]::string::String>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x5df1d2b47355 - test[980ffaebd391d06d]::run_test_in_process
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x5df1d2b47355 - test[980ffaebd391d06d]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x5df1d2b41e04 - test[980ffaebd391d06d]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x5df1d2b41e04 - std[73adb7dc35730857]::sys::backtrace::__rust_begin_short_backtrace::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x5df1d2b4a4a2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x5df1d2b4a4a2 - <core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x5df1d2b4a4a2 - std[73adb7dc35730857]::panicking::catch_unwind::do_call::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:576:43
[INFO] [stdout]   36:     0x5df1d2b4a4a2 - std[73adb7dc35730857]::panicking::catch_unwind::<(), core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x5df1d2b4a4a2 - std[73adb7dc35730857]::panic::catch_unwind::<core[6883ba1bc0fe4ed1]::panic::unwind_safe::AssertUnwindSafe<std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x5df1d2b4a4a2 - std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked::<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x5df1d2b4a4a2 - <std[73adb7dc35730857]::thread::lifecycle::spawn_unchecked<test[980ffaebd391d06d]::run_test::{closure#1}, ()>::{closure#1} as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x5df1d2be87ff - <alloc[55a36b64bcbf2c0d]::boxed::Box<dyn core[6883ba1bc0fe4ed1]::ops::function::FnOnce<(), Output = ()> + core[6883ba1bc0fe4ed1]::marker::Send> as core[6883ba1bc0fe4ed1]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/alloc/src/boxed.rs:2319:9
[INFO] [stdout]   41:     0x5df1d2be87ff - <std[73adb7dc35730857]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/6b3fa26749ab40e159b2dd5cf577acaaf5902772/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   42:     0x792b70cf6aa4 - <unknown>
[INFO] [stdout]   43:     0x792b70d83a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     diff_aware::unreadable_before_file_skips_demotion_and_notes_failure
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 56 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 5.56s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test cli`
[INFO] running `Command { std: "docker" "inspect" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b", kill_on_drop: false }`
[INFO] [stdout] 66888d40fae1c75885aae017ef9d430a563abc8e60a2ee29605bf72ff692b42b
