[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