[INFO] cloning repository https://github.com/kys0213/areum-lab-tools
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kys0213/areum-lab-tools" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkys0213%2Fareum-lab-tools", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkys0213%2Fareum-lab-tools'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 982ec43f18f3a85814fc3fc8d0989bf43b01918e
[INFO] testing kys0213/areum-lab-tools/982ec43f18f3a85814fc3fc8d0989bf43b01918e against 1.99.0-beta.1+cargoflags=--release for beta-release-1.99-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkys0213%2Fareum-lab-tools" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/kys0213/areum-lab-tools
[INFO] finished tweaking git repo https://github.com/kys0213/areum-lab-tools
[INFO] tweaked toml for git repo https://github.com/kys0213/areum-lab-tools written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kys0213/areum-lab-tools on toolchain 1.99.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kys0213/areum-lab-tools 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.99.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2
[INFO] running `Command { std: "docker" "start" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2", 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" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2", 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" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling cc v1.2.67
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling rustls-pki-types v1.15.0
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling rustls v0.23.41
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling tower-service v0.3.3
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling webpki-roots v1.0.8
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling socket2 v0.6.4
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling syn v3.0.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling ordered-float v2.10.1
[INFO] [stderr]    Compiling futures-sink v0.3.33
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.38.1
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling sha1_smol v1.0.1
[INFO] [stderr]    Compiling simdutf8 v0.1.5
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling hashlink v0.12.1
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling time v0.3.54
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling serde_repr v0.1.21
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling hello v0.0.0 (/opt/rustwide/workdir/tools/hello)
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling serde-value v0.7.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling twilight-model v0.17.1
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling twilight-gateway-queue v0.17.0
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling tokio-websockets v0.13.3
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling twilight-gateway v0.17.1
[INFO] [stderr]    Compiling rusqlite v0.40.1
[INFO] [stderr]    Compiling discord v0.3.0 (/opt/rustwide/workdir/tools/discord)
[INFO] [stderr]    Compiling kanban v0.1.0 (/opt/rustwide/workdir/tools/kanban)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 35s
[INFO] running `Command { std: "docker" "inspect" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2", 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" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling hello v0.0.0 (/opt/rustwide/workdir/tools/hello)
[INFO] [stderr]    Compiling kanban v0.1.0 (/opt/rustwide/workdir/tools/kanban)
[INFO] [stderr]    Compiling discord v0.3.0 (/opt/rustwide/workdir/tools/discord)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 7.41s
[INFO] running `Command { std: "docker" "inspect" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2", 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" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/discord-14e224bf880a92a0)
[INFO] [stdout] 
[INFO] [stdout] running 342 tests
[INFO] [stdout] test cli::tests::ask_create_parses_allow_text_and_timeout_overrides ... ok
[INFO] [stdout] test cli::tests::ask_create_requires_channel_and_question ... ok
[INFO] [stdout] test cli::tests::ask_create_parses_options_and_defaults ... ok
[INFO] [stdout] test cli::tests::ask_requires_a_subcommand ... ok
[INFO] [stdout] test cli::tests::ask_result_parses_ask_id ... ok
[INFO] [stdout] test cli::tests::config_flag_overrides_default_path ... ok
[INFO] [stdout] test cli::tests::daemon_requires_a_subcommand ... ok
[INFO] [stdout] test cli::tests::ask_wait_parses_timeout_and_interval_overrides ... ok
[INFO] [stdout] test cli::tests::ask_wait_uses_default_timeout_and_interval_when_omitted ... ok
[INFO] [stdout] test cli::tests::daemon_start_defaults_to_background ... ok
[INFO] [stdout] test cli::tests::daemon_start_parses_foreground_flag ... ok
[INFO] [stdout] test cli::tests::force_flag_is_rejected_on_send ... ok
[INFO] [stdout] test cli::tests::daemon_stop_and_status_parse ... ok
[INFO] [stdout] test cli::tests::foreground_flag_is_rejected_on_daemon_stop ... ok
[INFO] [stdout] test cli::tests::global_flags_apply_alongside_subcommand ... ok
[INFO] [stdout] test cli::tests::init_defaults_no_token_no_force ... ok
[INFO] [stdout] test cli::tests::init_parses_force_flag ... ok
[INFO] [stdout] test cli::tests::human_flag_is_rejected_as_unknown ... ok
[INFO] [stdout] test cli::tests::init_parses_token_and_force_together ... ok
[INFO] [stdout] test cli::tests::init_parses_token_flag ... ok
[INFO] [stdout] test cli::tests::read_parses_after_and_limit_overrides ... ok
[INFO] [stdout] test cli::tests::json_flag_parses_after_subcommand_and_args ... ok
[INFO] [stdout] test cli::tests::read_uses_default_limit_when_omitted ... ok
[INFO] [stdout] test cli::tests::reply_to_flag_is_rejected_on_read ... ok
[INFO] [stdout] test cli::tests::send_collects_repeated_file_flags_in_order ... ok
[INFO] [stdout] test cli::tests::send_parses_body_positional ... ok
[INFO] [stdout] test cli::tests::thread_create_parses_from_message_flag ... ok
[INFO] [stdout] test cli::tests::thread_create_json_flag_parses_after_subcommand_and_args ... ok
[INFO] [stdout] test cli::tests::reply_to_flag_is_rejected_on_wait ... ok
[INFO] [stdout] test cli::tests::send_parses_reply_to_flag ... ok
[INFO] [stdout] test cli::tests::missing_subcommand_is_a_usage_error ... ok
[INFO] [stdout] test cli::tests::send_parses_text_flag ... ok
[INFO] [stdout] test cli::tests::wait_uses_default_timeout_interval_and_limit_when_omitted ... ok
[INFO] [stdout] test cli::tests::thread_create_parses_name_flag ... ok
[INFO] [stdout] test commands::ask::tests::create_accepts_timeout_at_30_day_upper_bound ... ok
[INFO] [stdout] test cli::tests::thread_create_requires_name_flag ... ok
[INFO] [stdout] test cli::tests::wait_parses_all_overrides ... ok
[INFO] [stdout] test commands::ask::tests::create_rejects_blank_option_label ... ok
[INFO] [stdout] test commands::ask::tests::create_accepts_option_label_at_80_char_limit ... ok
[INFO] [stdout] test commands::ask::tests::create_rejects_option_label_over_80_chars ... ok
[INFO] [stdout] test commands::ask::tests::create_rejects_zero_options ... ok
[INFO] [stdout] test commands::ask::tests::create_rejects_zero_timeout ... ok
[INFO] [stdout] test commands::ask::tests::create_rejects_blank_question ... ok
[INFO] [stdout] test commands::ask::tests::create_rejects_more_than_four_options ... ok
[INFO] [stdout] test commands::ask::tests::create_accepts_four_options_with_allow_text ... ok
[INFO] [stdout] test commands::ask::tests::create_rejects_timeout_over_30_days ... ok
[INFO] [stdout] test commands::ask::tests::create_errors_when_daemon_is_not_running ... ok
[INFO] [stdout] test commands::ask::tests::create_orphans_message_when_insert_fails_after_components_patch_succeeds ... ok
[INFO] [stdout] test commands::ask::tests::wait_rejects_interval_zero ... ok
[INFO] [stdout] test commands::ask::tests::create_marks_message_and_propagates_error_when_components_patch_fails ... ok
[INFO] [stdout] test commands::ask::tests::result_reports_pending ... ok
[INFO] [stdout] test commands::ask::tests::result_reports_answered_with_all_fields ... ok
[INFO] [stdout] test commands::ask::tests::create_sends_then_patches_components_then_inserts_pending_ask ... ok
[INFO] [stdout] test commands::daemon::tests::acquire_pidfile_errors_when_a_live_pid_already_holds_it ... ok
[INFO] [stdout] test commands::ask::tests::create_omits_text_button_when_allow_text_is_false ... ok
[INFO] [stdout] test commands::daemon::tests::acquire_pidfile_succeeds_when_no_pidfile_exists ... ok
[INFO] [stdout] test commands::ask::tests::result_reports_timed_out ... ok
[INFO] [stdout] test commands::daemon::tests::acquire_pidfile_reclaims_a_stale_pidfile ... ok
[INFO] [stdout] test commands::ask::tests::wait_errors_for_unknown_ask_id ... ok
[INFO] [stdout] test commands::ask::tests::result_errors_for_unknown_ask_id ... ok
[INFO] [stdout] test commands::daemon::tests::is_daemon_running_false_when_pidfile_missing ... ok
[INFO] [stdout] test commands::ask::tests::wait_with_interval_greater_than_timeout_still_polls_exactly_once ... ok
[INFO] [stdout] test commands::daemon::tests::is_daemon_running_true_for_a_live_pid ... ok
[INFO] [stdout] test commands::daemon::tests::is_daemon_running_false_when_pidfile_pid_already_exited ... ok
[INFO] [stdout] test commands::ask::tests::wait_exhausts_poll_budget_and_reports_poll_timed_out ... ok
[INFO] [stdout] test commands::daemon::tests::parse_pid_accepts_positive_trimmed_number ... ok
[INFO] [stdout] test commands::daemon::tests::parse_pid_rejects_garbage_and_nonpositive ... ok
[INFO] [stdout] test commands::daemon::tests::pid_is_alive_false_for_unused_pid ... ok
[INFO] [stdout] test commands::ask::tests::wait_returns_immediately_when_already_answered ... ok
[INFO] [stdout] test commands::daemon::tests::acquire_pidfile_is_atomic_under_concurrent_attempts ... ok
[INFO] [stdout] test commands::daemon::tests::pidfile_roundtrips_and_missing_reads_none ... ok
[INFO] [stdout] test commands::daemon::tests::second_create_failure_error_reports_internal_for_a_genuine_io_error ... ok
[INFO] [stdout] test commands::daemon::tests::release_own_pidfile_removes_its_own_entry ... ok
[INFO] [stdout] test commands::daemon::tests::pid_is_alive_true_for_self ... ok
[INFO] [stdout] test commands::ask::tests::wait_falls_back_to_local_try_timeout_when_ask_deadline_already_passed ... ok
[INFO] [stdout] test commands::daemon::tests::second_create_failure_error_reports_internal_when_no_live_pid_explains_it ... ok
[INFO] [stdout] test commands::init::tests::run_init_empty_token_check_happens_before_any_file_io ... ok
[INFO] [stdout] test commands::daemon::tests::release_own_pidfile_preserves_a_foreign_entry ... ok
[INFO] [stdout] test commands::daemon::tests::second_create_failure_error_reports_usage_when_a_live_pid_now_holds_it ... ok
[INFO] [stdout] test commands::init::tests::run_init_creates_fresh_config_with_token ... ok
[INFO] [stdout] test commands::init::tests::run_init_force_with_unparseable_existing_config_fails_fast ... ok
[INFO] [stdout] test commands::init::tests::run_init_rejects_completely_empty_stdin_token ... ok
[INFO] [stdout] test commands::init::tests::run_init_force_preserves_channels_and_replaces_token ... ok
[INFO] [stdout] test commands::init::tests::run_init_rejects_empty_token_flag ... ok
[INFO] [stdout] test commands::init::tests::run_init_rejects_empty_stdin_token ... ok
[INFO] [stdout] test commands::ask::tests::wait_polls_and_returns_as_soon_as_answered ... ok
[INFO] [stdout] test commands::daemon::tests::stop_errors_when_pidfile_pid_already_exited ... ok
[INFO] [stdout] test commands::read::tests::run_read_accepts_limit_boundaries_1_and_100 ... ok
[INFO] [stdout] test commands::read::tests::run_read_cursor_is_numeric_max_not_lexical_max ... ok
[INFO] [stdout] test commands::init::tests::run_init_rejects_existing_file_without_force_and_leaves_it_unchanged ... ok
[INFO] [stdout] test commands::init::tests::run_init_force_without_channels_keeps_minimal_form ... ok
[INFO] [stdout] test commands::init::tests::run_init_trims_leading_and_trailing_whitespace_from_stdin_token ... ok
[INFO] [stdout] test commands::read::tests::run_read_empty_result_echoes_input_after_when_some ... ok
[INFO] [stdout] test commands::init::tests::run_init_trims_trailing_newline_from_stdin_token ... ok
[INFO] [stdout] test commands::read::tests::run_read_empty_result_with_no_after_has_none_cursor ... ok
[INFO] [stdout] test commands::ask::tests::create_to_modal_submit_to_result_round_trips_through_the_real_contract ... ok
[INFO] [stdout] test commands::read::tests::run_read_passes_channel_after_and_limit_to_api ... ok
[INFO] [stdout] test commands::ask::tests::create_to_choice_click_to_result_round_trips_through_the_real_contract ... ok
[INFO] [stdout] test commands::read::tests::run_read_rejects_limit_over_100 ... ok
[INFO] [stdout] test commands::read::tests::run_read_rejects_limit_zero ... ok
[INFO] [stdout] test commands::read::tests::run_read_sorts_descending_input_to_ascending_output ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_falls_back_to_octet_stream_for_unknown_extension ... ok
[INFO] [stdout] test commands::read::tests::run_read_rejects_non_numeric_message_id_as_api_error ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_infers_mime_from_extension ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_falls_back_to_octet_stream_without_extension ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_read_error_is_usage_with_path ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_rejects_empty_file ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_accepts_exactly_max_bytes ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_rejects_file_over_max_bytes ... ok
[INFO] [stdout] test commands::send::tests::resolve_file_uses_last_path_component_as_filename ... ok
[INFO] [stdout] test commands::send::tests::resolve_files_rejects_more_than_ten ... ok
[INFO] [stdout] test commands::send::tests::resolve_files_accepts_exactly_ten ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_allows_2000_chars ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_files_present_allows_2000_chars ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_counts_multibyte_chars_not_bytes ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_files_present_body_dash_reads_stdin ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_files_present_body_is_used_as_caption ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_files_present_no_body_gives_empty_caption_without_reading_stdin ... ok
[INFO] [stdout] test commands::daemon::tests::confirm_child_started_errors_when_child_exits_before_claiming_pidfile ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_files_present_text_flag_is_used_as_caption ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_files_present_still_enforces_2000_char_cap ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_reads_stdin_when_body_and_text_absent ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_preserves_trailing_newline_from_stdin ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_rejects_empty_body ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_reads_stdin_when_body_is_dash ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_stdin_failure_is_internal_error ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_rejects_2001_chars ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_uses_body_when_provided ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_uses_text_when_provided ... ok
[INFO] [stdout] test commands::send::tests::run_send_maps_sent_message_attachments_to_send_data ... ok
[INFO] [stdout] test commands::send::tests::run_send_body_positional_content_is_independent_of_reply_to ... ok
[INFO] [stdout] test commands::ask::tests::wait_with_zero_timeout_polls_once_immediately_without_sleeping ... ok
[INFO] [stdout] test commands::send::tests::run_send_passes_files_and_reply_to_together ... ok
[INFO] [stdout] test commands::send::tests::resolve_send_content_rejects_body_and_text_together ... ok
[INFO] [stdout] test commands::send::tests::run_send_passes_reply_to_some_into_send_request ... ok
[INFO] [stdout] test commands::send::tests::run_send_passes_resolved_files_into_send_request ... ok
[INFO] [stdout] test commands::send::tests::run_send_rejects_empty_reply_to ... ok
[INFO] [stdout] test commands::send::tests::run_send_passes_reply_to_none_into_send_request ... ok
[INFO] [stdout] test commands::send::tests::run_send_rejects_empty_reply_to_before_touching_files ... ok
[INFO] [stdout] test commands::send::tests::run_send_stdin_content_is_independent_of_reply_to ... ok
[INFO] [stdout] test commands::thread::tests::api_error_propagates_as_is ... ok
[INFO] [stdout] test commands::send::tests::run_send_maps_sent_message_fields_to_send_data ... ok
[INFO] [stdout] test commands::thread::tests::run_thread_create_rejects_empty_from_message ... ok
[INFO] [stdout] test commands::thread::tests::channel_thread_creation_maps_to_thread_data ... ok
[INFO] [stdout] test commands::thread::tests::message_derived_thread_propagates_message_id_to_the_api_call ... ok
[INFO] [stdout] test commands::thread::tests::run_thread_create_rejects_empty_name ... ok
[INFO] [stdout] test commands::thread::tests::thread_id_can_be_used_as_send_channel_id ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_polls_at_least_once_when_timeout_is_zero ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_poll_count_is_exact_when_timeout_divides_interval_evenly ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_rejects_interval_zero ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_propagates_api_error_immediately ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_returns_immediately_when_first_poll_has_messages ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_rejects_limit_out_of_range ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_sleeps_n_minus_1_times_before_nth_poll_has_messages ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_sorts_and_derives_cursor_same_as_read_when_found ... ok
[INFO] [stdout] test commands::wait::tests::run_wait_times_out_after_ceil_polls_all_empty ... ok
[INFO] [stdout] test common::api::tests::attachment_deserialize_fails_when_size_is_missing ... ok
[INFO] [stdout] test common::api::tests::attachment_deserialize_fails_when_url_is_missing ... ok
[INFO] [stdout] test common::api::tests::attachment_deserializes_with_content_type ... ok
[INFO] [stdout] test common::api::tests::attachment_deserializes_without_content_type ... ok
[INFO] [stdout] test common::api::tests::attachment_serialize_omits_content_type_key_when_none ... ok
[INFO] [stdout] test common::api::tests::author_bot_defaults_to_false_when_field_is_absent ... ok
[INFO] [stdout] test common::api::tests::message_with_absent_author_bot_field_deserializes ... ok
[INFO] [stdout] test common::api::tests::sent_message_deserializes_with_empty_attachments_when_key_is_absent ... ok
[INFO] [stdout] test common::api::tests::sent_message_deserializes_with_populated_attachments ... ok
[INFO] [stdout] test common::config::tests::channel_alias_is_substituted ... ok
[INFO] [stdout] test common::config::tests::channel_unknown_passes_through_as_raw_id ... ok
[INFO] [stdout] test common::config::tests::load_config_missing_file_returns_none_not_error ... ok
[INFO] [stdout] test common::config::tests::parse_config_allows_empty_object ... ok
[INFO] [stdout] test common::config::tests::parse_config_reads_both_fields ... ok
[INFO] [stdout] test common::api::tests::message_deserializes_with_empty_attachments_when_key_is_absent ... ok
[INFO] [stdout] test common::api::tests::message_deserializes_with_empty_content ... ok
[INFO] [stdout] test common::config::tests::parse_config_rejects_malformed_json ... ok
[INFO] [stdout] test common::config::tests::serialize_config_includes_non_empty_channels ... ok
[INFO] [stdout] test common::config::tests::token_absent_is_config_error ... ok
[INFO] [stdout] test common::api::tests::message_deserializes_with_populated_attachments ... ok
[INFO] [stdout] test common::config::tests::serialize_config_omits_empty_channels ... ok
[INFO] [stdout] test common::config::tests::token_falls_back_to_config ... ok
[INFO] [stdout] test common::config::tests::token_prefers_env_over_config ... ok
[INFO] [stdout] test common::config::tests::token_prefers_flag_over_env_and_config ... ok
[INFO] [stdout] test common::error::tests::exit_code_maps_every_kind ... ok
[INFO] [stdout] test common::http::tests::build_create_thread_payload_contains_only_name ... ok
[INFO] [stdout] test common::http::tests::build_send_payload_files_and_reply_coexist ... ok
[INFO] [stdout] test common::http::tests::build_send_payload_includes_attachments_descriptor_when_files_present ... ok
[INFO] [stdout] test common::http::tests::build_send_payload_includes_message_reference_when_reply_to_is_some ... ok
[INFO] [stdout] test common::config::tests::write_config_file_creates_parent_dir_and_writes_minimal_json ... ok
[INFO] [stdout] test common::config::tests::write_config_file_sets_dir_700_and_file_600 ... ok
[INFO] [stdout] test common::http::tests::build_send_payload_omits_attachments_key_when_no_files ... ok
[INFO] [stdout] test common::http::tests::classify_status_maps_other_statuses_to_api ... ok
[INFO] [stdout] test common::http::tests::build_send_payload_omits_message_reference_key_when_reply_to_is_none ... ok
[INFO] [stdout] test common::http::tests::create_thread_url_uses_channel_threads_endpoint_when_no_message_id ... ok
[INFO] [stdout] test common::http::tests::created_thread_deserialize_fails_when_name_is_missing ... ok
[INFO] [stdout] test common::http::tests::created_thread_deserializes_with_required_fields_only ... ok
[INFO] [stdout] test common::http::tests::create_thread_url_uses_message_threads_endpoint_when_message_id_present ... ok
[INFO] [stdout] test common::http::tests::deserialize_error_maps_json_parse_failure_to_api_kind_without_fallback ... ok
[INFO] [stdout] test common::http::tests::edit_message_url_targets_message_endpoint ... ok
[INFO] [stdout] test common::http::tests::deserialize_error_caps_body_snippet_to_200_chars_multibyte_safe ... ok
[INFO] [stdout] test common::http::tests::classify_status_maps_auth_statuses ... ok
[INFO] [stdout] test common::http::tests::get_messages_url_includes_after_when_present ... ok
[INFO] [stdout] test common::http::tests::get_messages_url_omits_after_when_absent ... ok
[INFO] [stdout] test common::http::tests::interaction_callback_url_targets_callback_endpoint ... ok
[INFO] [stdout] test common::http::tests::messages_deserialize_with_attachments_key_absent_as_empty_vec ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_parses_huge_seconds_but_should_retry_after_suppresses_it ... ok
[INFO] [stdout] test common::http::tests::messages_deserialize_with_empty_content_and_unknown_fields ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_prefers_header_over_body ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_none_when_neither_parses ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_reads_header_integer_seconds ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_reads_header_seconds ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_reads_body_seconds ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_rejects_nan_and_infinite_header_seconds ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_rejects_negative_header_seconds ... ok
[INFO] [stdout] test common::http::tests::sent_message_deserializes_from_full_discord_message_payload ... ok
[INFO] [stdout] test common::http::tests::parse_retry_after_falls_back_to_body_when_header_is_hostile ... ok
[INFO] [stdout] test common::http::tests::should_retry_after_allows_up_to_300_seconds ... ok
[INFO] [stdout] test common::http::tests::status_error_preserves_http_status_for_auth_kind ... ok
[INFO] [stdout] test common::http::tests::status_error_maps_403_to_auth_kind_and_preserves_body ... ok
[INFO] [stdout] test common::http::tests::status_error_preserves_thread_already_created_body_verbatim ... ok
[INFO] [stdout] test common::store::tests::ask_status_from_sql_errors_on_unknown_status_instead_of_defaulting ... ok
[INFO] [stdout] test common::http::tests::status_error_preserves_http_status_for_api_kind ... ok
[INFO] [stdout] test common::store::tests::cleanup_rejects_malformed_now ... ok
[INFO] [stdout] test common::store::tests::cleanup_preserves_pending_rows_regardless_of_age ... ok
[INFO] [stdout] test common::store::tests::cleanup_keeps_row_exactly_at_cutoff_boundary ... ok
[INFO] [stdout] test common::store::tests::expire_due_rejects_malformed_now ... ok
[INFO] [stdout] test common::store::tests::expire_due_expires_offset_timeout_that_is_past_in_utc ... ok
[INFO] [stdout] test common::store::tests::expire_due_includes_boundary_timeout_equal_to_now ... ok
[INFO] [stdout] test common::store::tests::cleanup_deletes_resolved_rows_past_retention_and_keeps_recent_ones ... ok
[INFO] [stdout] test common::store::tests::count_pending_counts_only_pending_asks ... ok
[INFO] [stdout] test common::store::tests::get_ask_missing_returns_none ... ok
[INFO] [stdout] test common::store::tests::insert_ask_normalizes_offset_timestamps_to_utc ... ok
[INFO] [stdout] test common::store::tests::insert_then_get_roundtrips_all_fields ... ok
[INFO] [stdout] test common::store::tests::now_rfc3339_roundtrips_unchanged_through_insert_ask ... ok
[INFO] [stdout] test common::store::tests::insert_ask_rejects_malformed_timestamp ... ok
[INFO] [stdout] test common::store::tests::expire_due_transitions_only_overdue_pending_asks ... ok
[INFO] [stdout] test common::store::tests::options_json_roundtrips_through_insert_and_get ... ok
[INFO] [stdout] test common::store::tests::schema_check_rejects_unknown_status_at_write_time ... ok
[INFO] [stdout] test common::store::tests::schema_check_rejects_invalid_options_json_at_write_time ... ok
[INFO] [stdout] test common::store::tests::try_answer_is_false_once_already_timed_out ... ok
[INFO] [stdout] test common::store::tests::try_answer_normalizes_offset_answered_at ... ok
[INFO] [stdout] test common::store::tests::try_answer_rejects_malformed_answered_at ... ok
[INFO] [stdout] test commands::ask::tests::wait_local_expiry_and_daemon_sweep_race_without_diverging ... ok
[INFO] [stdout] test common::store::tests::try_timeout_transitions_pending_to_timed_out ... ok
[INFO] [stdout] test common::store::tests::try_timeout_is_false_once_already_answered ... ok
[INFO] [stdout] test common::store::tests::try_answer_rejects_second_response_after_first_wins ... ok
[INFO] [stdout] test common::store::tests::try_answer_transitions_pending_to_answered ... ok
[INFO] [stdout] test common::time::tests::epoch_is_unix_zero ... ok
[INFO] [stdout] test common::time::tests::known_instant_formats_to_utc ... ok
[INFO] [stdout] test common::time::tests::leap_day_is_handled ... ok
[INFO] [stdout] test common::time::tests::now_has_canonical_shape ... ok
[INFO] [stdout] test common::time::tests::rfc3339_after_secs_is_later_than_now ... ok
[INFO] [stdout] test common::time::tests::rfc3339_after_secs_saturates_instead_of_overflowing ... ok
[INFO] [stdout] test daemon::gateway::tests::fatal_close_maps_to_non_retryable_auth_error ... ok
[INFO] [stdout] test daemon::gateway::tests::unexpected_stream_end_maps_to_network_error ... ok
[INFO] [stdout] test daemon::interactions::tests::choice_after_expire_receives_ephemeral_and_leaves_timed_out_record ... ok
[INFO] [stdout] test daemon::interactions::tests::choice_click_in_dm_uses_top_level_user_id ... ok
[INFO] [stdout] test daemon::interactions::tests::choice_click_without_member_or_user_fails_fast ... ok
[INFO] [stdout] test daemon::interactions::tests::choice_loss_sends_ephemeral ... ok
[INFO] [stdout] test daemon::interactions::tests::choice_win_adopts_answer_and_updates_message ... ok
[INFO] [stdout] test daemon::interactions::tests::choice_win_persists_the_answer_even_when_the_callback_fails ... ok
[INFO] [stdout] test daemon::interactions::tests::duplicate_option_labels_resolve_by_index_not_by_text ... ok
[INFO] [stdout] test daemon::interactions::tests::expire_and_disable_gives_up_after_max_attempts ... ok
[INFO] [stdout] test daemon::interactions::tests::expire_and_disable_isolates_failures_and_retries_transient_ones_next_tick ... ok
[INFO] [stdout] test daemon::interactions::tests::expire_and_disable_noop_when_nothing_due ... ok
[INFO] [stdout] test commands::daemon::tests::confirm_child_started_succeeds_when_pidfile_appears_before_child_exits ... ok
[INFO] [stdout] test daemon::interactions::tests::extract_modal_text_finds_value_regardless_of_nesting ... ok
[INFO] [stdout] test daemon::interactions::tests::expire_and_disable_transitions_due_asks_and_edits_messages ... ok
[INFO] [stdout] test daemon::interactions::tests::foreign_custom_id_is_ignored_without_response ... ok
[INFO] [stdout] test daemon::interactions::tests::missing_custom_id_is_ignored ... ok
[INFO] [stdout] test daemon::interactions::tests::modal_submit_after_expire_receives_ephemeral_and_does_not_adopt ... ok
[INFO] [stdout] test daemon::interactions::tests::modal_submit_missing_value_fails_fast ... ok
[INFO] [stdout] test daemon::interactions::tests::modal_submit_loss_sends_ephemeral ... ok
[INFO] [stdout] test daemon::interactions::tests::modal_submit_rejected_when_allow_text_is_false ... ok
[INFO] [stdout] test daemon::interactions::tests::modal_submit_win_adopts_text_answer ... ok
[INFO] [stdout] test daemon::interactions::tests::modal_submit_with_choice_shaped_custom_id_is_ignored ... ok
[INFO] [stdout] test daemon::interactions::tests::out_of_range_option_sends_ephemeral ... ok
[INFO] [stdout] test daemon::interactions::tests::parse_custom_id_reads_choice_and_text ... ok
[INFO] [stdout] test daemon::interactions::tests::parse_custom_id_rejects_foreign_and_malformed ... ok
[INFO] [stdout] test daemon::interactions::tests::text_button_click_rejected_when_allow_text_is_false ... ok
[INFO] [stdout] test daemon::interactions::tests::text_button_opens_modal_with_label_wrapped_text_input ... ok
[INFO] [stdout] test common::store::tests::concurrent_first_open_of_same_file_both_succeed ... ok
[INFO] [stdout] test output::envelope::tests::ask_create_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::ask_result_answered_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::ask_result_pending_matches_contract ... ok
[INFO] [stdout] test daemon::interactions::tests::unknown_ask_id_sends_ephemeral ... ok
[INFO] [stdout] test daemon::interactions::tests::text_button_opens_modal_with_title_truncated_to_45_chars ... ok
[INFO] [stdout] test output::envelope::tests::ask_result_timed_out_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::ask_wait_flattens_result_alongside_its_own_timed_out_field ... ok
[INFO] [stdout] test common::store::tests::open_sets_busy_timeout_for_file_backed_db ... ok
[INFO] [stdout] test output::envelope::tests::error_includes_http_status_and_retry ... ok
[INFO] [stdout] test output::envelope::tests::error_omits_absent_optionals ... ok
[INFO] [stdout] test output::envelope::tests::init_error_json_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::init_overwrite_reports_created_false ... ok
[INFO] [stdout] test output::envelope::tests::init_overwrite_success_matches_contract_exactly ... ok
[INFO] [stdout] test output::envelope::tests::init_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::read_cursor_none_serializes_as_null ... ok
[INFO] [stdout] test output::envelope::tests::read_success_has_no_timed_out_field ... ok
[INFO] [stdout] test output::envelope::tests::read_success_with_attachment_bearing_message_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::send_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::send_success_with_attachments_includes_full_fields ... ok
[INFO] [stdout] test output::envelope::tests::thread_duplicate_creation_error_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::thread_permission_denied_error_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::thread_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::wait_success_includes_timed_out ... ok
[INFO] [stdout] test output::envelope::tests::wait_success_with_attachment_bearing_message_matches_contract ... ok
[INFO] [stdout] test output::payload::tests::human_ask_create_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_ask_result_answered_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_ask_result_pending_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_ask_result_timed_out_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_ask_wait_poll_timeout_is_distinct_from_ask_timed_out_status ... ok
[INFO] [stdout] test output::payload::tests::human_init_success_renders_readable_text_without_token ... ok
[INFO] [stdout] test output::payload::tests::human_read_success_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_read_success_routes_to_stdout ... ok
[INFO] [stdout] test output::payload::tests::human_read_success_with_attachment_lists_filename_not_url ... ok
[INFO] [stdout] test output::payload::tests::human_read_success_without_attachments_is_unchanged ... ok
[INFO] [stdout] test output::payload::tests::human_send_success_with_attachments_lists_filenames_not_urls ... ok
[INFO] [stdout] test output::payload::tests::human_send_success_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_thread_success_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_wait_success_routes_to_stdout ... ok
[INFO] [stdout] test output::payload::tests::human_wait_new_messages_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_wait_timeout_renders_readable_text ... ok
[INFO] [stdout] test output::payload::tests::human_wait_success_with_attachment_lists_filename_not_url ... ok
[INFO] [stdout] test output::payload::tests::init_output_never_contains_token_value_in_human_or_json ... ok
[INFO] [stdout] test output::tests::human_error_reports_kind_and_status ... ok
[INFO] [stdout] test output::tests::exit_code_matches_across_json_and_human_modes_for_every_kind ... ok
[INFO] [stdout] test output::tests::json_mode_error_still_routes_to_stdout ... ok
[INFO] [stdout] test output::tests::human_success_output_never_contains_json_envelope_marker ... ok
[INFO] [stdout] test output::tests::json_read_success_routes_to_stdout_with_exit_zero ... ok
[INFO] [stdout] test output::tests::init_error_human_and_json_never_contain_token_value ... ok
[INFO] [stdout] test output::tests::json_wait_success_with_attachments_routes_to_stdout_with_exit_zero ... ok
[INFO] [stdout] test output::tests::human_mode_error_routes_to_stderr_not_stdout ... ok
[INFO] [stdout] test tests::init_creates_config_at_config_flag_override_path ... ok
[INFO] [stdout] test common::store::tests::open_creates_wal_file_for_file_backed_db ... ok
[INFO] [stdout] test common::store::tests::reopening_existing_file_db_is_idempotent ... ok
[INFO] [stdout] test common::store::tests::click_win_leaves_ask_untouched_by_later_expire_sweep ... ok
[INFO] [stdout] test commands::daemon::tests::acquire_pidfile_waits_out_the_winners_write_instead_of_stealing_an_empty_pidfile ... ok
[INFO] [stdout] test commands::daemon::tests::confirm_child_started_errors_when_budget_is_exhausted_with_child_still_alive ... ok
[INFO] [stdout] test common::store::tests::two_connections_see_each_others_inserts ... ok
[INFO] [stdout] test common::store::tests::expire_win_rejects_later_click_on_separate_connection ... ok
[INFO] [stdout] test common::store::tests::open_recovers_from_migration_crash_between_ddl_and_version_stamp ... ok
[INFO] [stdout] test common::store::tests::two_connections_racing_try_answer_exactly_one_wins ... ok
[INFO] [stdout] test common::store::tests::two_connections_racing_click_and_expire_exactly_one_wins ... ok
[INFO] [stdout] test commands::daemon::tests::stop_sends_sigterm_waits_for_exit_and_removes_pidfile ... ok
[INFO] [stdout] test commands::daemon::tests::acquire_pidfile_reclaims_a_pidfile_that_stays_empty_past_the_settle_budget ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 342 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.54s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/hello-a93247f52a694f0a)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test tests::greeting_includes_name ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/deps/kanban-81899eb84b28f90b)
[INFO] [stdout] 
[INFO] [stdout] running 157 tests
[INFO] [stdout] test cli::tests::add_accepts_dash_body_for_stdin ... ok
[INFO] [stdout] test cli::tests::add_parses_every_required_flag ... ok
[INFO] [stdout] test cli::tests::add_requires_all_four_flags ... ok
[INFO] [stdout] test cli::tests::done_parses_the_item_id ... ok
[INFO] [stdout] test cli::tests::assign_priority_is_optional ... ok
[INFO] [stdout] test cli::tests::assign_parses_priority_when_given ... ok
[INFO] [stdout] test cli::tests::every_state_token_round_trips_through_the_cli ... ok
[INFO] [stdout] test cli::tests::every_priority_token_round_trips_through_the_cli ... ok
[INFO] [stdout] test cli::tests::init_parses_without_arguments ... ok
[INFO] [stdout] test cli::tests::global_flags_parse_before_and_after_the_subcommand ... ok
[INFO] [stdout] test cli::tests::list_parses_every_filter ... ok
[INFO] [stdout] test cli::tests::list_filters_default_to_none ... ok
[INFO] [stdout] test cli::tests::missing_subcommand_is_a_usage_error ... ok
[INFO] [stdout] test cli::tests::list_rejects_an_unknown_state ... ok
[INFO] [stdout] test cli::tests::move_requires_both_id_and_state ... ok
[INFO] [stdout] test cli::tests::project_add_parses_name_and_desc ... ok
[INFO] [stdout] test cli::tests::next_requires_project_session_and_agent ... ok
[INFO] [stdout] test cli::tests::project_add_requires_desc ... ok
[INFO] [stdout] test cli::tests::project_requires_a_subcommand ... ok
[INFO] [stdout] test cli::tests::project_rm_parses_name ... ok
[INFO] [stdout] test cli::tests::reason_flag_is_rejected_outside_release ... ok
[INFO] [stdout] test cli::tests::show_parses_the_item_id ... ok
[INFO] [stdout] test cli::tests::release_requires_a_reason ... ok
[INFO] [stdout] test commands::add::tests::add_lands_the_item_in_inbox_with_the_minted_id ... ok
[INFO] [stdout] test commands::init::tests::first_init_creates_the_board_and_reports_created ... ok
[INFO] [stdout] test commands::done::tests::done_on_a_missing_item_is_not_found ... ok
[INFO] [stdout] test commands::add::tests::dash_body_reads_the_body_from_stdin ... ok
[INFO] [stdout] test commands::add::tests::a_repeated_source_and_external_id_pair_is_a_conflict ... ok
[INFO] [stdout] test commands::init::tests::second_init_on_the_same_path_reports_not_created ... ok
[INFO] [stdout] test commands::assign::tests::assign_of_a_missing_item_is_not_found ... ok
[INFO] [stdout] test commands::assign::tests::assign_to_an_unknown_project_is_not_found ... ok
[INFO] [stdout] test commands::done::tests::done_on_a_backlog_item_is_a_conflict ... ok
[INFO] [stdout] test commands::assign::tests::assign_without_a_priority_keeps_the_one_the_item_had ... ok
[INFO] [stdout] test commands::assign::tests::assign_rejects_an_unknown_priority_token_and_changes_nothing ... ok
[INFO] [stdout] test commands::list::tests::label_filter_matches_the_key_not_the_value ... ok
[INFO] [stdout] test commands::assign::tests::assign_moves_an_inbox_item_to_backlog_and_reports_both_ends ... ok
[INFO] [stdout] test commands::assign::tests::assigning_an_already_assigned_item_is_a_conflict ... ok
[INFO] [stdout] test commands::done::tests::done_completes_a_claimed_item_and_preserves_the_session_that_did_it ... ok
[INFO] [stdout] test commands::done::tests::done_on_an_unclaimed_item_is_a_conflict ... ok
[INFO] [stdout] test commands::list::tests::list_is_empty_for_a_fresh_board ... ok
[INFO] [stdout] test commands::move_item::tests::move_of_a_missing_item_is_not_found ... ok
[INFO] [stdout] test commands::move_item::tests::moving_an_unassigned_item_into_a_project_state_is_a_conflict ... ok
[INFO] [stdout] test commands::list::tests::list_filters_by_project_state_and_label_and_reads_labels_back ... ok
[INFO] [stdout] test commands::next::tests::claiming_from_an_unregistered_project_answers_id_null_rather_than_not_found ... ok
[INFO] [stdout] test commands::move_item::tests::moving_an_unclaimed_item_to_running_is_a_conflict_that_points_at_next ... ok
[INFO] [stdout] test commands::priority::tests::priority_of_a_missing_item_is_not_found ... ok
[INFO] [stdout] test commands::next::tests::claiming_an_empty_backlog_answers_id_null_rather_than_an_error ... ok
[INFO] [stdout] test commands::move_item::tests::moving_to_an_unknown_state_token_is_a_usage_error ... ok
[INFO] [stdout] test commands::move_item::tests::move_reports_both_ends_of_the_transition ... ok
[INFO] [stdout] test commands::move_item::tests::moving_back_to_inbox_clears_the_project_and_the_claim ... ok
[INFO] [stdout] test commands::priority::tests::an_unknown_priority_token_is_a_usage_error_and_changes_nothing ... ok
[INFO] [stdout] test commands::next::tests::a_claim_reports_the_item_and_the_holder_it_just_recorded ... ok
[INFO] [stdout] test common::config::tests::db_flag_wins_over_the_home_default ... ok
[INFO] [stdout] test common::config::tests::default_db_path_lives_under_the_areum_tool_directory ... ok
[INFO] [stdout] test common::config::tests::missing_home_is_tolerated_when_db_is_given ... ok
[INFO] [stdout] test common::config::tests::missing_home_without_db_flag_is_a_config_error ... ok
[INFO] [stdout] test common::error::tests::every_kind_serializes_as_its_documented_snake_case_name ... ok
[INFO] [stdout] test common::error::tests::exit_code_maps_every_kind ... ok
[INFO] [stdout] test common::error::tests::human_error_appends_present_optionals_only ... ok
[INFO] [stdout] test commands::project::tests::project_add_registers_and_echoes_the_description ... ok
[INFO] [stdout] test commands::project::tests::adding_a_duplicate_project_name_is_a_conflict ... ok
[INFO] [stdout] test common::store::tests::a_claim_records_the_holder_and_flips_the_state ... ok
[INFO] [stdout] test common::store::tests::a_missing_item_is_not_found ... ok
[INFO] [stdout] test common::store::tests::a_move_between_two_unassigned_states_matches_its_null_project_snapshot ... ok
[INFO] [stdout] test commands::project::tests::project_list_is_empty_for_a_fresh_board ... ok
[INFO] [stdout] test common::store::tests::a_move_planned_from_a_stale_snapshot_is_refused_even_outside_apply ... ok
[INFO] [stdout] test common::store::tests::a_state_token_outside_the_schema_fails_the_row_decode ... ok
[INFO] [stdout] test common::store::tests::an_unknown_state_filter_is_a_usage_error ... ok
[INFO] [stdout] test common::store::tests::an_unknown_state_or_priority_token_is_rejected_at_write_time ... ok
[INFO] [stdout] test commands::priority::tests::re_asserting_the_same_priority_is_reported_as_an_unchanged_pair ... ok
[INFO] [stdout] test common::store::tests::assign_moves_an_inbox_item_to_backlog_and_may_correct_the_priority ... ok
[INFO] [stdout] test common::store::tests::assign_rejects_an_unknown_priority_before_touching_the_row ... ok
[INFO] [stdout] test common::store::tests::assign_to_an_unknown_project_is_not_found ... ok
[INFO] [stdout] test common::store::tests::backlog_without_a_project_is_rejected_at_write_time ... ok
[INFO] [stdout] test commands::priority::tests::priority_reports_both_ends_and_leaves_the_state_alone ... ok
[INFO] [stdout] test common::store::tests::assigning_an_already_assigned_item_is_a_conflict ... ok
[INFO] [stdout] test commands::project::tests::project_rm_of_an_unknown_project_is_not_found ... ok
[INFO] [stdout] test common::store::tests::claiming_an_empty_backlog_is_not_an_error ... ok
[INFO] [stdout] test common::store::tests::claiming_from_an_unregistered_project_is_not_an_error ... ok
[INFO] [stdout] test common::store::tests::completing_a_missing_item_is_not_found ... ok
[INFO] [stdout] test commands::release::tests::release_of_a_missing_item_is_not_found ... ok
[INFO] [stdout] test common::store::tests::claims_are_scoped_to_the_requested_project ... ok
[INFO] [stdout] test common::store::tests::enable_foreign_keys_actually_turns_fk_on ... ok
[INFO] [stdout] test common::store::tests::done_accepts_both_an_agent_claim_and_a_human_completion ... ok
[INFO] [stdout] test common::store::tests::deleting_an_item_cascades_to_its_labels ... ok
[INFO] [stdout] test common::store::tests::claim_order_is_priority_then_oldest_first ... ok
[INFO] [stdout] test common::store::tests::inbox_carrying_a_project_or_a_session_is_rejected_at_write_time ... ok
[INFO] [stdout] test common::store::tests::completing_or_releasing_an_unclaimed_item_is_a_conflict ... ok
[INFO] [stdout] test commands::show::tests::show_of_a_missing_id_is_not_found ... ok
[INFO] [stdout] test common::store::tests::labelling_an_item_that_is_not_on_the_board_is_not_found ... ok
[INFO] [stdout] test common::store::tests::intake_lands_in_inbox_with_the_default_priority ... ok
[INFO] [stdout] test commands::project::tests::project_rm_is_refused_while_an_item_references_it ... ok
[INFO] [stdout] test common::store::tests::item_ids_are_zero_padded_and_sequential ... ok
[INFO] [stdout] test common::store::tests::labels_round_trip_and_re_scoring_replaces_the_confidence ... ok
[INFO] [stdout] test common::store::tests::done_preserves_the_claim_and_release_clears_it ... ok
[INFO] [stdout] test common::store::tests::plan_move_clears_exactly_what_the_target_state_forbids ... ok
[INFO] [stdout] test commands::project::tests::project_list_reports_every_registered_project_by_name ... ok
[INFO] [stdout] test commands::project::tests::project_rm_succeeds_when_unreferenced ... ok
[INFO] [stdout] test common::store::tests::moving_an_unassigned_item_into_an_assigned_state_is_a_conflict ... ok
[INFO] [stdout] test common::store::tests::moving_to_an_unknown_state_is_a_usage_error ... ok
[INFO] [stdout] test commands::show::tests::show_returns_the_full_item_including_body_and_labels ... ok
[INFO] [stdout] test commands::release::tests::release_of_an_unclaimed_item_is_a_conflict ... ok
[INFO] [stdout] test common::store::tests::moving_a_claimed_item_to_done_keeps_the_claim ... ok
[INFO] [stdout] test common::store::tests::re_adding_a_project_is_a_conflict ... ok
[INFO] [stdout] test common::store::tests::list_filters_by_project_state_and_label ... ok
[INFO] [stdout] test common::time::tests::canonical_strings_sort_in_time_order ... ok
[INFO] [stdout] test common::time::tests::epoch_is_unix_zero ... ok
[INFO] [stdout] test common::time::tests::known_instant_formats_to_utc ... ok
[INFO] [stdout] test common::store::tests::projects_round_trip_and_list_by_name ... ok
[INFO] [stdout] test common::time::tests::leap_day_is_handled ... ok
[INFO] [stdout] test common::store::tests::moving_back_to_inbox_clears_the_project_and_the_claim ... ok
[INFO] [stdout] test common::time::tests::now_has_canonical_shape ... ok
[INFO] [stdout] test output::envelope::tests::add_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::an_internal_failure_renders_through_the_normal_envelope_path ... ok
[INFO] [stdout] test output::envelope::tests::assign_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::conflict_error_json_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::done_preserves_the_session_that_did_the_work ... ok
[INFO] [stdout] test output::envelope::tests::done_by_a_human_reports_null_session_rather_than_omitting_it ... ok
[INFO] [stdout] test output::envelope::tests::error_includes_http_status_and_retry_when_present ... ok
[INFO] [stdout] test output::envelope::tests::error_json_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::init_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::list_serializes_unassigned_items_with_null_project_and_claim ... ok
[INFO] [stdout] test output::envelope::tests::move_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::next_claim_serializes_as_the_bare_item ... ok
[INFO] [stdout] test output::envelope::tests::next_on_empty_backlog_is_exactly_id_null ... ok
[INFO] [stdout] test output::envelope::tests::priority_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::project_add_success_matches_contract ... ok
[INFO] [stdout] test common::store::tests::project_rm_is_refused_while_items_reference_it ... ok
[INFO] [stdout] test output::envelope::tests::project_list_success_matches_contract ... ok
[INFO] [stdout] test output::envelope::tests::release_reports_the_claim_it_cleared ... ok
[INFO] [stdout] test output::envelope::tests::project_rm_success_matches_contract ... ok
[INFO] [stdout] test output::payload::tests::human_done_without_a_session_reads_as_no_session ... ok
[INFO] [stdout] test common::store::tests::removing_an_unknown_project_is_not_found ... ok
[INFO] [stdout] test output::envelope::tests::show_success_matches_contract ... ok
[INFO] [stdout] test common::store::tests::running_without_a_session_is_rejected_at_write_time ... ok
[INFO] [stdout] test output::payload::tests::human_init_reports_created_and_existing_boards_differently ... ok
[INFO] [stdout] test output::payload::tests::human_next_claim_names_the_holder ... ok
[INFO] [stdout] test output::payload::tests::human_list_renders_one_line_per_item_with_a_count_header ... ok
[INFO] [stdout] test output::payload::tests::human_list_shows_a_dash_for_an_unassigned_project ... ok
[INFO] [stdout] test output::payload::tests::human_next_empty_backlog_is_not_an_error ... ok
[INFO] [stdout] test output::payload::tests::human_release_reports_the_dropped_claim_and_reason ... ok
[INFO] [stdout] test output::payload::tests::human_success_output_never_contains_the_json_envelope_marker ... ok
[INFO] [stdout] test output::tests::exit_code_matches_across_json_and_human_modes_for_every_kind ... ok
[INFO] [stdout] test output::tests::human_mode_error_routes_to_stderr_not_stdout ... ok
[INFO] [stdout] test output::tests::json_mode_error_still_routes_to_stdout ... ok
[INFO] [stdout] test common::store::tests::set_priority_reports_both_ends_and_leaves_the_state_alone ... ok
[INFO] [stdout] test common::store::tests::the_same_source_message_cannot_be_ingested_twice ... ok
[INFO] [stdout] test commands::next::tests::claims_come_out_highest_priority_first_then_oldest_first ... ok
[INFO] [stdout] test commands::release::tests::release_returns_the_item_to_backlog_and_reports_the_claim_it_dropped ... ok
[INFO] [stdout] test common::store::tests::open_reporting_created_is_true_only_on_the_first_open ... ok
[INFO] [stdout] test common::store::tests::opening_an_existing_board_reuses_its_schema_and_data ... ok
[INFO] [stdout] test common::store::tests::a_single_backlog_item_is_claimed_by_exactly_one_of_two_racers ... ok
[INFO] [stdout] test tests::dispatch_renders_success_and_failure_through_the_json_envelope ... ok
[INFO] [stdout] test tests::every_subcommand_dispatches_to_its_handler_with_arguments_in_order ... ok
[INFO] [stdout] test common::store::tests::assign_never_reports_a_previous_state_a_concurrent_move_already_overtook ... ok
[INFO] [stdout] test common::store::tests::release_never_revokes_a_claim_it_did_not_see ... ok
[INFO] [stdout] test common::store::tests::two_connections_claiming_concurrently_never_receive_the_same_item ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 157 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2", kill_on_drop: false }`
[INFO] [stdout] a1ee58acacf88715f2687340b3386e0e4c019419c1d43e7e15f629ff105679b2
