[INFO] cloning repository https://github.com/teimurjan/claude-hooks [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/teimurjan/claude-hooks" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fteimurjan%2Fclaude-hooks", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fteimurjan%2Fclaude-hooks'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] e37215bc79b6eed3259b36675c870be7e4ad0970 [INFO] testing teimurjan/claude-hooks against beta-2026-04-21 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fteimurjan%2Fclaude-hooks" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/teimurjan/claude-hooks [INFO] finished tweaking git repo https://github.com/teimurjan/claude-hooks [INFO] tweaked toml for git repo https://github.com/teimurjan/claude-hooks written to /workspace/builds/worker-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/teimurjan/claude-hooks on toolchain beta-2026-04-21 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/teimurjan/claude-hooks 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 074e9187652122008158c62652160d536956315f48d90350eb068585840c7fef [INFO] running `Command { std: "docker" "start" "-a" "074e9187652122008158c62652160d536956315f48d90350eb068585840c7fef", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "074e9187652122008158c62652160d536956315f48d90350eb068585840c7fef", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "074e9187652122008158c62652160d536956315f48d90350eb068585840c7fef", kill_on_drop: false }` [INFO] [stdout] 074e9187652122008158c62652160d536956315f48d90350eb068585840c7fef [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3f31474a2672e5a71155755b46cd60070439a18e988de1f59bad4c611ddddda9 [INFO] running `Command { std: "docker" "start" "-a" "3f31474a2672e5a71155755b46cd60070439a18e988de1f59bad4c611ddddda9", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling claude-hooks v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.89s [INFO] running `Command { std: "docker" "inspect" "3f31474a2672e5a71155755b46cd60070439a18e988de1f59bad4c611ddddda9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3f31474a2672e5a71155755b46cd60070439a18e988de1f59bad4c611ddddda9", kill_on_drop: false }` [INFO] [stdout] 3f31474a2672e5a71155755b46cd60070439a18e988de1f59bad4c611ddddda9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 236d4980abb117b1f567b0c962ca1e57cf016ac9f6231c7a019473959e4b2853 [INFO] running `Command { std: "docker" "start" "-a" "236d4980abb117b1f567b0c962ca1e57cf016ac9f6231c7a019473959e4b2853", kill_on_drop: false }` [INFO] [stderr] Compiling claude-hooks v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.64s [INFO] running `Command { std: "docker" "inspect" "236d4980abb117b1f567b0c962ca1e57cf016ac9f6231c7a019473959e4b2853", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "236d4980abb117b1f567b0c962ca1e57cf016ac9f6231c7a019473959e4b2853", kill_on_drop: false }` [INFO] [stdout] 236d4980abb117b1f567b0c962ca1e57cf016ac9f6231c7a019473959e4b2853 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 44d569a1892b2f41b3ab67f0d47bd74c7f0be4cbeadbba12e6532bbd31184f02 [INFO] running `Command { std: "docker" "start" "-a" "44d569a1892b2f41b3ab67f0d47bd74c7f0be4cbeadbba12e6532bbd31184f02", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.02s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/claude_hooks-77efdc3e00e20821) [INFO] [stdout] [INFO] [stdout] running 69 tests [INFO] [stdout] test lifecycle::tests::cost_haiku ... ok [INFO] [stdout] test lifecycle::tests::cost_opus ... ok [INFO] [stdout] test lifecycle::tests::cost_sonnet_default ... ok [INFO] [stdout] test lifecycle::tests::cost_unknown_model_uses_sonnet_rates ... ok [INFO] [stdout] test lifecycle::tests::cost_zero_tokens ... ok [INFO] [stdout] test post_tool::tests::console_warn_ignores_non_js_ts ... ok [INFO] [stdout] test post_tool::tests::edit_format_ignores_empty ... ok [INFO] [stdout] test post_tool::tests::edit_format_ignores_non_js_ts ... ok [INFO] [stdout] test post_tool::tests::edit_typecheck_ignores_non_ts ... ok [INFO] [stdout] test post_tool::tests::pathdiff_no_common_prefix ... ok [INFO] [stdout] test post_tool::tests::quality_gate_ignores_empty_path ... ok [INFO] [stdout] test post_tool::tests::pathdiff_strips_prefix ... ok [INFO] [stdout] test post_tool::tests::quality_gate_ignores_missing_file ... ok [INFO] [stdout] test pre_tool::tests::allows_case_insensitive_doc_names ... ok [INFO] [stdout] test post_tool::tests::console_warn_clean_file ... ok [INFO] [stdout] test post_tool::tests::build_complete_ignores_other ... ok [INFO] [stdout] test pre_tool::tests::allows_dev_in_tmux ... ok [INFO] [stdout] test post_tool::tests::build_complete_fires_on_npm_build ... ok [INFO] [stdout] test post_tool::tests::build_complete_fires_on_pnpm_build ... ok [INFO] [stdout] test post_tool::tests::detect_formatter_biome ... ok [INFO] [stdout] test pre_tool::tests::allows_claude_paths ... ok [INFO] [stdout] test post_tool::tests::console_warn_detects_console_log ... ok [INFO] [stdout] test post_tool::tests::detect_formatter_none ... ok [INFO] [stdout] test pre_tool::tests::allows_docs_directory ... ok [INFO] [stdout] test pre_tool::tests::allows_plan_suffix ... ok [INFO] [stdout] test pre_tool::tests::allows_empty_command ... ok [INFO] [stdout] test lifecycle::tests::cost_tracker_writes_jsonl ... ok [INFO] [stdout] test pre_tool::tests::allows_non_doc_files ... ok [INFO] [stdout] test pre_tool::tests::allows_skills_and_memory_dirs ... ok [INFO] [stdout] test pre_tool::tests::allows_standard_doc_names ... ok [INFO] [stdout] test post_tool::tests::detect_formatter_prettier ... ok [INFO] [stdout] test post_tool::tests::pr_created_ignores_non_pr_commands ... ok [INFO] [stdout] test pre_tool::tests::doc_warning_allows_readme ... ok [INFO] [stdout] test pre_tool::tests::doc_warning_ignores_empty_path ... ok [INFO] [stdout] test pre_tool::tests::doc_warning_warns_on_random_md ... ok [INFO] [stdout] test pre_tool::tests::segments_or_chain ... ok [INFO] [stdout] test pre_tool::tests::push_reminder_ignores_other_git ... ok [INFO] [stdout] test pre_tool::tests::segments_single_command ... ok [INFO] [stdout] test pre_tool::tests::segments_preserves_quotes ... ok [INFO] [stdout] test profile::tests::active_profile_defaults_to_standard ... ok [INFO] [stdout] test profile::tests::active_profile_invalid_falls_back ... ok [INFO] [stdout] test profile::tests::default_hooks_in_standard_and_strict ... ok [INFO] [stdout] test profile::tests::empty_hook_id_always_enabled ... ok [INFO] [stdout] test profile::tests::lifecycle_hooks_allowed_in_all_profiles ... ok [INFO] [stdout] test profile::tests::strict_only_hooks ... ok [INFO] [stdout] test pre_tool::tests::push_reminder_fires_on_git_push ... ok [INFO] [stdout] test util::tests::append_file_creates_and_appends ... ok [INFO] [stdout] test pre_tool::tests::rejects_random_md_files ... ok [INFO] [stdout] test pre_tool::tests::segments_and_chain ... ok [INFO] [stdout] test util::tests::find_project_root_found ... ok [INFO] [stdout] test pre_tool::tests::segments_background ... ok [INFO] [stdout] test util::tests::get_command_missing ... ok [INFO] [stdout] test pre_tool::tests::segments_empty ... ok [INFO] [stdout] test util::tests::get_file_path_missing ... ok [INFO] [stdout] test pre_tool::tests::segments_simple_semicolon ... ok [INFO] [stdout] test post_tool::tests::pr_created_detects_url ... ok [INFO] [stdout] test util::tests::get_tool_output_present ... ok [INFO] [stdout] test util::tests::get_file_path_present ... ok [INFO] [stdout] test util::tests::parse_input_invalid_json ... ok [INFO] [stdout] test pre_tool::tests::allows_non_dev_commands ... ok [INFO] [stdout] test pre_tool::tests::blocks_bun_run_dev ... ok [INFO] [stdout] test util::tests::parse_input_valid_json ... ok [INFO] [stdout] test pre_tool::tests::blocks_pnpm_dev ... ok [INFO] [stdout] test pre_tool::tests::blocks_dev_in_chain ... ok [INFO] [stdout] test pre_tool::tests::blocks_pnpm_run_dev ... ok [INFO] [stdout] test pre_tool::tests::blocks_yarn_dev ... ok [INFO] [stdout] test util::tests::find_project_root_not_found ... ok [INFO] [stdout] test pre_tool::tests::blocks_npm_run_dev ... ok [INFO] [stdout] test util::tests::iso_timestamp_format ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 69 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/integration.rs (/opt/rustwide/target/debug/deps/integration-d5b4fc09e95cb8a5) [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test binary_disabled_hook_passes_through ... ok [INFO] [stdout] test binary_doc_warning_warns_random_md ... ok [INFO] [stdout] test binary_doc_warning_allows_readme ... ok [INFO] [stdout] test binary_git_push_skipped_in_standard ... ok [INFO] [stdout] test no_hook_id_passes_through ... ok [INFO] [stdout] test binary_minimal_profile_skips_standard_hooks ... ok [INFO] [stdout] test unknown_hook_passes_through ... ok [INFO] [stdout] test binary_build_complete_fires ... ok [INFO] [stdout] test binary_git_push_warns_in_strict ... ok [INFO] [stdout] test binary_blocks_dev_server ... ok [INFO] [stdout] test binary_allows_non_dev ... ok [INFO] [stdout] test binary_allows_dev_in_tmux ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "44d569a1892b2f41b3ab67f0d47bd74c7f0be4cbeadbba12e6532bbd31184f02", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "44d569a1892b2f41b3ab67f0d47bd74c7f0be4cbeadbba12e6532bbd31184f02", kill_on_drop: false }` [INFO] [stdout] 44d569a1892b2f41b3ab67f0d47bd74c7f0be4cbeadbba12e6532bbd31184f02