[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 beta-2026-04-21 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdrugoi%2Fdiddo-hooks" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-2-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-2-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/drugoi/diddo-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/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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 00760146d173132e7d16b6a12e68f8d3c03c4f77f52a4bb0d80e5053dc404d55 [INFO] running `Command { std: "docker" "start" "-a" "00760146d173132e7d16b6a12e68f8d3c03c4f77f52a4bb0d80e5053dc404d55", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "00760146d173132e7d16b6a12e68f8d3c03c4f77f52a4bb0d80e5053dc404d55", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "00760146d173132e7d16b6a12e68f8d3c03c4f77f52a4bb0d80e5053dc404d55", kill_on_drop: false }` [INFO] [stdout] 00760146d173132e7d16b6a12e68f8d3c03c4f77f52a4bb0d80e5053dc404d55 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 7308d7df4d6a130cec3f3f662a01c62d4dfa19bfb017808974f541fb931b3674 [INFO] running `Command { std: "docker" "start" "-a" "7308d7df4d6a130cec3f3f662a01c62d4dfa19bfb017808974f541fb931b3674", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling dunce v1.0.5 [INFO] [stderr] Compiling fs_extra v1.3.0 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling writeable v0.6.2 [INFO] [stderr] Compiling litemap v0.8.1 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling aws-lc-rs v1.16.1 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling foldhash v0.2.0 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling http v0.2.12 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling portable-atomic v1.13.1 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling openssl-probe v0.2.1 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling base64 v0.21.7 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling rustls-pemfile v1.0.4 [INFO] [stderr] Compiling http-body v0.4.6 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling socket2 v0.5.10 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling console v0.15.11 [INFO] [stderr] Compiling filetime v0.2.27 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling rustls-native-certs v0.8.3 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling encoding_rs v0.8.35 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling sync_wrapper v0.1.2 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling option-ext v0.2.0 [INFO] [stderr] Compiling xattr v1.6.1 [INFO] [stderr] Compiling self_update v0.36.0 [INFO] [stderr] Compiling number_prefix v0.4.0 [INFO] [stderr] Compiling webpki-roots v0.25.4 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling cmake v0.1.57 [INFO] [stderr] Compiling indicatif v0.17.11 [INFO] [stderr] Compiling clap_builder v4.5.60 [INFO] [stderr] Compiling tar v0.4.44 [INFO] [stderr] Compiling dirs-sys v0.5.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling toml_datetime v1.0.0+spec-1.1.0 [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 serde_spanned v1.0.4 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling toml_parser v1.0.9+spec-1.1.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling hashlink v0.11.0 [INFO] [stderr] Compiling quick-xml v0.23.1 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling toml v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling directories v6.0.0 [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 serde_derive v1.0.228 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling regex v1.12.3 [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 tokio-util v0.7.18 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling clap v4.5.60 [INFO] [stderr] Compiling sct v0.7.1 [INFO] [stderr] Compiling rustls-webpki v0.101.7 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling h2 v0.3.27 [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 idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling tokio-rustls v0.24.1 [INFO] [stderr] Compiling hyper v0.14.32 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling rusqlite v0.38.0 [INFO] [stderr] Compiling hyper-rustls v0.24.2 [INFO] [stderr] Compiling reqwest v0.11.27 [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 56s [INFO] running `Command { std: "docker" "inspect" "7308d7df4d6a130cec3f3f662a01c62d4dfa19bfb017808974f541fb931b3674", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7308d7df4d6a130cec3f3f662a01c62d4dfa19bfb017808974f541fb931b3674", kill_on_drop: false }` [INFO] [stdout] 7308d7df4d6a130cec3f3f662a01c62d4dfa19bfb017808974f541fb931b3674 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 89f47f89df9e82d6a69430a321b596aa76780ede2c05648fcc898cfba8b50860 [INFO] running `Command { std: "docker" "start" "-a" "89f47f89df9e82d6a69430a321b596aa76780ede2c05648fcc898cfba8b50860", kill_on_drop: false }` [INFO] [stderr] Compiling diddo v0.6.7 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 6.96s [INFO] running `Command { std: "docker" "inspect" "89f47f89df9e82d6a69430a321b596aa76780ede2c05648fcc898cfba8b50860", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "89f47f89df9e82d6a69430a321b596aa76780ede2c05648fcc898cfba8b50860", kill_on_drop: false }` [INFO] [stdout] 89f47f89df9e82d6a69430a321b596aa76780ede2c05648fcc898cfba8b50860 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 3ca0a5d9215fde31931aa6ff122b39799664df28c08a9d52f36f19a093a7c83a [INFO] running `Command { std: "docker" "start" "-a" "3ca0a5d9215fde31931aa6ff122b39799664df28c08a9d52f36f19a093a7c83a", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.30s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/diddo-9d8f40425276bfa3) [INFO] [stdout] [INFO] [stdout] running 227 tests [INFO] [stdout] test activity_report::tests::build_report_empty_commits ... ok [INFO] [stdout] test activity_report::tests::compute_period_range_12_months ... ok [INFO] [stdout] test activity_report::tests::build_report_computes_stats_correctly ... ok [INFO] [stdout] test activity_report::tests::build_report_limits_top3_repos ... 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::compute_period_range_1_month ... ok [INFO] [stdout] test activity_report::tests::heatmap_char_levels ... ok [INFO] [stdout] test activity_report::tests::next_sunday_on_sunday_returns_same ... ok [INFO] [stdout] test activity_report::tests::prev_monday_on_monday_returns_same ... ok [INFO] [stdout] test activity_report::tests::prev_monday_on_wednesday_returns_preceding_monday ... ok [INFO] [stdout] test activity_report::tests::shift_months_back_handles_month_boundary ... ok [INFO] [stdout] test activity_report::tests::render_markdown_contains_all_sections ... 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_openai_response ... ok [INFO] [stdout] test activity_report::tests::render_markdown_escapes_pipe_in_repository_name ... ok [INFO] [stdout] test activity_report::tests::export_markdown_avoids_overwriting_existing_file ... ok [INFO] [stdout] test ai::api_provider::tests::extracts_summary_text_from_anthropic_response ... ok [INFO] [stdout] test activity_report::tests::export_markdown_writes_file_with_correct_name_and_content ... ok [INFO] [stdout] test ai::api_provider::tests::preserves_non_json_error_bodies ... ok [INFO] [stdout] test ai::cli_provider::tests::implements_ai_provider_trait ... ok [INFO] [stdout] test ai::api_provider::tests::surfaces_api_error_messages ... ok [INFO] [stdout] test ai::cli_provider::tests::rejects_empty_cli_responses ... ok [INFO] [stdout] test activity_report::tests::render_terminal_contains_all_sections ... ok [INFO] [stdout] test activity_report::tests::shift_months_back_handles_year_boundary ... ok [INFO] [stdout] test ai::cli_provider::tests::trims_cli_output_before_returning_summary ... ok [INFO] [stdout] test ai::tests::build_prompt_with_none_uses_default_instructions ... ok [INFO] [stdout] test ai::cli_provider::tests::uses_custom_prompt_instructions_when_provided ... ok [INFO] [stdout] test ai::tests::build_prompt_with_custom_instructions_uses_override_and_structured_block ... ok [INFO] [stdout] test ai::tests::errors_when_cli_preference_value_is_invalid ... 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 ai::tests::errors_when_invalid_api_provider_is_the_only_available_path ... ok [INFO] [stdout] test config::tests::falls_back_to_provider_api_key_from_environment ... ok [INFO] [stdout] test config::tests::filters_user_list_replaces_defaults ... ok [INFO] [stdout] test config::tests::filters_default_contains_test_profile ... ok [INFO] [stdout] test config::tests::missing_file_can_still_resolve_provider_and_api_key_from_environment ... ok [INFO] [stdout] test config::tests::filters_empty_list_disables_filtering ... ok [INFO] [stdout] test config::tests::filters_is_ignored_trims_and_ignores_case ... ok [INFO] [stdout] test config::tests::normalizes_cli_preference_and_model_values ... ok [INFO] [stdout] test config::tests::normalizes_mixed_case_and_whitespace_provider_values ... ok [INFO] [stdout] test config::tests::filters_section_without_key_falls_back_to_default_list ... ok [INFO] [stdout] test config::tests::parses_ai_settings_from_toml_file ... ok [INFO] [stdout] test config::tests::parses_prompt_instructions_from_toml ... ok [INFO] [stdout] test ai::tests::prefers_configured_cli_tool_when_it_is_available ... 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_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::cli_provider::tests::ignores_model_setting_for_cli_execution ... ok [INFO] [stdout] test ai::tests::falls_back_to_detected_cli_tool_before_api ... ok [INFO] [stdout] test ai::tests::errors_when_specific_preferred_cli_is_unavailable ... ok [INFO] [stdout] test ai::tests::errors_when_no_cli_or_api_provider_is_available ... ok [INFO] [stdout] test config::tests::prefers_file_api_key_over_environment_fallback ... ok [INFO] [stdout] test config::tests::prompt_instructions_empty_or_missing_returns_none ... ok [INFO] [stdout] test db::tests::cache_round_trip_stores_and_retrieves_summary ... ok [INFO] [stdout] test db::tests::local_day_bounds_convert_to_utc_range ... ok [INFO] [stdout] test config::tests::update_auto_check_can_be_disabled ... ok [INFO] [stdout] test config::tests::provider_less_config_can_resolve_sensibly_from_environment ... ok [INFO] [stdout] test config::tests::update_auto_check_defaults_to_true ... ok [INFO] [stdout] test config::tests::returns_default_config_when_file_does_not_exist ... ok [INFO] [stdout] test db::tests::commit_count_returns_zero_for_empty_database ... ok [INFO] [stdout] test db::tests::duplicate_insertions_do_not_create_duplicate_rows ... ok [INFO] [stdout] test db::tests::creates_commits_table_with_expected_columns_and_date_repo_index ... ok [INFO] [stdout] test db::tests::insert_commit_stores_author_email_and_query_returns_it ... ok [INFO] [stdout] test db::tests::commit_count_returns_number_of_inserted_commits ... ok [INFO] [stdout] test db::tests::inserts_commits_across_days_and_queries_date_range ... ok [INFO] [stdout] test db::tests::oldest_commit_date_returns_earliest_committed_at ... ok [INFO] [stdout] test db::tests::oldest_commit_date_returns_none_for_empty_database ... ok [INFO] [stdout] test db::tests::query_datetime_range_returns_commits_within_exact_bounds ... ok [INFO] [stdout] test ai::tests::ignores_invalid_optional_api_provider_when_preferred_cli_is_available ... ok [INFO] [stdout] test hook::tests::defaults_diff_stats_to_zero_when_extraction_fails ... ok [INFO] [stdout] test hook::tests::author_email_is_none_when_config_fails ... ok [INFO] [stdout] test hook::tests::normalizes_detached_head_branch_name ... ok [INFO] [stdout] test hook::tests::parses_git_iso_timestamp_into_utc ... 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 db::tests::inserts_one_commit_and_queries_today ... 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 init::tests::build_post_commit_script_prefers_resolved_diddo_executable_with_path_fallback ... ok [INFO] [stdout] test init::tests::forwarding_wrapper_only_runs_executable_targets ... ok [INFO] [stdout] test init::tests::forwarding_wrapper_preserves_relative_hooks_path_for_runtime_resolution ... ok [INFO] [stdout] test init::tests::forwarding_wrapper_recognizes_unc_absolute_paths ... ok [INFO] [stdout] test db::tests::query_datetime_range_returns_multiple_commits_sorted_by_repo_then_time ... ok [INFO] [stdout] test db::tests::query_datetime_range_returns_empty_when_no_commits_in_range ... ok [INFO] [stdout] test hook::tests::stores_author_email_from_git_config ... ok [INFO] [stdout] test db::tests::reinserting_same_commit_updates_incomplete_metadata ... ok [INFO] [stdout] test db::tests::rejects_invalid_date_ranges ... ok [INFO] [stdout] test interactive::tests::action_from_key_ignores_unknown_keys ... ok [INFO] [stdout] test init::tests::resolves_relative_hooks_path_against_repo_context_for_ownership_checks ... ok [INFO] [stdout] test init::tests::install_with_creates_managed_hook_and_sets_global_hooks_path ... ok [INFO] [stdout] test hook::tests::stores_git_metadata_in_database ... ok [INFO] [stdout] test interactive::tests::action_from_key_maps_navigation_keys ... ok [INFO] [stdout] test interactive::tests::action_from_key_maps_digit_keys_to_jump ... ok [INFO] [stdout] test interactive::tests::apply_action_jump_to_clamps_to_last_item ... ok [INFO] [stdout] test interactive::tests::apply_action_move_down_clamps_at_last_item ... 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 interactive::tests::range_form_accepts_dotted_date_input ... ok [INFO] [stdout] test init::tests::resolves_tilde_hooks_path_for_ownership_checks ... ok [INFO] [stdout] test interactive::tests::range_form_appends_input_to_from_field ... ok [INFO] [stdout] test interactive::tests::range_form_escape_returns_to_menu_without_command ... ok [INFO] [stdout] test interactive::tests::range_form_backspace_edits_active_field ... ok [INFO] [stdout] test interactive::tests::range_form_rejects_missing_from ... ok [INFO] [stdout] test interactive::tests::range_form_rejects_malformed_dates ... ok [INFO] [stdout] test init::tests::install_with_preserves_previous_hooks_dir_behavior_and_records_previous_path ... 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_submit_with_mixed_formats_includes_iso_to_flag ... 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 interactive::tests::selecting_activity_opens_period_select ... ok [INFO] [stdout] test interactive::tests::selecting_month_returns_month_command ... 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_rejects_from_after_to ... ok [INFO] [stdout] test paths::tests::new_places_config_and_hooks_under_the_config_directory ... ok [INFO] [stdout] test interactive::tests::range_form_validation_accepts_iso_dates ... ok [INFO] [stdout] test interactive::tests::selecting_activity_returns_none_for_inline_handling ... ok [INFO] [stdout] test paths::tests::new_uses_local_data_directory_for_database_file ... ok [INFO] [stdout] test render::tests::by_profile_markdown_appends_table_after_first_last ... ok [INFO] [stdout] test render::tests::by_profile_one_profile_one_repo_with_ai_summary ... ok [INFO] [stdout] test render::tests::by_profile_terminal_appends_table_after_first_last ... ok [INFO] [stdout] test init::tests::uninstall_with_leaves_newer_global_hooks_path_untouched ... ok [INFO] [stdout] test render::tests::by_profile_one_profile_no_ai_summary_raw_repo_list ... ok [INFO] [stdout] test render::tests::by_profile_two_profiles_two_sections ... ok [INFO] [stdout] test render::tests::markdown_groups_raw_commits_and_appends_summary_stats ... ok [INFO] [stdout] test init::tests::install_with_preserves_relative_previous_hooks_path_in_metadata_and_wrappers ... ok [INFO] [stdout] test render::tests::json_renders_pretty_serialized_summary_data ... ok [INFO] [stdout] test render::tests::markdown_summary_appends_table_after_first_last ... ok [INFO] [stdout] test render::tests::json_sorts_projects_by_commit_count_then_repo_name ... ok [INFO] [stdout] test render::tests::table_renders_sorted_repo_counts_percentages_and_total_row ... ok [INFO] [stdout] test render::tests::terminal_groups_raw_commits_by_repo_without_ai_summary ... ok [INFO] [stdout] test render::tests::terminal_breaks_group_order_ties_by_repo_name ... ok [INFO] [stdout] test render::tests::terminal_renders_ai_summary_and_stats ... ok [INFO] [stdout] test render::tests::table_breaks_ties_by_repo_name ... ok [INFO] [stdout] test render::tests::markdown_table_renders_repo_counts_percentages_and_total ... ok [INFO] [stdout] test tests::ai_attempt_keeps_json_mode_eligible_for_ai_summary ... ok [INFO] [stdout] test render::tests::terminal_summary_with_ai_appends_table_before_footer ... ok [INFO] [stdout] test render::tests::terminal_summary_without_ai_appends_table_after_first_last ... ok [INFO] [stdout] test tests::bare_top_level_json_flag_is_treated_as_interactive_invocation ... ok [INFO] [stdout] test tests::bare_top_level_md_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::builds_deterministic_summary_stats_from_commits ... ok [INFO] [stdout] test tests::ai_attempt_surfaces_warning_when_provider_fails_at_runtime ... ok [INFO] [stdout] test tests::ai_attempt_surfaces_warning_when_provider_is_unavailable ... ok [INFO] [stdout] test render::tests::terminal_table_body_can_be_embedded_after_summary_text ... ok [INFO] [stdout] test summary_group::tests::group_commits_by_profile_then_repo_two_profiles_two_repos ... ok [INFO] [stdout] test tests::date_based_windows_have_no_exact_bounds ... ok [INFO] [stdout] test tests::cache_key_is_deterministic_and_different_for_different_inputs ... ok [INFO] [stdout] test tests::disables_ai_for_raw_and_json_outputs ... ok [INFO] [stdout] test tests::derives_standup_summary_request ... 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::empty_summary_output_does_not_depend_on_config_loading ... ok [INFO] [stdout] test tests::cache_hit_returns_stored_summary ... ok [INFO] [stdout] test tests::json_output_remains_unchanged_without_table_section ... ok [INFO] [stdout] test tests::ai_failure_for_one_profile_shows_raw_for_that_profile_and_warning ... ok [INFO] [stdout] test tests::mask_api_key_hides_middle_of_long_keys ... ok [INFO] [stdout] test tests::metadata_shows_config_settings ... 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::default_terminal_output_appends_repo_table_after_ai_summary ... ok [INFO] [stdout] test tests::maps_summary_flags_to_expected_output_formats ... ok [INFO] [stdout] test tests::parse_supported_date_accepts_iso_and_dotted_formats ... ok [INFO] [stdout] test tests::derives_summary_request_from_default_and_subcommand_forms ... 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::parse_supported_date_trims_whitespace ... ok [INFO] [stdout] test tests::parse_supported_date_rejects_invalid_strings_with_shared_error_text ... 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_range_dates_in_dotted_format ... ok [INFO] [stdout] test tests::parses_default_top_level_summary_without_flags ... ok [INFO] [stdout] test db::tests::open_creates_nested_parent_directories_and_applies_schema ... ok [INFO] [stdout] test tests::parses_range_dates_in_mixed_formats ... ok [INFO] [stdout] test tests::rejects_conflicting_summary_output_flags ... ok [INFO] [stdout] test tests::rejects_invalid_range_date_format ... ok [INFO] [stdout] test tests::parses_standup_subcommand_with_summary_flags ... ok [INFO] [stdout] test db::tests::migration_adds_author_email_column_when_missing ... ok [INFO] [stdout] test tests::raw_output_does_not_append_repo_table ... ok [INFO] [stdout] test tests::rejects_pre_subcommand_summary_flags_on_non_summary_commands ... ok [INFO] [stdout] test tests::parses_subcommand_output_flags_without_changing_behavior ... ok [INFO] [stdout] test tests::rejects_range_window_when_from_is_after_to ... ok [INFO] [stdout] test tests::renders_useful_empty_period_messages_for_all_output_formats ... ok [INFO] [stdout] test tests::rejects_table_with_other_summary_output_flags ... ok [INFO] [stdout] test tests::rejects_range_without_from ... ok [INFO] [stdout] test tests::resolves_range_window_with_explicit_end_date ... ok [INFO] [stdout] test tests::resolves_range_window_without_end_date_by_defaulting_to_today ... ok [INFO] [stdout] test tests::resolves_standup_window_with_exact_24h_bounds ... ok [INFO] [stdout] test tests::rejects_summary_output_flags_on_non_summary_commands ... ok [INFO] [stdout] test tests::resolves_month_window_as_last_30_days ... ok [INFO] [stdout] test tests::resolves_week_window_as_last_7_days ... ok [INFO] [stdout] test tests::supports_long_version_flag ... ok [INFO] [stdout] test tests::standup_json_output_includes_date_label ... ok [INFO] [stdout] test tests::supports_lowercase_version_flag ... ok [INFO] [stdout] test tests::standup_renders_ai_summary_for_commits ... ok [INFO] [stdout] test tests::supports_short_version_flag ... ok [INFO] [stdout] test tests::single_profile_unknown_when_all_commits_have_no_author_email ... ok [INFO] [stdout] test tests::standup_renders_empty_period_message_when_no_commits ... ok [INFO] [stdout] test tests::standup_raw_skips_ai_and_shows_grouped_commits ... ok [INFO] [stdout] test tests::table_output_skips_ai_summary ... ok [INFO] [stdout] test update::tests::install_type_github_when_path_not_homebrew ... ok [INFO] [stdout] test update::tests::check_for_update_returns_none_when_cache_has_current_version ... ok [INFO] [stdout] test update::tests::check_for_update_returns_some_when_cache_has_newer_version ... ok [INFO] [stdout] test tests::table_output_renders_repo_totals_without_ai ... ok [INFO] [stdout] test update::tests::is_newer_returns_false_when_current_greater ... ok [INFO] [stdout] test update::tests::install_type_homebrew_when_path_contains_cellar ... 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 update::tests::install_type_homebrew_when_path_under_prefix ... ok [INFO] [stdout] test update::tests::install_type_github_when_path_not_under_given_prefix ... ok [INFO] [stdout] test init::tests::install_local_hook_adds_post_commit_to_repo_with_local_hooks_path ... ok [INFO] [stdout] test init::tests::install_local_hook_preserves_chain_when_re_run_on_diddo_managed_hook ... ok [INFO] [stdout] test init::tests::install_local_hook_chains_existing_post_commit_in_local_hooks_dir ... ok [INFO] [stdout] test interactive::tests::apply_action_jump_to_sets_index_directly ... ok [INFO] [stdout] test init::tests::uninstall_with_restores_previous_hooks_path_when_diddo_still_owns_global_setting ... ok [INFO] [stdout] test init::tests::forwarding_wrapper_recognizes_windows_drive_absolute_paths ... ok [INFO] [stdout] test interactive::tests::apply_action_move_up_saturates_at_zero ... ok [INFO] [stdout] test tests::markdown_output_appends_repo_table_by_default ... ok [INFO] [stdout] test tests::metadata_shows_correct_stats_after_inserting_commits ... 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.28s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "3ca0a5d9215fde31931aa6ff122b39799664df28c08a9d52f36f19a093a7c83a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3ca0a5d9215fde31931aa6ff122b39799664df28c08a9d52f36f19a093a7c83a", kill_on_drop: false }` [INFO] [stdout] 3ca0a5d9215fde31931aa6ff122b39799664df28c08a9d52f36f19a093a7c83a