[INFO] cloning repository https://github.com/nickderobertis/allowlister
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nickderobertis/allowlister" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnickderobertis%2Fallowlister", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnickderobertis%2Fallowlister'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d7d031e3a53ed5f4e146b0bdf319a89499355105
[INFO] testing nickderobertis/allowlister against 1.97.0-beta.6+cargoflags=--release for beta-1.98-release-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnickderobertis%2Fallowlister" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-4-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/nickderobertis/allowlister
[INFO] removed 0 missing tests
[INFO] finished tweaking git repo https://github.com/nickderobertis/allowlister
[INFO] tweaked toml for git repo https://github.com/nickderobertis/allowlister written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nickderobertis/allowlister on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nickderobertis/allowlister 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/nickderobertis/oneharness`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.122
[INFO] [stderr]   Downloaded bitflags v2.12.1
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.122
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.122
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.122
[INFO] [stderr]   Downloaded is-terminal v0.4.17
[INFO] [stderr]   Downloaded utf8-chars v3.0.7
[INFO] [stderr]   Downloaded env_home v0.1.0
[INFO] [stderr]   Downloaded strum v0.27.2
[INFO] [stderr]   Downloaded cast v0.3.0
[INFO] [stderr]   Downloaded indenter v0.3.4
[INFO] [stderr]   Downloaded cached_proc_macro_types v0.1.1
[INFO] [stderr]   Downloaded cached_proc_macro v0.27.0
[INFO] [stderr]   Downloaded toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]   Downloaded tinytemplate v1.2.1
[INFO] [stderr]   Downloaded anes v0.1.6
[INFO] [stderr]   Downloaded which v7.0.3
[INFO] [stderr]   Downloaded criterion-plot v0.5.0
[INFO] [stderr]   Downloaded oorandom v11.1.5
[INFO] [stderr]   Downloaded clap_derive v4.6.1
[INFO] [stderr]   Downloaded pest_derive v2.8.6
[INFO] [stderr]   Downloaded pest_generator v2.8.6
[INFO] [stderr]   Downloaded assert_cmd v2.2.2
[INFO] [stderr]   Downloaded uuid v1.23.2
[INFO] [stderr]   Downloaded toml v1.1.2+spec-1.1.0
[INFO] [stderr]   Downloaded console v0.16.3
[INFO] [stderr]   Downloaded ucd-trie v0.1.7
[INFO] [stderr]   Downloaded log v0.4.31
[INFO] [stderr]   Downloaded clap v4.6.1
[INFO] [stderr]   Downloaded bon v3.9.1
[INFO] [stderr]   Downloaded pest_meta v2.8.6
[INFO] [stderr]   Downloaded cached v0.59.0
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.50
[INFO] [stderr]   Downloaded bon-macros v3.9.1
[INFO] [stderr]   Downloaded memchr v2.8.1
[INFO] [stderr]   Downloaded js-sys v0.3.99
[INFO] [stderr]   Downloaded criterion v0.5.1
[INFO] [stderr]   Downloaded brush-parser v0.4.0
[INFO] [stderr]   Downloaded insta v1.47.2
[INFO] [stderr]   Downloaded fancy-regex v0.18.0
[INFO] [stderr]   Downloaded pest v2.8.6
[INFO] [stderr]   Downloaded winnow v1.0.3
[INFO] [stderr]   Downloaded clap_builder v4.6.0
[INFO] [stderr]   Downloaded zerocopy v0.8.50
[INFO] [stderr]   Downloaded winsafe v0.0.19
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470
[INFO] running `Command { std: "docker" "start" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470", 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" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470", 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" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling memchr v2.8.1
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling bitflags v2.12.1
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling peg-runtime v0.8.6
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling peg-macros v0.8.6
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling web-time v1.1.0
[INFO] [stderr]    Compiling cached_proc_macro_types v0.1.1
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling utf8-chars v3.0.7
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling indenter v0.3.4
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling peg v0.8.6
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling bon-macros v3.9.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling cached_proc_macro v0.27.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling fancy-regex v0.18.0
[INFO] [stderr]    Compiling cached v0.59.0
[INFO] [stderr]    Compiling insta v1.47.2
[INFO] [stderr]    Compiling oneharness-core v0.2.38 (https://github.com/nickderobertis/oneharness?tag=v0.2.528#1e539dc0)
[INFO] [stderr]    Compiling bon v3.9.1
[INFO] [stderr]    Compiling brush-parser v0.4.0
[INFO] [stderr]    Compiling allowlister v0.5.9 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 48s
[INFO] running `Command { std: "docker" "inspect" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470", 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" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling memchr v2.8.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling zerocopy-derive v0.8.50
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling bitflags v2.12.1
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling web-time v1.1.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling peg-runtime v0.8.6
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling cached_proc_macro_types v0.1.1
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling utf8-chars v3.0.7
[INFO] [stderr]    Compiling peg v0.8.6
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling bon v3.9.1
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling assert_cmd v2.2.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling console v0.16.3
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling indenter v0.3.4
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling insta v1.47.2
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling oneharness-core v0.2.38 (https://github.com/nickderobertis/oneharness?tag=v0.2.528#1e539dc0)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling cached v0.59.0
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling brush-parser v0.4.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling fancy-regex v0.18.0
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]    Compiling allowlister v0.5.9 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 3m 20s
[INFO] running `Command { std: "docker" "inspect" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470", 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" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.38s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/allowlister-cc0cc76b5d074671)
[INFO] [stdout] 
[INFO] [stdout] running 408 tests
[INFO] [stdout] test commands::check::tests::build_tool_call_collects_params_into_canonical_and_raw ... ok
[INFO] [stdout] test commands::check::tests::build_tool_call_rejects_bad_param_and_raw ... ok
[INFO] [stdout] test commands::check::tests::build_tool_call_uses_explicit_raw_json ... ok
[INFO] [stdout] test commands::check::tests::classify_maps_capability_word ... ok
[INFO] [stdout] test commands::check::tests::classify_parses_raw_mcp_name ... ok
[INFO] [stdout] test commands::check::tests::classify_unknown_tool_is_other ... ok
[INFO] [stdout] test commands::config::tests::add_builds_a_shell_rule_with_argv_kind_roles_and_description ... ok
[INFO] [stdout] test commands::config::tests::add_rejects_a_malformed_param_flag ... ok
[INFO] [stdout] test commands::config::tests::parse_kv_accumulates_repeated_keys ... ok
[INFO] [stdout] test commands::config::tests::add_builds_a_tool_rule_with_jsonpath ... ok
[INFO] [stdout] test commands::config::tests::add_builds_a_tool_rule_with_params ... ok
[INFO] [stdout] test commands::config::tests::display_name_falls_back_through_match_argv_tool ... ok
[INFO] [stdout] test commands::config::tests::matcher_desc_covers_argv_jsonpath_and_no_matcher ... ok
[INFO] [stdout] test commands::history::tests::age_labels_cover_the_unit_ladder ... ok
[INFO] [stdout] test commands::config::tests::add_merges_into_an_existing_file_and_dedupes_by_name ... ok
[INFO] [stdout] test commands::config::tests::add_rejects_an_invalid_rule_before_writing ... ok
[INFO] [stdout] test commands::config::tests::show_json_flattens_rules_with_source ... ok
[INFO] [stdout] test commands::history::tests::empty_store_prints_enable_hint ... ok
[INFO] [stdout] test commands::config::tests::add_creates_a_file_with_one_rule ... ok
[INFO] [stdout] test commands::config::tests::remove_of_an_absent_name_is_a_noop ... ok
[INFO] [stdout] test commands::history::tests::table_carries_recent_and_last_columns ... ok
[INFO] [stdout] test commands::history::tests::fragment_report_lists_subcommands_with_counts_and_rule ... ok
[INFO] [stdout] test commands::config::tests::show_lists_rules_with_their_source ... ok
[INFO] [stdout] test commands::history::tests::verdict_filter_narrows_to_deferred ... ok
[INFO] [stdout] test commands::init::tests::args_helper_builds_non_interactive_inputs ... ok
[INFO] [stdout] test commands::history::tests::compact_then_show_reads_from_summary ... ok
[INFO] [stdout] test commands::history::tests::program_and_command_views_render ... ok
[INFO] [stdout] test commands::history::tests::json_report_is_machine_readable ... ok
[INFO] [stdout] test commands::history::tests::clear_confirms_aborts_and_deletes ... ok
[INFO] [stdout] test commands::history::tests::recent_lists_newest_first_and_filters ... ok
[INFO] [stdout] test commands::init::tests::execute_codex_no_hooks_prints_snippet_without_allow_guidance ... ok
[INFO] [stdout] test commands::history::tests::by_project_expands_per_project_breakdown ... ok
[INFO] [stdout] test commands::history::tests::by_project_json_includes_per_project_map ... ok
[INFO] [stdout] test commands::history::tests::fragment_report_shows_project_count_by_default ... ok
[INFO] [stdout] test commands::init::tests::execute_codex_global_writes_under_home_codex ... ok
[INFO] [stdout] test commands::init::tests::execute_copilot_local_registers_github_hooks_file ... ok
[INFO] [stdout] test commands::init::tests::execute_copilot_global_writes_under_home_copilot ... ok
[INFO] [stdout] test commands::init::tests::apply_history_persists_the_flag_into_the_config ... ok
[INFO] [stdout] test commands::init::tests::execute_cursor_no_hooks_prints_snippet_without_allow_guidance ... ok
[INFO] [stdout] test commands::init::tests::execute_force_overwrites_existing ... ok
[INFO] [stdout] test commands::init::tests::execute_goose_no_hooks_prints_snippet_without_allow_guidance ... ok
[INFO] [stdout] test commands::init::tests::apply_history_preserves_the_configs_comments ... ok
[INFO] [stdout] test commands::init::tests::execute_goose_global_writes_under_home_agents ... ok
[INFO] [stdout] test commands::init::tests::execute_keeps_existing_config_but_still_wires_a_new_harness_hook ... ok
[INFO] [stdout] test commands::init::tests::execute_global_writes_under_xdg_and_home_claude ... ok
[INFO] [stdout] test commands::init::tests::execute_crush_no_hooks_prints_snippet_without_allow_guidance ... ok
[INFO] [stdout] test commands::init::tests::execute_keeps_existing_config_without_force ... ok
[INFO] [stdout] test commands::init::tests::execute_codex_local_registers_hooks_json ... ok
[INFO] [stdout] test commands::init::tests::execute_local_with_hooks_writes_config_and_settings ... ok
[INFO] [stdout] test commands::history::tests::json_separates_fresh_from_heavy_but_stale_keys ... ok
[INFO] [stdout] test commands::init::tests::execute_qwen_no_hooks_prints_snippet_without_allow_guidance ... ok
[INFO] [stdout] test commands::init::tests::execute_qwen_local_registers_settings_json ... ok
[INFO] [stdout] test commands::history::tests::recent_json_and_empty_message ... ok
[INFO] [stdout] test commands::init::tests::execute_crush_local_registers_crush_json ... ok
[INFO] [stdout] test commands::init::tests::execute_copilot_no_hooks_prints_snippet_without_allow_guidance ... ok
[INFO] [stdout] test commands::init::tests::execute_cursor_local_registers_hooks_json ... ok
[INFO] [stdout] test commands::init::tests::execute_writes_local_config_without_hooks ... ok
[INFO] [stdout] test commands::init::tests::execute_opencode_no_hooks_prints_plugin_without_allow_guidance ... ok
[INFO] [stdout] test commands::init::tests::execute_opencode_local_writes_plugin ... ok
[INFO] [stdout] test commands::init::tests::flags_win_over_prompts ... ok
[INFO] [stdout] test commands::init::tests::execute_qwen_global_writes_under_home_qwen ... ok
[INFO] [stdout] test commands::init::tests::interactive_defaults_take_global_starter_hooks ... ok
[INFO] [stdout] test commands::init::tests::interactive_choices_are_honored ... ok
[INFO] [stdout] test commands::init::tests::execute_opencode_global_writes_under_config_opencode ... ok
[INFO] [stdout] test commands::init::tests::non_interactive_with_no_flags_uses_defaults ... ok
[INFO] [stdout] test commands::init::tests::resolve_history_flag_wins_over_prompt ... ok
[INFO] [stdout] test commands::init::tests::resolve_history_interactive_reads_yes_or_default_no ... ok
[INFO] [stdout] Add this to ~/.claude/settings.json (merge with any existing keys):
[INFO] [stdout] 
[INFO] [stdout] {
[INFO] [stdout]   "hooks": {
[INFO] [stdout]     "PreToolUse": [
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Bash",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Read|Edit|Write|Glob|Grep|WebFetch|WebSearch|NotebookEdit|mcp__.*",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "permissions": {
[INFO] [stdout]     "allow": [],
[INFO] [stdout]     "ask": [],
[INFO] [stdout]     "deny": [
[INFO] [stdout]       "Bash(rm -rf /)",
[INFO] [stdout]       "Bash(rm -rf ~)",
[INFO] [stdout]       "Bash(rm -rf /*)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] IMPORTANT: do NOT add "Bash" or "Bash(*)" to permissions.allow.
[INFO] [stdout] A broad allow makes Claude Code skip its prompt on its own, which
[INFO] [stdout] short-circuits the hook's per-fragment allow analysis — the whole
[INFO] [stdout] point of allowlister. Let the hook be the source of allow truth.
[INFO] [stdout] Add this to ~/.claude/settings.json (merge with any existing keys):
[INFO] [stdout] 
[INFO] [stdout] {
[INFO] [stdout]   "hooks": {
[INFO] [stdout]     "PreToolUse": [
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Bash",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Read|Edit|Write|Glob|Grep|WebFetch|WebSearch|NotebookEdit|mcp__.*",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "permissions": {
[INFO] [stdout]     "allow": [],
[INFO] [stdout]     "ask": [],
[INFO] [stdout]     "deny": [
[INFO] [stdout]       "Bash(rm -rf /)",
[INFO] [stdout]       "Bash(rm -rf ~)",
[INFO] [stdout]       "Bash(rm -rf /*)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] IMPORTANT: do NOT add "Bash" or "Bash(*)" to permissions.allow.
[INFO] [stdout] A broad allow makes Claude Code skip its prompt on its own, which
[INFO] [stdout] short-circuits the hook's per-fragment allow analysis — the whole
[INFO] [stdout] point of allowlister. Let the hook be the source of allow truth.
[INFO] [stdout] Add this to ~/.claude/settings.json (merge with any existing keys):
[INFO] [stdout] 
[INFO] [stdout] {
[INFO] [stdout]   "hooks": {
[INFO] [stdout]     "PreToolUse": [
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Bash",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Read|Edit|Write|Glob|Grep|WebFetch|WebSearch|NotebookEdit|mcp__.*",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "permissions": {
[INFO] [stdout]     "allow": [],
[INFO] [stdout]     "ask": [],
[INFO] [stdout]     "deny": [
[INFO] [stdout]       "Bash(rm -rf /)",
[INFO] [stdout]       "Bash(rm -rf ~)",
[INFO] [stdout]       "Bash(rm -rf /*)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] IMPORTANT: do NOT add "Bash" or "Bash(*)" to permissions.allow.
[INFO] [stdout] A broad allow makes Claude Code skip its prompt on its own, which
[INFO] [stdout] short-circuits the hook's per-fragment allow analysis — the whole
[INFO] [stdout] point of allowlister. Let the hook be the source of allow truth.
[INFO] [stdout] Add this to ~/.claude/settings.json (merge with any existing keys):
[INFO] [stdout] 
[INFO] [stdout] {
[INFO] [stdout]   "hooks": {
[INFO] [stdout]     "PreToolUse": [
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Bash",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Read|Edit|Write|Glob|Grep|WebFetch|WebSearch|NotebookEdit|mcp__.*",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "permissions": {
[INFO] [stdout]     "allow": [],
[INFO] [stdout]     "ask": [],
[INFO] [stdout]     "deny": [
[INFO] [stdout]       "Bash(rm -rf /)",
[INFO] [stdout]       "Bash(rm -rf ~)",
[INFO] [stdout]       "Bash(rm -rf /*)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] IMPORTANT: do NOT add "Bash" or "Bash(*)" to permissions.allow.
[INFO] [stdout] A broad allow makes Claude Code skip its prompt on its own, which
[INFO] [stdout] short-circuits the hook's per-fragment allow analysis — the whole
[INFO] [stdout] point of allowlister. Let the hook be the source of allow truth.
[INFO] [stdout] test commands::install::tests::empty_source_errors ... ok
[INFO] [stdout] test commands::init::tests::resolve_history_non_interactive_defaults_to_unset ... ok
[INFO] [stdout] test commands::init::tests::execute_goose_local_registers_plugin ... ok
[INFO] [stdout] test commands::install::tests::installs_from_a_file_path ... ok
[INFO] [stdout] test commands::install::tests::merging_into_a_non_object_target_errors ... ok
[INFO] [stdout] test commands::install::tests::merging_preserves_the_targets_comments_and_formatting ... ok
[INFO] [stdout] test commands::install::tests::a_new_target_receives_the_profile_text_with_its_comments ... ok
[INFO] [stdout] Add this to ~/.claude/settings.json (merge with any existing keys):
[INFO] [stdout] 
[INFO] [stdout] {
[INFO] [stdout]   "hooks": {
[INFO] [stdout]     "PreToolUse": [
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Bash",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Read|Edit|Write|Glob|Grep|WebFetch|WebSearch|NotebookEdit|mcp__.*",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "permissions": {
[INFO] [stdout]     "allow": [],
[INFO] [stdout]     "ask": [],
[INFO] [stdout]     "deny": [
[INFO] [stdout]       "Bash(rm -rf /)",
[INFO] [stdout]       "Bash(rm -rf ~)",
[INFO] [stdout]       "Bash(rm -rf /*)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] IMPORTANT: do NOT add "Bash" or "Bash(*)" to permissions.allow.
[INFO] [stdout] A broad allow makes Claude Code skip its prompt on its own, which
[INFO] [stdout] short-circuits the hook's per-fragment allow analysis — the whole
[INFO] [stdout] point of allowlister. Let the hook be the source of allow truth.
[INFO] [stdout] Add this to ~/.claude/settings.json (merge with any existing keys):
[INFO] [stdout] 
[INFO] [stdout] {
[INFO] [stdout]   "hooks": {
[INFO] [stdout]     "PreToolUse": [
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Bash",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "matcher": "Read|Edit|Write|Glob|Grep|WebFetch|WebSearch|NotebookEdit|mcp__.*",
[INFO] [stdout]         "hooks": [{
[INFO] [stdout]           "type": "command",
[INFO] [stdout]           "command": "allowlister hook claude-code",
[INFO] [stdout]           "timeout": 10
[INFO] [stdout]         }]
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "permissions": {
[INFO] [stdout]     "allow": [],
[INFO] [stdout]     "ask": [],
[INFO] [stdout]     "deny": [
[INFO] [stdout]       "Bash(rm -rf /)",
[INFO] [stdout]       "Bash(rm -rf ~)",
[INFO] [stdout]       "Bash(rm -rf /*)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] }
[INFO] [stdout] 
[INFO] [stdout] IMPORTANT: do NOT add "Bash" or "Bash(*)" to permissions.allow.
[INFO] [stdout] A broad allow makes Claude Code skip its prompt on its own, which
[INFO] [stdout] short-circuits the hook's per-fragment allow analysis — the whole
[INFO] [stdout] point of allowlister. Let the hook be the source of allow truth.
[INFO] [stdout] test commands::install::tests::installs_builtin_into_a_new_file ... ok
[INFO] [stdout] test commands::install::tests::source_without_a_rules_key_is_empty ... ok
[INFO] [stdout] test commands::install::tests::merging_into_a_target_with_non_array_rules_errors ... ok
[INFO] [stdout] test commands::install::tests::reading_a_directory_target_errors ... ok
[INFO] [stdout] test commands::install::tests::rules_without_a_name_are_always_appended ... ok
[INFO] [stdout] test commands::init::tests::execute_crush_global_writes_under_config_crush ... ok
[INFO] [stdout] test commands::install::tests::merge_preserves_existing_rules_and_top_level_keys ... ok
[INFO] [stdout] test commands::install::tests::source_with_a_bad_rule_errors_before_writing ... ok
[INFO] [stdout] test commands::install::tests::refuses_to_merge_into_a_malformed_target ... ok
[INFO] [stdout] test commands::install::tests::unknown_source_errors_and_writes_nothing ... ok
[INFO] [stdout] test commands::profile::tests::a_non_object_source_is_rejected ... ok
[INFO] [stdout] test commands::profile::tests::a_source_with_non_array_rules_is_rejected ... ok
[INFO] [stdout] test commands::profile::tests::a_source_without_rules_is_rejected ... ok
[INFO] [stdout] test commands::install::tests::re_installing_does_not_duplicate_rules ... ok
[INFO] [stdout] test commands::profile::tests::starter_is_a_valid_warning_free_config ... ok
[INFO] [stdout] test commands::profile::tests::unknown_builtin_name_errors ... ok
[INFO] [stdout] test commands::profile::tests::resolve_source_surfaces_a_read_failure ... ok
[INFO] [stdout] test commands::init::tests::re_running_with_hooks_reports_an_already_registered_noop ... ok
[INFO] [stdout] test commands::profile::tests::untrusted_file_with_a_bad_rule_fails_validation ... ok
[INFO] [stdout] test config::tests::loads_and_compiles_rules ... ok
[INFO] [stdout] test config::tests::ask_action_compiles ... ok
[INFO] [stdout] test config::tests::malformed_rule_is_skipped_not_fatal ... ok
[INFO] [stdout] test commands::install::tests::write_into_a_path_under_a_file_errors ... ok
[INFO] [stdout] test commands::profile::tests::builtin_profiles_resolve_and_validate ... ok
[INFO] [stdout] test config::tests::bash_rules_still_compile_unchanged_alongside_tool_rules ... ok
[INFO] [stdout] test config::tests::comments_in_a_config_file_load_cleanly ... ok
[INFO] [stdout] test config::tests::does_not_strip_comment_markers_inside_strings ... ok
[INFO] [stdout] test config::tests::invalid_json_is_skipped_with_warning ... ok
[INFO] [stdout] test commands::profile::tests::writing_to_a_directory_path_is_a_write_error ... ok
[INFO] [stdout] test config::tests::missing_file_is_recorded_not_fatal ... ok
[INFO] [stdout] test config::tests::history_toggle_defaults_off_and_parses_and_overrides ... ok
[INFO] [stdout] test config::tests::mcp_raw_name_and_jsonpath_compile ... ok
[INFO] [stdout] test commands::install::tests::repo_write_layers_onto_read_only_without_duplicates ... ok
[INFO] [stdout] test config::tests::params_without_tool_is_rejected ... ok
[INFO] [stdout] test config::tests::redirection_only_grant_compiles ... ok
[INFO] [stdout] test config::tests::param_glob_accepts_string_or_array ... ok
[INFO] [stdout] test config::tests::strips_line_and_block_comments_preserving_offsets ... ok
[INFO] [stdout] test config::tests::redirection_only_grant_requires_allow_action ... ok
[INFO] [stdout] test config::tests::schema_key_is_accepted_and_ignored ... ok
[INFO] [stdout] test domain::analyzer::tests::assignment_prefix_is_ignored_in_argv ... ok
[INFO] [stdout] test domain::analyzer::tests::backquoted_substitution_is_evaluated ... ok
[INFO] [stdout] test config::tests::redirection_only_grant_requires_redirections_block ... ok
[INFO] [stdout] test config::tests::tool_and_bash_keys_are_mutually_exclusive ... ok
[INFO] [stdout] test domain::analyzer::tests::bare_xargs_stripped_flagged_xargs_kept ... ok
[INFO] [stdout] test domain::analyzer::tests::brace_group_is_subshell ... ok
[INFO] [stdout] test domain::analyzer::tests::case_branches_are_subshell ... ok
[INFO] [stdout] test config::tests::tool_rule_compiles_into_tool_rules ... ok
[INFO] [stdout] test config::tests::unknown_action_is_rejected ... ok
[INFO] [stdout] test config::tests::unknown_canonical_param_is_rejected ... ok
[INFO] [stdout] test config::tests::unknown_role_is_rejected ... ok
[INFO] [stdout] test config::tests::unknown_grant_is_rejected ... ok
[INFO] [stdout] test domain::analyzer::tests::and_or_keeps_standalone ... ok
[INFO] [stdout] test domain::analyzer::tests::append_and_clobber_are_write_redirects ... ok
[INFO] [stdout] test domain::analyzer::tests::arithmetic_command_runs_nothing ... ok
[INFO] [stdout] test domain::analyzer::tests::arithmetic_for_loop_body_is_walked ... ok
[INFO] [stdout] test domain::analyzer::tests::coprocess_does_not_panic ... ok
[INFO] [stdout] test domain::analyzer::tests::duplicate_input_fd_is_neutral ... ok
[INFO] [stdout] test domain::analyzer::tests::extended_test_runs_no_command ... ok
[INFO] [stdout] test domain::analyzer::tests::fd_duplication_is_neutral ... ok
[INFO] [stdout] test domain::analyzer::tests::group_redirect_is_reported_as_warning ... ok
[INFO] [stdout] test domain::analyzer::tests::function_definition_is_unsupported ... ok
[INFO] [stdout] test domain::analyzer::tests::here_string_and_here_doc_are_read_data ... ok
[INFO] [stdout] test domain::analyzer::tests::for_loop_body_is_subshell ... ok
[INFO] [stdout] test domain::analyzer::tests::if_elif_else_branches_are_walked ... ok
[INFO] [stdout] test domain::analyzer::tests::long_option_wrappers_are_stripped ... ok
[INFO] [stdout] test domain::analyzer::tests::output_and_error_redirect_is_write ... ok
[INFO] [stdout] test domain::analyzer::tests::parse_error_yields_warning_not_panic ... ok
[INFO] [stdout] test domain::analyzer::tests::pipeline_roles ... ok
[INFO] [stdout] test domain::analyzer::tests::process_substitution_as_redirect_target_is_walked ... ok
[INFO] [stdout] test domain::analyzer::tests::process_wrappers_are_stripped ... ok
[INFO] [stdout] test domain::analyzer::tests::process_substitution_inner_evaluated ... ok
[INFO] [stdout] test domain::analyzer::tests::pure_backquoted_command_name_is_suppressed ... ok
[INFO] [stdout] test domain::analyzer::tests::pure_substitution_command_name_is_suppressed ... ok
[INFO] [stdout] test domain::analyzer::tests::read_write_redirect_is_captured ... ok
[INFO] [stdout] test domain::analyzer::tests::subshell_branches_get_subshell_role ... ok
[INFO] [stdout] test domain::analyzer::tests::read_redirect_has_read_class ... ok
[INFO] [stdout] test domain::analyzer::tests::substitution_inner_is_evaluated ... ok
[INFO] [stdout] test domain::analyzer::tests::until_loop_is_walked ... ok
[INFO] [stdout] test domain::analyzer::tests::redirection_is_captured ... ok
[INFO] [stdout] test domain::analyzer::tests::wrapper_option_double_dash_terminates ... ok
[INFO] [stdout] test domain::analyzer::tests::while_loop_condition_and_body_are_walked ... ok
[INFO] [stdout] test domain::analyzer::tests::substitution_parse_error_warns ... ok
[INFO] [stdout] test domain::analyzer::tests::time_wrapper_with_posix_flag_is_handled ... ok
[INFO] [stdout] test domain::decision::tests::allowed_command_with_permitted_redirect_allows ... ok
[INFO] [stdout] test domain::decision::tests::all_allow_is_allow ... ok
[INFO] [stdout] test domain::analyzer::tests::double_quoted_substitution_is_collected ... ok
[INFO] [stdout] test domain::decision::tests::ask_sees_read_redirection_targets_like_deny ... ok
[INFO] [stdout] test domain::decision::tests::ask_outranks_a_broad_allow_it_is_carved_out_of ... ok
[INFO] [stdout] test domain::decision::tests::ask_rule_surfaces_for_approval ... ok
[INFO] [stdout] test commands::init::tests::execute_cursor_global_writes_under_home_cursor ... ok
[INFO] [stdout] test domain::decision::tests::deny_is_supreme_over_ask ... ok
[INFO] [stdout] test domain::decision::tests::ask_reason_lists_every_asking_fragment_not_just_the_first ... ok
[INFO] [stdout] test domain::decision::tests::deny_still_beats_a_redirection_only_grant ... ok
[INFO] [stdout] test domain::decision::tests::defer_reason_lists_every_undecided_fragment_not_just_the_first ... ok
[INFO] [stdout] test domain::decision::tests::defer_reason_collapses_identical_repeated_commands ... ok
[INFO] [stdout] test domain::decision::tests::deny_beats_allow ... ok
[INFO] [stdout] test domain::decision::tests::empty_command_allows ... ok
[INFO] [stdout] test domain::decision::tests::redirect_denied_without_a_grant ... ok
[INFO] [stdout] test domain::decision::tests::order_does_not_change_verdict ... ok
[INFO] [stdout] test domain::decision::tests::ask_reason_collapses_identical_repeated_commands ... ok
[INFO] [stdout] test domain::decision::tests::redirection_only_rule_does_not_authorize_a_command ... ok
[INFO] [stdout] test domain::decision::tests::unmatched_defers ... ok
[INFO] [stdout] test domain::decision::tests::single_defer_reason_names_the_undecided_fragment ... ok
[INFO] [stdout] test domain::decision::tests::allowed_command_with_forbidden_redirect_denies ... ok
[INFO] [stdout] test domain::decision::tool_tests::capability_only_deny_fires_regardless_of_params ... ok
[INFO] [stdout] test domain::decision::tests::redirection_only_rule_widens_targets_for_authorized_command ... ok
[INFO] [stdout] test domain::decision::tests::secret_read_via_input_redirection_is_denied ... ok
[INFO] [stdout] test domain::decision::tool_tests::ask_outranks_allow_but_yields_to_deny_for_tool_calls ... ok
[INFO] [stdout] test domain::decision::tests::unparseable_command_defers ... ok
[INFO] [stdout] test domain::decision::tests::unsupported_construct_defers ... ok
[INFO] [stdout] test domain::decision::tool_tests::deny_is_supreme_and_order_independent ... ok
[INFO] [stdout] test domain::decision::tests::one_asked_fragment_holds_the_whole_command ... ok
[INFO] [stdout] test domain::decision::tool_tests::mcp_raw_name_selector_with_extglob ... ok
[INFO] [stdout] test domain::decision::tool_tests::mcp_canonical_server_tool_is_portable ... ok
[INFO] [stdout] test domain::decision::tool_tests::jsonpath_scalar_and_array_with_allow_all_deny_any ... ok
[INFO] [stdout] test domain::decision::tool_tests::and_across_params ... ok
[INFO] [stdout] test domain::glob::tests::char_class ... ok
[INFO] [stdout] test domain::glob::tests::char_class_globs_compile_eagerly_others_lazily ... ok
[INFO] [stdout] test domain::decision::tool_tests::traversal_cannot_widen_an_allow_but_deny_sees_through ... ok
[INFO] [stdout] test domain::glob::tests::extglob_exactly_one ... ok
[INFO] [stdout] test domain::decision::tool_tests::missing_param_does_not_match ... ok
[INFO] [stdout] test domain::decision::tool_tests::jsonpath_scalar_owner_deny ... ok
[INFO] [stdout] test domain::decision::tool_tests::read_allow_deny_defer_by_path ... ok
[INFO] [stdout] test domain::decision::tests::redirection_only_grant_does_not_widen_beyond_its_globs ... ok
[INFO] [stdout] test domain::decision::tests::single_ask_reason_keeps_the_concise_one_command_form ... ok
[INFO] [stdout] test domain::glob::tests::extglob_zero_or_one_and_one_or_more ... ok
[INFO] [stdout] test domain::decision::tool_tests::web_fetch_host_scoping ... ok
[INFO] [stdout] test domain::glob::tests::full_match_is_anchored ... ok
[INFO] [stdout] test domain::glob::tests::gate_rejection_skips_regex_construction ... ok
[INFO] [stdout] test domain::glob::tests::lazy_compile_failure_is_no_match_not_a_panic ... ok
[INFO] [stdout] test domain::glob::tests::extglob_negation ... ok
[INFO] [stdout] test domain::glob::tests::matcher_literal_is_exact ... ok
[INFO] [stdout] test domain::glob::tests::literal_metacharacters_are_escaped ... ok
[INFO] [stdout] test domain::glob::tests::metacharacter_free_globs_compile_to_literals ... ok
[INFO] [stdout] test domain::glob::tests::literal_fast_path_matches_exactly_like_the_regex_path ... ok
[INFO] [stdout] test domain::glob::tests::regex_kind_is_full_match ... ok
[INFO] [stdout] test domain::glob::tests::unbalanced_extglob_is_literal ... ok
[INFO] [stdout] test domain::rule::tests::from_globs_read_policy_restricts_reads ... ok
[INFO] [stdout] test domain::rule::tests::has_parent_traversal_detects_dotdot_components_only ... ok
[INFO] [stdout] test domain::rule::tests::invalid_redirection_glob_still_fails_at_build_time ... ok
[INFO] [stdout] test domain::rule::tests::json_path_resolves_scalars_arrays_and_misses ... ok
[INFO] [stdout] test domain::rule::tests::deny_policy_blocks_every_redirection ... ok
[INFO] [stdout] test domain::rule::tests::match_kind_parse_rejects_unknown ... ok
[INFO] [stdout] test domain::glob::tests::star_and_question ... ok
[INFO] [stdout] test domain::glob::tests::extglob_nested_alternatives ... ok
[INFO] [stdout] test domain::rule::tests::argv_without_tail_requires_exact_length ... ok
[INFO] [stdout] test domain::rule::tests::argv_tail_double_star ... ok
[INFO] [stdout] test domain::rule::tests::joined_glob_matches ... ok
[INFO] [stdout] test domain::rule::tests::read_redirection_target_is_matched_for_deny ... ok
[INFO] [stdout] test domain::rule::tests::tool_rule_rejects_empty_jsonpath_key ... ok
[INFO] [stdout] test domain::rule::tests::regex_and_literal_kinds ... ok
[INFO] [stdout] test domain::toolcall::tests::normalized_params_insert_and_get ... ok
[INFO] [stdout] test domain::toolcall::tests::other_and_unknown_capabilities_are_not_user_selectable ... ok
[INFO] [stdout] test domain::toolcall::tests::param_key_round_trips_and_only_path_is_path_like ... ok
[INFO] [stdout] test domain::glob::tests::oversized_prefix_fork_falls_back_to_base ... ok
[INFO] [stdout] test domain::rule::tests::write_policy_with_glob ... ok
[INFO] [stdout] test domain::rule::tests::role_restriction ... ok
[INFO] [stdout] test domain::rule::tests::write_policy_defaults_to_deny ... ok
[INFO] [stdout] test io::claude_settings::tests::adds_all_denies_to_a_fresh_file ... ok
[INFO] [stdout] test io::claude_settings::tests::re_running_adds_nothing_and_leaves_the_file_untouched ... ok
[INFO] [stdout] test io::claude_settings::tests::refuses_to_clobber_malformed_settings ... ok
[INFO] [stdout] test io::claude_settings::tests::rejects_unmergeable_shapes ... ok
[INFO] [stdout] test domain::toolcall::tests::capability_round_trips_through_str ... ok
[INFO] [stdout] test io::claude_settings::tests::writing_under_a_file_parent_errors ... ok
[INFO] [stdout] test domain::glob::tests::lazy_glob_matches_exactly_like_the_eager_regex ... ok
[INFO] [stdout] test io::claude_settings::tests::reading_a_directory_path_errors ... ok
[INFO] [stdout] test io::configfs::tests::a_jsonc_only_user_config_is_discovered ... ok
[INFO] [stdout] test domain::analyzer::tests::deep_substitution_nesting_hits_recursion_limit ... ok
[INFO] [stdout] test io::harness::claude_code::tests::invalid_json_exits_one_and_emits_nothing ... ok
[INFO] [stdout] test io::claude_settings::tests::adds_only_the_missing_denies_and_keeps_allow_and_other_keys ... ok
[INFO] [stdout] test io::configfs::tests::project_walk_stops_at_git ... ok
[INFO] [stdout] test io::configfs::tests::jsonc_wins_over_json_in_the_same_location ... ok
[INFO] [stdout] test io::harness::claude_code::tests::read_tool_of_ssh_key_is_denied ... ok
[INFO] [stdout] test commands::config::tests::remove_from_a_missing_file_is_a_noop ... ok
[INFO] [stdout] test io::harness::claude_code::tests::read_tool_outside_any_rule_defers ... ok
[INFO] [stdout] test io::configfs::tests::user_path_prefers_xdg ... ok
[INFO] [stdout] test io::harness::claude_code::tests::unknown_command_defers ... ok
[INFO] [stdout] test io::harness::claude_code::tests::non_bash_tool_defers ... ok
[INFO] [stdout] test io::harness::claude_code::tests::read_tool_inside_repo_is_allowed ... ok
[INFO] [stdout] test io::harness::claude_code::tests::ask_rule_maps_to_the_ask_decision ... ok
[INFO] [stdout] test io::harness::codex::tests::allowed_command_emits_nothing ... ok
[INFO] [stdout] test io::configfs::tests::project_walk_prefers_jsonc_and_ignores_the_json_twin ... ok
[INFO] [stdout] test io::harness::codex::tests::ask_verdict_emits_nothing ... ok
[INFO] [stdout] test io::configfs::tests::write_targets_keep_an_existing_json_but_default_to_jsonc ... ok
[INFO] [stdout] test commands::config::tests::remove_deletes_a_rule_by_name ... ok
[INFO] [stdout] test io::harness::codex::tests::missing_command_field_defaults_empty_and_does_not_panic ... ok
[INFO] [stdout] test io::harness::claude_code::tests::read_tool_relative_path_inside_repo_is_allowed ... ok
[INFO] [stdout] test io::harness::copilot::tests::invalid_json_defers_via_exit_zero_and_empty_stdout ... ok
[INFO] [stdout] test io::harness::codex::tests::invalid_json_defers_via_exit_zero_and_empty_stdout ... ok
[INFO] [stdout] test io::harness::codex::tests::non_bash_tool_emits_nothing ... ok
[INFO] [stdout] test io::harness::copilot::tests::allowed_command_maps_to_allow ... ok
[INFO] [stdout] test io::harness::copilot::tests::destructive_mcp_tool_is_denied ... ok
[INFO] [stdout] test io::harness::copilot::tests::denied_command_maps_to_deny ... ok
[INFO] [stdout] test io::harness::codex::tests::unknown_command_defers_with_empty_stdout ... ok
[INFO] [stdout] test io::harness::copilot::tests::unknown_command_defers_with_empty_stdout ... ok
[INFO] [stdout] test io::harness::copilot::tests::empty_cwd_falls_back_to_dot_without_panic ... ok
[INFO] [stdout] test io::harness::copilot::tests::tool_args_as_stringified_json_is_parsed ... ok
[INFO] [stdout] test io::harness::crush::tests::denied_command_maps_to_deny ... ok
[INFO] [stdout] test io::harness::crush::tests::allowed_command_emits_nothing ... ok
[INFO] [stdout] test io::harness::crush::tests::invalid_json_defers_via_exit_zero_and_empty_stdout ... ok
[INFO] [stdout] test io::harness::crush::tests::empty_cwd_falls_back_to_dot_without_panic ... ok
[INFO] [stdout] test io::harness::crush::tests::missing_command_field_defaults_empty_and_does_not_panic ... ok
[INFO] [stdout] test io::harness::codex::tests::empty_cwd_falls_back_to_dot_without_panic ... ok
[INFO] [stdout] test io::harness::copilot::tests::non_bash_tool_defers_with_empty_stdout ... ok
[INFO] [stdout] test io::harness::cursor::tests::missing_command_field_defaults_empty_and_does_not_panic ... ok
[INFO] [stdout] test io::harness::cursor::tests::unknown_command_maps_defer_to_ask ... ok
[INFO] [stdout] test io::harness::cursor::tests::before_read_file_event_denies_secret ... ok
[INFO] [stdout] test io::harness::codex::tests::denied_command_maps_to_deny ... ok
[INFO] [stdout] test io::harness::goose::tests::allowed_command_emits_nothing ... ok
[INFO] [stdout] test io::harness::goose::tests::bare_shell_tool_name_is_gated ... ok
[INFO] [stdout] test io::harness::crush::tests::unknown_command_defers_with_empty_stdout ... ok
[INFO] [stdout] test io::harness::copilot::tests::missing_command_field_defaults_empty_and_does_not_panic ... ok
[INFO] [stdout] test io::harness::cursor::tests::invalid_json_exits_one_and_emits_nothing ... ok
[INFO] [stdout] test io::harness::goose::tests::denied_command_maps_to_block ... ok
[INFO] [stdout] test io::harness::normalize::tests::claude_maps_read_write_and_mcp ... ok
[INFO] [stdout] test io::harness::goose::tests::invalid_json_defers_via_exit_zero_and_empty_stdout ... ok
[INFO] [stdout] test io::harness::cursor::tests::denied_command_maps_to_deny ... ok
[INFO] [stdout] test io::harness::goose::tests::missing_command_field_defaults_empty_and_does_not_panic ... ok
[INFO] [stdout] test io::harness::normalize::tests::codex_apply_patch_is_edit_without_path ... ok
[INFO] [stdout] test domain::glob::tests::literal_prefixes_fork_on_required_groups_only ... ok
[INFO] [stdout] test io::harness::normalize::tests::cursor_read_event_and_mcp ... ok
[INFO] [stdout] test io::harness::cursor::tests::before_mcp_execution_event_denies_destructive ... ok
[INFO] [stdout] test io::harness::normalize::tests::crush_view_is_read_and_single_underscore_mcp ... ok
[INFO] [stdout] test io::harness::normalize::tests::copilot_parses_stringified_args_and_dash_mcp ... ok
[INFO] [stdout] test io::harness::crush::tests::non_bash_tool_emits_nothing ... ok
[INFO] [stdout] test io::harness::normalize::tests::goose_bare_developer_tools_map_to_capabilities ... ok
[INFO] [stdout] test io::harness::normalize::tests::goose_namespace_distinguishes_builtin_from_mcp ... ok
[INFO] [stdout] test io::harness::normalize::tests::goose_text_editor_capability_follows_command ... ok
[INFO] [stdout] test io::harness::normalize::tests::malformed_mcp_names_do_not_parse ... ok
[INFO] [stdout] test io::harness::normalize::tests::qwen_uses_gemini_names ... ok
[INFO] [stdout] test io::harness::normalize::tests::opencode_camel_case_and_underscore_mcp ... ok
[INFO] [stdout] test io::harness::cursor::tests::empty_cwd_falls_back_to_workspace_root ... ok
[INFO] [stdout] test io::harness::goose::tests::non_shell_tool_emits_nothing ... ok
[INFO] [stdout] test io::harness::opencode::tests::invalid_json_defers_via_exit_zero_and_empty_stdout ... ok
[INFO] [stdout] test io::harness::normalize::tests::claude_glob_grep_edit_and_unknown ... ok
[INFO] [stdout] test io::harness::goose::tests::empty_working_dir_falls_back_to_dot_without_panic ... ok
[INFO] [stdout] test io::harness::opencode::tests::denied_command_maps_to_deny ... ok
[INFO] [stdout] test io::harness::cursor::tests::before_read_file_event_outside_rule_maps_defer_to_allow ... ok
[INFO] [stdout] test io::harness::opencode::tests::read_tool_outside_any_rule_emits_nothing ... ok
[INFO] [stdout] test io::harness::opencode::tests::missing_command_field_defaults_empty_and_does_not_panic ... ok
[INFO] [stdout] test io::harness::cursor::tests::empty_cwd_and_no_roots_uses_dot_without_panic ... ok
[INFO] [stdout] test io::harness::qwen::tests::denied_command_maps_to_deny ... ok
[INFO] [stdout] test io::harness::opencode::tests::read_tool_of_ssh_key_is_denied ... ok
[INFO] [stdout] test io::harness::opencode::tests::non_bash_tool_emits_nothing ... ok
[INFO] [stdout] test io::harness::qwen::tests::allowed_command_emits_nothing ... ok
[INFO] [stdout] test io::harness::opencode::tests::unknown_command_defers_with_empty_stdout ... ok
[INFO] [stdout] test io::harness::goose::tests::unknown_command_defers_with_empty_stdout ... ok
[INFO] [stdout] test io::harness::qwen::tests::empty_cwd_falls_back_to_dot_without_panic ... ok
[INFO] [stdout] test io::harness::opencode::tests::allowed_command_emits_nothing ... ok
[INFO] [stdout] test io::harness::opencode::tests::empty_cwd_falls_back_to_dot_without_panic ... ok
[INFO] [stdout] test io::harness::qwen::tests::invalid_json_defers_via_exit_zero_and_empty_stdout ... ok
[INFO] [stdout] test io::harness::qwen::tests::missing_command_field_defaults_empty_and_does_not_panic ... ok
[INFO] [stdout] test io::harness::qwen::tests::non_shell_tool_emits_nothing ... ok
[INFO] [stdout] test io::history::tests::counts_json_skips_recency_when_empty_and_round_trips_when_set ... ok
[INFO] [stdout] test io::harness::qwen::tests::unknown_command_defers_with_empty_stdout ... ok
[INFO] [stdout] test io::history::tests::fragment_rows_carry_and_merge_projects ... ok
[INFO] [stdout] test io::history::tests::fragment_rows_group_by_program ... ok
[INFO] [stdout] test io::history::tests::fold_skips_when_lock_is_held_and_reclaims_when_stale ... ok
[INFO] [stdout] test io::history::tests::append_then_aggregate_round_trips ... ok
[INFO] [stdout] test io::history::tests::build_event_tool_is_one_subcommand ... ok
[INFO] [stdout] test io::history::tests::build_event_shell_carries_fragments ... ok
[INFO] [stdout] test io::history::tests::compact_accumulates_across_rounds ... ok
[INFO] [stdout] test io::history::tests::command_rows_respect_top_and_verdict ... ok
[INFO] [stdout] test io::history::tests::recency_halves_per_half_life_and_first_last_track ... ok
[INFO] [stdout] test io::history::tests::clear_removes_all_artifacts ... ok
[INFO] [stdout] test io::history::tests::compact_folds_events_into_summary_and_clears_the_log ... ok
[INFO] [stdout] test io::history::tests::fragment_rows_sort_by_total_then_filter_by_verdict ... ok
[INFO] [stdout] test io::history::tests::malformed_summary_falls_back_to_default ... ok
[INFO] [stdout] test io::history::tests::merge_re_anchors_recency_at_the_later_timestamp ... ok
[INFO] [stdout] test io::history::tests::legacy_folder_keyed_summary_survives_new_repo_keyed_events ... ok
[INFO] [stdout] test domain::rule::tests::parse_json_path_tolerates_garbage_without_panic ... ok
[INFO] [stdout] test io::history::tests::recency_is_independent_of_event_order ... ok
[INFO] [stdout] test io::history::tests::recent_at_decays_to_the_report_time_and_clamps_dust ... ok
[INFO] [stdout] test io::history::tests::rules_histogram_overflows_too ... ok
[INFO] [stdout] test io::history::tests::resolve_enabled_env_overrides_config ... ok
[INFO] [stdout] test io::history::tests::truncate_caps_length_and_keeps_utf8 ... ok
[INFO] [stdout] test io::history::tests::record_with_env_override_off_beats_enabled_config ... ok
[INFO] [stdout] test io::history::tests::record_is_a_noop_when_disabled ... ok
[INFO] [stdout] test io::history::tests::summary_records_overall_command_and_fragment_counts ... ok
[INFO] [stdout] test io::hooks::tests::global_install_anchors_under_home ... ok
[INFO] [stdout] test io::history::tests::record_writes_when_forced_on_via_env ... ok
[INFO] [stdout] test io::hooks::tests::gate_program_is_bare_name_on_unix ... ok
[INFO] [stdout] test io::hooks::tests::global_without_home_is_an_error ... ok
[INFO] [stdout] test domain::rule::tests::parent_traversal_write_target_is_rejected ... ok
[INFO] [stdout] test io::hooks::tests::claude_project_install_creates_hook_and_denies ... ok
[INFO] [stdout] test io::project::tests::first_remote_is_used_when_there_is_no_origin ... ok
[INFO] [stdout] test io::hooks::tests::goose_project_install_names_the_plugin_dir ... ok
[INFO] [stdout] test io::hooks::tests::harness_id_maps_each_harness ... ok
[INFO] [stdout] test io::hooks::tests::malformed_target_is_a_typed_error ... ok
[INFO] [stdout] test io::project::tests::config_value_matches_whole_keys_only ... ok
[INFO] [stdout] test io::hooks::tests::reinstall_is_a_noop ... ok
[INFO] [stdout] test io::hooks::tests::gate_program_is_absolute_exe_on_windows ... ok
[INFO] [stdout] test io::toolpath::tests::only_the_path_param_is_rewritten ... ok
[INFO] [stdout] test io::project::tests::git_file_worktree_falls_back_to_the_root_path ... ok
[INFO] [stdout] test io::history::tests::maps_overflow_into_a_single_bucket_when_full ... ok
[INFO] [stdout] test io::toolpath::tests::paths_outside_the_project_resolve_to_an_absolute_form ... ok
[INFO] [stdout] test jsonc::tests::appending_nothing_is_identity ... ok
[INFO] [stdout] test jsonc::tests::appends_to_a_commented_config_preserving_every_comment ... ok
[INFO] [stdout] test jsonc::tests::appends_to_a_single_line_array ... ok
[INFO] [stdout] test jsonc::tests::appends_to_an_empty_inline_array ... ok
[INFO] [stdout] test jsonc::tests::appends_to_an_empty_multiline_array ... ok
[INFO] [stdout] test io::project::tests::non_git_dir_falls_back_to_the_folder ... ok
[INFO] [stdout] test jsonc::tests::block_comments_between_elements_survive ... ok
[INFO] [stdout] test jsonc::tests::comment_markers_inside_strings_do_not_confuse_the_scanner ... ok
[INFO] [stdout] test io::project::tests::normalize_strips_scheme_credentials_and_dot_git ... ok
[INFO] [stdout] test io::project::tests::origin_is_preferred_over_other_remotes ... ok
[INFO] [stdout] test io::project::tests::repo_without_a_remote_falls_back_to_the_root_path ... ok
[INFO] [stdout] test jsonc::tests::creates_the_rules_key_when_absent ... ok
[INFO] [stdout] test jsonc::tests::nested_rules_keys_are_not_mistaken_for_the_top_level_one ... ok
[INFO] [stdout] test jsonc::tests::non_object_input_is_an_error ... ok
[INFO] [stdout] test jsonc::tests::non_array_rules_is_an_error ... ok
[INFO] [stdout] test jsonc::tests::removes_a_middle_rule_preserving_siblings_and_comments ... ok
[INFO] [stdout] test jsonc::tests::removes_from_a_single_line_array ... ok
[INFO] [stdout] test jsonc::tests::removes_the_first_rule ... ok
[INFO] [stdout] test jsonc::tests::removes_the_last_rule_keeping_the_predecessors_trailing_comment ... ok
[INFO] [stdout] test jsonc::tests::removing_an_absent_rule_is_a_noop ... ok
[INFO] [stdout] test jsonc::tests::removes_the_only_rule_leaving_an_empty_array ... ok
[INFO] [stdout] test jsonc::tests::removing_when_there_is_no_rules_key_is_a_noop ... ok
[INFO] [stdout] test jsonc::tests::set_top_level_first_handles_empty_and_single_line_objects ... ok
[INFO] [stdout] test jsonc::tests::set_top_level_first_is_a_noop_when_present ... ok
[INFO] [stdout] test jsonc::tests::set_top_level_first_prepends_before_the_existing_members ... ok
[INFO] [stdout] test jsonc::tests::set_top_level_handles_an_empty_object ... ok
[INFO] [stdout] test jsonc::tests::set_top_level_replaces_an_existing_member_in_place ... ok
[INFO] [stdout] test jsonc::tests::matches_the_file_indentation_unit ... ok
[INFO] [stdout] test io::history::tests::per_fragment_projects_overflow_into_a_single_bucket ... ok
[INFO] [stdout] test io::project::tests::url_outside_a_remote_section_is_ignored ... ok
[INFO] [stdout] test io::toolpath::tests::a_call_without_a_path_is_unchanged ... ok
[INFO] [stdout] test io::project::tests::https_and_ssh_clones_aggregate_to_one_tag ... ok
[INFO] [stdout] test io::toolpath::tests::absolute_and_relative_inside_normalize_identically ... ok
[INFO] [stdout] test io::toolpath::tests::glob_and_grep_without_a_path_scope_to_the_project_root ... ok
[INFO] [stdout] test io::project::tests::subdirectory_of_a_repo_resolves_to_the_repo_identity ... ok
[INFO] [stdout] test io::toolpath::tests::home_relative_and_unanchored_paths_are_left_verbatim ... ok
[INFO] [stdout] test io::project::tests::git_repo_is_tagged_by_its_remote ... ok
[INFO] [stdout] test jsonc::tests::set_top_level_inserts_after_the_last_member ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/allowlister-b81368860548493e)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 408 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stderr]      Running tests/e2e/main.rs (/opt/rustwide/target/release/deps/e2e-85e8c5947000ecef)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 200 tests
[INFO] [stdout] test check_discovers_project_config_from_nested_subdirectory ... ok
[INFO] [stdout] test check_allow_returns_exit_code_zero ... ok
[INFO] [stdout] test check_tool_mcp_portable_rule_allows_read_only_tool ... ok
[INFO] [stdout] test check_tool_mcp_portable_rule_denies_destructive ... ok
[INFO] [stdout] test a_jsonc_project_config_is_discovered_and_gates ... ok
[INFO] [stdout] test check_json_emits_machine_readable_object ... ok
[INFO] [stdout] test check_ask_returns_exit_code_zero ... ok
[INFO] [stdout] test check_with_both_command_and_tool_is_a_usage_error_with_empty_stdout ... ok
[INFO] [stdout] test check_deny_returns_exit_code_two ... ok
[INFO] [stdout] test check_tool_json_emits_machine_readable_object ... ok
[INFO] [stdout] test check_tool_bad_param_is_a_usage_error ... ok
[INFO] [stdout] test check_tool_read_allows_inside_repo ... ok
[INFO] [stdout] test check_with_only_a_broken_config_defers_everything ... ok
[INFO] [stdout] test check_tool_raw_invalid_json_is_a_usage_error ... ok
[INFO] [stdout] test check_defer_returns_exit_zero ... ok
[INFO] [stdout] test check_tool_read_outside_rules_defers ... ok
[INFO] [stdout] test check_tool_read_denies_ssh_key_with_exit_two ... ok
[INFO] [stdout] test claude_hook_broken_config_defers_not_denies ... ok
[INFO] [stdout] test claude_hook_write_tool_denies_env_file_via_stdin ... ok
[INFO] [stdout] test check_without_command_or_tool_is_a_usage_error_with_empty_stdout ... ok
[INFO] [stdout] test check_without_cwd_uses_current_directory ... ok
[INFO] [stdout] test check_broken_project_config_is_skipped_but_user_rules_still_gate ... ok
[INFO] [stdout] test claude_code_hook_ask_routes_through_stdin_stdout ... ok
[INFO] [stdout] test check_tool_raw_jsonpath_rule_denies_matching_server_param ... ok
[INFO] [stdout] test claude_hook_read_tool_denies_secret_via_stdin ... ok
[INFO] [stdout] test codex_hook_allow_emits_empty_stdout ... ok
[INFO] [stdout] test claude_hook_read_tool_allows_inside_repo_via_stdin ... ok
[INFO] [stdout] test check_tool_web_fetch_url_rules_allow_and_defer ... ok
[INFO] [stdout] test claude_hook_web_fetch_allows_github_url_via_stdin ... ok
[INFO] [stdout] test codex_hook_apply_patch_gated_by_capability_edit_rule ... ok
[INFO] [stdout] test codex_hook_invalid_json_exits_zero_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test codex_hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test check_tool_write_edit_glob_grep_web_search_capabilities ... ok
[INFO] [stdout] test codex_hook_defer_emits_empty_stdout ... ok
[INFO] [stdout] test config_add_rejects_an_invalid_rule ... ok
[INFO] [stdout] test claude_hook_edit_tool_allows_inside_repo_via_stdin ... ok
[INFO] [stdout] test claude_hook_mcp_tool_allows_read_only_via_stdin ... ok
[INFO] [stdout] test codex_hook_apply_patch_allow_emits_empty_stdout ... ok
[INFO] [stdout] test config_show_local_scope_only_shows_project_rules ... ok
[INFO] [stdout] test config_show_global_scope_only_shows_user_rules ... ok
[INFO] [stdout] test config_add_tool_rule_with_a_param ... ok
[INFO] [stdout] test config_remove_absent_name_is_a_noop ... ok
[INFO] [stdout] test codex_hook_ask_emits_empty_stdout ... ok
[INFO] [stdout] test config_show_combined_lists_rules_with_sources ... ok
[INFO] [stdout] test config_add_dedupes_by_name_and_preserves_comments ... ok
[INFO] [stdout] test config_show_empty_when_no_config_found ... ok
[INFO] [stdout] test copilot_hook_allow_routes_through_stdin_stdout ... ok
[INFO] [stdout] test config_add_then_remove_global_under_xdg ... ok
[INFO] [stdout] test config_show_json_is_machine_readable_with_per_rule_source ... ok
[INFO] [stdout] test config_show_surfaces_warnings_for_a_malformed_config ... ok
[INFO] [stdout] test config_remove_deletes_a_rule_and_stops_gating ... ok
[INFO] [stdout] test config_add_local_creates_a_rule_that_gates ... ok
[INFO] [stdout] test crush_hook_defer_emits_empty_stdout ... ok
[INFO] [stdout] test copilot_hook_defer_emits_empty_stdout ... ok
[INFO] [stdout] test copilot_hook_ask_routes_through_stdin_stdout ... ok
[INFO] [stdout] test config_remove_preserves_surrounding_comments_and_formatting ... ok
[INFO] [stdout] test copilot_hook_invalid_json_defers_via_exit_zero_and_empty_stdout ... ok
[INFO] [stdout] test copilot_hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test crush_hook_invalid_json_exits_zero_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test cursor_decision_json_includes_continue_true ... ok
[INFO] [stdout] test crush_hook_ask_emits_empty_stdout ... ok
[INFO] [stdout] test crush_hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test crush_hook_single_underscore_mcp_denies_destructive_via_stdin ... ok
[INFO] [stdout] test cursor_before_mcp_execution_denies_destructive_via_stdin ... ok
[INFO] [stdout] test cursor_before_mcp_execution_allows_read_only_via_stdin ... ok
[INFO] [stdout] test crush_hook_allow_emits_empty_stdout ... ok
[INFO] [stdout] test copilot_hook_read_tool_denies_secret_with_stringified_args ... ok
[INFO] [stdout] test copilot_hook_allows_absolute_in_repo_read ... ok
[INFO] [stdout] test crush_hook_view_tool_denies_secret_via_stdin ... ok
[INFO] [stdout] test cursor_hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test cursor_hook_ask_routes_through_stdin_stdout ... ok
[INFO] [stdout] test cursor_before_read_file_denies_secret_via_stdin ... ok
[INFO] [stdout] test cursor_before_read_file_without_matching_rule_allows_instead_of_invalid_ask ... ok
[INFO] [stdout] test cursor_hook_empty_cwd_uses_workspace_root ... ok
[INFO] [stdout] test cursor_hook_invalid_json_exits_one_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test cursor_hook_allow_routes_through_stdin_stdout ... ok
[INFO] [stdout] test explain_prints_fragment_table_and_verdict ... ok
[INFO] [stdout] test goose_hook_bare_shell_tool_is_gated ... ok
[INFO] [stdout] test explain_names_the_skipped_config_and_warns ... ok
[INFO] [stdout] test explain_reports_unsupported_construct ... ok
[INFO] [stdout] test goose_hook_broken_config_emits_nothing ... ok
[INFO] [stdout] test goose_hook_ask_emits_empty_stdout ... ok
[INFO] [stdout] test goose_hook_bare_write_tool_denies_env_file ... ok
[INFO] [stdout] test goose_hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test goose_hook_defer_emits_empty_stdout ... ok
[INFO] [stdout] test goose_hook_invalid_json_exits_zero_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test goose_hook_allow_emits_empty_stdout ... ok
[INFO] [stdout] test goose_hook_text_editor_view_denies_secret_read ... ok
[INFO] [stdout] test help_succeeds_and_lists_subcommands ... ok
[INFO] [stdout] test goose_hook_empty_stdin_exits_zero_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test cursor_hook_defer_maps_to_ask ... ok
[INFO] [stdout] test bundled_profiles_allow_read_only_glob_and_grep_tools ... ok
[INFO] [stdout] test history_records_tool_calls_and_a_second_harness ... ok
[INFO] [stdout] test hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test hook_empty_stdin_exits_one_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test hook_invalid_json_exits_one_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test init_codex_local_registers_hooks_json ... ok
[INFO] [stdout] test hook_pipeline_with_one_denied_fragment_denies_the_whole_command ... ok
[INFO] [stdout] test history_is_off_by_default_and_records_nothing ... ok
[INFO] [stdout] test hook_allow_routes_through_stdin_stdout ... ok
[INFO] [stdout] test hook_redirection_allow_uses_project_rule ... ok
[INFO] [stdout] test hook_defer_routes_through_stdin_stdout ... ok
[INFO] [stdout] test init_crush_local_registers_crush_json ... ok
[INFO] [stdout] test init_crush_no_hooks_prints_crush_snippet ... ok
[INFO] [stdout] test history_aggregates_clones_of_one_repo_by_remote ... ok
[INFO] [stdout] test init_copilot_local_registers_github_hooks_file ... ok
[INFO] [stdout] test history_reports_the_project_dimension ... ok
[INFO] [stdout] test init_codex_no_hooks_prints_codex_snippet ... ok
[INFO] [stdout] test init_copilot_no_hooks_prints_copilot_snippet ... ok
[INFO] [stdout] test init_cursor_local_registers_hooks_json ... ok
[INFO] [stdout] test init_cursor_no_hooks_prints_cursor_snippet ... ok
[INFO] [stdout] test history_tags_a_subdirectory_by_its_repo ... ok
[INFO] [stdout] test history_env_zero_overrides_a_config_that_enables_recording ... ok
[INFO] [stdout] test init_force_rerun_does_not_duplicate_the_hook_registration ... ok
[INFO] [stdout] test init_force_overwrite_stamps_the_schema_key ... ok
[INFO] [stdout] test init_goose_no_hooks_prints_goose_snippet ... ok
[INFO] [stdout] test init_force_overwrites_an_existing_config ... ok
[INFO] [stdout] test history_records_hook_evaluations_and_reports_them ... ok
[INFO] [stdout] test init_global_without_home_or_xdg_fails ... ok
[INFO] [stdout] test init_global_reports_a_write_failure ... ok
[INFO] [stdout] test init_global_falls_back_to_home_config ... ok
[INFO] [stdout] test init_history_keeps_a_commented_profiles_comments_in_place ... ok
[INFO] [stdout] test init_global_writes_under_xdg_and_registers_hook_under_home ... ok
[INFO] [stdout] test init_interactive_history_yes_persists_the_toggle ... ok
[INFO] [stdout] test init_kept_as_is_config_is_not_backfilled_with_a_schema_key ... ok
[INFO] [stdout] test init_local_default_config_is_stamped_with_the_schema_key ... ok
[INFO] [stdout] test init_goose_local_registers_plugin ... ok
[INFO] [stdout] test history_top_bounds_rows_and_recent_verdict_filters ... ok
[INFO] [stdout] test history_clear_without_yes_confirms_via_stdin ... ok
[INFO] [stdout] test history_keeps_distinct_repos_and_non_git_dirs_separate ... ok
[INFO] [stdout] test init_no_hooks_skips_settings_and_prints_snippet ... ok
[INFO] [stdout] test init_interactive_flow_reads_answers_from_stdin ... ok
[INFO] [stdout] test init_no_history_persists_the_disabled_toggle ... ok
[INFO] [stdout] test init_history_flag_persists_the_toggle_and_drives_recording ... ok
[INFO] [stdout] test init_keeps_existing_config_and_still_wires_the_hook ... ok
[INFO] [stdout] test init_merges_the_hook_into_existing_settings ... ok
[INFO] [stdout] test init_local_writes_config_and_registers_hook ... ok
[INFO] [stdout] test history_views_and_recent_project_filter ... ok
[INFO] [stdout] test init_opencode_no_hooks_prints_opencode_plugin ... ok
[INFO] [stdout] test init_profile_from_a_file_writes_the_source_and_gates ... ok
[INFO] [stdout] test init_opencode_local_writes_plugin ... ok
[INFO] [stdout] test init_qwen_no_hooks_prints_qwen_snippet ... ok
[INFO] [stdout] test install_from_a_file_source_stamps_the_schema_key ... ok
[INFO] [stdout] test init_qwen_local_registers_settings_json ... ok
[INFO] [stdout] test install_backfills_the_schema_key_on_an_uncommented_existing_config ... ok
[INFO] [stdout] test install_from_a_file_source_via_the_binary ... ok
[INFO] [stdout] test init_profile_installs_a_curated_ruleset ... ok
[INFO] [stdout] test init_second_harness_after_a_first_keeps_config_and_wires_both_hooks ... ok
[INFO] [stdout] test install_is_idempotent_across_runs ... ok
[INFO] [stdout] test install_new_config_leads_with_the_schema_key ... ok
[INFO] [stdout] test install_does_not_duplicate_the_schema_key_on_reinstall ... ok
[INFO] [stdout] test install_local_writes_a_project_config ... ok
[INFO] [stdout] test history_filter_recent_path_compact_and_clear ... ok
[INFO] [stdout] test install_unknown_source_fails ... ok
[INFO] [stdout] test install_preserves_existing_custom_rules_and_history_toggle ... ok
[INFO] [stdout] test init_repo_write_profile_installs_and_gates ... ok
[INFO] [stdout] test opencode_hook_invalid_json_exits_zero_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test install_global_writes_a_user_config_that_gates ... ok
[INFO] [stdout] test opencode_hook_allow_emits_empty_stdout ... ok
[INFO] [stdout] test install_leaves_an_existing_custom_schema_untouched ... ok
[INFO] [stdout] test opencode_hook_defer_emits_empty_stdout ... ok
[INFO] [stdout] test install_local_new_config_is_stamped_and_still_gates ... ok
[INFO] [stdout] test opencode_read_tool_denies_secret_via_stdin ... ok
[INFO] [stdout] test install_into_an_existing_json_config_updates_it_in_place_keeping_comments ... ok
[INFO] [stdout] test opencode_hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test opencode_hook_ask_emits_empty_stdout ... ok
[INFO] [stdout] test nested_project_config_adds_rules_below_the_root ... ok
[INFO] [stdout] test plugin_can_dynamically_allow_a_deferred_command ... ok
[INFO] [stdout] test qwen_hook_ask_emits_empty_stdout ... ok
[INFO] [stdout] test plugin_deny_blocks_a_hook_command ... ok
[INFO] [stdout] test plugin_invalid_json_is_non_fatal_and_preserves_static_allow ... ok
[INFO] [stdout] test project_deny_wins_over_user_allow ... ok
[INFO] [stdout] test qwen_hook_invalid_json_exits_zero_and_writes_nothing_to_stdout ... ok
[INFO] [stdout] test plugin_ask_overrides_a_static_allow ... ok
[INFO] [stdout] test plugin_request_falls_back_to_cwd_outside_a_git_repo ... ok
[INFO] [stdout] test init_global_registers_each_harness_under_home_or_xdg ... ok
[INFO] [stdout] test plugin_receives_protocol_v2_structured_fragments ... ok
[INFO] [stdout] test plugin_timeout_is_non_fatal_and_preserves_static_allow ... ok
[INFO] [stdout] test plugin_request_falls_back_to_repo_root_without_a_remote ... ok
[INFO] [stdout] test qwen_hook_allow_emits_empty_stdout ... ok
[INFO] [stdout] test plugin_request_resolves_a_git_remote_to_repository_identity ... ok
[INFO] [stdout] test static_tool_deny_remains_final_even_when_plugin_would_allow ... ok
[INFO] [stdout] test static_deny_remains_final_even_when_plugin_would_allow ... ok
[INFO] [stdout] test qwen_hook_defer_emits_empty_stdout ... ok
[INFO] [stdout] test qwen_hook_deny_routes_through_stdin_stdout ... ok
[INFO] [stdout] test qwen_hook_read_tool_denies_secret_via_stdin ... ok
[INFO] [stdout] test tool_plugin_allows_a_deferred_read_through_the_hook ... ok
[INFO] [stdout] test tool_plugin_deny_blocks_a_read_through_the_hook ... ok
[INFO] [stdout] test tool_plugin_ask_surfaces_a_read_through_the_hook ... ok
[INFO] [stdout] test tool_plugin_receives_protocol_v2_tool_object ... ok
[INFO] [stdout] test version_prints_package_version ... ok
[INFO] [stdout] test tool_plugin_invalid_json_is_non_fatal_and_preserves_static_allow ... ok
[INFO] [stdout] test shell_plugin_sees_substitution_role_fragments ... ok
[INFO] [stdout] test path_scoping_runs_in_the_shared_gate_for_every_harness ... ok
[INFO] [stdout] test tool_plugin_request_carries_resolved_project_identity ... ok
[INFO] [stdout] test tool_plugin_timeout_is_non_fatal_and_preserves_static_allow ... ok
[INFO] [stdout] test read_only_hook_allows_reads_defers_writes_denies_secrets ... ok
[INFO] [stdout] test repo_write_profile_scopes_file_tools_to_the_config_directory ... ok
[INFO] [stdout] test repo_write_hook_scopes_file_tools_across_every_path_shape ... ok
[INFO] [stdout] test plugin_receives_session_id_across_every_harness ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 200 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/golden.rs (/opt/rustwide/target/release/deps/golden-8a4e327edc901529)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test case_23_bare_xargs_is_stripped ... ok
[INFO] [stdout] test case_24_flagged_xargs_is_kept ... ok
[INFO] [stdout] test case_20_reason_names_unsupported ... ok
[INFO] [stdout] test substitution_emits_two_inner_fragments ... ok
[INFO] [stdout] test golden_table ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/recommended.rs (/opt/rustwide/target/release/deps/recommended-cad09ea193d81dc0)
[INFO] [stdout] 
[INFO] [stdout] running 28 tests
[INFO] [stdout] test read_only_compiles_and_has_rules ... ok
[INFO] [stdout] test read_only_defers_writes_and_code_execution ... ok
[INFO] [stdout] test read_only_token_guards_avoid_false_positives ... ok
[INFO] [stdout] test read_only_blocks_output_redirection_but_allows_tmp_scratch ... ok
[INFO] [stdout] test read_only_handles_allowlister_own_commands ... ok
[INFO] [stdout] test read_only_defers_introspection_pagers_and_native_write_modes ... ok
[INFO] [stdout] test repo_write_compiles_and_is_a_superset ... ok
[INFO] [stdout] test read_only_still_allows_safe_filters_and_version_probes ... ok
[INFO] [stdout] test read_only_read_tool_allows_inside_denies_secrets_defers_outside ... ok
[INFO] [stdout] test both_profiles_ask_before_editing_own_config_via_tool ... ok
[INFO] [stdout] test read_only_allows_discard_redirection_to_null_and_std_devices ... ok
[INFO] [stdout] test repo_write_defers_impactful_but_undecided ... ok
[INFO] [stdout] test read_only_asks_for_dangerous_but_sometimes_legitimate_ops ... ok
[INFO] [stdout] test read_only_allows_pure_reads ... ok
[INFO] [stdout] test repo_write_defers_general_code_execution ... ok
[INFO] [stdout] test repo_write_defers_package_manager_config_and_remote_exec ... ok
[INFO] [stdout] test both_profiles_ask_before_editing_own_config_via_shell ... ok
[INFO] [stdout] test repo_write_handles_allowlister_own_commands ... ok
[INFO] [stdout] test repo_write_allows_scratch_and_build_redirection ... ok
[INFO] [stdout] test read_only_glob_and_grep_tools_allow_inside_defer_outside_deny_secret_grep ... ok
[INFO] [stdout] test repo_write_still_allows_ordinary_in_project_edits ... ok
[INFO] [stdout] test repo_write_lets_any_allowed_command_redirect_to_tmp ... ok
[INFO] [stdout] test read_only_denies_only_the_irreversible_core ... ok
[INFO] [stdout] test repo_write_allows_repo_management ... ok
[INFO] [stdout] test repo_write_asks_for_destructive_and_publishing_ops ... ok
[INFO] [stdout] test repo_write_denies_only_the_irreversible_core ... ok
[INFO] [stdout] test repo_write_allows_file_ops_inside_the_project ... ok
[INFO] [stderr]      Running tests/schema.rs (/opt/rustwide/target/release/deps/schema-e34694197a85fb15)
[INFO] [stdout] test repo_write_allows_discard_redirection_to_null_and_std_devices ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test schema_declares_canonical_id_and_draft ... ok
[INFO] [stdout] test schema_declares_dynamic_plugin_config ... ok
[INFO] [stdout] test role_enum_matches_the_engine_vocabulary ... ok
[INFO] [stdout] test example_configs_reference_the_published_schema ... ok
[INFO] [stdout] test param_keys_match_the_engine_vocabulary ... ok
[INFO] [stdout] test action_kind_and_grant_enums_match_the_engine_vocabulary ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/workflow_matrix_gate.rs (/opt/rustwide/target/release/deps/workflow_matrix_gate-894983586d8d7066)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test gate_passes_on_the_committed_workflows ... ok
[INFO] [stdout] test gate_fails_when_a_workflow_readds_the_push_trigger ... ok
[INFO] [stdout] test gate_fails_when_a_dispatch_option_is_dropped ... ok
[INFO] [stderr]    Doc-tests allowlister
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470", kill_on_drop: false }`
[INFO] [stdout] 6bc7775fa8e86f9ed5519ad3a32d2149d92c0a04cf9c4684eceb80e2911ca470
