[INFO] cloning repository https://github.com/getdiff/cli
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/getdiff/cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgetdiff%2Fcli", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgetdiff%2Fcli'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5a69be44634a3e5e164423390a2c8e96e113534f
[INFO] testing getdiff/cli against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgetdiff%2Fcli" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/getdiff/cli
[INFO] finished tweaking git repo https://github.com/getdiff/cli
[INFO] tweaked toml for git repo https://github.com/getdiff/cli written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/getdiff/cli on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/getdiff/cli already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80
[INFO] running `Command { std: "docker" "start" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80", 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" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80", 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" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling is-docker v0.2.0
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling uuid v1.21.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling inotify v0.10.2
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling notify-types v1.0.1
[INFO] [stderr]    Compiling is-wsl v0.4.0
[INFO] [stderr]    Compiling pathdiff v0.2.3
[INFO] [stderr]    Compiling open v5.3.3
[INFO] [stderr]    Compiling notify v7.0.0
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling getdiff-gateway v0.1.9 (/opt/rustwide/workdir/crates/gateway)
[INFO] [stderr]    Compiling gateway-sidecar v0.1.9 (/opt/rustwide/workdir/crates/sidecar)
[INFO] [stderr]    Compiling getdiff v0.2.3 (/opt/rustwide/workdir/crates/cli)
[INFO] [stderr] warning: unused dependency `notify`
[INFO] [stderr]   --> crates/cli/Cargo.toml:31:1
[INFO] [stderr]    |
[INFO] [stderr] 31 | notify = "7"
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `notify`
[INFO] [stderr] warning: unused dependency `thiserror`
[INFO] [stderr]   --> crates/cli/Cargo.toml:48:1
[INFO] [stderr]    |
[INFO] [stderr] 48 | thiserror = "2"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `thiserror`
[INFO] [stderr] warning: `getdiff` (manifest) generated 2 warnings
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 16s
[INFO] running `Command { std: "docker" "inspect" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80", 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" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling tokio-test v0.4.5
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling getdiff-gateway v0.1.9 (/opt/rustwide/workdir/crates/gateway)
[INFO] [stderr]    Compiling getdiff v0.2.3 (/opt/rustwide/workdir/crates/cli)
[INFO] [stderr]    Compiling gateway-sidecar v0.1.9 (/opt/rustwide/workdir/crates/sidecar)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 43s
[INFO] running `Command { std: "docker" "inspect" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80", 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" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.37s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/gateway-sidecar/be727a4786e8c858/out/gateway_sidecar-be727a4786e8c858)
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/getdiff/6d55b6cbbf566cdf/out/getdiff-6d55b6cbbf566cdf)
[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] [stdout] 
[INFO] [stdout] running 83 tests
[INFO] [stdout] test artifact_scanner::tests::test_build_plugin_ucir_includes_strong_child_refs ... ok
[INFO] [stdout] test artifact_scanner::tests::test_redact_credentials ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_claude_settings_extracts_hooks_and_mcps ... ok
[INFO] [stdout] test artifact_scanner::tests::test_extract_claude_project ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_codex_plugins_finds_home_local_plugins ... ok
[INFO] [stdout] test artifact_scanner::tests::test_name_from_path ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_single_file_empty ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_claude_plugins_finds_marketplace_plugins_recursively ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_claude_project_finds_plugin_and_children ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_all_with_no_project_roots_only_returns_globals ... ok
[INFO] [stdout] test artifact_scanner::tests::test_project_scan_finds_cursorrules ... ok
[INFO] [stdout] test artifact_sync::tests::test_cache_key_format ... ok
[INFO] [stdout] test artifact_sync::tests::test_extract_plugin_child_refs_reads_contents_shape ... ok
[INFO] [stdout] test artifact_scanner::tests::test_sha256_hex ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_single_file_nonexistent ... ok
[INFO] [stdout] test artifact_sync::tests::test_rejects_parent_dir_in_project_scoped_path ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_codex_project_finds_plugin_and_children ... ok
[INFO] [stdout] test artifact_sync::tests::test_read_empty_cache ... ok
[INFO] [stdout] test artifact_sync::tests::test_rejects_parent_dir_in_home_scoped_path ... ok
[INFO] [stdout] test artifact_scanner::tests::test_scan_single_file_with_content ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_command_skill_global_remaps_to_skill_dir ... ok
[INFO] [stdout] test artifact_scanner::tests::test_project_scan_finds_claude_md ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_rule_path_global ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_rule_path_project_scoped ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_agent_path_global ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_command_skill_project_scoped_stays_relative ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_agent_path_project_scoped ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_cursor_rules_in_subdir_not_remapped ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_home_expanded_path ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_amazonq_rules_not_remapped ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_skill_path_project_scoped ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_claude_skill_path_global ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_copilot_agent_path ... ok
[INFO] [stdout] test artifact_sync::tests::test_resolve_root_level_files_not_remapped ... ok
[INFO] [stdout] test auth::tests::callback_supports_form_encoded_body ... ok
[INFO] [stdout] test auth::tests::callback_prefers_json_body_values ... ok
[INFO] [stdout] test detectors::tests::composes_inline_regex_flags ... ok
[INFO] [stdout] test detectors::tests::namespaces_cache_by_server ... ok
[INFO] [stdout] test parser::cursor::tests::strip_user_query_preserves_plain_text ... ok
[INFO] [stdout] test parser::cursor::tests::strip_user_query_removes_wrapper ... ok
[INFO] [stdout] test artifact_sync::tests::test_hash_cache_roundtrip ... ok
[INFO] [stdout] test artifact_sync::tests::test_install_pending_artifact_writes_file ... ok
[INFO] [stdout] test parser::tests::provider_accepts_claude_alias ... ok
[INFO] [stdout] test artifact_sync::tests::test_atomic_write_no_temp_files_left ... ok
[INFO] [stdout] test config_history::tests::marks_first_snapshot_as_unchanged ... ok
[INFO] [stdout] test artifact_scanner::tests::test_project_scan_finds_amazonq_rules ... ok
[INFO] [stdout] test config_history::tests::ignores_malformed_history_file ... ok
[INFO] [stdout] test config_history::tests::marks_later_snapshot_as_changed_when_fingerprint_differs ... ok
[INFO] [stdout] test parser::tests::provider_from_tool_roundtrips ... ok
[INFO] [stdout] test parser::tests::provider_string_matches_session_tool ... ok
[INFO] [stdout] test redact::tests::test_preserves_normal_text ... ok
[INFO] [stdout] test redact::tests::test_redacts_credit_card ... ok
[INFO] [stdout] test redact::tests::test_redacts_aws_key ... ok
[INFO] [stdout] test redact::tests::test_custom_pattern ... ok
[INFO] [stdout] test redact::tests::test_redacts_email ... ok
[INFO] [stdout] test redact::tests::test_redacts_slack_token ... ok
[INFO] [stdout] test redact::tests::test_redacts_phone ... ok
[INFO] [stdout] test redact::tests::test_skips_invalid_credit_card ... ok
[INFO] [stdout] test watcher::tests::test_discover_nonexistent_dir ... ok
[INFO] [stdout] test redact::tests::test_redacts_extended_github_token_prefixes ... ok
[INFO] [stdout] test auth::tests::write_secure_file_persists_contents ... ok
[INFO] [stdout] test types::tests::omits_config_snapshot_when_none ... ok
[INFO] [stdout] test redact::tests::test_redacts_github_token ... ok
[INFO] [stdout] test redact::tests::test_redacts_jwt ... ok
[INFO] [stdout] test watcher::tests::test_discover_ignores_non_uuid_jsonl ... ok
[INFO] [stdout] test types::tests::serializes_config_snapshot_when_present ... ok
[INFO] [stdout] test watcher::tests::test_discover_sessions_empty ... ok
[INFO] [stdout] test watcher::tests::test_file_is_idle_with_zero_threshold ... ok
[INFO] [stdout] test tests::attaches_real_config_metadata ... ok
[INFO] [stdout] test watcher::tests::test_discover_sessions_finds_jsonl_files ... ok
[INFO] [stdout] test watcher::tests::test_find_changed_detects_growth ... ok
[INFO] [stdout] test watcher::tests::test_find_changed_excludes_active_sessions ... ok
[INFO] [stdout] test redact::tests::test_redacts_generic_secret ... ok
[INFO] [stdout] test watcher::tests::test_find_changed_new_session ... ok
[INFO] [stdout] test watcher::tests::test_read_state_migrates_legacy_state_json_keys ... ok
[INFO] [stdout] test watcher::tests::test_freshly_created_file_is_not_idle ... ok
[INFO] [stdout] test watcher::tests::test_migrate_from_legacy_log ... ok
[INFO] [stdout] test watcher::tests::test_read_empty_state ... ok
[INFO] [stdout] test watcher::tests::test_find_changed_skips_unchanged ... ok
[INFO] [stdout] test watcher::tests::test_find_changed_opencode_uses_update_marker ... ok
[INFO] [stdout] test watcher::tests::test_update_and_read_state ... ok
[INFO] [stdout] test artifact_sync::tests::test_write_merges_with_existing ... ok
[INFO] [stderr]      Running tests/parser_tests.rs (/opt/rustwide/target/release/build/getdiff/79a09304d628f350/out/parser_tests-79a09304d628f350)
[INFO] [stdout] test artifact_scanner::tests::test_symlink_outside_boundary_skipped ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 83 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 59 tests
[INFO] [stdout] test test_copilot_tool_calls ... ok
[INFO] [stdout] test test_cursor_no_tool_calls ... ok
[INFO] [stdout] test test_copilot_reliability_telemetry ... ok
[INFO] [stdout] test test_copilot_session_parses ... ok
[INFO] [stdout] test test_codex_reliability_and_files ... ok
[INFO] [stdout] test test_copilot_timestamps ... ok
[INFO] [stdout] test test_gemenicli_files_tracked ... ok
[INFO] [stdout] test test_duration_computed ... ok
[INFO] [stdout] test test_files_read_tracked ... ok
[INFO] [stdout] test test_cursor_strips_user_query_wrapper ... ok
[INFO] [stdout] test test_gemenicli_reliability ... ok
[INFO] [stdout] test test_cursor_session_parses ... ok
[INFO] [stdout] test test_gemenicli_timestamps ... ok
[INFO] [stdout] test test_gemenicli_session_parses ... ok
[INFO] [stdout] test test_cost_estimation ... ok
[INFO] [stdout] test test_copilot_thinking_detected ... ok
[INFO] [stdout] test test_gemenicli_message_counts ... ok
[INFO] [stdout] test test_gemenicli_thinking_detected ... ok
[INFO] [stdout] test test_copilot_message_counts ... ok
[INFO] [stdout] test test_files_modified_tracked ... ok
[INFO] [stdout] test test_gemenicli_tool_calls ... ok
[INFO] [stdout] test test_openclaw_message_counts ... ok
[INFO] [stdout] test test_copilot_tool_errors_tracked ... ok
[INFO] [stdout] test test_message_counts ... ok
[INFO] [stdout] test test_openclaw_reliability_telemetry ... ok
[INFO] [stdout] test test_cursor_has_timestamps_from_file_metadata ... ok
[INFO] [stdout] test test_opencode_exported_sample_parses ... ok
[INFO] [stdout] test test_openclaw_tokens ... ok
[INFO] [stdout] test test_openclaw_tool_calls ... ok
[INFO] [stdout] test test_git_branch_extracted ... ok
[INFO] [stdout] test test_gemenicli_tokens ... ok
[INFO] [stdout] test test_reliability_telemetry_extracted ... ok
[INFO] [stdout] test test_openclaw_session_parses ... ok
[INFO] [stdout] test test_primary_model_extracted ... ok
[INFO] [stdout] test test_secrets_redacted_in_user_messages ... ok
[INFO] [stdout] test test_codex_skips_developer_harness_messages ... ok
[INFO] [stdout] test test_opencode_tokens_tools_and_files ... ok
[INFO] [stdout] test test_codex_tool_and_token_parsing ... ok
[INFO] [stdout] test test_stop_reasons_captured ... ok
[INFO] [stdout] test test_codex_session_parses ... ok
[INFO] [stdout] test test_copilot_files_tracked ... ok
[INFO] [stdout] test test_openclaw_thinking_detected ... ok
[INFO] [stdout] test test_secrets_redacted_in_tool_results ... ok
[INFO] [stdout] test test_tool_calls_extracted ... ok
[INFO] [stdout] test test_tool_input_summarized ... ok
[INFO] [stdout] test test_sensitive_values_are_redacted_before_upload ... ok
[INFO] [stdout] test test_skips_non_conversation_lines ... ok
[INFO] [stdout] test test_session_id_extracted ... ok
[INFO] [stdout] test test_token_totals ... ok
[INFO] [stdout] test test_tool_call_summary ... ok
[INFO] [stdout] test test_tool_version_extracted ... ok
[INFO] [stdout] test test_opencode_session_parses ... ok
[INFO] [stdout] test test_openclaw_stop_reasons_normalized ... ok
[INFO] [stdout] test test_timestamps_captured ... ok
[INFO] [stdout] test test_tool_is_claude_code ... ok
[INFO] [stdout] test test_tool_result_errors_captured ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/getdiff-gateway/c19a8ec536fc6702/out/getdiff_gateway-c19a8ec536fc6702)
[INFO] [stdout] test test_thinking_detected_but_not_captured ... ok
[INFO] [stdout] test test_openclaw_files_tracked ... ok
[INFO] [stdout] test test_openclaw_cost_estimated ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 59 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 206 tests
[INFO] [stdout] test adapter::generic::tests::test_gmail_delete_message ... ok
[INFO] [stdout] test adapter::generic::tests::test_gmail_empty_body ... ok
[INFO] [stdout] test adapter::generic::tests::test_gmail_list_messages ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_adapter_config_from_yaml ... ok
[INFO] [stdout] test adapter::generic::tests::test_extract_graphql_operation_name ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_operation_name_field_preferred ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_policy_integration ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_input_object_flattening ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_preserves_string_variable_types ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_subscription ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_adapter_config_from_yaml ... ok
[INFO] [stdout] test adapter::generic::tests::test_extract_graphql_operation_type ... ok
[INFO] [stdout] test adapter::generic::tests::test_adapter_config_from_yaml ... ok
[INFO] [stdout] test adapter::generic::tests::test_extract_string ... ok
[INFO] [stdout] test adapter::generic::tests::test_gmail_send_email ... ok
[INFO] [stdout] test adapter::generic::tests::test_gmail_modify_message ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_empty_body ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_gql_prefix_not_spoofable ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_mutation_with_operation_name ... ok
[INFO] [stdout] test adapter::generic::tests::test_parse_address_list_display_names ... ok
[INFO] [stdout] test adapter::generic::tests::test_extract_integer ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_anonymous_query ... ok
[INFO] [stdout] test adapter::generic::tests::test_parse_address_list_simple ... ok
[INFO] [stdout] test adapter::generic::tests::test_path_exact ... ok
[INFO] [stdout] test adapter::generic::tests::test_path_mismatch_length ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_non_tools_call ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_config_extraction_overrides ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_tools_call_with_config ... ok
[INFO] [stdout] test adapter::generic::tests::test_match_host_empty ... ok
[INFO] [stdout] test adapter::generic::tests::test_parse_empty_body ... ok
[INFO] [stdout] test adapter::generic::tests::test_parse_form_body ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_empty_body ... ok
[INFO] [stdout] test adapter::generic::tests::test_graphql_query_extracted_name ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_policy_integration ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_tools_call_without_config ... ok
[INFO] [stdout] test adapter::generic::tests::test_match_host ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_arguments_flattened ... ok
[INFO] [stdout] test adapter::generic::tests::test_jsonrpc_invalid_json ... ok
[INFO] [stdout] test adapter::generic::tests::test_parse_json_body ... ok
[INFO] [stdout] test adapter::generic::tests::test_path_mismatch_segment ... ok
[INFO] [stdout] test adapter::generic::tests::test_path_multi_wildcard ... ok
[INFO] [stdout] test audit::tests::test_query_by_decision ... ok
[INFO] [stdout] test adapter::generic::tests::test_stripe_create_charge ... ok
[INFO] [stdout] test adapter::generic::tests::test_stripe_create_transfer ... ok
[INFO] [stdout] test adapter::generic::tests::test_stripe_unknown ... ok
[INFO] [stdout] test audit::tests::test_query_with_limit_and_offset ... ok
[INFO] [stdout] test adapter::tests::test_registry_find_by_host ... ok
[INFO] [stdout] test adapter::tests::test_registry_from_config ... ok
[INFO] [stdout] test audit::tests::test_stats_learning_blocks ... ok
[INFO] [stdout] test audit::tests::test_stats_returns_correct_aggregates ... ok
[INFO] [stdout] test adapter::tests::test_registry_skips_providers_without_adapter ... ok
[INFO] [stdout] test audit::tests::test_log_writes_json_line ... ok
[INFO] [stdout] test audit::tests::test_query_by_provider ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test config::tests::test_default_config_with_overrides ... ok
[INFO] [stdout] test adapter::generic::tests::test_path_wildcard ... ok
[INFO] [stdout] test adapter::generic::tests::test_stripe_list_charges ... ok
[INFO] [stdout] test config::tests::test_merge_with_defaults ... ok
[INFO] [stdout] test config::tests::test_gmail_provider_config ... ok
[INFO] [stdout] test config::tests::test_provider_for_host_unknown ... ok
[INFO] [stdout] test config::tests::test_deserialize_config ... ok
[INFO] [stdout] test config::tests::test_stripe_provider_config ... ok
[INFO] [stdout] test config::tests::test_intersection_policies ... ok
[INFO] [stdout] test config::tests::test_provider_for_host_bedrock ... ok
[INFO] [stdout] test config::tests::test_provider_for_host_known ... ok
[INFO] [stdout] test audit::tests::test_omits_empty_optional_fields ... ok
[INFO] [stdout] test config::tests::test_provider_for_host_non_bedrock_aws ... ok
[INFO] [stdout] test audit::tests::test_query_by_session_id ... ok
[INFO] [stdout] test adapter::tests::test_registry_parses_request ... ok
[INFO] [stdout] test counter::tests::test_increment_and_get ... ok
[INFO] [stdout] test counter::tests::test_zero_amount_ignored ... ok
[INFO] [stdout] test counter::tests::test_increment_if_under_allows ... ok
[INFO] [stdout] test daemon_config::tests::test_deserialize_daemon_config ... ok
[INFO] [stdout] test config::tests::test_github_provider_config ... ok
[INFO] [stdout] test daemon_config::tests::test_deserialize_daemon_config_observe ... ok
[INFO] [stdout] test daemon_config::tests::test_platform_config_default ... ok
[INFO] [stdout] test counter::tests::test_increment_with_custom_ttl ... ok
[INFO] [stdout] test events::tests::test_event_batch_serialization ... ok
[INFO] [stdout] test counter::tests::test_key_format ... ok
[INFO] [stdout] test counter::tests::test_multiple_providers_independent ... ok
[INFO] [stdout] test counter::tests::test_saturating_add_no_overflow ... ok
[INFO] [stdout] test events::tests::test_daemon_id_generation ... ok
[INFO] [stdout] test events::tests::test_daemon_id_persistence ... ok
[INFO] [stdout] test events::tests::test_batch_response_deserialization ... ok
[INFO] [stdout] test counter::tests::test_increment_if_under_rejects ... ok
[INFO] [stdout] test events::tests::test_hash_request_body_empty ... ok
[INFO] [stdout] test forward_proxy::tests::test_extract_target_host_absolute_uri ... ok
[INFO] [stdout] test forward_proxy::tests::test_extract_target_host_connect ... ok
[INFO] [stdout] test counter::tests::test_new_counter_starts_at_zero ... ok
[INFO] [stdout] test forward_proxy::tests::test_is_forward_proxy_absolute_uri ... ok
[INFO] [stdout] test forward_proxy::tests::test_is_forward_proxy_connect ... ok
[INFO] [stdout] test counter::tests::test_negative_amount_ignored ... ok
[INFO] [stdout] test forward_proxy::tests::test_parse_host_port_invalid_port ... ok
[INFO] [stdout] test forward_proxy::tests::test_is_not_forward_proxy_relative_uri ... ok
[INFO] [stdout] test forward_proxy::tests::test_parse_host_port_custom_port ... ok
[INFO] [stdout] test forward_proxy::tests::test_parse_host_port_ipv6 ... ok
[INFO] [stdout] test events::tests::test_hash_request_body ... ok
[INFO] [stdout] test forward_proxy::tests::test_parse_host_port_with_port ... ok
[INFO] [stdout] test events::tests::test_hash_request_body_different_inputs ... ok
[INFO] [stdout] test events::tests::test_event_from_audit ... ok
[INFO] [stdout] test events::tests::test_event_from_audit_learning_mode ... ok
[INFO] [stdout] test forward_proxy::tests::test_parse_host_port_without_port ... ok
[INFO] [stdout] test harvester::tests::test_basic_auth ... ok
[INFO] [stdout] test harvester::tests::test_bearer_token ... ok
[INFO] [stdout] test counter::tests::test_len_excludes_expired ... ok
[INFO] [stdout] test counter::tests::test_evict_expired ... ok
[INFO] [stdout] test harvester::tests::test_different_credentials_different_fingerprints ... ok
[INFO] [stdout] test harvester::tests::test_fingerprint_consistent ... ok
[INFO] [stdout] test harvester::tests::test_get_value_by_fingerprint ... ok
[INFO] [stdout] test counter::tests::test_expired_entry_resets_on_increment ... ok
[INFO] [stdout] test counter::tests::test_expired_entries_return_zero ... ok
[INFO] [stdout] test harvester::tests::test_github_token_style ... ok
[INFO] [stdout] test harvester::tests::test_api_key_header ... ok
[INFO] [stdout] test harvester::tests::test_list_omits_raw_values ... ok
[INFO] [stdout] test harvester::tests::test_same_credential_increments ... ok
[INFO] [stdout] test intersection::tests::test_merge_base_not_modified ... ok
[INFO] [stdout] test intersection::tests::test_merge_multiple_intersections ... ok
[INFO] [stdout] test intersection::tests::test_compute_intersections_one_provider_missing ... ok
[INFO] [stdout] test intersection::tests::test_merge_blocked_lists_union ... ok
[INFO] [stdout] test intersection::tests::test_merge_does_not_loosen ... ok
[INFO] [stdout] test intersection::tests::test_merge_numeric_caps_minimum ... ok
[INFO] [stdout] test harvester::tests::test_stats ... ok
[INFO] [stdout] test intersection::tests::test_compute_intersections_two_providers_match ... ok
[INFO] [stdout] test intersection::tests::test_merge_no_rules ... ok
[INFO] [stdout] test harvester::tests::test_no_credential ... ok
[INFO] [stdout] test intersection::tests::test_compute_intersections_three_way ... ok
[INFO] [stdout] test harvester::tests::test_query_parameter_key ... ok
[INFO] [stdout] test intersection::tests::test_rules_from_config ... ok
[INFO] [stdout] test mcp_stdio::tests::test_evaluate_allowed_operations_whitelist ... ok
[INFO] [stdout] test mcp_stdio::tests::test_evaluate_tools_call_allowed ... ok
[INFO] [stdout] test mcp_stdio::tests::test_jsonrpc_error_response ... ok
[INFO] [stdout] test mcp_stdio::tests::test_jsonrpc_error_response_string_id ... ok
[INFO] [stdout] test mockapi::tests::test_github_requires_auth ... ok
[INFO] [stdout] test mockapi::tests::test_github_user ... ok
[INFO] [stdout] test mockapi::tests::test_gmail_messages ... ok
[INFO] [stdout] test mockapi::tests::test_health_endpoint ... ok
[INFO] [stdout] test mockapi::tests::test_match_github_path ... ok
[INFO] [stdout] test intersection::tests::test_merge_recipient_cap_minimum ... ok
[INFO] [stdout] test audit::tests::test_thread_safety ... ok
[INFO] [stdout] test mcp_stdio::tests::test_evaluate_empty_line ... ok
[INFO] [stdout] test mcp_stdio::tests::test_evaluate_tools_call_blocked ... ok
[INFO] [stdout] test mcp_stdio::tests::test_jsonrpc_error_response_no_id ... ok
[INFO] [stdout] test policy::tests::test_allowed_method ... ok
[INFO] [stdout] test mcp_stdio::tests::test_evaluate_non_tools_call ... ok
[INFO] [stdout] test policy::tests::test_allowed_operation ... ok
[INFO] [stdout] test policy::tests::test_allowed_path ... ok
[INFO] [stdout] test policy::tests::test_allowed_recipients ... ok
[INFO] [stdout] test mockapi::tests::test_parse_stripe_body_json ... ok
[INFO] [stdout] test policy::tests::test_allowed_currencies ... ok
[INFO] [stdout] test policy::tests::test_blocked_method ... ok
[INFO] [stdout] test policy::tests::test_blocked_path_exact ... ok
[INFO] [stdout] test mockapi::tests::test_stripe_charges ... ok
[INFO] [stdout] test mockapi::tests::test_match_github_path_exact ... ok
[INFO] [stdout] test mockapi::tests::test_parse_stripe_body_form ... ok
[INFO] [stdout] test policy::tests::test_blocked_recipients ... ok
[INFO] [stdout] test policy::tests::test_combined_gmail_policy ... ok
[INFO] [stdout] test policy::tests::test_combined_stripe_policy ... ok
[INFO] [stdout] test policy::tests::test_full_policy_stack ... ok
[INFO] [stdout] test policy::tests::test_blocked_path_glob ... ok
[INFO] [stdout] test policy::tests::test_blocked_operation ... ok
[INFO] [stdout] test policy::tests::test_match_glob ... ok
[INFO] [stdout] test policy::tests::test_max_amount_cents ... ok
[INFO] [stdout] test policy::tests::test_path_segment_count_mismatch ... ok
[INFO] [stdout] test policy::tests::test_max_recipients_per_message ... ok
[INFO] [stdout] test policy::tests::test_path_not_in_allowed_list ... ok
[INFO] [stdout] test profiler::tests::test_blocked_count ... ok
[INFO] [stdout] test profiler::tests::test_methods_counted ... ok
[INFO] [stdout] test policy::tests::test_unlisted_method_denied ... ok
[INFO] [stdout] test profiler::tests::test_operations_counted_per_provider ... ok
[INFO] [stdout] test profiler::tests::test_suggest_method_restriction ... ok
[INFO] [stdout] test profiler::tests::test_suggest_operation_restriction ... ok
[INFO] [stdout] test proxy::tests::test_add_session_inserts_providers ... ok
[INFO] [stdout] test policy::tests::test_blocked_path_takes_precedence ... ok
[INFO] [stdout] test policy::tests::test_empty_policies_allow_all ... ok
[INFO] [stdout] test proxy::tests::test_add_then_remove_multiple_sessions ... ok
[INFO] [stdout] test profiler::tests::test_multiple_records ... ok
[INFO] [stdout] test proxy::tests::test_path_extraction ... ok
[INFO] [stdout] test proxy::tests::test_daily_limit_allows_within_budget ... ok
[INFO] [stdout] test proxy::tests::test_path_extraction_empty ... ok
[INFO] [stdout] test proxy::tests::test_path_extraction_single_segment ... ok
[INFO] [stdout] test session::tests::test_session_context_creation ... ok
[INFO] [stdout] test proxy::tests::test_remove_session_deletes_providers ... ok
[INFO] [stdout] test transparent::tests::test_extract_hostname_variants ... ok
[INFO] [stdout] test transparent::tests::test_generate_iptables_init_no_excluded_ports ... ok
[INFO] [stdout] test transparent::tests::test_get_original_dst_non_linux ... ok
[INFO] [stdout] test transparent::tests::test_iptables_rejects_invalid_ports ... ok
[INFO] [stdout] test profiler::tests::test_multiple_sessions ... ok
[INFO] [stdout] test profiler::tests::test_new_session ... ok
[INFO] [stdout] test profiler::tests::test_unknown_session ... ok
[INFO] [stdout] test transparent::tests::test_resolve_hostname_from_host_header ... ok
[INFO] [stdout] test transparent::tests::test_resolve_hostname_strips_port ... ok
[INFO] [stdout] test transparent::tests::test_generate_iptables_cleanup ... ok
[INFO] [stdout] test proxy::tests::test_daily_limit_blocks_when_exceeded ... ok
[INFO] [stdout] test proxy::tests::test_daily_limit_no_amount_passes_through ... ok
[INFO] [stdout] test proxy::tests::test_daily_limit_skips_already_denied ... ok
[INFO] [stdout] test proxy::tests::test_remove_unknown_session_returns_not_found ... ok
[INFO] [stdout] test session::tests::test_provider_session_policy_evaluation ... ok
[INFO] [stdout] test transparent::tests::test_resolve_hostname_ipv6_bracket_no_port ... ok
[INFO] [stdout] test transparent::tests::test_resolve_hostname_ipv6_bracket ... ok
[INFO] [stdout] test transparent::tests::test_generate_iptables_init ... ok
[INFO] [stdout] test transparent::tests::test_resolve_hostname_missing_header ... ok
[INFO] [stdout] test forward_proxy::tests::test_connect_to_unreachable_host_returns_502 ... ok
[INFO] [stdout] test forward_proxy::tests::test_http_forward_proxy_request ... ok
[INFO] [stdout] test forward_proxy::tests::test_connect_tunnel_established ... ok
[INFO] [stdout] test forward_proxy::tests::test_path_prefix_request_through_forward_proxy ... ok
[INFO] [stdout] test events::tests::test_event_sender_does_not_block ... ok
[INFO] [stderr]    Doc-tests getdiff_gateway
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 206 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s
[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" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80", kill_on_drop: false }`
[INFO] [stdout] 95c0ad7f161765ffe36736db4a34395c2f22dd59120fbc919ab562d41a3d8e80
