[INFO] cloning repository https://github.com/owainlewis/push [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/owainlewis/push" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fowainlewis%2Fpush", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fowainlewis%2Fpush'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ececc59cea4fcf10f7af5d0947172d7367b40b93 [INFO] testing owainlewis/push against 1.97.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fowainlewis%2Fpush" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/owainlewis/push [INFO] finished tweaking git repo https://github.com/owainlewis/push [INFO] tweaked toml for git repo https://github.com/owainlewis/push written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/owainlewis/push on toolchain 1.97.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/owainlewis/push 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.126 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.126 [INFO] [stderr] Downloaded uuid v1.23.4 [INFO] [stderr] Downloaded sha1 v0.10.7 [INFO] [stderr] Downloaded wasm-bindgen v0.2.126 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.126 [INFO] [stderr] Downloaded webpki-roots v0.26.11 [INFO] [stderr] Downloaded tokio-macros v2.7.0 [INFO] [stderr] Downloaded serde_spanned v1.1.1 [INFO] [stderr] Downloaded fallible-streaming-iterator v0.1.9 [INFO] [stderr] Downloaded futures-macro v0.3.32 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.76 [INFO] [stderr] Downloaded quote v1.0.46 [INFO] [stderr] Downloaded tokio-tungstenite v0.27.0 [INFO] [stderr] Downloaded toml_writer v1.1.1+spec-1.1.0 [INFO] [stderr] Downloaded toml_datetime v1.1.1+spec-1.1.0 [INFO] [stderr] Downloaded web-time v1.1.0 [INFO] [stderr] Downloaded data-encoding v2.11.0 [INFO] [stderr] Downloaded hashlink v0.9.1 [INFO] [stderr] Downloaded fallible-iterator v0.3.0 [INFO] [stderr] Downloaded rustls-pki-types v1.15.0 [INFO] [stderr] Downloaded displaydoc v0.2.6 [INFO] [stderr] Downloaded toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Downloaded ahash v0.8.12 [INFO] [stderr] Downloaded unicase v2.9.0 [INFO] [stderr] Downloaded phf_shared v0.12.1 [INFO] [stderr] Downloaded siphasher v1.0.3 [INFO] [stderr] Downloaded humantime v2.3.0 [INFO] [stderr] Downloaded toml v1.1.2+spec-1.1.0 [INFO] [stderr] Downloaded bitflags v2.13.0 [INFO] [stderr] Downloaded phf v0.12.1 [INFO] [stderr] Downloaded autocfg v1.5.1 [INFO] [stderr] Downloaded bytes v1.12.0 [INFO] [stderr] Downloaded tungstenite v0.27.0 [INFO] [stderr] Downloaded socket2 v0.6.4 [INFO] [stderr] Downloaded anyhow v1.0.103 [INFO] [stderr] Downloaded wit-bindgen v0.57.1 [INFO] [stderr] Downloaded rand v0.9.5 [INFO] [stderr] Downloaded zerocopy-derive v0.8.52 [INFO] [stderr] Downloaded js-sys v0.3.103 [INFO] [stderr] Downloaded bumpalo v3.20.3 [INFO] [stderr] Downloaded memchr v2.8.2 [INFO] [stderr] Downloaded typenum v1.20.1 [INFO] [stderr] Downloaded cc v1.2.65 [INFO] [stderr] Downloaded http v1.4.2 [INFO] [stderr] Downloaded mio v1.2.1 [INFO] [stderr] Downloaded wasip2 v1.0.4+wasi-0.2.12 [INFO] [stderr] Downloaded serde_json v1.0.150 [INFO] [stderr] Downloaded rusqlite v0.32.1 [INFO] [stderr] Downloaded winnow v0.7.15 [INFO] [stderr] Downloaded hyper v1.10.1 [INFO] [stderr] Downloaded winnow v1.0.3 [INFO] [stderr] Downloaded webpki-roots v1.0.8 [INFO] [stderr] Downloaded pulldown-cmark v0.13.4 [INFO] [stderr] Downloaded syn v2.0.118 [INFO] [stderr] Downloaded chrono v0.4.45 [INFO] [stderr] Downloaded zerocopy v0.8.52 [INFO] [stderr] Downloaded rustls v0.23.41 [INFO] [stderr] Downloaded web-sys v0.3.103 [INFO] [stderr] Downloaded chrono-tz v0.10.4 [INFO] [stderr] Downloaded libc v0.2.186 [INFO] [stderr] Downloaded tokio v1.52.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/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:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05 [INFO] running `Command { std: "docker" "start" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05", 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" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05", 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" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "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 cfg-if v1.0.4 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling shlex v2.0.1 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling bytes v1.12.0 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling smallvec v1.15.2 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling zerocopy v0.8.52 [INFO] [stderr] Compiling zeroize v1.9.0 [INFO] [stderr] Compiling litemap v0.8.2 [INFO] [stderr] Compiling writeable v0.6.3 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Compiling utf8_iter v1.0.4 [INFO] [stderr] Compiling rustls-pki-types v1.15.0 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling cc v1.2.65 [INFO] [stderr] Compiling typenum v1.20.1 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling futures-sink v0.3.33 [INFO] [stderr] Compiling rustls v0.23.41 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling log v0.4.33 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling autocfg v1.5.1 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling bitflags v2.13.0 [INFO] [stderr] Compiling pkg-config v0.3.33 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling webpki-roots v1.0.8 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling unicase v2.9.0 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Compiling syn v2.0.118 [INFO] [stderr] Compiling http v1.4.2 [INFO] [stderr] Compiling getrandom v0.4.3 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Compiling siphasher v1.0.3 [INFO] [stderr] Compiling memchr v2.8.2 [INFO] [stderr] Compiling winnow v1.0.3 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling phf_shared v0.12.1 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling hashbrown v0.17.1 [INFO] [stderr] Compiling chrono-tz v0.10.4 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling data-encoding v2.11.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling toml_writer v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling toml_parser v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling anyhow v1.0.103 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling socket2 v0.6.4 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling mio v1.2.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling libsqlite3-sys v0.30.1 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling utf-8 v0.7.6 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling pulldown-cmark v0.13.4 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling chrono v0.4.45 [INFO] [stderr] Compiling sha1 v0.10.7 [INFO] [stderr] Compiling phf v0.12.1 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling toml_datetime v0.7.5+spec-1.1.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling uuid v1.23.4 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling humantime v2.3.0 [INFO] [stderr] Compiling serde_spanned v1.1.1 [INFO] [stderr] Compiling toml_datetime v1.1.1+spec-1.1.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling toml v1.1.2+spec-1.1.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling toml_edit v0.23.10+spec-1.0.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling displaydoc v0.2.6 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling rand v0.9.5 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling tokio v1.52.3 [INFO] [stderr] Compiling tracing v0.1.44 [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 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 serde_urlencoded v0.7.1 [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 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 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 tungstenite v0.27.0 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling tokio-tungstenite v0.27.0 [INFO] [stderr] Compiling rusqlite v0.32.1 [INFO] [stderr] Compiling push v0.10.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 4m 29s [INFO] running `Command { std: "docker" "inspect" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05", 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" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling push v0.10.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 2m 18s [INFO] running `Command { std: "docker" "inspect" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05", 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" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.23s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/push-e77b6fa3480ec933) [INFO] [stdout] [INFO] [stdout] running 446 tests [INFO] [stdout] test agent::tests::does_not_retry_other_spawn_errors ... ok [INFO] [stdout] test approval::tests::parses_plain_and_correlated_numbered_answers ... ok [INFO] [stdout] test approval::tests::question_validation_bounds_prompt_choices_and_correlation ... ok [INFO] [stdout] test assistant::tests::refuses_an_inline_secret_in_a_config_inside_the_assistant ... ok [INFO] [stdout] test assistant::tests::refuses_inline_slack_tokens_in_a_config_inside_the_assistant ... ok [INFO] [stdout] test assistant::tests::refuses_an_inline_voice_key_in_a_config_inside_the_assistant ... ok [INFO] [stdout] test assistant::tests::refuses_job_runtime_state_inside_new_assistant_repository ... ok [INFO] [stdout] test assistant::tests::refuses_legacy_independent_paths_with_migration_help ... ok [INFO] [stdout] test assistant::tests::refuses_invalid_git_metadata_before_scaffolding ... ok [INFO] [stdout] test assistant::tests::configured_partial_assistant_with_broken_git_link_is_not_scaffolded ... ok [INFO] [stdout] test assistant::tests::configured_partial_assistant_with_invalid_git_is_not_scaffolded ... ok [INFO] [stdout] test assistant::tests::refuses_unrelated_non_empty_target_without_touching_it ... ok [INFO] [stdout] test assistant::tests::refuses_partial_assistant_layouts_without_completing_them ... ok [INFO] [stdout] test audit::tests::accepted_event_redacts_content_by_default ... ok [INFO] [stdout] test audit::tests::audit_file_is_private_and_existing_permissions_are_repaired ... ok [INFO] [stdout] test audit::tests::content_logging_is_opt_in ... ok [INFO] [stdout] test audit::tests::failed_and_completed_events_include_debug_context ... ok [INFO] [stdout] test audit::tests::reply_failures_include_backend_context_when_known ... ok [INFO] [stdout] test audit::tests::schedule_review_events_keep_job_and_revision_context ... ok [INFO] [stdout] test audit::tests::writes_jsonl_events ... ok [INFO] [stdout] test channel::tests::built_in_channels_implement_the_static_contract ... ok [INFO] [stdout] test channel::tests::imessage_contract_keeps_stable_identity_and_delivery_routing ... ok [INFO] [stdout] test channel::tests::imessage_outbound_reply_remains_one_unsplit_message ... ok [INFO] [stdout] test channel::tests::scheduled_telegram_output_uses_persistable_plain_chunk_boundaries ... ok [INFO] [stdout] test channel::tests::slack_contract_keeps_workspace_dm_identity_and_origin_thread_target ... ok [INFO] [stdout] test channel::tests::slack_formats_markdown_before_chunking ... ok [INFO] [stdout] test channel::tests::telegram_accepts_allowlisted_private_user_or_chat ... ok [INFO] [stdout] test channel::tests::telegram_contract_keeps_topic_identity_and_delivery_routing ... ok [INFO] [stdout] test channel::tests::telegram_keeps_each_rich_send_inside_a_durable_chunk_boundary ... ok [INFO] [stdout] test channel::tests::telegram_omits_imessage_marker_and_reply_never_exceeds_limit ... ok [INFO] [stdout] test channel::tests::telegram_rejects_unallowlisted_and_group_messages ... ok [INFO] [stdout] test channel::tests::telegram_topic_message_gets_its_own_thread_key_and_target ... ok [INFO] [stdout] test claude::tests::classifies_only_claude_resume_lookup_errors_as_missing_sessions ... ok [INFO] [stdout] test claude::tests::configured_run_preserves_backend_permission_settings ... ok [INFO] [stdout] test agent::tests::retries_text_file_busy_then_succeeds ... ok [INFO] [stdout] test claude::tests::evaluator_disables_tools_and_mcp ... ok [INFO] [stdout] test claude::tests::ignores_empty_session_id ... ok [INFO] [stdout] test claude::tests::image_failure_does_not_expose_base64_content ... ok [INFO] [stdout] test claude::tests::image_only_stream_input_uses_a_text_placeholder ... ok [INFO] [stdout] test claude::tests::image_resume_lookup_failure_remains_typed ... ok [INFO] [stdout] test claude::tests::keeps_valid_session_id ... ok [INFO] [stdout] test claude::tests::malformed_stream_output_is_a_typed_backend_error ... ok [INFO] [stdout] test agent::tests::stops_after_three_text_file_busy_retries ... ok [INFO] [stdout] test assistant::tests::completes_a_partial_configured_assistant_without_overwriting_user_files ... ok [INFO] [stdout] test claude::tests::rejects_non_zero_exit_with_non_error_json_envelope ... ok [INFO] [stdout] test assistant::tests::refuses_to_replace_a_different_configured_assistant ... ok [INFO] [stdout] test assistant::tests::persists_root_at_top_level_when_config_ends_with_a_table ... ok [INFO] [stdout] test claude::tests::reports_cli_json_error ... ok [INFO] [stdout] test assistant::tests::creates_structure_initializes_git_and_persists_canonical_root ... ok [INFO] [stdout] test assistant::tests::init_dot_accepts_an_existing_selected_config_in_the_target ... ok [INFO] [stdout] test assistant::tests::config_inside_root_uses_portable_relative_value ... ok [INFO] [stdout] test claude::tests::rejects_successful_empty_replies ... ok [INFO] [stdout] test cli_json::tests::exit_codes_are_stable_and_distinct ... ok [INFO] [stdout] test cli_json::tests::retryability_is_only_claimed_for_known_categories ... ok [INFO] [stdout] test assistant::tests::managed_skill_paths_stay_inside_the_assistant ... ok [INFO] [stdout] test assistant::tests::refuses_to_overwrite_a_user_modified_managed_skill ... ok [INFO] [stdout] test assistant::tests::refuses_to_replace_a_conflicting_provider_skill ... ok [INFO] [stdout] test codex::tests::classifies_only_codex_resume_lookup_errors_as_missing_sessions ... ok [INFO] [stdout] test codex::tests::extracts_last_agent_message ... ok [INFO] [stdout] test codex::tests::extracts_thread_id ... ok [INFO] [stdout] test codex::tests::final_reply_file_uses_the_configured_cache_directory ... ok [INFO] [stdout] test codex::tests::ignores_empty_thread_id ... ok [INFO] [stdout] test claude::tests::resumed_lookup_failure_is_typed_before_gateway_retry ... ok [INFO] [stdout] test assistant::tests::repeat_initialization_preserves_symlinked_claude_instructions ... ok [INFO] [stdout] test claude::tests::rejects_images_above_the_raw_limit_before_spawning_claude ... ok [INFO] [stdout] test claude::tests::unattended_new_session_bypasses_permissions ... ok [INFO] [stdout] test assistant::tests::recreates_missing_provider_directories_and_links ... ok [INFO] [stdout] test claude::tests::reports_timeout ... ok [INFO] [stdout] test claude::tests::unattended_resumed_session_bypasses_permissions ... ok [INFO] [stdout] test codex::tests::evaluator_disables_tools_and_user_integrations ... ok [INFO] [stdout] test assistant::tests::repeat_initialization_preserves_user_files_and_configuration ... ok [INFO] [stdout] test config::tests::chat_run_timeout_defaults_to_ten_minutes_and_accepts_an_override ... ok [INFO] [stdout] test codex::tests::configured_run_preserves_backend_permission_settings ... ok [INFO] [stdout] test config::tests::pi_binary_defaults_to_pi_when_loading_toml ... ok [INFO] [stdout] test codex::tests::reports_non_zero_exit_stderr ... ok [INFO] [stdout] test config::tests::pi_parses_and_is_selectable_for_default_routes_and_jobs ... ok [INFO] [stdout] test config::tests::assistant_root_is_a_valid_job_workdir ... ok [INFO] [stdout] test codex::tests::rejects_successful_whitespace_only_reply ... ok [INFO] [stdout] test doctor::tests::binary_checks_report_present_and_missing_bins ... ok [INFO] [stdout] test config::tests::pi_binary_is_only_required_when_selected ... ok [INFO] [stdout] test doctor::tests::binary_checks_use_configured_pi_binary_when_pi_is_active ... ok [INFO] [stdout] test assistant::tests::refreshes_an_unmodified_older_managed_skill ... ok [INFO] [stdout] test config::tests::backend_context_rejects_a_symlink_outside_the_assistant ... ok [INFO] [stdout] test doctor::tests::binary_checks_include_pi_selected_by_an_installed_job ... ok [INFO] [stdout] test codex::tests::resumed_lookup_failure_is_typed_before_gateway_retry ... ok [INFO] [stdout] test doctor::tests::doctor_reports_config_load_failure ... ok [INFO] [stdout] test codex::tests::unattended_new_session_bypasses_permissions ... ok [INFO] [stdout] test doctor::tests::doctor_reports_empty_claude_tool_filter ... ok [INFO] [stdout] test doctor::tests::doctor_rejects_an_inline_token_inside_the_assistant_repository ... ok [INFO] [stdout] test doctor::tests::doctor_reports_empty_claude_tools_list ... ok [INFO] [stdout] test doctor::tests::enabled_schedules_require_a_valid_primary_destination ... ok [INFO] [stdout] test doctor::tests::invalid_jobs_do_not_report_that_no_schedules_are_enabled ... ok [INFO] [stdout] test doctor::tests::slack_checks_both_tokens_without_printing_them ... ok [INFO] [stdout] test doctor::tests::telegram_binary_checks_do_not_require_osascript ... ok [INFO] [stdout] test doctor::tests::scheduled_delivery_diagnostic_does_not_stop_gateway_preflight ... ok [INFO] [stdout] test doctor::tests::doctor_reports_invalid_config_value ... ok [INFO] [stdout] test doctor::tests::inline_voice_key_requires_a_private_config_file ... ok [INFO] [stdout] test doctor::tests::telegram_preflight_checks_token_without_imessage_database ... ok [INFO] [stdout] test doctor::tests::voice_check_reports_config_source_without_a_secret ... ok [INFO] [stdout] test doctor::tests::doctor_reports_invalid_toml_config ... ok [INFO] [stdout] test config::tests::job_workdir_must_not_contain_the_loaded_config_file ... ok [INFO] [stdout] test gateway::tests::ack_advances_completed_rows_below_first_in_flight ... ok [INFO] [stdout] test gateway::tests::allowlisted_dm_accepted ... ok [INFO] [stdout] test gateway::tests::ack_advances_to_highest_completed_when_nothing_in_flight ... ok [INFO] [stdout] test codex::tests::unattended_resumed_session_bypasses_permissions ... ok [INFO] [stdout] test gateway::tests::bare_phone_matches_allowlist_with_plus ... ok [INFO] [stdout] test doctor::tests::writable_dir_check_writes_probe_file ... ok [INFO] [stdout] test gateway::tests::ack_does_not_advance_past_in_flight_row ... ok [INFO] [stdout] test gateway::tests::email_self_chat_matching_is_case_insensitive ... ok [INFO] [stdout] test gateway::tests::empty_text_dropped ... ok [INFO] [stdout] test codex::tests::attaches_images_to_new_and_resumed_sessions ... ok [INFO] [stdout] test claude::tests::drains_large_startup_output_while_writing_image_input ... ok [INFO] [stdout] test codex::tests::reports_timeout ... ok [INFO] [stdout] test claude::tests::sends_ordered_images_with_text_on_new_and_resumed_sessions ... ok [INFO] [stdout] test codex::tests::satisfies_runner_contract ... ok [INFO] [stdout] test claude::tests::satisfies_runner_contract ... ok [INFO] [stdout] test doctor::tests::full_preflight_checks_only_enabled_reply_channels ... ok [INFO] [stdout] test gateway::tests::formatted_phone_allowlist_matches_normalized_handle ... ok [INFO] [stdout] test gateway::tests::from_me_to_others_dropped ... ok [INFO] [stdout] test gateway::tests::group_chat_dropped_even_from_allowlisted_sender ... ok [INFO] [stdout] test doctor::tests::run_checks_reports_config_and_writable_paths ... ok [INFO] [stdout] test gateway::tests::delivery_fails_when_channel_produces_no_chunks ... ok [INFO] [stdout] test gateway::tests::completed_row_marker_failure_keeps_a_retryable_cursor_barrier ... ok [INFO] [stdout] test gateway::tests::canonical_history_failure_prevents_backend_dispatch_and_cursor_advance ... ok [INFO] [stdout] test gateway::tests::failed_question_delivery_keeps_the_durable_pending_question ... ok [INFO] [stdout] test gateway::tests::expired_answer_is_audited_without_reaching_the_backend ... ok [INFO] [stdout] test gateway::tests::cursor_save_failure_retries_without_rerunning_or_redelivering ... ok [INFO] [stdout] test gateway::tests::closed_worker_queue_is_recovered_without_another_message ... ok [INFO] [stdout] test gateway::tests::imessage_complete_poll_reconciles_a_deleted_deferred_row ... ok [INFO] [stdout] test gateway::tests::exhausted_delivery_batch_retries_without_blocking_cursor ... ok [INFO] [stdout] test gateway::tests::failed_stop_acknowledgement_does_not_block_later_messages ... ok [INFO] [stdout] test gateway::tests::group_shutdown_waits_for_an_in_flight_channel_worker ... ok [INFO] [stdout] test gateway::tests::non_allowlisted_dropped ... ok [INFO] [stdout] test gateway::tests::one_channel_failure_does_not_stop_another_and_shutdown_reaches_survivor ... ok [INFO] [stdout] test gateway::tests::imessage_deferred_barrier_survives_preworker_failure ... ok [INFO] [stdout] test gateway::tests::own_reply_dropped ... ok [INFO] [stdout] test gateway::tests::direct_authored_schedule_is_saved_then_reviewed_in_its_owner_channel ... ok [INFO] [stdout] test gateway::tests::periodic_activity_refreshes_until_operation_completes ... ok [INFO] [stdout] test gateway::tests::plus_phone_matches_bare_allowlist ... ok [INFO] [stdout] test gateway::tests::enabled_channels_process_concurrently_with_isolated_state_and_origin_replies ... ok [INFO] [stdout] test gateway::tests::fake_channel_e2e_replies_once_ignores_unallowlisted_and_reuses_session ... ok [INFO] [stdout] test gateway::tests::failed_stop_history_write_retries_before_later_rows ... ok [INFO] [stdout] test gateway::tests::imessage_completed_row_after_deferred_barrier_is_not_rerun_after_restart ... ok [INFO] [stdout] test gateway::tests::primary_delivery_is_scoped_validated_and_non_fatal_when_missing_or_invalid ... ok [INFO] [stdout] test gateway::tests::rejected_imessage_sender_does_not_open_local_attachments ... ok [INFO] [stdout] test gateway::tests::missing_primary_disables_new_schedules_without_stopping_gateway ... ok [INFO] [stdout] test gateway::tests::self_chat_accepted ... ok [INFO] [stdout] test gateway::tests::imessage_question_delivers_and_plain_number_resolves_once ... ok [INFO] [stdout] test gateway::tests::invalid_and_oversized_telegram_images_fall_back_without_running_the_agent ... ok [INFO] [stdout] test gateway::tests::pending_outbound_is_delivered_after_restart_without_backend_rerun ... ok [INFO] [stdout] test gateway::tests::shutdown_cancels_a_pending_poll_operation ... ok [INFO] [stdout] test gateway::tests::scheduled_telegram_retry_resumes_at_the_first_unsent_rich_chunk ... ok [INFO] [stdout] test gateway::tests::retired_job_approval_reply_explains_direct_creation ... ok [INFO] [stdout] test gateway::tests::missing_primary_closes_upgrade_migration_before_later_schedule_creation ... ok [INFO] [stdout] test gateway::tests::ordinary_telegram_retry_resumes_at_the_first_unsent_chunk ... ok [INFO] [stdout] test gateway::tests::setup_failure_completion_unblocks_later_completed_rows ... ok [INFO] [stdout] test gateway::tests::stalled_activity_does_not_delay_operation ... ok [INFO] [stdout] test gateway::tests::imessage_worker_reads_ordered_local_images_and_rejects_bad_attachments ... ok [INFO] [stdout] test gateway::tests::backend_switch_and_clear_start_fresh_sessions_with_history ... ok [INFO] [stdout] test gateway::tests::imessage_pending_filename_defers_only_accepted_rows_and_cannot_block_forever ... ok [INFO] [stdout] test gateway::tests::missing_backend_session_rotates_and_rehydrates_once ... ok [INFO] [stdout] test gateway::tests::route_agent_writes_job_directly_without_approval ... ok [INFO] [stdout] test gateway::tests::recovered_outbound_still_presents_authored_schedule_review ... ok [INFO] [stdout] test gateway::tests::session_lookup_failure_completes_in_flight_row ... ok [INFO] [stdout] test gateway::tests::imessage_images_reach_every_agent_backend_and_are_removed_after_each_turn ... ok [INFO] [stdout] test gateway::tests::slack_download_failure_replies_without_running_an_agent ... ok [INFO] [stdout] test gateway::tests::session_state_save_failure_keeps_reply_for_restart_without_backend_rerun ... ok [INFO] [stdout] test gateway::tests::soul_read_failure_stops_backend_dispatch_and_completes_row ... ok [INFO] [stdout] test gateway::tests::telegram_image_is_removed_before_reply_delivery_finishes ... ok [INFO] [stdout] test gateway::tests::stop_targets_the_current_row_ahead_of_retained_failures ... ok [INFO] [stdout] test history::tests::database_permissions_are_owner_only ... ok [INFO] [stdout] test gateway::tests::telegram_image_reaches_claude_and_is_removed_after_the_turn ... ok [INFO] [stdout] test gateway::tests::stop_interrupts_a_worker_queued_in_the_same_poll_batch ... ok [INFO] [stdout] test gateway::tests::stale_stop_signal_does_not_interrupt_a_later_row ... ok [INFO] [stdout] test gateway::tests::telegram_filters_before_agent_and_replies_to_originating_chat ... ok [INFO] [stdout] test gateway::tests::slow_voice_transcription_does_not_block_another_telegram_thread ... ok [INFO] [stdout] test gateway::tests::telegram_voice_without_openai_key_falls_back_without_running_agent ... ok [INFO] [stdout] test history::tests::migrates_new_database_and_reopens_it ... ok [INFO] [stdout] test history::tests::gateway_and_backend_outbound_origins_are_distinct ... ok [INFO] [stdout] test history::tests::generated_reply_is_unique_and_delivery_survives_restart ... ok [INFO] [stdout] test gateway::tests::telegram_voice_is_transcribed_and_gets_text_and_voice_replies ... ok [INFO] [stdout] test history::tests::malformed_utf8_history_is_replaced_without_failing_the_read ... ok [INFO] [stdout] test gateway::tests::telegram_image_only_and_captioned_messages_reach_pi ... ok [INFO] [stdout] test history::tests::oversized_history_is_bounded_during_the_database_read ... ok [INFO] [stdout] test gateway::tests::retried_stop_acknowledgement_does_not_cancel_the_next_request ... ok [INFO] [stdout] test history::tests::pending_question_survives_restart_and_answer_is_consumed_once ... ok [INFO] [stdout] test history::tests::outbound_delivery_chunk_progress_survives_reopen ... ok [INFO] [stdout] test gateway::tests::telegram_question_rejects_wrong_topic_sender_and_duplicate ... ok [INFO] [stdout] test image::tests::rejects_unsupported_oversized_and_excess_images ... ok [INFO] [stdout] test image::tests::validates_writes_and_removes_supported_images ... ok [INFO] [stdout] test history::tests::migrates_v8_messages_with_delivery_chunk_progress ... ok [INFO] [stdout] test gateway::tests::telegram_topic_gets_own_thread_and_reply_targets_the_topic ... ok [INFO] [stdout] test gateway::tests::stop_interrupts_active_run_and_preserves_queued_messages ... ok [INFO] [stdout] test imessage::attachments::tests::rejects_a_symlink_swap_between_validation_and_open ... ok [INFO] [stdout] test imessage::attachments::tests::reads_supported_files_only_from_the_attachment_root ... ok [INFO] [stdout] test imessage::attributed_body::tests::empty ... ok [INFO] [stdout] test imessage::attachments::tests::converts_heic_to_private_jpeg_and_removes_conversion_files ... ok [INFO] [stdout] test imessage::attributed_body::tests::no_marker ... ok [INFO] [stdout] test imessage::attributed_body::tests::short_string ... ok [INFO] [stdout] test imessage::attributed_body::tests::two_byte_length ... ok [INFO] [stdout] test imessage::attachments::tests::rejects_missing_directories_unsupported_types_and_oversized_files ... ok [INFO] [stdout] test imessage::attachments::tests::rejects_an_attachment_root_parent_swap_after_validation ... ok [INFO] [stdout] test history::tests::retries_one_channel_event_without_duplicate_user_turn ... ok [INFO] [stdout] test history::tests::same_thread_text_isolated_by_channel ... ok [INFO] [stdout] test history::tests::migration_retires_pending_legacy_job_approvals ... ok [INFO] [stdout] test jobs::tests::agent_eval_verdict_contract_distinguishes_pass_fail_and_error ... ok [INFO] [stdout] test jobs::tests::assigned_evals_have_count_and_total_size_limits ... ok [INFO] [stdout] test imessage::attachments::tests::bounds_heic_input_before_starting_conversion ... ok [INFO] [stdout] test gateway::tests::telegram_image_is_available_to_the_agent_and_removed_after_the_turn ... ok [INFO] [stdout] test jobs::tests::catalog_table_escapes_control_characters_in_invalid_jobs ... ok [INFO] [stdout] test history::tests::recent_messages_are_bounded_to_one_channel_and_thread ... ok [INFO] [stdout] test jobs::tests::cron_calendar_validation_preserves_day_of_week_or_semantics ... ok [INFO] [stdout] test history::tests::question_rejects_mismatch_expiry_invalid_choice_and_cancellation ... ok [INFO] [stdout] test jobs::tests::cron_validation_rejects_malformed_fields_and_ranges ... ok [INFO] [stdout] test jobs::tests::daily_inbox_example_is_a_valid_scheduled_job ... ok [INFO] [stdout] test history::tests::migrates_v2_approval_database_and_preserves_pending_question ... ok [INFO] [stdout] test jobs::tests::delivery_attempt_timeout_stays_below_the_claim_lease ... ok [INFO] [stdout] test imessage::sender::tests::cancelling_send_kills_in_flight_sender ... ok [INFO] [stdout] test history::tests::migrates_v6_job_rows_with_evaluation_defaulting_to_not_requested ... ok [INFO] [stdout] test jobs::tests::backend_override_runs_pi_with_a_fresh_session ... ok [INFO] [stdout] test history::tests::migrates_v1_history_database_without_losing_messages ... ok [INFO] [stdout] test history::tests::v11_migration_marks_installed_schedules_for_one_time_preservation ... ok [INFO] [stdout] test jobs::tests::eval_markdown_is_preserved_verbatim ... ok [INFO] [stdout] test jobs::tests::backend_override_selects_claude_with_a_fresh_session ... ok [INFO] [stdout] test jobs::tests::evaluator_rejects_a_replaced_workdir_before_dispatch ... ok [INFO] [stdout] test gateway::tests::slack_images_reach_every_agent_backend_and_are_removed_after_each_turn ... ok [INFO] [stdout] test jobs::tests::accepted_review_survives_restart_and_wakes_scheduler ... ok [INFO] [stdout] test jobs::tests::concurrent_channels_cannot_adopt_the_same_schedule_review ... ok [INFO] [stdout] test jobs::tests::disabled_schedule_remains_manually_claimable_without_review ... ok [INFO] [stdout] test jobs::tests::job_backend_override_accepts_pi ... ok [INFO] [stdout] test jobs::tests::job_evals_are_reusable_markdown_files_validated_with_the_job ... ok [INFO] [stdout] test imessage::poller::tests::poll_uses_attributed_body_when_text_is_null ... ok [INFO] [stdout] test jobs::tests::delivery_attempt_timeout_includes_worker_delay_and_releases_the_claim ... ok [INFO] [stdout] test jobs::tests::delivery_checkpoints_are_durable_before_the_attempt_finishes ... ok [INFO] [stdout] test jobs::tests::interrupted_evaluation_preserves_successful_execution_result ... ok [INFO] [stdout] test jobs::tests::manual_claim_process_helper ... ok [INFO] [stdout] test jobs::tests::loads_valid_jobs_and_isolates_invalid_files ... ok [INFO] [stdout] test jobs::tests::delivery_claim_is_atomic_and_preserves_partial_progress ... ok [INFO] [stdout] test jobs::tests::missing_workdir_defaults_to_assistant_root ... ok [INFO] [stdout] test jobs::tests::invalidated_review_cannot_gain_a_question_from_a_stale_selection ... ok [INFO] [stdout] test jobs::tests::expired_schedule_answer_cannot_select_reissued_question_without_correlation ... ok [INFO] [stdout] test jobs::tests::delivery_claim_lease_starts_after_tick_work ... ok [INFO] [stdout] test jobs::tests::preserves_the_instruction_body_verbatim ... ok [INFO] [stdout] test jobs::tests::live_claim_is_not_recovered_and_overlap_is_recorded_for_schedule ... ok [INFO] [stdout] test jobs::tests::impossible_triggers_are_rejected_without_blocking_valid_schedules ... ok [INFO] [stdout] test imessage::poller::tests::poll_observes_when_attachment_filename_becomes_ready ... ok [INFO] [stdout] test jobs::tests::delivery_retry_backoff_starts_when_slow_attempt_finishes ... ok [INFO] [stdout] test jobs::tests::invalid_edit_removes_an_activated_schedule_before_execution ... ok [INFO] [stdout] test imessage::poller::tests::poll_joins_ordered_attachment_metadata_without_opening_files ... ok [INFO] [stdout] test jobs::tests::new_enabled_schedule_stays_unplanned_until_exact_review ... ok [INFO] [stdout] test jobs::tests::lock_and_ledger_prevent_overlap_and_recover_stale_claim ... ok [INFO] [stdout] test jobs::tests::runtime_job_validation_logs_errors_on_first_pass ... ok [INFO] [stdout] test imessage::poller::tests::poll_decodes_text_filters_system_rows_and_marks_groups ... ok [INFO] [stdout] test jobs::tests::pi_job_trusts_resources_only_at_the_assistant_root ... ok [INFO] [stdout] test jobs::tests::manual_codex_runs_use_fresh_sessions_and_persist_results ... ok [INFO] [stdout] test jobs::tests::migration_preserves_only_valid_existing_enabled_schedules ... ok [INFO] [stdout] test jobs::tests::live_scheduled_claim_survives_restart_and_stale_claim_becomes_deliverable ... ok [INFO] [stdout] test jobs::tests::pending_delivery_replays_without_a_current_primary_destination ... ok [INFO] [stdout] test jobs::tests::run_rows_and_results_survive_reopen ... ok [INFO] [stdout] test jobs::tests::queued_run_is_cancelled_after_effective_backend_invalidates_activation ... ok [INFO] [stdout] test jobs::tests::rejection_is_terminal_and_records_history ... ok [INFO] [stdout] test jobs::tests::runtime_job_validation_state_tracks_failure_and_recovery ... ok [INFO] [stdout] test jobs::tests::schedule_audit_outbox_replays_after_write_failure_and_restart ... ok [INFO] [stdout] test jobs::tests::revision_race_invalidates_schedule_approval ... ok [INFO] [stdout] test jobs::tests::queued_run_is_cancelled_after_same_content_path_replacement ... ok [INFO] [stdout] test jobs::tests::queued_run_is_cancelled_after_same_content_in_place_rewrite ... ok [INFO] [stdout] test jobs::tests::same_content_in_place_rewrite_invalidates_schedule_approval ... ok [INFO] [stdout] test jobs::tests::validation_enforces_permission_timeout_backend_and_workdir ... ok [INFO] [stdout] test jobs::tests::schedule_question_binds_channel_owner_and_rejects_duplicate_approval ... ok [INFO] [stdout] test markdown::tests::escapes_html_in_text ... ok [INFO] [stdout] test markdown::tests::keeps_backticks_in_code_spans_without_creating_a_block ... ok [INFO] [stdout] test markdown::tests::keeps_escaped_markdown_markers_literal_for_slack ... ok [INFO] [stdout] test markdown::tests::keeps_list_markers_attached_to_block_content ... ok [INFO] [stdout] test markdown::tests::keeps_loose_list_markers_attached_to_the_first_paragraph ... ok [INFO] [stdout] test markdown::tests::keeps_nested_list_markers_attached_to_their_text ... ok [INFO] [stdout] test markdown::tests::plain_text_passes_through ... ok [INFO] [stdout] test markdown::tests::preserves_slack_inline_and_fenced_code_contents ... ok [INFO] [stdout] test markdown::tests::preserves_triple_backticks_inside_slack_code ... ok [INFO] [stdout] test markdown::tests::renders_bold_italic_and_code ... ok [INFO] [stdout] test markdown::tests::renders_fenced_code_blocks ... ok [INFO] [stdout] test markdown::tests::renders_headings_as_bold_lines ... ok [INFO] [stdout] test markdown::tests::renders_links ... ok [INFO] [stdout] test markdown::tests::renders_mixed_slack_formatting ... ok [INFO] [stdout] test markdown::tests::renders_ordered_lists_with_numbers ... ok [INFO] [stdout] test markdown::tests::renders_slack_blockquotes_and_lists ... ok [INFO] [stdout] test markdown::tests::renders_slack_bold_strikethrough_and_headings ... ok [INFO] [stdout] test markdown::tests::renders_slack_links_and_escapes_control_characters ... ok [INFO] [stdout] test markdown::tests::renders_unordered_lists_as_bullets ... ok [INFO] [stdout] test paths::tests::default_home_derives_every_runtime_path ... ok [INFO] [stdout] test paths::tests::explicit_legacy_paths_override_only_their_derived_defaults ... ok [INFO] [stdout] test paths::tests::missing_home_requires_an_explicit_push_home ... ok [INFO] [stdout] test paths::tests::push_home_relocates_every_runtime_path ... ok [INFO] [stdout] test paths::tests::two_push_homes_are_fully_isolated ... ok [INFO] [stdout] test jobs::tests::stored_results_are_bounded ... ok [INFO] [stdout] test pi::tests::attaches_images_in_order_for_new_and_resumed_sessions ... ok [INFO] [stdout] test jobs::tests::cron_skips_nonexistent_dst_time_and_uses_first_ambiguous_instant ... ok [INFO] [stdout] test pi::tests::creates_session_and_separates_instructions_from_prompt ... ok [INFO] [stdout] test pi::tests::evaluator_disables_all_tools_and_extensions ... ok [INFO] [stdout] test jobs::tests::winning_claim_rereads_and_records_the_installed_snapshot ... ok [INFO] [stdout] test pi::tests::image_model_rejection_is_not_retried_without_the_image ... ok [INFO] [stdout] test pi::tests::immediate_missing_resume_with_large_prompt_is_typed_for_rehydration ... ok [INFO] [stdout] test pi::tests::missing_resume_is_typed_for_rehydration ... ok [INFO] [stdout] test jobs::tests::slow_delivery_does_not_block_scheduler_ticks ... ok [INFO] [stdout] test pi::tests::reports_non_zero_exit_without_forwarding_stderr_secrets ... ok [INFO] [stdout] test pi::tests::resumes_exact_session ... ok [INFO] [stdout] test jobs::tests::successful_jobs_run_a_fresh_agent_eval_and_store_its_verdict ... ok [INFO] [stdout] test pi::tests::successful_auto_retry_uses_the_later_assistant_reply ... ok [INFO] [stdout] test prompt::tests::fresh_and_resumed_conversations_keep_history_inside_prompt_content ... ok [INFO] [stdout] test prompt::tests::hostile_delimiter_like_content_stays_json_delimited_in_its_owned_section ... ok [INFO] [stdout] test pi::tests::unattended_run_trusts_project_local_resources ... ok [INFO] [stdout] test pi::tests::unattended_run_does_not_trust_external_project_resources ... ok [INFO] [stdout] test prompt::tests::instructions_include_canonical_workspace_paths ... ok [INFO] [stdout] test jobs::tests::scheduled_execution_failure_is_distinct_from_delivery_failure ... ok [INFO] [stdout] test prompt::tests::malformed_soul_is_an_error_instead_of_silently_dropping_identity ... ok [INFO] [stdout] test restart::tests::failed_restart_reports_the_command_and_status ... ok [INFO] [stdout] test restart::tests::linux_restarts_the_documented_user_service ... ok [INFO] [stdout] test restart::tests::linux_status_reports_inactive_as_a_successful_observation ... ok [INFO] [stdout] test restart::tests::macos_restarts_the_documented_launchd_service ... ok [INFO] [stdout] test prompt::tests::oversized_history_keeps_recent_messages_within_the_bound ... ok [INFO] [stdout] test restart::tests::macos_status_inspects_the_documented_launchd_service ... ok [INFO] [stdout] test restart::tests::macos_status_parses_loaded_but_stopped_launchd_service ... ok [INFO] [stdout] test restart::tests::macos_status_parses_running_launchd_service ... ok [INFO] [stdout] test restart::tests::restart_spawn_failure_reports_the_command ... ok [INFO] [stdout] test restart::tests::service_manager_operational_failure_is_an_error ... ok [INFO] [stdout] test restart::tests::successful_restart_reports_completion ... ok [INFO] [stdout] test restart::tests::unsupported_platform_reports_the_supported_hosts ... ok [INFO] [stdout] test prompt::tests::missing_and_empty_soul_have_an_explicit_empty_identity_section ... ok [INFO] [stdout] test slack::tests::chunks_are_independently_valid_mrkdwn ... ok [INFO] [stdout] test slack::tests::chunks_unicode_without_splitting_characters ... ok [INFO] [stdout] test slack::tests::chunks_long_blockquotes_with_a_prefix_in_every_message ... ok [INFO] [stdout] test slack::tests::chunks_slack_escape_entities_atomically ... ok [INFO] [stdout] test pi::tests::rejects_malformed_and_empty_output ... ok [INFO] [stdout] test slack::tests::literal_markers_do_not_change_chunk_formatting_state ... ok [INFO] [stdout] test slack::tests::oversized_quote_prefixes_degrade_without_stalling ... ok [INFO] [stdout] test slack::tests::oversized_links_degrade_to_safe_bounded_text ... ok [INFO] [stdout] test slack::tests::parses_text_and_file_share_workspace_dm_messages ... ok [INFO] [stdout] test jobs::tests::scheduled_timeout_is_persisted_before_delivery ... ok [INFO] [stdout] test slack::tests::receiver_notification_is_retained_until_poll_can_wait ... ok [INFO] [stdout] test slack::tests::downloads_private_images_with_the_bot_token_after_metadata_resolution ... ok [INFO] [stdout] test jobs::tests::timeout_is_terminal_and_does_not_block_a_later_run ... ok [INFO] [stdout] test slack::tests::retry_after_preserves_delays_above_the_previous_gateway_timeout ... ok [INFO] [stdout] test pi::tests::satisfies_runner_contract ... ok [INFO] [stdout] test pi::tests::sends_option_and_file_like_prompts_verbatim_over_stdin ... ok [INFO] [stdout] test slack::tests::rejects_untrusted_private_urls_without_exposing_urls_or_tokens ... ok [INFO] [stdout] test slack::tests::rejects_untrusted_redirects_before_forwarding_the_bot_token ... ok [INFO] [stdout] test slack::tests::inbox_migrates_legacy_rows_without_losing_queued_events ... ok [INFO] [stdout] test slack::tests::web_api_posts_reply_and_progress_to_originating_thread ... ok [INFO] [stdout] test slack::tests::inbox_deduplicates_event_ids_and_recovers_rows ... ok [INFO] [stdout] test jobs::tests::stale_scheduled_claim_preserves_result_from_an_interrupted_evaluator ... ok [INFO] [stdout] test jobs::tests::restarted_scheduler_respects_live_cli_process_then_recovers_after_crash ... ok [INFO] [stdout] test store::tests::database_open_failure_is_actionable_before_state_is_available ... ok [INFO] [stdout] test slack::tests::socket_mode_persists_before_ack_and_deduplicates_retries ... ok [INFO] [stdout] test jobs::tests::symlink_and_regular_path_replacement_fail_closed ... ok [INFO] [stdout] test store::tests::backend_change_starts_fresh_session ... ok [INFO] [stdout] test store::tests::corrupt_json_fails_with_recovery_guidance ... ok [INFO] [stdout] test jobs::tests::queued_run_resumes_after_restart_and_exhausted_delivery_stays_failed ... ok [INFO] [stdout] test store::tests::database_and_legacy_backup_are_private ... ok [INFO] [stdout] test store::tests::clear_rotates_only_the_exact_channel_qualified_session ... ok [INFO] [stdout] test store::tests::explicit_imessage_cursor_wins_over_last_row_id ... ok [INFO] [stdout] test telegram::tests::allowlist_accepts_user_or_chat_id ... ok [INFO] [stdout] test telegram::tests::downloads_image_by_file_id_after_metadata_parsing ... ok [INFO] [stdout] test telegram::tests::downloads_voice_by_file_id_and_returns_generic_audio ... ok [INFO] [stdout] test telegram::tests::first_run_cursor_discards_pending_updates_with_negative_offset ... ok [INFO] [stdout] test telegram::tests::long_reply_send_path_preserves_chunk_order_and_limits ... ok [INFO] [stdout] test telegram::tests::parses_caption_and_selects_the_largest_photo_without_downloading ... ok [INFO] [stdout] test telegram::tests::parses_image_document_metadata_without_downloading ... ok [INFO] [stdout] test telegram::tests::parses_private_group_and_unsupported_updates ... ok [INFO] [stdout] test telegram::tests::parses_voice_attachment_without_downloading_it ... ok [INFO] [stdout] test telegram::tests::poll_preserves_http_conflict_status ... ok [INFO] [stdout] test telegram::tests::poll_uses_next_update_offset_and_long_poll_timeout ... ok [INFO] [stdout] test telegram::tests::rejected_rich_markdown_falls_back_within_the_same_chunk ... ok [INFO] [stdout] test telegram::tests::rejects_unsupported_declared_image_before_requesting_the_file ... ok [INFO] [stdout] test telegram::tests::rich_send_rejects_text_beyond_one_gateway_chunk ... ok [INFO] [stdout] test telegram::tests::send_path_posts_rich_markdown_without_token_in_payload ... ok [INFO] [stdout] test telegram::tests::splits_exact_over_limit_multi_chunk_and_unicode_text ... ok [INFO] [stdout] test telegram::tests::topic_send_does_not_retry_other_400s_and_rich_still_falls_back ... ok [INFO] [stdout] test telegram::tests::topic_send_retries_without_thread_id_on_thread_not_found ... ok [INFO] [stdout] test telegram::tests::topic_target_sends_message_thread_id ... ok [INFO] [stdout] test telegram::tests::typing_path_posts_chat_action_without_token_in_payload ... ok [INFO] [stdout] test telegram::tests::uploads_opus_voice_to_the_exact_topic ... ok [INFO] [stdout] test tests::assistant_root_cannot_overlap_push_home ... ok [INFO] [stdout] test tests::assistant_root_is_canonical_and_derives_identity_context_and_jobs ... ok [INFO] [stdout] test tests::cli_reference_covers_every_help_command ... ok [INFO] [stdout] test store::tests::interrupted_migration_rolls_back_and_retries_cleanly ... ok [INFO] [stdout] test tests::compatible_legacy_assistant_and_jobs_paths_still_load ... ok [INFO] [stdout] test tests::config_load_rejects_an_inline_token_added_inside_the_assistant ... ok [INFO] [stdout] test tests::config_rejects_legacy_claude_tool_filter_aliases ... ok [INFO] [stdout] test tests::config_load_rejects_an_inline_voice_key_inside_the_assistant ... ok [INFO] [stdout] test tests::config_rejects_legacy_claude_tools_alias ... ok [INFO] [stdout] test tests::config_rejects_removed_job_permission_profiles_key ... ok [INFO] [stdout] test tests::defaults_to_user_config_path ... ok [INFO] [stdout] test tests::divergent_legacy_paths_report_actionable_migration ... ok [INFO] [stdout] test tests::example_toml_is_a_minimal_telegram_config ... ok [INFO] [stdout] test jobs::tests::scheduler_skips_missed_ticks_and_retries_stored_output_without_rerunning ... ok [INFO] [stdout] test store::tests::empty_session_ids_preserve_fresh_session_behavior ... ok [INFO] [stdout] test tests::duplicate_enabled_channels_are_rejected ... ok [INFO] [stdout] test tests::implicit_legacy_assistant_layout_cannot_overlap_push_home ... ok [INFO] [stdout] test tests::explicit_assistant_root_rejects_runtime_state_inside_repository ... ok [INFO] [stdout] test tests::legacy_assistant_layout_cannot_overlap_push_home ... ok [INFO] [stdout] test tests::legacy_layout_with_inline_token_remains_compatible ... ok [INFO] [stdout] test jobs::tests::scheduler_shutdown_is_bounded_and_recovers_interrupted_claims ... ok [INFO] [stdout] test tests::loaded_config_file_is_shielded_from_job_workdirs ... ok [INFO] [stdout] test tests::explicit_runtime_paths_take_precedence_over_push_home_defaults ... ok [INFO] [stdout] test tests::parses_all_job_commands_with_config_anywhere ... ok [INFO] [stdout] test tests::parses_doctor_with_config_path ... ok [INFO] [stdout] test tests::parses_help_without_treating_it_as_a_command_argument ... ok [INFO] [stdout] test store::tests::completed_rows_survive_reopen_and_are_pruned_by_cursor ... ok [INFO] [stdout] test tests::parses_init_path_and_default ... ok [INFO] [stdout] test tests::parses_json_as_a_global_option ... ok [INFO] [stdout] test tests::parses_reload_as_restart ... ok [INFO] [stdout] test tests::parses_restart_with_config_path ... ok [INFO] [stdout] test tests::parses_version_command_and_flag ... ok [INFO] [stdout] test tests::rejects_missing_config_path_arg ... ok [INFO] [stdout] test tests::multi_channel_config_is_opt_in_and_defers_primary_resolution ... ok [INFO] [stdout] test tests::new_and_legacy_assistant_keys_cannot_be_mixed ... ok [INFO] [stdout] test tests::removed_permission_profiles_have_an_actionable_error ... ok [INFO] [stdout] test tests::provider_sections_reject_duplicate_flat_settings ... ok [INFO] [stdout] test tests::removed_permission_profile_tables_have_an_actionable_error ... ok [INFO] [stdout] test tests::routes_support_channel_override_exact_thread_and_legacy_imessage_key ... ok [INFO] [stdout] test tests::removed_route_permission_profile_has_an_actionable_error ... ok [INFO] [stdout] test tests::provider_sections_load_channel_settings ... ok [INFO] [stdout] test tests::relative_assistant_root_resolves_from_config_directory ... ok [INFO] [stdout] test tests::structured_assistant_profile_reports_migration ... ok [INFO] [stdout] test tests::slack_config_requires_an_explicit_user_allowlist ... ok [INFO] [stdout] test voice::tests::defaults_use_current_openai_audio_models ... ok [INFO] [stdout] test voice::tests::environment_key_overrides_config_and_empty_values_are_ignored ... ok [INFO] [stdout] test voice::tests::openai_http_errors_are_actionable_without_returning_body_content ... ok [INFO] [stdout] test tests::symlinked_push_home_cannot_hide_assistant_overlap ... ok [INFO] [stdout] test tests::voice_config_rejects_an_empty_openai_key ... ok [INFO] [stdout] test voice::tests::openai_speech_http_contract_requests_opus_and_returns_audio ... ok [INFO] [stdout] test tests::voice_config_defaults_to_cedar_and_rejects_unknown_names ... ok [INFO] [stdout] test voice::tests::provider_boundary_rejects_empty_and_oversized_input ... ok [INFO] [stdout] test voice::tests::provider_boundary_trims_transcripts_and_returns_opus ... ok [INFO] [stdout] test voice::tests::openai_transcription_http_contract_uses_multipart_and_current_model ... ok [INFO] [stdout] test tests::removed_runtime_settings_fail_with_migration_help ... ok [INFO] [stdout] test store::tests::migrates_legacy_cursors_channels_backends_and_imessage_keys ... ok [INFO] [stdout] test tests::invalid_jobs_are_non_fatal_during_gateway_startup ... ok [INFO] [stdout] test store::tests::qualified_imessage_session_wins_over_legacy_alias ... ok [INFO] [stdout] test store::tests::mark_started_can_store_backend_owned_session_id ... ok [INFO] [stdout] test store::tests::migration_is_repeatable_without_regressing_new_state ... ok [INFO] [stdout] test store::tests::pending_filename_grace_survives_reopen_and_clears ... ok [INFO] [stdout] test jobs::tests::scheduled_workers_obey_the_configured_limit ... ok [INFO] [stdout] test store::tests::concurrent_cursor_writes_never_move_backwards ... ok [INFO] [stdout] test slack::tests::production_lifecycle_authenticates_reconnects_and_redacts_rejections ... ok [INFO] [stdout] test slack::tests::web_api_waits_for_retry_after_before_retrying_once ... ok [INFO] [stdout] test slack::tests::receiver_acks_next_envelope_while_gateway_processing_is_stalled ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 446 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.37s [INFO] [stdout] [INFO] [stderr] Running tests/docs.rs (/opt/rustwide/target/release/deps/docs-9ac7742ece164aa4) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test service_guide_protects_launchd_logs ... ok [INFO] [stdout] test service_examples_select_one_push_home ... ok [INFO] [stdout] test local_documentation_links_resolve ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/init_cli.rs (/opt/rustwide/target/release/deps/init_cli-b5887cd9b3f64d46) [INFO] [stdout] [INFO] [stdout] running 14 tests [INFO] [stdout] test run_with_missing_custom_config_reports_selected_path ... ok [INFO] [stdout] test job_without_default_config_reports_init_guidance ... ok [INFO] [stdout] test doctor_without_default_config_reports_init_guidance ... ok [INFO] [stdout] test run_with_dangling_config_symlink_preserves_load_error ... ok [INFO] [stdout] test run_reads_existing_default_config_from_home ... ok [INFO] [stdout] test run_without_default_config_reports_first_run_guidance ... ok [INFO] [stdout] test help_commands_print_usage_without_creating_files ... ok [INFO] [stdout] test reload_runs_the_service_manager_when_stdout_is_closed ... ok [INFO] [stdout] test version_commands_print_version_without_creating_files ... ok [INFO] [stdout] test restart_and_reload_invoke_the_platform_service_manager ... ok [INFO] [stdout] test init_expands_home_in_requested_path ... ok [INFO] [stdout] test push_home_controls_the_default_config_location ... ok [INFO] [stdout] test explicit_config_path_takes_precedence_over_push_home ... ok [INFO] [stdout] test init_without_path_creates_assistant_in_current_directory ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/json_cli.rs (/opt/rustwide/target/release/deps/json_cli-6a9be7c2660a497e) [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test missing_config_is_json_on_stderr_with_configuration_exit_code ... ok [INFO] [stdout] test malformed_config_errors_do_not_echo_secret_values ... ok [INFO] [stdout] test status_emits_json_with_a_fake_service_manager ... ok [INFO] [stdout] test help_and_version_pin_their_json_schemas ... ok [INFO] [stdout] test unavailable_service_manager_is_a_structured_error ... ok [INFO] [stdout] test mutations_are_rejected_before_config_loading_or_runtime_changes ... ok [INFO] [stdout] test non_utf8_job_filename_still_produces_valid_json ... ok [INFO] [stdout] test validation_failure_is_json_on_stderr_with_invalid_input_exit_code ... ok [INFO] [stdout] test paths_use_pushpaths_for_the_selected_runtime_home ... ok [INFO] [stdout] test missing_installed_job_is_a_configuration_error ... ok [INFO] [stdout] test doctor_success_is_machine_readable_and_redacts_credentials ... ok [INFO] [stdout] test unavailable_backend_is_json_on_stderr_without_secrets ... ok [INFO] [stdout] test job_reviews_json_exposes_exact_activation_metadata ... ok [INFO] [stdout] test job_runs_json_omits_stored_content_fields ... ok [INFO] [stdout] test scoped_commands_emit_one_json_document_without_unrelated_output ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stderr] Running tests/manual_job_crash.rs (/opt/rustwide/target/release/deps/manual_job_crash-a00735826f79071b) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test concurrent_first_runs_on_a_fresh_database_skip_without_sqlite_errors ... ok [INFO] [stdout] test live_cli_is_not_reclaimed_and_crashed_cli_is_recovered ... ok [INFO] [stdout] test job_cli_validates_lists_shows_runs_and_reads_history ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05", kill_on_drop: false }` [INFO] [stdout] d9fb8af87b50d2c80f73b142afffc867855214ed3980d93504d7f3a4a3212c05