[INFO] fetching crate diffguard 0.2.0...
[INFO] testing diffguard-0.2.0 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate diffguard 0.2.0 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate diffguard 0.2.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate diffguard 0.2.0
[INFO] tweaked toml for crates.io crate diffguard 0.2.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate diffguard 0.2.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate diffguard 0.2.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:75:12
[INFO] [stderr]    |
[INFO] [stderr] 75 | homepage = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 80 | repository = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |              ------------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `diffguard` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270
[INFO] running `Command { std: "docker" "start" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270", 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" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270", 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" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:75:12
[INFO] [stderr]    |
[INFO] [stderr] 75 | homepage = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 80 | repository = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |              ------------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `diffguard` (manifest) generated 1 warning
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling dyn-clone v1.0.20
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling winnow v1.0.1
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling clap_derive v4.6.0
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling toml v0.9.12+spec-1.1.0
[INFO] [stderr]    Compiling diffguard-types v0.2.0
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling diffguard-diff v0.2.0
[INFO] [stderr]    Compiling diffguard-analytics v0.2.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling diffguard-domain v0.2.0
[INFO] [stderr]    Compiling diffguard-core v0.2.0
[INFO] [stderr]    Compiling diffguard v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 09s
[INFO] running `Command { std: "docker" "inspect" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270", 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" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:75:12
[INFO] [stderr]    |
[INFO] [stderr] 75 | homepage = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 80 | repository = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |              ------------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `diffguard` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling assert_cmd v2.2.0
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling fastrand v2.4.0
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling diffguard-domain v0.2.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling diffguard-core v0.2.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling diffguard v0.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 46.88s
[INFO] running `Command { std: "docker" "inspect" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270", 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" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]   --> Cargo.toml:75:12
[INFO] [stderr]    |
[INFO] [stderr] 75 | homepage = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 80 | repository = "https://github.com/effortlessmetrics/diffguard"
[INFO] [stderr]    |              ------------------------------------------------
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `diffguard` (manifest) generated 1 warning
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.14s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/diffguard/e2726b40ed5b7088/out/diffguard-e2726b40ed5b7088)
[INFO] [stdout] 
[INFO] [stdout] running 113 tests
[INFO] [stdout] [2m2026-10-18T07:43:18.947638Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpvrNdkc/level1.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.947700Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Resolving include 'level2.toml' relative to '/tmp/.tmpvrNdkc'
[INFO] [stdout] [2m2026-10-18T07:43:18.947718Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpvrNdkc/level2.toml' (depth 1)
[INFO] [stdout] [2m2026-10-18T07:43:18.947749Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Resolving include 'level3.toml' relative to '/tmp/.tmpvrNdkc'
[INFO] [stdout] [2m2026-10-18T07:43:18.947765Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpvrNdkc/level3.toml' (depth 2)
[INFO] [stdout] [2m2026-10-18T07:43:18.947881Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpj7gINR/main.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.947935Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Resolving include 'base.toml' relative to '/tmp/.tmpj7gINR'
[INFO] [stdout] [2m2026-10-18T07:43:18.947953Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpj7gINR/base.toml' (depth 1)
[INFO] [stdout] [2m2026-10-18T07:43:18.948407Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp2LojZk/main.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.948450Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Resolving include 'base.toml' relative to '/tmp/.tmp2LojZk'
[INFO] [stdout] [2m2026-10-18T07:43:18.948467Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp2LojZk/base.toml' (depth 1)
[INFO] [stdout] [2m2026-10-18T07:43:18.947639Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp4z7baq/main.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.948979Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Resolving include 'base.toml' relative to '/tmp/.tmp4z7baq'
[INFO] [stdout] [2m2026-10-18T07:43:18.948999Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp4z7baq/base.toml' (depth 1)
[INFO] [stdout] test config_loader::tests::test_circular_include_detected ... ok
[INFO] [stdout] test config_loader::tests::test_expand_env_error_propagates ... ok
[INFO] [stdout] test config_loader::tests::test_invalid_toml_returns_error ... ok
[INFO] [stdout] test config_loader::tests::test_dag_includes_same_file_twice ... ok
[INFO] [stdout] test config_loader::tests::test_cycle_detection_still_works ... ok
[INFO] [stdout] test config_loader::tests::test_simple_config_no_includes ... ok
[INFO] [stdout] test config_loader::tests::test_nested_includes ... ok
[INFO] [stdout] test config_loader::tests::test_include_override_by_id ... ok
[INFO] [stdout] [2m2026-10-18T07:43:18.949543Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpYRXBVz/config.toml' (depth 0)
[INFO] [stdout] test config_loader::tests::test_include_single_file ... ok
[INFO] [stdout] [2m2026-10-18T07:43:18.949579Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Resolving include 'nonexistent.toml' relative to '/tmp/.tmpYRXBVz'
[INFO] [stdout] test config_loader::tests::test_merge_configs_defaults_override ... ok
[INFO] [stdout] test config_loader::tests::test_merge_configs_keeps_base_defaults_when_other_default ... ok
[INFO] [stdout] test config_loader::tests::test_merge_defaults_field_wise ... ok
[INFO] [stdout] test config_loader::tests::test_merge_defaults_none_inherits ... ok
[INFO] [stdout] test config_loader::tests::test_include_logging_path_resolution_debug ... ok
[INFO] [stdout] test config_loader::tests::test_missing_include_errors ... ok
[INFO] [stdout] test presets::tests::test_all_presets_have_defaults ... ok
[INFO] [stdout] test presets::tests::test_preset_descriptions ... ok
[INFO] [stdout] test presets::tests::test_js_console_preset_generates_valid_toml ... ok
[INFO] [stdout] test presets::tests::test_minimal_preset_generates_valid_toml ... ok
[INFO] [stdout] test presets::tests::test_preset_names ... ok
[INFO] [stdout] test presets::tests::test_python_debug_preset_generates_valid_toml ... ok
[INFO] [stdout] test presets::tests::test_rust_quality_preset_generates_valid_toml ... ok
[INFO] [stdout] test presets::tests::test_secrets_preset_generates_valid_toml ... ok
[INFO] [stdout] test tests::blame_filters_match_author_and_age ... ok
[INFO] [stdout] test tests::build_tool_error_receipt_uses_defaults_and_sets_reason ... ok
[INFO] [stdout] test tests::build_tool_error_sensor_context_and_report ... ok
[INFO] [stdout] test tests::build_rule_metadata_includes_help_url_and_tags ... ok
[INFO] [stdout] test config_loader::tests::test_include_depth_limit_exceeded ... ok
[INFO] [stdout] [2m2026-10-18T07:43:18.953732Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpXgjG9O/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:18.954233Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpXgjG9O/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.955218Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:18.960378Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpXgjG9O/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:18.960416Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpXgjG9O/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.961200Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_explain_found_and_missing ... ok
[INFO] [stdout] [2m2026-10-18T07:43:18.963595Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpr8zSQH/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:18.963628Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpr8zSQH/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.964178Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_explain_missing_rule_without_suggestions ... ok
[INFO] [stdout] [2m2026-10-18T07:43:18.964684Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp6FsuMe/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:18.964703Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp6FsuMe/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:18.965163Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_explain_suggests_similar_rules ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.264439Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.264469Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmphIHPI3/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.264486Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmphIHPI3/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.265259Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.265422Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.265443Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: missing-ref...HEAD
[INFO] [stdout] [2m2026-10-18T07:43:19.272150Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.272172Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpLD9e3u/bad.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.272185Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpLD9e3u/bad.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.276085Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.276106Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpTKD8sU/missing.toml
[INFO] [stdout] test tests::cmd_check_cockpit_skip_and_tool_error_paths ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.276862Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.276873Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpNQTBQ4/missing.toml
[INFO] [stdout] test tests::cmd_check_cockpit_tool_error_without_sensor_writes_receipt ... ok
[INFO] [stdout] test tests::cmd_check_cockpit_tool_error_writes_receipt_when_sensor_fails ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.277611Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.277629Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpUMXivq/bad.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.277651Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpUMXivq/bad.toml' (depth 0)
[INFO] [stdout] test tests::cmd_check_cockpit_catastrophic_failure_when_writes_fail ... ok
[INFO] [stdout] test tests::cmd_init_with_io_force_writes_file ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.279015Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.279043Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m No config file found, using built-in rules
[INFO] [stdout] [2m2026-10-18T07:43:19.279122Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.279131Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking staged changes
[INFO] [stdout] test tests::cmd_init_with_io_respects_overwrite_prompt ... ok
[INFO] [stdout] test tests::cmd_init_with_io_overwrites_when_confirmed ... ok
[INFO] [stdout] test tests::cmd_renderers_stdout_and_tsv ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.283262Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpNxT2h2/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.283285Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpNxT2h2/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.283474Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.283480Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp5NIRlu/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.283494Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp5NIRlu/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.284218Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.284795Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_renderers_write_outputs ... ok
[INFO] [stdout] test tests::cmd_rules_json_renders ... ok
[INFO] [stdout] test tests::cmd_test_compile_error_records_failures ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.285455Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.285464Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp1hNezG/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.285478Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp1hNezG/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.285518Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.285525Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpQwG2EZ/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.285540Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpQwG2EZ/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.285595Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.285603Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpqBbLNI/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.285616Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpqBbLNI/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.285956Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.286000Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.286085Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_test_no_cases_text ... ok
[INFO] [stdout] test tests::cmd_test_no_cases_json ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.286235Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.286241Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpqBbLNI/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.286253Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpqBbLNI/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.286720Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_test_json_success_and_failure ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.287185Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.287194Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmppL9pdM/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.287209Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmppL9pdM/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.287571Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.287589Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m No config file found, using built-in rules
[INFO] [stdout] [2m2026-10-18T07:43:19.287652Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.287659Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking staged changes
[INFO] [stdout] [2m2026-10-18T07:43:19.287739Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 2 rule(s) from config
[INFO] [stdout] test tests::cmd_check_cockpit_skip_fails_to_write_receipts ... ok
[INFO] [stdout] test tests::cmd_test_text_failure_outputs_details ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.288501Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.288516Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp156fVJ/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.288530Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp156fVJ/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.288585Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.288593Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmprzscIV/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.288608Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmprzscIV/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.289015Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 0 rule(s) from config
[INFO] [stdout] test tests::cmd_test_no_rules_defined_errors ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.289270Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.290518Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.290532Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpXCKgnV/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.290548Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpXCKgnV/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.291034Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.291515Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.291524Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpsMgvIq/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.291539Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpsMgvIq/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.292022Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_test_text_success_no_failures ... ok
[INFO] [stdout] test tests::cmd_test_rule_filter_missing ... ok
[INFO] [stdout] test tests::cmd_test_text_failures_with_empty_and_missing_description ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.293515Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.293524Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp4Z8Wqw/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.294012Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: bad.rule
[INFO] [stdout] test tests::cmd_validate_json_reports_errors ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.294564Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.294573Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp4XZH8q/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.295059Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: warn.rule
[INFO] [stdout] test tests::cmd_validate_reports_invalid_globs_and_strict_warnings ... ok
[INFO] [stdout] test tests::cmd_check_cockpit_skip_sensor_json_error_falls_back_to_out ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.297571Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.297581Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpLB6cbK/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.298332Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: dup.rule
[INFO] [stdout] [2m2026-10-18T07:43:19.298345Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: dup.rule
[INFO] [stdout] test tests::cmd_validate_text_reports_errors_and_warnings ... ok
[INFO] [stdout] test tests::cockpit_error_classification_and_detail ... ok
[INFO] [stdout] test tests::collect_override_candidates_walks_ancestor_directories ... ok
[INFO] [stdout] test tests::confirm_overwrite_accepts_yes_variants ... ok
[INFO] [stdout] test tests::confirm_overwrite_parses_input ... ok
[INFO] [stdout] test tests::confirm_overwrite_propagates_flush_error ... ok
[INFO] [stdout] test tests::confirm_overwrite_rejects_default_or_no ... ok
[INFO] [stdout] test tests::fail_on_arg_converts_to_fail_on ... ok
[INFO] [stdout] test tests::find_similar_rules_contains_match ... ok
[INFO] [stdout] test tests::find_similar_rules_edit_distance_match ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.312595Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpHFGZib/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.312630Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpHFGZib/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.313196Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::find_similar_rules_uses_edit_distance ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.368953Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.368980Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpMZh2ib/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.368999Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpMZh2ib/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.369861Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.369923Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.369932Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: missing-ref...HEAD
[INFO] [stdout] [2m2026-10-18T07:43:19.376824Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] test tests::cmd_check_cockpit_skip_writes_sensor_report ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.377174Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpfjLd9P/missing.toml
[INFO] [stdout] test tests::cmd_check_cockpit_tool_error_sensor_json_error_falls_back_to_out ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.378965Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.378984Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpxcIIZT/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.379001Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpxcIIZT/diffguard.toml' (depth 0)
[INFO] [stdout] test tests::load_false_positive_baseline_missing_returns_empty ... ok
[INFO] [stdout] test tests::load_directory_overrides_for_diff_loads_root_then_deeper_overrides ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.379783Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.379792Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Language override: rust
[INFO] [stdout] [2m2026-10-18T07:43:19.379796Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.379803Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Reading unified diff from file: /tmp/.tmpxcIIZT/input.diff
[INFO] [stdout] [2m2026-10-18T07:43:19.379840Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 129 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.379908Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.379952Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 1 findings, 0 false-positive filtered, verdict=Warn
[INFO] [stdout] [2m2026-10-18T07:43:19.381360Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.381378Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp9bgQq0/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.381394Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp9bgQq0/diffguard.toml' (depth 0)
[INFO] [stdout] test tests::merge_with_built_in_overrides_by_id ... ok
[INFO] [stdout] test tests::cmd_init_with_io_empty_path_errors ... ok
[INFO] [stdout] test tests::cmd_check_inner_reads_diff_file_and_applies_language_override ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.382162Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.382171Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.382176Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking staged changes
[INFO] [stdout] test tests::resolve_extras_paths_rewrites_defaults_in_cockpit_mode ... ok
[INFO] [stdout] test tests::load_false_positive_baseline_rejects_wrong_schema ... ok
[INFO] [stdout] test tests::resolve_extras_paths_keeps_custom_paths ... ok
[INFO] [stdout] test tests::parse_blame_porcelain_extracts_line_metadata ... ok
[INFO] [stdout] test tests::resolve_out_path_respects_mode_and_sensor ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.385109Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.385122Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp2kuxos/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.385138Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmp2kuxos/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.385742Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.385756Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 426 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.385846Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.385882Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.385890Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.385894Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp2kuxos/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.385906Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 1 findings, 0 false-positive filtered, verdict=Warn
[INFO] [stdout] [2m2026-10-18T07:43:19.386126Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.386133Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpmBu4hq/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.386147Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpmBu4hq/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.387519Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: info
[INFO] [stdout] [2m2026-10-18T07:43:19.387533Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpa6YgVP/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.387547Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpa6YgVP/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.387925Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.387986Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Language override: rust
[INFO] [stdout] [2m2026-10-18T07:43:19.387991Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.387998Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: 52cef6b40bc73702aefcf6b3aac473c2fea99606...82f0e3e0dae99d5632313b1bde12b35383be2aa0
[INFO] [stdout] [2m2026-10-18T07:43:19.388213Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.389412Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: debug
[INFO] [stdout] [2m2026-10-18T07:43:19.389420Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpa6YgVP/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.389433Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpa6YgVP/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.389919Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: test.rule
[INFO] [stdout] [2m2026-10-18T07:43:19.390063Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.390330Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.390547Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.390761Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.391295Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::cmd_check_inner_handles_staged_diff ... ok
[INFO] [stdout] test tests::run_with_args_dispatches_additional_commands ... ok
[INFO] [stdout] test tests::run_with_args_dispatches_rules_verbose_and_debug ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.392081Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.392280Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 426 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.392849Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.392909Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/Tests/**")` converted to regex: `"(?-u)^(?:/?|.*/)Tests/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.392935Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*.Tests/**")` converted to regex: `"(?-u)^(?:/?|.*/).*\\.Tests/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.392957Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] test tests::scope_arg_converts_to_scope ... ok
[INFO] [stdout] test tests::run_with_args_dispatches_trend_command ... ok
[INFO] [stdout] test tests::simple_edit_distance_handles_empty_rhs ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.393635Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Logging initialized at level: warn
[INFO] [stdout] [2m2026-10-18T07:43:19.393650Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Running rule test cases
[INFO] [stdout] [2m2026-10-18T07:43:19.393656Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpfAic7H/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.393671Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpfAic7H/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.393858Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Env var ${DIFFGUARD_TEST_EMPTY} not set, using default: 
[INFO] [stdout] [2m2026-10-18T07:43:19.394197Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] test tests::test_expand_env_vars_empty_default ... ok
[INFO] [stdout] test tests::run_with_args_dispatches_test_command ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.395787Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.395855Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Expanded env var ${DIFFGUARD_TEST_VAR}
[INFO] [stdout] test tests::test_expand_env_vars_missing_no_default ... ok
[INFO] [stdout] test tests::test_expand_env_vars_from_environment ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.396357Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Env var ${DIFFGUARD_TEST_A} not set, using default: foo
[INFO] [stdout] [2m2026-10-18T07:43:19.396383Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 1 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.398665Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.398679Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 1 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.398818Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.398829Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/test/**")` converted to regex: `"(?-u)^(?:/?|.*/)test/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.398836Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/tests/**")` converted to regex: `"(?-u)^(?:/?|.*/)tests/.*$"`
[INFO] [stdout] test tests::test_expand_env_vars_no_vars ... [2m2026-10-18T07:43:19.398840Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] ok
[INFO] [stdout] [2m2026-10-18T07:43:19.399015Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 4 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.399032Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/tests/**")` converted to regex: `"(?-u)^(?:/?|.*/)tests/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.399038Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*.test.*")` converted to regex: `"(?-u)^(?:/?|.*/).*\\.test\\..*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.399043Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*.spec.*")` converted to regex: `"(?-u)^(?:/?|.*/).*\\.spec\\..*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.399047Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 3 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.399286Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 4 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.399809Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Env var ${DIFFGUARD_TEST_X} not set, using default: default
[INFO] [stdout] [2m2026-10-18T07:43:19.400066Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 4 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.400078Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.400084Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] test tests::test_expand_env_vars_preserves_other_syntax ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.400522Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 2 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.400539Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/test/**")` converted to regex: `"(?-u)^(?:/?|.*/)test/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.400545Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/tests/**")` converted to regex: `"(?-u)^(?:/?|.*/)tests/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.400549Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.400898Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.400909Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.400914Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] test tests::test_find_similar_rules_exact_prefix ... ok
[INFO] [stdout] test tests::test_find_similar_rules_typo ... ok
[INFO] [stdout] test tests::test_format_rule_explanation_basic ... ok
[INFO] [stdout] test tests::test_format_rule_explanation_minimal ... ok
[INFO] [stdout] test tests::test_language_arg_as_str ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.401882Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Env var ${DIFFGUARD_TEST_UNLIKELY_VAR} not set, using default: 8080
[INFO] [stdout] test tests::test_expand_env_vars_with_default ... ok
[INFO] [stdout] test tests::test_simple_edit_distance ... ok
[INFO] [stdout] test tests::write_json_and_text_create_parent_dirs ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.403428Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Env var ${DIFFGUARD_TEST_B} not set, using default: bar
[INFO] [stdout] [2m2026-10-18T07:43:19.403628Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.404055Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.404067Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.404073Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.404864Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.405134Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.405152Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/tests/**")` converted to regex: `"(?-u)^(?:/?|.*/)tests/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.405159Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 1 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.405811Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 2 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.405830Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/test/**")` converted to regex: `"(?-u)^(?:/?|.*/)test/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.405836Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/spec/**")` converted to regex: `"(?-u)^(?:/?|.*/)spec/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.405840Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.406038Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 2 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.406048Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/test/**")` converted to regex: `"(?-u)^(?:/?|.*/)test/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.406052Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/spec/**")` converted to regex: `"(?-u)^(?:/?|.*/)spec/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.406057Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] test tests::test_expand_env_vars_multiple ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.408098Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 2 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.408699Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.409492Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/spec/**")` converted to regex: `"(?-u)^(?:/?|.*/)spec/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.409732Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.410920Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.410977Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/tests/**")` converted to regex: `"(?-u)^(?:/?|.*/)tests/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.411007Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/benches/**")` converted to regex: `"(?-u)^(?:/?|.*/)benches/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.411031Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/examples/**")` converted to regex: `"(?-u)^(?:/?|.*/)examples/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.411054Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 3 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.412120Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.412298Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.412358Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/tests/**")` converted to regex: `"(?-u)^(?:/?|.*/)tests/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.412364Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/benches/**")` converted to regex: `"(?-u)^(?:/?|.*/)benches/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.412369Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/examples/**")` converted to regex: `"(?-u)^(?:/?|.*/)examples/.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.412374Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 3 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.413203Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.413212Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/CHANGELOG*")` converted to regex: `"(?-u)^(?:/?|.*/)CHANGELOG.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.413216Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.413645Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.413816Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.414270Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.414597Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.414791Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 2 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.415494Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.415751Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.416816Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.417453Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*.example*")` converted to regex: `"(?-u)^(?:/?|.*/).*\\.example.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.417669Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.417865Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 3 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.418235Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.418833Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.419299Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.420028Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.420860Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.422342Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.422763Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.422870Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.423229Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.423276Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.424162Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.425414Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.425497Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/Dockerfile*")` converted to regex: `"(?-u)^(?:/?|.*/)Dockerfile.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.425507Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 3 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.426225Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/README*")` converted to regex: `"(?-u)^(?:/?|.*/)README.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.426287Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.426388Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/localhost*")` converted to regex: `"(?-u)^(?:/?|.*/)localhost.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.426416Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 3 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.428516Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.428569Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.429025Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 3 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.429457Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m glob `Glob("**/*test*")` converted to regex: `"(?-u)^(?:/?|.*/).*test.*$"`
[INFO] [stdout] [2m2026-10-18T07:43:19.429640Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.429993Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.432150Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 1 findings, 0 false-positive filtered, verdict=Warn
[INFO] [stdout] [2m2026-10-18T07:43:19.434087Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.434183Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpjxSPsc/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.434652Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpjxSPsc/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.435603Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.437354Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Warn, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.437405Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: 52cef6b40bc73702aefcf6b3aac473c2fea99606...82f0e3e0dae99d5632313b1bde12b35383be2aa0
[INFO] [stdout] test tests::cmd_check_inner_writes_outputs ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.443499Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 426 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.443623Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.443692Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 1 findings, 0 false-positive filtered, verdict=Warn
[INFO] [stdout] [2m2026-10-18T07:43:19.444005Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.444025Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpvQ6DpX/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.444044Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpvQ6DpX/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.444866Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.444875Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.444882Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: 52cef6b40bc73702aefcf6b3aac473c2fea99606...82f0e3e0dae99d5632313b1bde12b35383be2aa0
[INFO] [stdout] [2m2026-10-18T07:43:19.452180Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 426 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.452297Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.452393Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 1 findings, 0 false-positive filtered, verdict=Warn
[INFO] [stdout] [2m2026-10-18T07:43:19.452949Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.452957Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpvQ6DpX/diffguard.toml
[INFO] [stdout] test tests::cmd_init_with_io_no_parent_path ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.452970Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpvQ6DpX/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.453710Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.453718Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.453724Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: 52cef6b40bc73702aefcf6b3aac473c2fea99606...82f0e3e0dae99d5632313b1bde12b35383be2aa0
[INFO] [stdout] [2m2026-10-18T07:43:19.460802Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 426 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.460903Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.460964Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 1 findings, 0 false-positive filtered, verdict=Warn
[INFO] [stdout] [2m2026-10-18T07:43:19.461422Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.461440Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpdHyZY8/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.461967Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: ok.rule
[INFO] [stdout] [2m2026-10-18T07:43:19.462002Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 1 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.462109Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 0 extensions, 1 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.462464Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.462473Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmp5Ywqg2/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.462955Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: ok.rule
[INFO] [stdout] test tests::cmd_validate_forced_compile_error ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.463276Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.464351Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Validating configuration file
[INFO] [stdout] [2m2026-10-18T07:43:19.464371Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loading config from: diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.464909Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Validating rule: warn.rule
[INFO] [stdout] test tests::cmd_validate_accepts_valid_globs_and_strict_no_warnings ... ok
[INFO] [stdout] test tests::cmd_validate_missing_config_errors ... ok
[INFO] [stdout] test tests::cmd_check_standard_and_cockpit_success ... ok
[INFO] [stdout] test tests::cmd_validate_uses_default_config_path_and_strict_warnings ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.470754Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.470792Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m No config file found, using built-in rules
[INFO] [stdout] [2m2026-10-18T07:43:19.470856Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.470864Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking staged changes
[INFO] [stdout] test tests::git_staged_diff_errors_outside_repo ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.477226Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] test tests::cmd_check_inner_staged_error_maps_to_skip ... [2m2026-10-18T07:43:19.477351Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpjxSPsc/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.477389Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpjxSPsc/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.478162Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.478170Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Warn, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.478225Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loaded 1 false-positive fingerprints from /tmp/.tmpjxSPsc/artifacts/diffguard/false-positives.json
[INFO] [stdout] [2m2026-10-18T07:43:19.478231Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: 52cef6b40bc73702aefcf6b3aac473c2fea99606...82f0e3e0dae99d5632313b1bde12b35383be2aa0
[INFO] [stdout] ok
[INFO] [stdout] test tests::write_json_and_text_with_no_parent_errors ... ok
[INFO] [stdout] test tests::resolve_mode_ignores_invalid_env ... ok
[INFO] [stdout] test tests::resolve_mode_prefers_env_over_args ... ok
[INFO] [stdout] test tests::write_json_and_text_without_parent ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.484589Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 426 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.484689Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.484754Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 0 findings, 1 false-positive filtered, verdict=Pass
[INFO] [stdout] [2m2026-10-18T07:43:19.485001Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Starting diffguard check
[INFO] [stdout] [2m2026-10-18T07:43:19.485011Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Loading config from: /tmp/.tmpe3JYAS/diffguard.toml
[INFO] [stdout] [2m2026-10-18T07:43:19.485028Z[0m [34mDEBUG[0m [2mdiffguard::config_loader[0m[2m:[0m Loading config from '/tmp/.tmpe3JYAS/diffguard.toml' (depth 0)
[INFO] [stdout] [2m2026-10-18T07:43:19.486893Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Loaded 1 rule(s) from config
[INFO] [stdout] [2m2026-10-18T07:43:19.486976Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Check parameters: scope=Added, fail_on=Error, max_findings=200, diff_context=0
[INFO] [stdout] [2m2026-10-18T07:43:19.486985Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking multi-base diff against 2 base refs: 52cef6b40bc73702aefcf6b3aac473c2fea99606, 52cef6b40bc73702aefcf6b3aac473c2fea99606
[INFO] [stdout] [2m2026-10-18T07:43:19.486990Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: 52cef6b40bc73702aefcf6b3aac473c2fea99606...82f0e3e0dae99d5632313b1bde12b35383be2aa0
[INFO] [stdout] [2m2026-10-18T07:43:19.490559Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Checking diff: 52cef6b40bc73702aefcf6b3aac473c2fea99606...82f0e3e0dae99d5632313b1bde12b35383be2aa0
[INFO] [stdout] test tests::cmd_check_inner_applies_false_positive_baseline ... ok
[INFO] [stdout] [2m2026-10-18T07:43:19.495078Z[0m [34mDEBUG[0m [2mdiffguard[0m[2m:[0m Diff text length: 853 bytes
[INFO] [stdout] [2m2026-10-18T07:43:19.495210Z[0m [34mDEBUG[0m [2mglobset[0m[2m:[0m built glob set; 0 literals, 0 basenames, 1 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 0 regexes
[INFO] [stdout] [2m2026-10-18T07:43:19.495273Z[0m [32m INFO[0m [2mdiffguard[0m[2m:[0m Check complete: 1 findings, 0 false-positive filtered, verdict=Warn
[INFO] [stdout] test tests::cmd_check_inner_multi_base_dedupes_findings ... ok
[INFO] [stderr]      Running tests/cli_check.rs (/opt/rustwide/target/release/build/diffguard/f04736f8b1d5d06e/out/cli_check-f04736f8b1d5d06e)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 113 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test fails_on_unwrap_by_default ... ok
[INFO] [stdout] test warnings_do_not_fail_by_default_but_can ... ok
[INFO] [stderr]      Running tests/cli_init.rs (/opt/rustwide/target/release/build/diffguard/ba8909cb6ddd4bf1/out/cli_init-ba8909cb6ddd4bf1)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 11 tests
[INFO] [stdout] test init_creates_config_with_rust_quality_preset ... ok
[INFO] [stdout] test init_creates_config_with_secrets_preset ... ok
[INFO] [stdout] test init_refuses_to_overwrite_without_force ... ok
[INFO] [stdout] test init_prints_helpful_message ... ok
[INFO] [stdout] test init_creates_config_with_python_debug_preset ... ok
[INFO] [stdout] test init_with_custom_output_path ... ok
[INFO] [stdout] test init_creates_config_with_js_console_preset ... ok
[INFO] [stdout] test init_short_flags_work ... ok
[INFO] [stdout] test init_overwrites_with_force_flag ... ok
[INFO] [stdout] test init_creates_default_config ... ok
[INFO] [stdout] test init_generated_config_is_valid_toml ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_misc.rs (/opt/rustwide/target/release/build/diffguard/cc39d0394cab0e01/out/cli_misc-cc39d0394cab0e01)
[INFO] [stdout] 
[INFO] [stdout] running 9 tests
[INFO] [stdout] test explain_outputs_rule_details ... ok
[INFO] [stdout] test validate_strict_reports_warnings_but_succeeds ... ok
[INFO] [stdout] test test_command_reports_results_in_json ... ok
[INFO] [stdout] test test_command_exits_nonzero_on_failure ... ok
[INFO] [stdout] test validate_json_reports_errors ... ok
[INFO] [stdout] test rules_outputs_toml_and_json ... ok
[INFO] [stdout] test explain_unknown_rule_suggests_similar ... ok
[INFO] [stdout] test validate_without_config_errors ... ok
[INFO] [stdout] test sarif_junit_csv_render_from_receipt ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration.rs (/opt/rustwide/target/release/build/diffguard/0f0da9fcdbd270ae/out/integration-0f0da9fcdbd270ae)
[INFO] [stdout] 
[INFO] [stdout] running 56 tests
[INFO] [stdout] test diff_only_scoping::given_line_changed_to_unwrap_when_scope_changed_then_finding_reported ... ok
[INFO] [stdout] test config_file_loading::given_custom_config_overrides_builtin_when_check_then_override_applied ... ok
[INFO] [stdout] test base_only_unchanged::given_unwrap_in_context_when_nearby_change_then_not_flagged ... ok
[INFO] [stdout] test config_file_loading::given_default_config_file_when_check_then_auto_loaded ... ok
[INFO] [stdout] test config_file_loading::given_no_default_rules_flag_when_check_then_only_custom_rules ... ok
[INFO] [stdout] test diff_only_scoping::given_line_changed_to_unwrap_when_scope_modified_then_finding_reported ... ok
[INFO] [stdout] test config_file_loading::given_custom_config_path_when_check_then_loaded ... ok
[INFO] [stdout] test config_file_loading::given_invalid_config_when_check_then_tool_error ... ok
[INFO] [stdout] test config_file_loading::given_config_with_exclude_paths_when_check_then_excludes_applied ... ok
[INFO] [stdout] test base_only_unchanged::given_no_changes_when_check_then_pass ... ok
[INFO] [stdout] test base_only_unchanged::given_unwrap_in_base_when_other_file_changed_then_pass ... ok
[INFO] [stdout] test config_file_loading::given_config_with_path_filter_when_check_then_filter_applied ... ok
[INFO] [stdout] test base_only_unchanged::given_unwrap_only_in_base_when_check_then_pass ... ok
[INFO] [stdout] test diff_only_scoping::given_multiple_unwraps_added_when_check_then_all_findings_reported ... ok
[INFO] [stdout] test missing_base_shallow_clone::given_invalid_head_sha_when_check_then_tool_error ... ok
[INFO] [stdout] test diff_only_scoping::given_new_file_with_unwrap_when_check_then_finding_reported ... ok
[INFO] [stdout] test base_only_unchanged::given_deletion_only_when_check_then_pass ... ok
[INFO] [stdout] test directory_overrides::given_directory_rule_disable_when_check_then_subtree_is_skipped ... ok
[INFO] [stdout] test config_file_loading::given_custom_config_when_check_then_custom_rules_applied ... ok
[INFO] [stdout] test directory_overrides::given_directory_severity_override_when_check_then_effective_severity_changes ... ok
[INFO] [stdout] test diff_only_scoping::given_clean_code_added_when_check_then_pass ... ok
[INFO] [stdout] test directory_overrides::given_parent_disable_and_child_enable_when_check_then_child_override_wins ... ok
[INFO] [stdout] test max_findings_cap::given_truncation_when_check_then_reason_mentions_omitted ... ok
[INFO] [stdout] test diff_only_scoping::given_unwrap_added_when_check_then_finding_reported ... ok
[INFO] [stdout] test max_findings_cap::given_max_findings_2_when_5_violations_then_2_findings_but_5_in_counts ... ok
[INFO] [stdout] test max_findings_cap::given_cli_max_findings_1_when_multiple_violations_then_1_finding ... ok
[INFO] [stdout] test missing_base_shallow_clone::given_truncated_sha_when_check_then_error_or_resolves ... ok
[INFO] [stdout] test max_findings_cap::given_mixed_severities_when_max_findings_2_then_counts_accurate ... ok
[INFO] [stdout] test diff_only_scoping::given_unwrap_removed_when_scope_deleted_then_finding_reported ... ok
[INFO] [stdout] test max_findings_cap::given_violations_in_multiple_files_when_max_findings_3_then_3_total ... ok
[INFO] [stdout] test missing_base_shallow_clone::given_invalid_ref_name_when_check_then_tool_error ... ok
[INFO] [stdout] test missing_base_shallow_clone::given_missing_base_sha_when_check_then_tool_error ... ok
[INFO] [stdout] test multiple_file_types::given_multi_language_diff_when_check_then_language_rules_apply ... ok
[INFO] [stdout] test multiple_file_types::given_go_file_when_check_then_go_rules_apply ... ok
[INFO] [stdout] test multiple_file_types::given_python_pdb_when_check_then_error ... ok
[INFO] [stdout] test suppression_directive::given_directive_in_string_when_check_then_not_suppressed ... ok
[INFO] [stdout] test suppression_directive::given_real_unwrap_with_comment_when_check_then_still_flagged ... ok
[INFO] [stdout] test multiple_file_types::given_unknown_extension_when_check_then_catchall_rules_apply ... ok
[INFO] [stdout] test suppression_directive::given_suppression_comment_when_check_then_finding_suppressed ... ok
[INFO] [stdout] test suppression_directive::given_unwrap_in_doc_comment_when_check_then_not_flagged ... ok
[INFO] [stdout] test max_findings_cap::given_many_violations_when_default_limit_then_all_included ... ok
[INFO] [stdout] test multiple_file_types::given_rust_file_with_js_pattern_when_check_then_js_rule_not_applied ... ok
[INFO] [stdout] test multiple_file_types::given_jsx_tsx_files_when_check_then_js_rules_apply ... ok
[INFO] [stdout] test multiple_file_types::given_mixed_severities_across_languages_when_check_then_correct_counts ... ok
[INFO] [stdout] test suppression_directive::given_ignore_next_line_in_string_when_check_then_not_suppressed ... ok
[INFO] [stdout] test suppression_directive::given_unwrap_in_block_comment_when_check_then_not_flagged ... ok
[INFO] [stdout] test multiple_file_types::given_js_debugger_when_check_then_error ... ok
[INFO] [stdout] test multiple_file_types::given_test_file_when_check_then_excluded_by_default ... ok
[INFO] [stdout] test multiple_file_types::given_typescript_file_when_check_then_js_rules_apply ... ok
[INFO] [stdout] test suppression_directive::given_unwrap_in_comment_when_check_then_not_flagged ... ok
[INFO] [stdout] test test_repo::tests::test_repo_creates_valid_git_repo ... ok
[INFO] [stdout] test suppression_directive::given_unwrap_in_raw_string_when_check_then_not_flagged ... ok
[INFO] [stdout] test missing_base_shallow_clone::given_valid_short_sha_when_check_then_works ... ok
[INFO] [stdout] test suppression_directive::given_unwrap_in_trailing_comment_when_check_then_not_flagged ... ok
[INFO] [stdout] test suppression_directive::given_unwrap_in_string_when_check_then_not_flagged ... ok
[INFO] [stdout] test test_repo::tests::test_repo_can_write_and_commit ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 56 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.13s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270", kill_on_drop: false }`
[INFO] [stdout] e3b03cc0499c4c4d2d2eea119651e32fd5dfd8f8285c67766953d44682b52270
