[INFO] cloning repository https://github.com/drugoi/diddo-hooks
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/drugoi/diddo-hooks" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdrugoi%2Fdiddo-hooks", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdrugoi%2Fdiddo-hooks'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7a8b4ca108e5a4f55f05ad59e3346a0886b498f7
[INFO] testing drugoi/diddo-hooks against try#b8e88e5ddf5521a9f43ee3f62a702388c713e4bb for pr-155114
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdrugoi%2Fdiddo-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] removed /workspace/builds/worker-0-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/drugoi/diddo-hooks
[INFO] finished tweaking git repo https://github.com/drugoi/diddo-hooks
[INFO] tweaked toml for git repo https://github.com/drugoi/diddo-hooks written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/drugoi/diddo-hooks on toolchain b8e88e5ddf5521a9f43ee3f62a702388c713e4bb
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/drugoi/diddo-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" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e1059946460577e681de9ff8294af68cbc8fecc7b13ce6fc630afbdfad7c5a8e
[INFO] running `Command { std: "docker" "start" "-a" "e1059946460577e681de9ff8294af68cbc8fecc7b13ce6fc630afbdfad7c5a8e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e1059946460577e681de9ff8294af68cbc8fecc7b13ce6fc630afbdfad7c5a8e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e1059946460577e681de9ff8294af68cbc8fecc7b13ce6fc630afbdfad7c5a8e", kill_on_drop: false }`
[INFO] [stdout] e1059946460577e681de9ff8294af68cbc8fecc7b13ce6fc630afbdfad7c5a8e
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ee7e9e48c962d8d0ae3c528de4d6806381e01fa0eba4471bf59bcf03e0493b71
[INFO] running `Command { std: "docker" "start" "-a" "ee7e9e48c962d8d0ae3c528de4d6806381e01fa0eba4471bf59bcf03e0493b71", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling aws-lc-rs v1.16.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling openssl-probe v0.2.1
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling http v0.2.12
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling number_prefix v0.4.0
[INFO] [stderr]    Compiling self_update v0.36.0
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling http-body v0.4.6
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling xattr v1.6.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling tar v0.4.44
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling toml_parser v1.0.9+spec-1.1.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling quick-xml v0.23.1
[INFO] [stderr]    Compiling hashlink v0.11.0
[INFO] [stderr]    Compiling toml_datetime v1.0.0+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling toml v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling directories v6.0.0
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling aws-lc-sys v0.38.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.36.0
[INFO] [stderr]    Compiling regex v1.12.3
[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 serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling hyper-util v0.1.20
[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 rustls-webpki v0.101.7
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[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 hyper v0.14.32
[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 tokio-rustls v0.24.1
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling rusqlite v0.38.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.6.2
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.13.2
[INFO] [stderr]    Compiling diddo v0.6.7 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 32s
[INFO] running `Command { std: "docker" "inspect" "ee7e9e48c962d8d0ae3c528de4d6806381e01fa0eba4471bf59bcf03e0493b71", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ee7e9e48c962d8d0ae3c528de4d6806381e01fa0eba4471bf59bcf03e0493b71", kill_on_drop: false }`
[INFO] [stdout] ee7e9e48c962d8d0ae3c528de4d6806381e01fa0eba4471bf59bcf03e0493b71
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4dc4e0348c940a3bc726d47b193777472b67cb71ca122f56fa594d445112f95c
[INFO] running `Command { std: "docker" "start" "-a" "4dc4e0348c940a3bc726d47b193777472b67cb71ca122f56fa594d445112f95c", kill_on_drop: false }`
[INFO] [stderr]    Compiling diddo v0.6.7 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 7.23s
[INFO] running `Command { std: "docker" "inspect" "4dc4e0348c940a3bc726d47b193777472b67cb71ca122f56fa594d445112f95c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4dc4e0348c940a3bc726d47b193777472b67cb71ca122f56fa594d445112f95c", kill_on_drop: false }`
[INFO] [stdout] 4dc4e0348c940a3bc726d47b193777472b67cb71ca122f56fa594d445112f95c
[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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c582c5e265bcb4b1e76ba981888544d72b443c1b522f14407c19d2257979ed5b
[INFO] running `Command { std: "docker" "start" "-a" "c582c5e265bcb4b1e76ba981888544d72b443c1b522f14407c19d2257979ed5b", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.33s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/diddo-cf55c5014b847130)
[INFO] [stdout] 
[INFO] [stdout] running 227 tests
[INFO] [stdout] test activity_report::tests::compute_period_range_12_months ... ok
[INFO] [stdout] test activity_report::tests::compute_period_range_1_month ... ok
[INFO] [stdout] test activity_report::tests::next_sunday_on_sunday_returns_same ... ok
[INFO] [stdout] test activity_report::tests::build_report_computes_stats_correctly ... ok
[INFO] [stdout] test activity_report::tests::heatmap_has_correct_counts ... ok
[INFO] [stdout] test activity_report::tests::next_sunday_on_wednesday_returns_following_sunday ... ok
[INFO] [stdout] test activity_report::tests::prev_monday_on_monday_returns_same ... ok
[INFO] [stdout] test activity_report::tests::build_report_limits_top3_repos ... ok
[INFO] [stdout] test activity_report::tests::prev_monday_on_wednesday_returns_preceding_monday ... ok
[INFO] [stdout] test activity_report::tests::render_markdown_escapes_pipe_in_repository_name ... ok
[INFO] [stdout] test activity_report::tests::render_markdown_contains_all_sections ... ok
[INFO] [stdout] test activity_report::tests::heatmap_char_levels ... ok
[INFO] [stdout] test activity_report::tests::render_terminal_contains_all_sections ... ok
[INFO] [stdout] test activity_report::tests::shift_months_back_handles_month_boundary ... ok
[INFO] [stdout] test ai::api_provider::tests::builds_openai_chat_completion_payload ... ok
[INFO] [stdout] test ai::api_provider::tests::extracts_summary_text_from_anthropic_response ... ok
[INFO] [stdout] test ai::api_provider::tests::extracts_summary_text_from_openai_response ... ok
[INFO] [stdout] test activity_report::tests::export_markdown_writes_file_with_correct_name_and_content ... ok
[INFO] [stdout] test activity_report::tests::export_markdown_avoids_overwriting_existing_file ... ok
[INFO] [stdout] test ai::api_provider::tests::preserves_non_json_error_bodies ... ok
[INFO] [stdout] test ai::api_provider::tests::surfaces_api_error_messages ... ok
[INFO] [stdout] test ai::cli_provider::tests::ignores_model_setting_for_cli_execution ... ok
[INFO] [stdout] test ai::cli_provider::tests::implements_ai_provider_trait ... ok
[INFO] [stdout] test ai::cli_provider::tests::rejects_empty_cli_responses ... ok
[INFO] [stdout] test ai::cli_provider::tests::trims_cli_output_before_returning_summary ... ok
[INFO] [stdout] test ai::tests::build_prompt_with_custom_instructions_uses_override_and_structured_block ... ok
[INFO] [stdout] test activity_report::tests::shift_months_back_handles_year_boundary ... ok
[INFO] [stdout] test ai::tests::errors_when_invalid_api_provider_is_the_only_available_path ... ok
[INFO] [stdout] test ai::tests::errors_when_cli_preference_value_is_invalid ... ok
[INFO] [stdout] test ai::cli_provider::tests::uses_custom_prompt_instructions_when_provided ... ok
[INFO] [stdout] test ai::tests::errors_when_no_cli_or_api_provider_is_available ... ok
[INFO] [stdout] test ai::tests::build_prompt_with_none_uses_default_instructions ... ok
[INFO] [stdout] test ai::tests::errors_when_specific_preferred_cli_is_unavailable ... ok
[INFO] [stdout] test ai::tests::errors_when_specific_preferred_cli_is_unavailable_and_no_api_fallback_exists ... ok
[INFO] [stdout] test ai::tests::falls_back_to_detected_cli_tool_before_api ... ok
[INFO] [stdout] test ai::tests::falls_back_to_next_provider_when_first_runtime_attempt_fails ... ok
[INFO] [stdout] test ai::tests::ignores_invalid_optional_api_provider_when_detected_cli_is_available ... ok
[INFO] [stdout] test ai::tests::ignores_invalid_optional_api_provider_when_preferred_cli_is_available ... ok
[INFO] [stdout] test ai::tests::prefers_configured_cli_tool_when_it_is_available ... ok
[INFO] [stdout] test ai::tests::prompt_includes_period_and_commit_details ... ok
[INFO] [stdout] test ai::tests::uses_api_when_config_explicitly_prefers_it ... ok
[INFO] [stdout] test config::tests::filters_default_contains_test_profile ... ok
[INFO] [stdout] test config::tests::falls_back_to_provider_api_key_from_environment ... ok
[INFO] [stdout] test config::tests::filters_is_ignored_trims_and_ignores_case ... ok
[INFO] [stdout] test config::tests::missing_file_can_still_resolve_provider_and_api_key_from_environment ... ok
[INFO] [stdout] test config::tests::normalizes_cli_preference_and_model_values ... ok
[INFO] [stdout] test config::tests::prompt_instructions_empty_or_missing_returns_none ... ok
[INFO] [stdout] test config::tests::update_auto_check_can_be_disabled ... ok
[INFO] [stdout] test config::tests::filters_user_list_replaces_defaults ... ok
[INFO] [stdout] test config::tests::update_auto_check_defaults_to_true ... ok
[INFO] [stdout] test config::tests::filters_empty_list_disables_filtering ... ok
[INFO] [stdout] test config::tests::filters_section_without_key_falls_back_to_default_list ... ok
[INFO] [stdout] test config::tests::prefers_file_api_key_over_environment_fallback ... ok
[INFO] [stdout] test db::tests::cache_round_trip_stores_and_retrieves_summary ... ok
[INFO] [stdout] test config::tests::provider_less_config_can_resolve_sensibly_from_environment ... ok
[INFO] [stdout] test db::tests::local_day_bounds_convert_to_utc_range ... ok
[INFO] [stdout] test config::tests::returns_default_config_when_file_does_not_exist ... ok
[INFO] [stdout] test config::tests::parses_prompt_instructions_from_toml ... ok
[INFO] [stdout] test config::tests::normalizes_mixed_case_and_whitespace_provider_values ... ok
[INFO] [stdout] test db::tests::commit_count_returns_number_of_inserted_commits ... ok
[INFO] [stdout] test config::tests::parses_ai_settings_from_toml_file ... ok
[INFO] [stdout] test db::tests::commit_count_returns_zero_for_empty_database ... ok
[INFO] [stdout] test activity_report::tests::build_report_empty_commits ... ok
[INFO] [stdout] test db::tests::creates_commits_table_with_expected_columns_and_date_repo_index ... ok
[INFO] [stdout] test db::tests::oldest_commit_date_returns_none_for_empty_database ... ok
[INFO] [stdout] test db::tests::duplicate_insertions_do_not_create_duplicate_rows ... ok
[INFO] [stdout] test db::tests::oldest_commit_date_returns_earliest_committed_at ... ok
[INFO] [stdout] test hook::tests::author_email_is_none_when_config_fails ... ok
[INFO] [stdout] test hook::tests::defaults_diff_stats_to_zero_when_extraction_fails ... ok
[INFO] [stdout] test hook::tests::parses_git_iso_timestamp_into_utc ... ok
[INFO] [stdout] test db::tests::insert_commit_stores_author_email_and_query_returns_it ... ok
[INFO] [stdout] test hook::tests::normalizes_detached_head_branch_name ... ok
[INFO] [stdout] test hook::tests::uses_git_commit_timestamp_for_committed_at ... ok
[INFO] [stdout] test init::tests::build_post_commit_script_chains_a_previous_post_commit_hook ... ok
[INFO] [stdout] test db::tests::query_datetime_range_returns_empty_when_no_commits_in_range ... ok
[INFO] [stdout] test db::tests::query_datetime_range_returns_multiple_commits_sorted_by_repo_then_time ... ok
[INFO] [stdout] test init::tests::build_post_commit_script_prefers_resolved_diddo_executable_with_path_fallback ... ok
[INFO] [stdout] test init::tests::build_post_commit_script_runs_previous_hook_even_if_diddo_hook_fails ... ok
[INFO] [stdout] test init::tests::build_post_commit_script_runs_diddo_hook_without_chain_by_default ... ok
[INFO] [stdout] test init::tests::forwarding_wrapper_preserves_relative_hooks_path_for_runtime_resolution ... ok
[INFO] [stdout] test init::tests::forwarding_wrapper_only_runs_executable_targets ... ok
[INFO] [stdout] test init::tests::forwarding_wrapper_recognizes_windows_drive_absolute_paths ... ok
[INFO] [stdout] test db::tests::rejects_invalid_date_ranges ... ok
[INFO] [stdout] test init::tests::install_with_creates_managed_hook_and_sets_global_hooks_path ... ok
[INFO] [stdout] test db::tests::inserts_commits_across_days_and_queries_date_range ... ok
[INFO] [stdout] test hook::tests::stores_author_email_from_git_config ... ok
[INFO] [stdout] test init::tests::forwarding_wrapper_recognizes_unc_absolute_paths ... ok
[INFO] [stdout] test init::tests::resolves_tilde_hooks_path_for_ownership_checks ... ok
[INFO] [stdout] test interactive::tests::action_from_key_ignores_unknown_keys ... ok
[INFO] [stdout] test interactive::tests::action_from_key_maps_digit_keys_to_jump ... ok
[INFO] [stdout] test interactive::tests::action_from_key_maps_navigation_keys ... ok
[INFO] [stdout] test interactive::tests::apply_action_jump_to_clamps_to_last_item ... ok
[INFO] [stdout] test interactive::tests::apply_action_jump_to_sets_index_directly ... ok
[INFO] [stdout] test interactive::tests::apply_action_move_down_clamps_at_last_item ... ok
[INFO] [stdout] test interactive::tests::apply_action_move_up_saturates_at_zero ... ok
[INFO] [stdout] test interactive::tests::menu_items_keep_summary_commands_grouped_at_the_top ... ok
[INFO] [stdout] test interactive::tests::menu_items_keys_are_valid_commands ... ok
[INFO] [stdout] test db::tests::inserts_one_commit_and_queries_today ... ok
[INFO] [stdout] test init::tests::uninstall_with_restores_previous_hooks_path_when_diddo_still_owns_global_setting ... ok
[INFO] [stdout] test interactive::tests::range_form_accepts_dotted_date_input ... ok
[INFO] [stdout] test interactive::tests::range_form_escape_returns_to_menu_without_command ... ok
[INFO] [stdout] test interactive::tests::range_form_appends_input_to_from_field ... ok
[INFO] [stdout] test db::tests::reinserting_same_commit_updates_incomplete_metadata ... ok
[INFO] [stdout] test hook::tests::stores_git_metadata_in_database ... ok
[INFO] [stdout] test interactive::tests::range_form_rejects_from_after_to ... ok
[INFO] [stdout] test interactive::tests::range_form_rejects_malformed_dates ... ok
[INFO] [stdout] test init::tests::resolves_relative_hooks_path_against_repo_context_for_ownership_checks ... ok
[INFO] [stdout] test interactive::tests::range_form_submit_with_mixed_formats_includes_iso_to_flag ... ok
[INFO] [stdout] test interactive::tests::range_form_submit_with_dotted_from_normalizes_to_iso_command ... ok
[INFO] [stdout] test interactive::tests::range_form_submit_with_explicit_to_includes_to_flag ... ok
[INFO] [stdout] test interactive::tests::range_form_submit_without_to_omits_to_flag ... ok
[INFO] [stdout] test interactive::tests::range_form_rejects_missing_from ... ok
[INFO] [stdout] test interactive::tests::range_form_tab_moves_focus_to_to_field ... ok
[INFO] [stdout] test interactive::tests::range_form_validation_accepts_dotted_dates ... ok
[INFO] [stdout] test db::tests::query_datetime_range_returns_commits_within_exact_bounds ... ok
[INFO] [stdout] test interactive::tests::selecting_activity_returns_none_for_inline_handling ... ok
[INFO] [stdout] test init::tests::uninstall_with_leaves_newer_global_hooks_path_untouched ... ok
[INFO] [stdout] test interactive::tests::selecting_range_opens_form_state ... ok
[INFO] [stdout] test paths::tests::from_roots_keeps_db_in_local_data_root_and_config_files_in_config_root ... ok
[INFO] [stdout] test interactive::tests::range_form_validation_accepts_iso_dates ... ok
[INFO] [stdout] test interactive::tests::selecting_month_returns_month_command ... ok
[INFO] [stdout] test paths::tests::new_places_config_and_hooks_under_the_config_directory ... ok
[INFO] [stdout] test render::tests::by_profile_markdown_appends_table_after_first_last ... ok
[INFO] [stdout] test paths::tests::new_uses_local_data_directory_for_database_file ... ok
[INFO] [stdout] test interactive::tests::selecting_activity_opens_period_select ... ok
[INFO] [stdout] test render::tests::by_profile_one_profile_no_ai_summary_raw_repo_list ... ok
[INFO] [stdout] test render::tests::by_profile_terminal_appends_table_after_first_last ... ok
[INFO] [stdout] test interactive::tests::range_form_backspace_edits_active_field ... ok
[INFO] [stdout] test render::tests::by_profile_one_profile_one_repo_with_ai_summary ... ok
[INFO] [stdout] test render::tests::by_profile_two_profiles_two_sections ... ok
[INFO] [stdout] test render::tests::json_renders_pretty_serialized_summary_data ... ok
[INFO] [stdout] test render::tests::json_sorts_projects_by_commit_count_then_repo_name ... ok
[INFO] [stdout] test init::tests::install_with_preserves_previous_hooks_dir_behavior_and_records_previous_path ... ok
[INFO] [stdout] test render::tests::markdown_groups_raw_commits_and_appends_summary_stats ... ok
[INFO] [stdout] test render::tests::markdown_table_renders_repo_counts_percentages_and_total ... ok
[INFO] [stdout] test render::tests::terminal_breaks_group_order_ties_by_repo_name ... ok
[INFO] [stdout] test render::tests::markdown_summary_appends_table_after_first_last ... ok
[INFO] [stdout] test render::tests::table_renders_sorted_repo_counts_percentages_and_total_row ... ok
[INFO] [stdout] test render::tests::terminal_summary_without_ai_appends_table_after_first_last ... ok
[INFO] [stdout] test summary_group::tests::group_commits_by_profile_then_repo_two_profiles_two_repos ... ok
[INFO] [stdout] test render::tests::terminal_renders_ai_summary_and_stats ... ok
[INFO] [stdout] test tests::ai_attempt_surfaces_warning_when_provider_is_unavailable ... ok
[INFO] [stdout] test render::tests::terminal_summary_with_ai_appends_table_before_footer ... ok
[INFO] [stdout] test tests::bare_top_level_md_flag_is_treated_as_interactive_invocation ... ok
[INFO] [stdout] test tests::ai_attempt_surfaces_warning_when_provider_fails_at_runtime ... ok
[INFO] [stdout] test tests::bare_top_level_json_flag_is_treated_as_interactive_invocation ... ok
[INFO] [stdout] test tests::bare_top_level_no_cache_flag_is_treated_as_interactive_invocation ... ok
[INFO] [stdout] test tests::bare_top_level_raw_flag_is_treated_as_interactive_invocation ... ok
[INFO] [stdout] test tests::bare_top_level_table_flag_is_treated_as_interactive_invocation ... ok
[INFO] [stdout] test tests::date_based_windows_have_no_exact_bounds ... ok
[INFO] [stdout] test render::tests::terminal_table_body_can_be_embedded_after_summary_text ... ok
[INFO] [stdout] test init::tests::install_with_preserves_relative_previous_hooks_path_in_metadata_and_wrappers ... ok
[INFO] [stdout] test tests::ai_failure_for_one_profile_shows_raw_for_that_profile_and_warning ... ok
[INFO] [stdout] test tests::default_terminal_output_appends_repo_table_after_ai_summary ... ok
[INFO] [stdout] test tests::builds_deterministic_summary_stats_from_commits ... ok
[INFO] [stdout] test tests::derives_standup_summary_request ... ok
[INFO] [stdout] test tests::cache_key_is_deterministic_and_different_for_different_inputs ... ok
[INFO] [stdout] test tests::cache_hit_returns_stored_summary ... ok
[INFO] [stdout] test tests::disables_ai_for_raw_and_json_outputs ... ok
[INFO] [stdout] test tests::formats_all_paths_for_the_config_command ... ok
[INFO] [stdout] test tests::formats_file_size_in_bytes_kb_mb_gb ... ok
[INFO] [stdout] test tests::maps_summary_flags_to_expected_output_formats ... ok
[INFO] [stdout] test tests::mask_api_key_hides_middle_of_long_keys ... ok
[INFO] [stdout] test tests::empty_summary_output_does_not_depend_on_config_loading ... ok
[INFO] [stdout] test tests::derives_summary_request_from_default_and_subcommand_forms ... ok
[INFO] [stdout] test tests::metadata_shows_correct_stats_after_inserting_commits ... ok
[INFO] [stdout] test tests::metadata_shows_defaults_when_config_is_empty ... ok
[INFO] [stdout] test tests::metadata_shows_global_hooks_managed_by_diddo ... ok
[INFO] [stdout] test tests::metadata_shows_config_settings ... ok
[INFO] [stdout] test tests::metadata_shows_local_hooks_missing_diddo ... ok
[INFO] [stdout] test tests::metadata_shows_size_count_and_oldest_for_empty_database ... ok
[INFO] [stdout] test tests::markdown_output_appends_repo_table_by_default ... ok
[INFO] [stdout] test tests::json_output_remains_unchanged_without_table_section ... ok
[INFO] [stdout] test tests::parse_supported_date_rejects_invalid_strings_with_shared_error_text ... ok
[INFO] [stdout] test tests::parse_supported_date_trims_whitespace ... ok
[INFO] [stdout] test tests::parses_interactive_selection_for_month_command ... ok
[INFO] [stdout] test tests::parses_interactive_selection_for_range_command ... ok
[INFO] [stdout] test tests::parses_default_top_level_summary_without_flags ... ok
[INFO] [stdout] test tests::parses_range_dates_in_dotted_format ... ok
[INFO] [stdout] test tests::parses_standup_subcommand_with_summary_flags ... ok
[INFO] [stdout] test tests::parses_range_dates_in_mixed_formats ... ok
[INFO] [stdout] test tests::rejects_invalid_range_date_format ... ok
[INFO] [stdout] test tests::rejects_conflicting_summary_output_flags ... ok
[INFO] [stdout] test tests::rejects_pre_subcommand_summary_flags_on_non_summary_commands ... ok
[INFO] [stdout] test init::tests::install_local_hook_preserves_chain_when_re_run_on_diddo_managed_hook ... ok
[INFO] [stdout] test render::tests::table_breaks_ties_by_repo_name ... ok
[INFO] [stdout] test render::tests::terminal_groups_raw_commits_by_repo_without_ai_summary ... ok
[INFO] [stdout] test tests::ai_attempt_keeps_json_mode_eligible_for_ai_summary ... ok
[INFO] [stdout] test tests::parse_supported_date_accepts_iso_and_dotted_formats ... ok
[INFO] [stdout] test tests::raw_output_does_not_append_repo_table ... ok
[INFO] [stdout] test init::tests::install_local_hook_chains_existing_post_commit_in_local_hooks_dir ... ok
[INFO] [stdout] test db::tests::migration_adds_author_email_column_when_missing ... ok
[INFO] [stdout] test tests::rejects_range_window_when_from_is_after_to ... ok
[INFO] [stdout] test tests::resolves_month_window_as_last_30_days ... ok
[INFO] [stdout] test tests::resolves_range_window_with_explicit_end_date ... ok
[INFO] [stdout] test tests::resolves_standup_window_with_exact_24h_bounds ... ok
[INFO] [stdout] test tests::resolves_range_window_without_end_date_by_defaulting_to_today ... ok
[INFO] [stdout] test tests::rejects_table_with_other_summary_output_flags ... ok
[INFO] [stdout] test tests::resolves_week_window_as_last_7_days ... ok
[INFO] [stdout] test tests::supports_short_version_flag ... ok
[INFO] [stdout] test tests::rejects_summary_output_flags_on_non_summary_commands ... ok
[INFO] [stdout] test init::tests::install_local_hook_adds_post_commit_to_repo_with_local_hooks_path ... ok
[INFO] [stdout] test tests::rejects_range_without_from ... ok
[INFO] [stdout] test tests::standup_renders_empty_period_message_when_no_commits ... ok
[INFO] [stdout] test tests::supports_long_version_flag ... ok
[INFO] [stdout] test tests::supports_lowercase_version_flag ... ok
[INFO] [stdout] test tests::parses_subcommand_output_flags_without_changing_behavior ... ok
[INFO] [stdout] test tests::table_output_renders_repo_totals_without_ai ... ok
[INFO] [stdout] test tests::standup_raw_skips_ai_and_shows_grouped_commits ... ok
[INFO] [stdout] test tests::standup_renders_ai_summary_for_commits ... ok
[INFO] [stdout] test tests::single_profile_unknown_when_all_commits_have_no_author_email ... ok
[INFO] [stdout] test tests::standup_json_output_includes_date_label ... ok
[INFO] [stdout] test tests::table_output_skips_ai_summary ... ok
[INFO] [stdout] test db::tests::open_creates_nested_parent_directories_and_applies_schema ... ok
[INFO] [stdout] test update::tests::check_for_update_returns_none_when_cache_has_current_version ... ok
[INFO] [stdout] test update::tests::install_type_github_when_path_not_under_given_prefix ... ok
[INFO] [stdout] test update::tests::install_type_github_when_path_not_homebrew ... ok
[INFO] [stdout] test update::tests::check_for_update_returns_some_when_cache_has_newer_version ... ok
[INFO] [stdout] test tests::renders_useful_empty_period_messages_for_all_output_formats ... ok
[INFO] [stdout] test update::tests::install_type_homebrew_when_path_contains_cellar ... ok
[INFO] [stdout] test update::tests::install_type_homebrew_when_path_under_prefix ... ok
[INFO] [stdout] test update::tests::is_newer_returns_false_when_current_greater ... ok
[INFO] [stdout] test update::tests::is_newer_returns_false_when_same ... ok
[INFO] [stdout] test update::tests::is_newer_returns_true_when_latest_greater ... ok
[INFO] [stdout] test update::tests::is_newer_strips_v_prefix ... ok
[INFO] [stdout] test update::tests::release_target_returns_some_for_supported_platform ... ok
[INFO] [stdout] test ai::api_provider::tests::passes_prompt_and_model_to_request_callback ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 227 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "c582c5e265bcb4b1e76ba981888544d72b443c1b522f14407c19d2257979ed5b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c582c5e265bcb4b1e76ba981888544d72b443c1b522f14407c19d2257979ed5b", kill_on_drop: false }`
[INFO] [stdout] c582c5e265bcb4b1e76ba981888544d72b443c1b522f14407c19d2257979ed5b
