[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] 629bb8fc298dc6aeb87b326bdad31bd7130e2701
[INFO] testing owainlewis/push against 1.97.0-beta.6 for beta-1.98-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fowainlewis%2Fpush" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-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-6-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]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded toml_edit v0.23.10+spec-1.0.0
[INFO] [stderr]   Downloaded hashlink v0.9.1
[INFO] [stderr]   Downloaded phf_shared v0.12.1
[INFO] [stderr]   Downloaded humantime v2.3.0
[INFO] [stderr]   Downloaded phf v0.12.1
[INFO] [stderr]   Downloaded bytes v1.12.0
[INFO] [stderr]   Downloaded cc v1.2.65
[INFO] [stderr]   Downloaded rusqlite v0.32.1
[INFO] [stderr]   Downloaded webpki-roots v1.0.8
[INFO] [stderr]   Downloaded rustls v0.23.41
[INFO] [stderr]   Downloaded chrono-tz v0.10.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5
[INFO] running `Command { std: "docker" "start" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5", 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" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5" "/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" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5", 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" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling bytes v1.12.0
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zeroize v1.9.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling rustls v0.23.41
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling rustls-pki-types v1.15.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling webpki-roots v1.0.8
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling uuid v1.23.4
[INFO] [stderr]    Compiling humantime v2.3.0
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling toml_edit v0.23.10+spec-1.0.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[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 tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[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 serde v1.0.228
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer 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 rusqlite v0.32.1
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[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 hyper-rustls v0.27.9
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling push v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 00s
[INFO] running `Command { std: "docker" "inspect" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5", 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" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling push v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 15.79s
[INFO] running `Command { std: "docker" "inspect" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5", 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" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.24s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/push-41485b45107cfc20)
[INFO] [stdout] 
[INFO] [stdout] running 215 tests
[INFO] [stdout] test approval::tests::parses_plain_and_correlated_numbered_answers ... ok
[INFO] [stdout] test agent::tests::does_not_retry_other_spawn_errors ... ok
[INFO] [stdout] test assistant::tests::refuses_an_inline_secret_in_a_config_inside_the_assistant ... ok
[INFO] [stdout] test assistant::tests::refuses_legacy_independent_paths_with_migration_help ... ok
[INFO] [stdout] test audit::tests::failed_and_completed_events_include_debug_context ... ok
[INFO] [stdout] test audit::tests::accepted_event_redacts_content_by_default ... ok
[INFO] [stdout] test audit::tests::reply_failures_include_backend_context_when_known ... ok
[INFO] [stdout] test channel::tests::imessage_outbound_reply_remains_one_unsplit_message ... ok
[INFO] [stdout] test assistant::tests::refuses_runtime_state_inside_new_assistant_repository ... ok
[INFO] [stdout] test approval::tests::question_validation_bounds_prompt_choices_and_correlation ... ok
[INFO] [stdout] test assistant::tests::refuses_unrelated_non_empty_target_without_touching_it ... ok
[INFO] [stdout] test channel::tests::telegram_rejects_unallowlisted_and_group_messages ... ok
[INFO] [stdout] test channel::tests::telegram_accepts_allowlisted_private_user_or_chat ... ok
[INFO] [stdout] test claude::tests::classifies_only_claude_resume_lookup_errors_as_missing_sessions ... ok
[INFO] [stdout] test channel::tests::telegram_topic_message_gets_its_own_thread_key_and_target ... ok
[INFO] [stdout] test claude::tests::ignores_empty_session_id ... ok
[INFO] [stdout] test claude::tests::keeps_valid_session_id ... ok
[INFO] [stdout] test audit::tests::content_logging_is_opt_in ... ok
[INFO] [stdout] test assistant::tests::refuses_invalid_git_metadata_before_scaffolding ... ok
[INFO] [stdout] test claude::tests::reports_cli_json_error ... ok
[INFO] [stdout] test claude::tests::runs_resumed_session_with_resume_flag ... ok
[INFO] [stdout] test audit::tests::writes_jsonl_events ... ok
[INFO] [stdout] test channel::tests::telegram_keeps_markdown_structures_whole_or_falls_back_to_plain_chunks ... 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 assistant::tests::refuses_partial_assistant_layouts_without_completing_them ... ok
[INFO] [stdout] test codex::tests::extracts_thread_id ... ok
[INFO] [stdout] test codex::tests::ignores_empty_thread_id ... ok
[INFO] [stdout] test agent::tests::retries_text_file_busy_then_succeeds ... ok
[INFO] [stdout] test channel::tests::telegram_omits_imessage_marker_and_reply_never_exceeds_limit ... ok
[INFO] [stdout] test codex::tests::reports_non_zero_exit_stderr ... ok
[INFO] [stdout] test codex::tests::reports_timeout ... ok
[INFO] [stdout] test claude::tests::reports_timeout ... ok
[INFO] [stdout] test assistant::tests::refuses_to_replace_a_different_configured_assistant ... ok
[INFO] [stdout] test config::tests::backend_context_rejects_a_symlink_outside_the_assistant ... ok
[INFO] [stdout] test claude::tests::translates_all_permission_capabilities ... ok
[INFO] [stdout] test config::tests::rejects_uncontained_routes_jobs_and_protected_path_overlap ... ok
[INFO] [stdout] test doctor::tests::binary_checks_report_present_and_missing_bins ... ok
[INFO] [stdout] test config::tests::job_workdir_must_not_contain_the_loaded_config_file ... ok
[INFO] [stdout] test doctor::tests::doctor_rejects_an_inline_token_inside_the_assistant_repository ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_config_load_failure ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_empty_claude_tool_filter ... ok
[INFO] [stdout] test codex::tests::translates_all_permission_capabilities ... ok
[INFO] [stdout] test agent::tests::stops_after_three_text_file_busy_retries ... ok
[INFO] [stdout] test assistant::tests::init_dot_accepts_an_existing_selected_config_in_the_target ... ok
[INFO] [stdout] test claude::tests::runs_new_session_with_push_owned_session_id ... ok
[INFO] [stdout] test doctor::tests::telegram_binary_checks_do_not_require_osascript ... ok
[INFO] [stdout] test doctor::tests::telegram_preflight_checks_token_without_imessage_database ... ok
[INFO] [stdout] test codex::tests::runs_new_session_and_reads_jsonl_thread_id ... ok
[INFO] [stdout] test doctor::tests::writable_dir_check_writes_probe_file ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_invalid_config_value ... ok
[INFO] [stdout] test drafts::tests::cleanup_does_not_delete_a_replacement_revision ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_invalid_toml_config ... ok
[INFO] [stdout] test assistant::tests::repeat_initialization_preserves_user_files_and_configuration ... ok
[INFO] [stdout] test doctor::tests::doctor_reports_empty_claude_tools_list ... ok
[INFO] [stdout] test gateway::tests::ack_advances_completed_rows_below_first_in_flight ... ok
[INFO] [stdout] test assistant::tests::config_inside_root_uses_portable_relative_value ... ok
[INFO] [stdout] test assistant::tests::creates_structure_initializes_git_and_persists_canonical_root ... ok
[INFO] [stdout] test gateway::tests::ack_does_not_advance_past_in_flight_row ... ok
[INFO] [stdout] test gateway::tests::ack_advances_to_highest_completed_when_nothing_in_flight ... ok
[INFO] [stdout] test drafts::tests::configured_drafts_directory_cannot_be_a_symlink_to_installed_jobs ... ok
[INFO] [stdout] test gateway::tests::allowlisted_dm_accepted ... ok
[INFO] [stdout] test gateway::tests::bare_phone_matches_allowlist_with_plus ... ok
[INFO] [stdout] test codex::tests::resumed_lookup_failure_is_typed_before_gateway_retry ... ok
[INFO] [stdout] test codex::tests::runs_resumed_session_with_resume_command ... ok
[INFO] [stdout] test gateway::tests::email_self_chat_matching_is_case_insensitive ... ok
[INFO] [stdout] test drafts::tests::invalid_escape_symlink_and_permission_escalation_never_become_candidates ... ok
[INFO] [stdout] test doctor::tests::run_checks_reports_config_and_writable_paths ... ok
[INFO] [stdout] test gateway::tests::empty_text_dropped ... ok
[INFO] [stdout] test claude::tests::resumed_lookup_failure_is_typed_before_gateway_retry ... 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 assistant::tests::persists_root_at_top_level_when_config_ends_with_a_table ... ok
[INFO] [stdout] test codex::tests::satisfies_runner_contract ... 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 drafts::tests::approval_survives_restart_and_installs_once_for_exact_channel_identity ... ok
[INFO] [stdout] test gateway::tests::imessage_keeps_legacy_sandbox_path_while_telegram_is_qualified ... ok
[INFO] [stdout] test drafts::tests::edit_after_presentation_invalidates_approval_and_reject_keeps_draft_inactive ... ok
[INFO] [stdout] test gateway::tests::draft_boundary_failure_delivers_existing_outbound_without_misreporting_setup ... ok
[INFO] [stdout] test gateway::tests::failed_question_delivery_keeps_the_durable_pending_question ... 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 drafts::tests::restart_finalizes_an_exact_install_completed_before_database_update ... ok
[INFO] [stdout] test gateway::tests::own_reply_dropped ... ok
[INFO] [stdout] test gateway::tests::canonical_history_failure_prevents_backend_dispatch_and_cursor_advance ... ok
[INFO] [stdout] test gateway::tests::plus_phone_matches_bare_allowlist ... ok
[INFO] [stdout] test gateway::tests::periodic_activity_refreshes_until_operation_completes ... ok
[INFO] [stdout] test gateway::tests::failed_draft_delivery_retries_after_restart_before_expiry ... ok
[INFO] [stdout] test gateway::tests::draft_boundary_failure_completes_in_flight_row_and_advances_cursor ... ok
[INFO] [stdout] test gateway::tests::concurrent_origins_present_only_their_isolated_drafts ... ok
[INFO] [stdout] test gateway::tests::expired_answer_is_audited_without_reaching_the_backend ... ok
[INFO] [stdout] test gateway::tests::primary_delivery_is_scoped_validated_and_non_fatal_when_missing_or_invalid ... ok
[INFO] [stdout] test gateway::tests::self_chat_accepted ... ok
[INFO] [stdout] test gateway::tests::shutdown_cancels_a_pending_poll_operation ... 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::enabled_channels_process_concurrently_with_isolated_state_and_origin_replies ... ok
[INFO] [stdout] test gateway::tests::exhausted_delivery_batch_retries_without_blocking_cursor ... ok
[INFO] [stdout] test gateway::tests::fake_channel_e2e_replies_once_ignores_unallowlisted_and_reuses_session ... ok
[INFO] [stdout] test gateway::tests::missing_primary_disables_new_schedules_without_stopping_gateway ... ok
[INFO] [stdout] test gateway::tests::group_shutdown_waits_for_an_in_flight_channel_worker ... ok
[INFO] [stdout] test gateway::tests::session_lookup_failure_completes_in_flight_row ... ok
[INFO] [stdout] test gateway::tests::soul_read_failure_stops_backend_dispatch_and_completes_row ... ok
[INFO] [stdout] test history::tests::database_permissions_are_owner_only ... ok
[INFO] [stdout] test gateway::tests::sandbox_setup_failure_completes_in_flight_row_and_advances_cursor ... ok
[INFO] [stdout] test gateway::tests::failed_run_and_recovered_outbound_still_reconcile_origin_drafts ... ok
[INFO] [stdout] test gateway::tests::pending_outbound_is_delivered_after_restart_without_backend_rerun ... ok
[INFO] [stdout] test history::tests::migrates_new_database_and_reopens_it ... ok
[INFO] [stdout] test gateway::tests::missing_backend_session_rotates_and_rehydrates_once ... ok
[INFO] [stdout] test gateway::tests::backend_switch_and_clear_start_fresh_sessions_with_history ... ok
[INFO] [stdout] test gateway::tests::imessage_question_delivers_and_plain_number_resolves_once ... ok
[INFO] [stdout] test gateway::tests::telegram_filters_before_agent_and_replies_to_originating_chat ... ok
[INFO] [stdout] test history::tests::gateway_and_backend_outbound_origins_are_distinct ... ok
[INFO] [stdout] test gateway::tests::route_agent_draft_requires_bound_approval_before_atomic_install ... ok
[INFO] [stdout] test imessage::attributed_body::tests::empty ... 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 history::tests::generated_reply_is_unique_and_delivery_survives_restart ... ok
[INFO] [stdout] test gateway::tests::telegram_question_rejects_wrong_topic_sender_and_duplicate ... ok
[INFO] [stdout] test jobs::tests::cron_validation_rejects_malformed_fields_and_ranges ... ok
[INFO] [stdout] test gateway::tests::session_state_save_failure_keeps_reply_for_restart_without_backend_rerun ... ok
[INFO] [stdout] test jobs::tests::cron_skips_nonexistent_dst_time_and_uses_first_ambiguous_instant ... ok
[INFO] [stdout] test history::tests::malformed_utf8_history_is_replaced_without_failing_the_read ... ok
[INFO] [stdout] test jobs::tests::loads_valid_jobs_and_isolates_invalid_files ... ok
[INFO] [stdout] test jobs::tests::manual_claim_process_helper ... ok
[INFO] [stdout] test history::tests::oversized_history_is_bounded_during_the_database_read ... 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 jobs::tests::preserves_the_instruction_body_verbatim ... ok
[INFO] [stdout] test history::tests::migrates_v2_approval_database_and_preserves_pending_question ... ok
[INFO] [stdout] test history::tests::pending_question_survives_restart_and_answer_is_consumed_once ... ok
[INFO] [stdout] test history::tests::migrates_v1_history_database_without_losing_messages ... ok
[INFO] [stdout] test gateway::tests::telegram_topic_gets_own_thread_and_reply_targets_the_topic ... ok
[INFO] [stdout] test history::tests::recent_messages_are_bounded_to_one_channel_and_thread ... ok
[INFO] [stdout] test jobs::tests::live_scheduled_claim_survives_restart_and_stale_claim_becomes_deliverable ... ok
[INFO] [stdout] test jobs::tests::backend_override_selects_claude_with_a_fresh_session ... ok
[INFO] [stdout] test jobs::tests::live_claim_is_not_recovered_and_overlap_is_recorded_for_schedule ... ok
[INFO] [stdout] test jobs::tests::lock_and_ledger_prevent_overlap_and_recover_stale_claim ... ok
[INFO] [stdout] test history::tests::question_rejects_mismatch_expiry_invalid_choice_and_cancellation ... ok
[INFO] [stdout] test jobs::tests::validation_enforces_permission_timeout_backend_and_workdir ... ok
[INFO] [stdout] test jobs::tests::run_rows_and_results_survive_reopen ... ok
[INFO] [stdout] test rehydration::tests::role_and_content_are_json_delimited ... ok
[INFO] [stdout] test soul::tests::ignores_legacy_context_files ... ok
[INFO] [stdout] test soul::tests::loads_soul_and_appends_invariants_without_rewriting_file ... ok
[INFO] [stdout] test soul::tests::malformed_soul_is_an_error_instead_of_silently_dropping_identity ... ok
[INFO] [stdout] test soul::tests::missing_soul_has_predictable_gateway_invariants ... ok
[INFO] [stdout] test imessage::poller::tests::poll_uses_attributed_body_when_text_is_null ... ok
[INFO] [stdout] test store::tests::backend_change_starts_fresh_session ... ok
[INFO] [stdout] test jobs::tests::pending_delivery_replays_without_a_current_primary_destination ... ok
[INFO] [stdout] test store::tests::channel_cursors_persist_independently ... ok
[INFO] [stdout] test store::tests::existing_empty_unstarted_backend_session_id_starts_fresh_session ... ok
[INFO] [stdout] test jobs::tests::manual_codex_runs_use_fresh_sessions_and_persist_results ... ok
[INFO] [stdout] test jobs::tests::winning_claim_rereads_and_records_the_installed_snapshot ... ok
[INFO] [stdout] test store::tests::legacy_imessage_session_moves_to_channel_qualified_key ... ok
[INFO] [stdout] test jobs::tests::stored_results_are_bounded ... ok
[INFO] [stdout] test jobs::tests::scheduled_timeout_is_persisted_before_delivery ... ok
[INFO] [stdout] test jobs::tests::scheduled_execution_failure_is_distinct_from_delivery_failure ... ok
[INFO] [stdout] test telegram::tests::long_reply_send_path_preserves_chunk_order_and_limits ... ok
[INFO] [stdout] test telegram::tests::parses_private_group_and_unsupported_updates ... 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 store::tests::legacy_last_row_id_remains_the_imessage_cursor ... ok
[INFO] [stdout] test telegram::tests::allowlist_accepts_user_or_chat_id ... ok
[INFO] [stdout] test telegram::tests::first_run_cursor_discards_pending_updates_with_negative_offset ... ok
[INFO] [stdout] test store::tests::mark_started_can_store_backend_owned_session_id ... ok
[INFO] [stdout] test store::tests::mark_started_does_not_activate_empty_backend_session_id ... ok
[INFO] [stdout] test store::tests::mark_started_ignores_empty_backend_session_id ... ok
[INFO] [stdout] test telegram::tests::rejected_rich_markdown_falls_back_to_plain_chunks ... ok
[INFO] [stdout] test telegram::tests::send_path_posts_rich_markdown_without_token_in_payload ... ok
[INFO] [stdout] test telegram::tests::topic_send_retries_without_thread_id_on_thread_not_found ... 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_target_sends_message_thread_id ... ok
[INFO] [stdout] test telegram::tests::splits_exact_over_limit_multi_chunk_and_unicode_text ... ok
[INFO] [stdout] test tests::built_in_inherit_profile_cannot_be_redefined ... ok
[INFO] [stdout] test tests::config_rejects_legacy_claude_tools_alias ... ok
[INFO] [stdout] test rehydration::tests::oversized_history_keeps_recent_messages_within_the_bound ... ok
[INFO] [stdout] test tests::config_rejects_removed_job_permission_profiles_key ... ok
[INFO] [stdout] test tests::defaults_to_toml_config_path ... ok
[INFO] [stdout] test tests::compatible_legacy_assistant_and_jobs_paths_still_load ... ok
[INFO] [stdout] test telegram::tests::typing_path_posts_chat_action_without_token_in_payload ... ok
[INFO] [stdout] test tests::assistant_root_is_canonical_and_derives_identity_context_and_jobs ... ok
[INFO] [stdout] test tests::example_toml_is_a_minimal_telegram_config ... ok
[INFO] [stdout] test tests::config_rejects_legacy_claude_tool_filter_aliases ... ok
[INFO] [stdout] test tests::divergent_legacy_paths_report_actionable_migration ... ok
[INFO] [stdout] test rehydration::tests::escaped_control_characters_cannot_exceed_the_serialized_bounds ... ok
[INFO] [stdout] test tests::duplicate_enabled_channels_are_rejected ... ok
[INFO] [stdout] test tests::explicit_assistant_root_rejects_runtime_state_inside_repository ... ok
[INFO] [stdout] test tests::inherit_profile_is_selectable_for_default_and_routes ... 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_init_path_and_default ... ok
[INFO] [stdout] test jobs::tests::queued_run_resumes_after_restart_and_exhausted_delivery_stays_failed ... ok
[INFO] [stdout] test tests::legacy_flat_telegram_settings_remain_supported ... ok
[INFO] [stdout] test tests::provider_sections_load_channel_settings ... ok
[INFO] [stdout] test tests::rejects_missing_config_path_arg ... ok
[INFO] [stdout] test jobs::tests::restarted_scheduler_respects_live_cli_process_then_recovers_after_crash ... ok
[INFO] [stdout] test tests::routes_support_channel_override_exact_thread_and_legacy_imessage_key ... ok
[INFO] [stdout] test tests::structured_assistant_profile_reports_migration ... ok
[INFO] [stdout] test tests::legacy_layout_with_inline_token_remains_compatible ... ok
[INFO] [stdout] test tests::relative_assistant_root_resolves_from_config_directory ... ok
[INFO] [stdout] test tests::loaded_config_file_is_shielded_from_job_workdirs ... ok
[INFO] [stdout] test tests::multi_channel_config_is_opt_in_and_defers_primary_resolution ... ok
[INFO] [stdout] test tests::unknown_route_permission_profile_fails_config_load ... ok
[INFO] [stdout] test tests::config_load_rejects_an_inline_token_added_inside_the_assistant ... ok
[INFO] [stdout] test tests::new_and_legacy_assistant_keys_cannot_be_mixed ... ok
[INFO] [stdout] test tests::provider_sections_reject_duplicate_flat_settings ... ok
[INFO] [stdout] test jobs::tests::timeout_is_terminal_and_does_not_block_a_later_run ... ok
[INFO] [stdout] test tests::invalid_jobs_are_non_fatal_during_gateway_startup ... ok
[INFO] [stdout] test imessage::poller::tests::poll_decodes_text_filters_system_rows_and_marks_groups ... ok
[INFO] [stdout] test store::tests::existing_empty_backend_session_id_starts_fresh_session ... ok
[INFO] [stdout] test jobs::tests::scheduler_skips_missed_ticks_and_retries_stored_output_without_rerunning ... ok
[INFO] [stdout] test jobs::tests::scheduled_workers_obey_the_configured_limit ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 215 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.96s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/init_cli.rs (/opt/rustwide/target/debug/deps/init_cli-84ac6b7641e67254)
[INFO] [stdout] 
[INFO] [stdout] running 2 tests
[INFO] [stdout] test init_expands_home_in_requested_path ... ok
[INFO] [stderr]      Running tests/manual_job_crash.rs (/opt/rustwide/target/debug/deps/manual_job_crash-7c8657509445fed7)
[INFO] [stdout] test init_without_path_creates_assistant_in_current_directory ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[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.21s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5", kill_on_drop: false }`
[INFO] [stdout] a87b9f119cb9d029f906b7194bc89f648de31a42d3b4653e35a0c7cc39c024a5
