[INFO] fetching crate roboticus-db 0.11.4...
[INFO] testing roboticus-db-0.11.4 against 1.95.0 for beta-1.96-2
[INFO] extracting crate roboticus-db 0.11.4 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate roboticus-db 0.11.4
[INFO] finished tweaking crates.io crate roboticus-db 0.11.4
[INFO] tweaked toml for crates.io crate roboticus-db 0.11.4 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate roboticus-db 0.11.4 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate roboticus-db 0.11.4 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.117
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.117
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.117
[INFO] [stderr]   Downloaded instant-distance v0.6.1
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.117
[INFO] [stderr]   Downloaded r2d2_sqlite v0.25.0
[INFO] [stderr]   Downloaded js-sys v0.3.94
[INFO] [stderr]   Downloaded roboticus-core v0.11.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3418d3b2f4f298bf75c2641d8c7748e40bff9b5b088c2ce31639b1b2f780bd88
[INFO] running `Command { std: "docker" "start" "-a" "3418d3b2f4f298bf75c2641d8c7748e40bff9b5b088c2ce31639b1b2f780bd88", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3418d3b2f4f298bf75c2641d8c7748e40bff9b5b088c2ce31639b1b2f780bd88", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3418d3b2f4f298bf75c2641d8c7748e40bff9b5b088c2ce31639b1b2f780bd88", kill_on_drop: false }`
[INFO] [stdout] 3418d3b2f4f298bf75c2641d8c7748e40bff9b5b088c2ce31639b1b2f780bd88
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 23d7e4df05ce26a24f0a66d85935ad2b002f3f1385bc7e71be62d5fcfd8e9d28
[INFO] running `Command { std: "docker" "start" "-a" "23d7e4df05ce26a24f0a66d85935ad2b002f3f1385bc7e71be62d5fcfd8e9d28", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling cc v1.2.58
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling rand_core v0.10.0
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling opaque-debug v0.3.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling base64ct v1.8.3
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling ordered-float v3.9.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rand v0.10.0
[INFO] [stderr]    Compiling scheduled-thread-pool v0.2.7
[INFO] [stderr]    Compiling r2d2 v0.8.10
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling password-hash v0.5.0
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling polyval v0.6.2
[INFO] [stderr]    Compiling ctr v0.9.2
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling ghash v0.5.1
[INFO] [stderr]    Compiling blake2 v0.10.6
[INFO] [stderr]    Compiling argon2 v0.5.3
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling aes-gcm v0.10.3
[INFO] [stderr]    Compiling instant-distance v0.6.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling roboticus-core v0.11.4
[INFO] [stderr]    Compiling r2d2_sqlite v0.25.0
[INFO] [stderr]    Compiling roboticus-db v0.11.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.60s
[INFO] running `Command { std: "docker" "inspect" "23d7e4df05ce26a24f0a66d85935ad2b002f3f1385bc7e71be62d5fcfd8e9d28", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "23d7e4df05ce26a24f0a66d85935ad2b002f3f1385bc7e71be62d5fcfd8e9d28", kill_on_drop: false }`
[INFO] [stdout] 23d7e4df05ce26a24f0a66d85935ad2b002f3f1385bc7e71be62d5fcfd8e9d28
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3f3a9e03ede99ab153aceab9a09e28fd5ad6cb8f4ac03e26d5664582f18e362b
[INFO] running `Command { std: "docker" "start" "-a" "3f3a9e03ede99ab153aceab9a09e28fd5ad6cb8f4ac03e26d5664582f18e362b", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling r2d2_sqlite v0.25.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling roboticus-core v0.11.4
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling roboticus-db v0.11.4 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 27.48s
[INFO] running `Command { std: "docker" "inspect" "3f3a9e03ede99ab153aceab9a09e28fd5ad6cb8f4ac03e26d5664582f18e362b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3f3a9e03ede99ab153aceab9a09e28fd5ad6cb8f4ac03e26d5664582f18e362b", kill_on_drop: false }`
[INFO] [stdout] 3f3a9e03ede99ab153aceab9a09e28fd5ad6cb8f4ac03e26d5664582f18e362b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 57ea1639e3f5012a444d25d53685f7fcf5863bda698d4ae11f63478d3f43be95
[INFO] running `Command { std: "docker" "start" "-a" "57ea1639e3f5012a444d25d53685f7fcf5863bda698d4ae11f63478d3f43be95", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.24s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/roboticus_db-36384fd8659c48d3)
[INFO] [stdout] 
[INFO] [stdout] running 544 tests
[INFO] [stdout] test agents::tests::delete_works ... ok
[INFO] [stdout] test agents::tests::record_subagent_usage_updates_counter_and_recency ... ok
[INFO] [stdout] test abuse::tests::respects_limit ... ok
[INFO] [stdout] test agents::tests::session_counts_by_agent_reads_sessions_table ... ok
[INFO] [stdout] test agents::tests::upsert_and_list ... ok
[INFO] [stdout] test agents::tests::retirement_eligible_when_old_and_never_used ... ok
[INFO] [stdout] test agents::tests::list_enabled_filters ... ok
[INFO] [stdout] test abuse::tests::count_since_filters_correctly ... ok
[INFO] [stdout] test abuse::tests::empty_actor_returns_empty ... ok
[INFO] [stdout] test ann::tests::clone_shares_state ... ok
[INFO] [stdout] test abuse::tests::retrieve_by_origin ... ok
[INFO] [stdout] test agents::tests::retirement_not_eligible_after_delegation_record ... ok
[INFO] [stdout] test abuse::tests::record_and_retrieve_by_actor ... ok
[INFO] [stdout] test agents::tests::disable_subagents_by_name_updates_row ... ok
[INFO] [stdout] test agents::tests::upsert_normalizes_missing_fallback_models ... ok
[INFO] [stdout] test agents::tests::count_delegations_detects_successful_delegate_output ... ok
[INFO] [stdout] test agents::tests::disable_subagents_by_name_matches_upsert_enabled_false ... ok
[INFO] [stdout] test agents::tests::upsert_updates_existing ... ok
[INFO] [stdout] test backend::tests::backend_config_default_serde ... ok
[INFO] [stdout] test backend::tests::backend_config_defaults ... ok
[INFO] [stdout] test backend::tests::backend_config_serde_roundtrip ... ok
[INFO] [stdout] test backend::tests::in_memory_backend_default ... ok
[INFO] [stdout] test backend::tests::in_memory_backend_type ... ok
[INFO] [stdout] test backend::tests::in_memory_execute ... ok
[INFO] [stdout] test backend::tests::in_memory_query ... ok
[INFO] [stdout] test backend::tests::in_memory_transaction ... ok
[INFO] [stdout] test backend::tests::query_param_blob_variant ... ok
[INFO] [stdout] test backend::tests::query_param_from_conversions ... ok
[INFO] [stdout] test backend::tests::query_param_from_owned_string ... ok
[INFO] [stdout] test backend::tests::query_param_serde ... ok
[INFO] [stdout] test backend::tests::row_accessors ... ok
[INFO] [stdout] test backend::tests::row_default ... ok
[INFO] [stdout] test backend::tests::row_get_blob_returns_none_for_wrong_type ... ok
[INFO] [stdout] test backend::tests::row_get_real_returns_none_for_wrong_type ... ok
[INFO] [stdout] test backend::tests::row_missing_column ... ok
[INFO] [stdout] test backend::tests::storage_error_display ... ok
[INFO] [stdout] test backend::tests::storage_error_is_error_trait ... ok
[INFO] [stdout] test backend::tests::storage_error_kind_display ... ok
[INFO] [stdout] test backend::tests::storage_error_kind_display_all_variants ... ok
[INFO] [stdout] test ann::tests::build_from_blob_embeddings ... ok
[INFO] [stdout] test ann::tests::build_skips_empty_embeddings ... ok
[INFO] [stdout] test ann::tests::below_min_entries_no_index ... ok
[INFO] [stdout] test ann::tests::builds_index_above_threshold ... ok
[INFO] [stdout] test ann::tests::disabled_index_returns_none ... ok
[INFO] [stdout] test ann::tests::empty_db_no_index ... ok
[INFO] [stdout] test ann::tests::search_returns_nearest ... ok
[INFO] [stdout] test approvals::tests::approval_decision_denied ... ok
[INFO] [stdout] test approvals::tests::record_approval_request_upserts_on_conflict ... ok
[INFO] [stdout] test approvals::tests::record_approval_request_inserts ... ok
[INFO] [stdout] test approvals::tests::record_approval_request_with_no_session ... ok
[INFO] [stdout] test ann::tests::build_skips_empty_blobs ... ok
[INFO] [stdout] test approvals::tests::record_approval_decision_on_nonexistent_is_noop ... ok
[INFO] [stdout] test approvals::tests::multiple_approval_requests ... ok
[INFO] [stdout] test checkpoint::tests::load_checkpoint_no_session_returns_none ... ok
[INFO] [stdout] test approvals::tests::record_approval_decision_updates_existing ... ok
[INFO] [stdout] test cache::tests::replace_existing_entry ... ok
[INFO] [stdout] test cache::tests::cache_count_empty ... ok
[INFO] [stdout] test cache::tests::save_without_embedding ... ok
[INFO] [stdout] test checkpoint::tests::prune_checkpoints_keeps_n_per_session ... ok
[INFO] [stdout] test cache::tests::save_and_load_roundtrip ... ok
[INFO] [stdout] test checkpoint::tests::clear_checkpoints_removes_all ... ok
[INFO] [stdout] test checkpoint::tests::checkpoint_with_no_optional_fields ... ok
[INFO] [stdout] test cache::tests::evict_null_expiry_after_max_age ... ok
[INFO] [stdout] test cache::tests::evict_expired ... ok
[INFO] [stdout] test checkpoint::tests::count_checkpoints_accurate ... ok
[INFO] [stdout] test checkpoint::tests::load_checkpoint_returns_most_recent ... ok
[INFO] [stdout] test checkpoint::tests::save_and_load_checkpoint ... ok
[INFO] [stdout] test cron::tests::acquire_lease_nonexistent_job ... ok
[INFO] [stdout] test cron::tests::create_job_defaults ... ok
[INFO] [stdout] test cron::tests::create_and_list_jobs ... ok
[INFO] [stdout] test cron::tests::consecutive_errors_compound ... ok
[INFO] [stdout] test cron::tests::delete_job_cascades_cron_runs ... ok
[INFO] [stdout] test cron::tests::list_jobs_empty_db ... ok
[INFO] [stdout] test cron::tests::create_job_with_schedule_expr ... ok
[INFO] [stdout] test cron::tests::list_runs_all ... ok
[INFO] [stdout] test cron::tests::get_job_nonexistent_returns_none ... ok
[INFO] [stdout] test cron::tests::lease_acquisition_and_release ... ok
[INFO] [stdout] test cron::tests::get_and_delete_job ... ok
[INFO] [stdout] test cron::tests::list_runs_empty ... ok
[INFO] [stdout] test cron::tests::list_runs_by_job_id ... ok
[INFO] [stdout] test cron::tests::list_runs_fields_populated ... ok
[INFO] [stdout] test cron::tests::record_run_persists_output_text ... ok
[INFO] [stdout] test cron::tests::list_runs_respects_limit ... ok
[INFO] [stdout] test cron::tests::record_run_returns_unique_ids ... ok
[INFO] [stdout] test cron::tests::record_run_success_clears_last_error ... ok
[INFO] [stdout] test cron::tests::record_run_with_none_duration ... ok
[INFO] [stdout] test cron::tests::release_lease_wrong_holder_is_noop ... ok
[INFO] [stdout] test cron::tests::update_job_all_fields ... ok
[INFO] [stdout] test cron::tests::update_job_empty_returns_false ... ok
[INFO] [stdout] test delivery_queue::tests::parse_db_ts_invalid_returns_none ... ok
[INFO] [stdout] test delivery_queue::tests::parse_db_ts_rfc3339 ... ok
[INFO] [stdout] test delivery_queue::tests::parse_db_ts_sqlite_format ... ok
[INFO] [stdout] test cron::tests::record_run_updates_job ... ok
[INFO] [stdout] test cron::tests::release_lease_nonexistent_job ... ok
[INFO] [stdout] test cron::tests::update_job_nonexistent_returns_false ... ok
[INFO] [stdout] test cron::tests::update_job_name_only ... ok
[INFO] [stdout] test cron::tests::update_job_enabled_flag ... ok
[INFO] [stdout] test cron::tests::update_job_schedule ... ok
[INFO] [stdout] test delegation::tests::delegation_stats_groups_by_agent ... ok
[INFO] [stdout] test delegation::tests::insert_and_retrieve_outcome ... ok
[INFO] [stdout] test delivery_queue::tests::list_dead_letters_empty ... ok
[INFO] [stdout] test delegation::tests::skill_utilization_persists_and_retrieves ... ok
[INFO] [stdout] test delivery_queue::tests::list_dead_letters_only_dead ... ok
[INFO] [stdout] test delivery_queue::tests::list_recoverable_empty ... ok
[INFO] [stdout] test delivery_queue::tests::mark_delivered_updates_status ... ok
[INFO] [stdout] test delivery_queue::tests::mark_in_flight_updates_status ... ok
[INFO] [stdout] test efficiency::tests::cutoff_expr_1h ... ok
[INFO] [stdout] test efficiency::tests::cutoff_expr_24h ... ok
[INFO] [stdout] test efficiency::tests::cutoff_expr_30d ... ok
[INFO] [stdout] test delivery_queue::tests::mark_in_flight_nonexistent_is_noop ... ok
[INFO] [stdout] test delivery_queue::tests::replay_dead_letter_moves_back_to_pending ... ok
[INFO] [stdout] test delivery_queue::tests::replay_dead_letter_nonexistent_returns_false ... ok
[INFO] [stdout] test delivery_queue::tests::stale_in_flight_is_recoverable ... ok
[INFO] [stdout] test delivery_queue::tests::upsert_updates_existing ... ok
[INFO] [stdout] test delivery_queue::tests::replay_non_dead_letter_returns_false ... ok
[INFO] [stdout] test efficiency::tests::build_user_profile_empty_db ... ok
[INFO] [stdout] test efficiency::tests::period_all_vs_default ... ok
[INFO] [stdout] test delivery_queue::tests::upsert_and_list_recoverable ... ok
[INFO] [stdout] test efficiency::tests::all_cached_full_rate ... ok
[INFO] [stdout] test efficiency::tests::trend_label_edge_cases ... ok
[INFO] [stdout] test efficiency::tests::trend_label_logic ... ok
[INFO] [stdout] test efficiency::tests::build_user_profile_memory_retrieval_default ... ok
[INFO] [stdout] test efficiency::tests::build_user_profile_grade_coverage ... ok
[INFO] [stdout] test efficiency::tests::compute_quality_few_entries_stable_trend ... ok
[INFO] [stdout] test embeddings::tests::blob_empty ... ok
[INFO] [stdout] test embeddings::tests::blob_roundtrip ... ok
[INFO] [stdout] test embeddings::tests::blob_size_is_4x_floats ... ok
[INFO] [stdout] test efficiency::tests::build_user_profile_with_data ... ok
[INFO] [stdout] test efficiency::tests::empty_database_returns_empty_report ... ok
[INFO] [stdout] test embeddings::tests::cosine_empty_vectors ... ok
[INFO] [stdout] test embeddings::tests::cosine_identical_vectors ... ok
[INFO] [stdout] test embeddings::tests::cosine_mismatched_lengths ... ok
[INFO] [stdout] test embeddings::tests::cosine_opposite_vectors ... ok
[INFO] [stdout] test embeddings::tests::cosine_orthogonal_vectors ... ok
[INFO] [stdout] test embeddings::tests::cosine_zero_vector ... ok
[INFO] [stdout] test efficiency::tests::model_filter_works ... ok
[INFO] [stdout] test efficiency::tests::compute_quality_for_model_no_feedback ... ok
[INFO] [stdout] test efficiency::tests::compute_quality_for_model_with_feedback ... ok
[INFO] [stdout] test efficiency::tests::report_biggest_cost_driver_with_no_models ... ok
[INFO] [stdout] test efficiency::tests::no_cached_zero_rate ... ok
[INFO] [stdout] test efficiency::tests::report_cost_attribution_all_history ... ok
[INFO] [stdout] test efficiency::tests::multiple_models_totals ... ok
[INFO] [stdout] test efficiency::tests::multiple_models_identifies_most_efficient ... ok
[INFO] [stdout] test efficiency::tests::time_series_has_entries ... ok
[INFO] [stdout] test embeddings::tests::load_embedding_empty_blob_returns_none ... ok
[INFO] [stdout] test embeddings::tests::load_embedding_from_blob ... ok
[INFO] [stdout] test embeddings::tests::load_embedding_none_returns_none ... ok
[INFO] [stdout] test efficiency::tests::single_model_report ... ok
[INFO] [stdout] test efficiency::tests::trend_metrics_with_time_series ... ok
[INFO] [stdout] test efficiency::tests::zero_tokens_out_no_division_by_zero ... ok
[INFO] [stdout] test efficiency::tests::zero_tokens_in_no_division_by_zero ... ok
[INFO] [stdout] test ext::tests::db_result_ext_converts_error ... ok
[INFO] [stdout] test embeddings::tests::cleanup_orphaned_embeddings_noop_when_clean ... ok
[INFO] [stdout] test embeddings::tests::cleanup_orphaned_embeddings_removes_dangling ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_empty_db ... ok
[INFO] [stdout] test embeddings::tests::search_similar_skips_row_without_embedding ... ok
[INFO] [stdout] test embeddings::tests::embedding_count_works ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_combined_scores ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_fts_matches ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_fts_only_no_embedding ... ok
[INFO] [stdout] test hippocampus::tests::column_def_serialization ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_respects_limit ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_no_embedding ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_sorted_by_similarity ... ok
[INFO] [stdout] test embeddings::tests::search_min_similarity_filter ... ok
[INFO] [stdout] test embeddings::tests::hybrid_search_vector_only ... ok
[INFO] [stdout] test embeddings::tests::store_replaces_existing ... ok
[INFO] [stdout] test embeddings::tests::store_and_search ... ok
[INFO] [stdout] test hippocampus::tests::access_level_and_row_count_round_trip ... ok
[INFO] [stdout] test hippocampus::tests::bootstrap_counts_rows ... ok
[INFO] [stdout] test hippocampus::tests::bootstrap_introspects_columns ... ok
[INFO] [stdout] test hippocampus::tests::compact_summary_includes_knowledge_sources ... ok
[INFO] [stdout] test hippocampus::tests::create_agent_table_invalid_chars ... ok
[INFO] [stdout] test hippocampus::tests::bootstrap_discovers_all_system_tables ... ok
[INFO] [stdout] test hippocampus::tests::compact_summary_includes_system_and_agent_tables ... ok
[INFO] [stdout] test hippocampus::tests::bootstrap_consistency_removes_stale_entries ... ok
[INFO] [stdout] test hippocampus::tests::compact_summary_fits_token_budget ... ok
[INFO] [stdout] test hippocampus::tests::create_agent_table_empty_columns ... ok
[INFO] [stdout] test hippocampus::tests::bootstrap_sets_access_levels ... ok
[INFO] [stdout] test hippocampus::tests::create_agent_table_invalid_column_name ... ok
[INFO] [stdout] test hippocampus::tests::bootstrap_preserves_agent_tables ... ok
[INFO] [stdout] test hippocampus::tests::create_agent_table_invalid_column_type ... ok
[INFO] [stdout] test hippocampus::tests::bootstrap_idempotent ... ok
[INFO] [stdout] test hippocampus::tests::create_agent_table_success ... ok
[INFO] [stdout] test hippocampus::tests::drop_agent_table_nonexistent ... ok
[INFO] [stdout] test hippocampus::tests::drop_agent_table_success ... ok
[INFO] [stdout] test hippocampus::tests::system_table_metadata_known_tables ... ok
[INFO] [stdout] test hippocampus::tests::system_table_metadata_unknown_table ... ok
[INFO] [stdout] test hippocampus::tests::validate_identifier_empty_fails ... ok
[INFO] [stdout] test hippocampus::tests::validate_identifier_special_chars_fail ... ok
[INFO] [stdout] test hippocampus::tests::validate_identifier_valid ... ok
[INFO] [stdout] test hippocampus::tests::drop_system_table_fails ... ok
[INFO] [stdout] test hippocampus::tests::drop_agent_table_wrong_owner ... ok
[INFO] [stdout] test hippocampus::tests::list_agent_tables_filters ... ok
[INFO] [stdout] test hippocampus::tests::get_table_not_found ... ok
[INFO] [stdout] test hippocampus::tests::list_agent_tables_empty_for_unknown_agent ... ok
[INFO] [stdout] test hippocampus::tests::register_table_upsert ... ok
[INFO] [stdout] test hippocampus::tests::schema_summary_column_without_description ... ok
[INFO] [stdout] test hippocampus::tests::list_tables_includes_bootstrap ... ok
[INFO] [stdout] test hippocampus::tests::list_tables_grows_with_registration ... ok
[INFO] [stdout] test hippocampus::tests::schema_summary_after_bootstrap ... ok
[INFO] [stdout] test hippocampus::tests::register_and_get_table ... ok
[INFO] [stdout] test hippocampus::tests::schema_summary_with_agent_owned_table ... ok
[INFO] [stdout] test hippocampus::tests::schema_summary_with_tables ... ok
[INFO] [stdout] test hippocampus::tests::seed_system_tables_idempotent ... ok
[INFO] [stdout] test hygiene_log::tests::log_and_retrieve_hygiene_sweep ... ok
[INFO] [stdout] test hippocampus::tests::seed_system_tables_upserts_over_bootstrap ... ok
[INFO] [stdout] test hygiene_log::tests::recent_hygiene_log_empty_db ... ok
[INFO] [stdout] test hygiene_log::tests::recent_hygiene_log_respects_limit ... ok
[INFO] [stdout] test learned_skills::tests::get_nonexistent_returns_none ... ok
[INFO] [stdout] test learned_skills::tests::count_learned_skills_empty_and_populated ... ok
[INFO] [stdout] test learned_skills::tests::list_learned_skills_ordered_by_priority ... ok
[INFO] [stdout] test learned_skills::tests::list_respects_limit ... ok
[INFO] [stdout] test learned_skills::tests::prune_dead_learned_skills_empty_is_noop ... ok
[INFO] [stdout] test learned_skills::tests::record_success_and_failure ... ok
[INFO] [stdout] test learned_skills::tests::store_and_retrieve_learned_skill ... ok
[INFO] [stdout] test learned_skills::tests::set_skill_md_path ... ok
[INFO] [stdout] test learned_skills::tests::update_priority ... ok
[INFO] [stdout] test learned_skills::tests::prune_dead_learned_skills_removes_zero_priority ... ok
[INFO] [stdout] test learned_skills::tests::store_duplicate_name_upserts_without_double_counting ... ok
[INFO] [stdout] test memory::tests::cleanup_orphaned_working_memory_removes_dangling ... ok
[INFO] [stdout] test memory::tests::cleanup_orphaned_working_memory_noop_when_clean ... ok
[INFO] [stdout] test memory::tests::fts_search_finds_across_tiers ... ok
[INFO] [stdout] test memory::tests::episodic_memory_roundtrip ... ok
[INFO] [stdout] test memory::tests::fts_search_like_fallback_relationship ... ok
[INFO] [stdout] test memory::tests::fts_respects_limit ... ok
[INFO] [stdout] test memory::tests::fts_search_like_fallback_procedural ... ok
[INFO] [stdout] test memory::tests::fts_search_limit_reached_in_fts_phase ... ok
[INFO] [stdout] test memory::tests::fts_search_finds_episodic_via_trigger ... ok
[INFO] [stdout] test memory::tests::fts_search_limit_reached_in_like_phase ... ok
[INFO] [stdout] test memory::tests::list_semantic_categories_empty ... ok
[INFO] [stdout] test memory::tests::flag_immutable_sets_confidence_above_one ... ok
[INFO] [stdout] test memory::tests::fts_search_no_matches ... ok
[INFO] [stdout] test memory::tests::fts_search_special_chars_in_query ... ok
[INFO] [stdout] test memory::tests::list_semantic_categories_returns_grouped ... ok
[INFO] [stdout] test memory::tests::memory_health_snapshot_reports_live_counts_and_states ... ok
[INFO] [stdout] test memory::tests::mark_episodic_digests_stale_for_owner_marks_older_rows ... ok
[INFO] [stdout] test memory::tests::mark_semantic_stale_by_category_and_key_prefix_marks_older_rows ... ok
[INFO] [stdout] test memory::tests::procedural_failure_tracking ... ok
[INFO] [stdout] test memory::tests::prune_dead_episodic_keeps_recent_low_importance ... ok
[INFO] [stdout] test memory::tests::procedural_memory_roundtrip ... ok
[INFO] [stdout] test memory::tests::prune_dead_episodic_keeps_old_high_importance ... ok
[INFO] [stdout] test memory::tests::prune_stale_procedural_ignores_recent_entries ... ok
[INFO] [stdout] test memory::tests::promote_episodic_to_semantic_with_preserve ... ok
[INFO] [stdout] test memory::tests::retrieve_episodic_limit_zero ... ok
[INFO] [stdout] test memory::tests::prune_dead_episodic_removes_low_importance_old ... ok
[INFO] [stdout] test memory::tests::prune_stale_procedural_removes_zero_activity_entries ... ok
[INFO] [stdout] test memory::tests::sanitize_fts_query_empty ... ok
[INFO] [stdout] test memory::tests::sanitize_fts_query_special_chars_stripped ... ok
[INFO] [stdout] test memory::tests::sanitize_fts_query_strips_operators ... ok
[INFO] [stdout] test memory::tests::promote_episodic_to_semantic_without_preserve ... ok
[INFO] [stdout] test memory::tests::promote_nonexistent_episodic_returns_error ... ok
[INFO] [stdout] test memory::tests::relationship_memory_roundtrip ... ok
[INFO] [stdout] test memory::tests::retrieve_procedural_nonexistent ... ok
[INFO] [stdout] test memory::tests::record_procedural_success_tracking ... ok
[INFO] [stdout] test memory::tests::retrieve_semantic_all_empty ... ok
[INFO] [stdout] test memory::tests::retrieve_relationship_nonexistent ... ok
[INFO] [stdout] test memory::tests::retrieve_semantic_all_returns_across_categories ... ok
[INFO] [stdout] test memory_index::tests::format_index_output ... ok
[INFO] [stdout] test memory::tests::retrieve_working_empty_session ... ok
[INFO] [stdout] test memory::tests::retrieve_working_all_respects_limit ... ok
[INFO] [stdout] test memory::tests::retrieve_working_all_empty_db ... ok
[INFO] [stdout] test memory::tests::retrieve_semantic_all_respects_limit ... ok
[INFO] [stdout] test memory::tests::retrieve_working_is_session_isolated ... ok
[INFO] [stdout] test memory::tests::semantic_upsert_returns_existing_id ... ok
[INFO] [stdout] test memory::tests::retrieve_semantic_empty_category ... ok
[INFO] [stdout] test memory::tests::semantic_memory_upsert ... ok
[INFO] [stdout] test memory::tests::retrieve_working_all_returns_across_sessions ... ok
[INFO] [stdout] test memory::tests::store_working_writes_both_tables ... ok
[INFO] [stdout] test memory::tests::store_procedural_upsert_updates_steps ... ok
[INFO] [stdout] test memory::tests::store_relationship_upsert_increments_interaction ... ok
[INFO] [stdout] test memory::tests::store_relationship_interaction_updates_summary ... ok
[INFO] [stdout] test memory::tests::working_memory_roundtrip ... ok
[INFO] [stdout] test memory_index::tests::confidence_decay ... ok
[INFO] [stdout] test metrics::tests::recent_quality_scores_returns_oldest_first ... ok
[INFO] [stdout] test metrics::tests::record_and_query_inference_cost ... ok
[INFO] [stdout] test metrics::tests::recent_quality_scores_empty ... ok
[INFO] [stdout] test memory_index::tests::prune_removes_low_confidence ... ok
[INFO] [stdout] test metrics::tests::record_metric_snapshot_works ... ok
[INFO] [stdout] test metrics::tests::multiple_metric_snapshots ... ok
[INFO] [stdout] test metrics::tests::query_transactions_empty ... ok
[INFO] [stdout] test metrics::tests::record_inference_cost_cached ... ok
[INFO] [stdout] test metrics::tests::recent_quality_scores_respects_limit ... ok
[INFO] [stdout] test model_selection::tests::penalty_clamps_at_half ... ok
[INFO] [stdout] test model_selection::tests::penalty_computation ... ok
[INFO] [stdout] test metrics::tests::record_and_query_transactions ... ok
[INFO] [stdout] test metrics::tests::recent_quality_scores_skips_null ... ok
[INFO] [stdout] test metrics::tests::record_transaction_all_optional_none ... ok
[INFO] [stdout] test memory_index::tests::upsert_and_retrieve ... ok
[INFO] [stdout] test memory_index::tests::upsert_updates_existing ... ok
[INFO] [stdout] test metrics::tests::transaction_record_fields_populated ... ok
[INFO] [stdout] test model_selection::tests::all_fields_populated ... ok
[INFO] [stdout] test model_selection::tests::attribution_breakdown_with_since_filter ... ok
[INFO] [stdout] test model_selection::tests::list_events_empty ... ok
[INFO] [stdout] test model_selection::tests::list_events_ordered_desc ... ok
[INFO] [stdout] test model_selection::tests::list_events_respects_limit ... ok
[INFO] [stdout] test model_selection::tests::record_and_get_by_turn_id ... ok
[INFO] [stdout] test model_selection::tests::get_by_turn_id_returns_none_for_missing ... ok
[INFO] [stdout] test model_selection::tests::list_events_returns_all ... ok
[INFO] [stdout] test model_selection::tests::duplicate_id_fails ... ok
[INFO] [stdout] test model_selection::tests::attribution_breakdown_counts_correctly ... ok
[INFO] [stdout] test model_selection::tests::record_with_attribution_and_metascore ... ok
[INFO] [stdout] test model_selection::tests::record_and_query_session_performance ... ok
[INFO] [stdout] test policy::tests::decision_fields_populated ... ok
[INFO] [stdout] test revenue_scoring::tests::scoring_penalizes_underspecified_multi_repo_bounty_work ... ok
[INFO] [stdout] test revenue_scoring::tests::scoring_prefers_well_scoped_oracle_feed_work ... ok
[INFO] [stdout] test policy::tests::record_all_optional_none ... ok
[INFO] [stdout] test model_selection::tests::record_with_override_model ... ok
[INFO] [stdout] test revenue_strategy_summary::tests::parse_cycle_seconds_basic ... ok
[INFO] [stdout] test revenue_strategy_summary::tests::parse_cycle_seconds_cross_month_boundary ... ok
[INFO] [stdout] test revenue_strategy_summary::tests::parse_cycle_seconds_negative_returns_none ... ok
[INFO] [stdout] test model_selection::tests::record_with_no_complexity ... ok
[INFO] [stdout] test policy::tests::multiple_decisions_per_turn ... ok
[INFO] [stdout] test policy::tests::empty_turn_returns_empty_vec ... ok
[INFO] [stdout] test policy::tests::record_and_retrieve_decision ... ok
[INFO] [stdout] test revenue_feedback::tests::record_feedback_without_existing_opportunity_returns_error ... ok
[INFO] [stdout] test revenue_accounting::tests::revenue_swap_queue_summary_counts_swap_tasks ... ok
[INFO] [stdout] test revenue_accounting::tests::revenue_accounting_summary_aggregates_settled_rows ... ok
[INFO] [stdout] test revenue_introspection::tests::pipeline_health_with_mixed_statuses ... ok
[INFO] [stdout] test revenue_feedback::tests::revenue_feedback_signal_returns_count_and_average ... ok
[INFO] [stdout] test revenue_introspection::tests::pipeline_health_empty_db ... ok
[INFO] [stdout] test policy::tests::record_with_no_turn_id ... ok
[INFO] [stdout] test revenue_strategy_summary::tests::profitability_includes_conversion_and_costs ... ok
[INFO] [stdout] test revenue_scoring::tests::scoring_uses_negative_feedback_to_reduce_priority ... ok
[INFO] [stdout] test revenue_feedback::tests::revenue_feedback_summary_groups_by_strategy ... ok
[INFO] [stdout] test revenue_strategy_summary::tests::revenue_strategy_summary_groups_by_strategy ... ok
[INFO] [stdout] test revenue_swap_tasks::tests::claim_release_prevents_double_submission ... ok
[INFO] [stdout] test revenue_opportunity_queries::tests::list_revenue_opportunities_orders_by_priority_desc ... ok
[INFO] [stdout] test revenue_strategy_summary::tests::audit_log_returns_recent_entries ... ok
[INFO] [stdout] test revenue_strategy_summary::tests::revenue_strategy_summary_excludes_non_settled_amounts ... ok
[INFO] [stdout] test routing_dataset::tests::dataset_summary_empty ... ok
[INFO] [stdout] test revenue_swap_tasks::tests::revenue_swap_task_lifecycle_updates_status_and_metadata ... ok
[INFO] [stdout] test revenue_tax_tasks::tests::claim_then_submit_records_tax_tx_hash ... ok
[INFO] [stdout] test revenue_tax_tasks::tests::revenue_tax_task_lifecycle_updates_status_and_metadata ... ok
[INFO] [stdout] test revenue_tax_tasks::tests::claim_release_prevents_double_tax_submission ... ok
[INFO] [stdout] test routing_dataset::tests::basic_join ... ok
[INFO] [stdout] test revenue_swap_tasks::tests::claim_then_submit_records_tx_hash ... ok
[INFO] [stdout] test routing_dataset::tests::dataset_summary_ignores_limit_cap ... ok
[INFO] [stdout] test routing_dataset::tests::decision_without_cost_excluded ... ok
[INFO] [stdout] test routing_dataset::tests::filter_limit ... ok
[INFO] [stdout] test routing_dataset::tests::filter_schema_version ... ok
[INFO] [stdout] test routing_dataset::tests::dataset_summary_populated ... ok
[INFO] [stdout] test routing_dataset::tests::empty_dataset ... ok
[INFO] [stdout] test schema::tests::embedded_schema_does_not_fail_when_inference_costs_lacks_turn_id ... ok
[INFO] [stdout] test routing_dataset::tests::filter_until ... ok
[INFO] [stdout] test routing_dataset::tests::filter_since ... ok
[INFO] [stdout] test routing_dataset::tests::multiple_costs_per_turn_aggregate ... ok
[INFO] [stdout] test routing_dataset::tests::ordering_is_ascending ... ok
[INFO] [stdout] test schema::tests::episodic_delete_trigger_removes_fts ... ok
[INFO] [stdout] test routing_dataset::tests::tsv_export_header_and_rows ... ok
[INFO] [stdout] test schema::tests::migrations_dir_returns_option ... ok
[INFO] [stdout] test schema::tests::ensure_optional_columns_idempotent ... ok
[INFO] [stdout] test schema::tests::episodic_trigger_populates_fts ... ok
[INFO] [stdout] test schema::tests::fts_search_returns_results ... ok
[INFO] [stdout] test schema::tests::foreign_keys_enabled ... ok
[INFO] [stdout] test schema::tests::has_table_distinguishes_present_and_missing_tables ... ok
[INFO] [stdout] test schema::tests::ensure_optional_columns_upgrades_legacy_pipeline_traces_shape ... ok
[INFO] [stdout] test schema::tests::has_column_returns_true_for_existing ... ok
[INFO] [stdout] test schema::tests::fts_table_exists ... ok
[INFO] [stdout] test schema::tests::has_column_returns_false_for_missing ... ok
[INFO] [stdout] test schema::tests::ensure_optional_columns_adds_risk_level_when_missing ... ok
[INFO] [stdout] test schema::tests::version_from_name_edge_cases ... ok
[INFO] [stdout] test schema::tests::version_from_name_leading_zeros ... ok
[INFO] [stdout] test schema::tests::version_from_name_no_underscore_returns_zero ... ok
[INFO] [stdout] test schema::tests::version_from_name_parses_correctly ... ok
[INFO] [stdout] test schema::tests::version_from_name_various_formats ... ok
[INFO] [stdout] test schema::tests::has_column_returns_false_for_nonexistent_table ... ok
[INFO] [stdout] test schema::tests::migration_13_is_idempotent_when_columns_already_exist ... ok
[INFO] [stdout] test schema::tests::has_column_with_quotes_in_table_name ... ok
[INFO] [stdout] test schema::tests::initialize_db_then_query_all_tables ... ok
[INFO] [stdout] test schema::tests::initialize_db_creates_version_row ... ok
[INFO] [stdout] test schema::tests::run_migrations_no_dir_is_noop ... ok
[INFO] [stdout] test schema::tests::run_migrations_applies_in_order ... ok
[INFO] [stdout] test schema::tests::run_migrations_multiple_times_is_idempotent ... ok
[INFO] [stdout] test schema::tests::schema_creates_all_tables ... ok
[INFO] [stdout] test schema::tests::schema_triggers_created ... ok
[INFO] [stdout] test schema::tests::schema_indexes_created ... ok
[INFO] [stdout] test schema::tests::schema_version_inserted ... ok
[INFO] [stdout] test service_revenue::tests::mark_payment_verified_requires_quoted_status ... ok
[INFO] [stdout] test service_revenue::tests::revenue_opportunity_lifecycle_with_idempotent_settlement ... ok
[INFO] [stdout] test schema::tests::wal_mode_enabled ... ok
[INFO] [stdout] test schema::tests::table_count_is_consistent ... ok
[INFO] [stdout] test schema::tests::schema_version_no_duplicates_on_reinit ... ok
[INFO] [stdout] test service_revenue::tests::service_request_lifecycle ... ok
[INFO] [stdout] test service_revenue::tests::settle_rejects_mismatched_tax_amount ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_capitalizes ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_emoji_boundary ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_empty_returns_untitled ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_greeting_only ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_multibyte_at_boundary ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_question_mark ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_strips_greeting ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_strips_hello ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_takes_first_sentence ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_truncates_long ... ok
[INFO] [stdout] test sessions::tests::derive_nickname_unicode ... ok
[INFO] [stdout] test schema::tests::schema_idempotent ... ok
[INFO] [stdout] test sessions::tests::backfill_nicknames_sets_from_first_message ... ok
[INFO] [stdout] test sessions::tests::archive_session_not_found ... ok
[INFO] [stdout] test sessions::tests::append_message_very_long_content ... ok
[INFO] [stdout] test sessions::tests::backfill_nicknames_skips_already_set ... ok
[INFO] [stdout] test sessions::tests::backfill_nicknames_untitled_for_empty_session ... ok
[INFO] [stdout] test sessions::tests::archive_session_sets_status ... ok
[INFO] [stdout] test sessions::tests::create_turn_multiple_per_session ... ok
[INFO] [stdout] test sessions::tests::concurrent_find_or_create_same_key_both_succeed ... ok
[INFO] [stdout] test sessions::tests::append_and_list_messages ... ok
[INFO] [stdout] test sessions::tests::create_turn_all_fields ... ok
[INFO] [stdout] test sessions::tests::consent_request_lifecycle ... ok
[INFO] [stdout] test sessions::tests::create_turn_with_id_none_fields ... ok
[INFO] [stdout] test sessions::tests::create_turn_all_none ... ok
[INFO] [stdout] test sessions::tests::create_turn_with_id_roundtrip ... ok
[INFO] [stdout] test sessions::tests::expire_stale_sessions_with_fresh_sessions ... ok
[INFO] [stdout] test sessions::tests::expire_stale_sessions_expires_old ... ok
[INFO] [stdout] test sessions::tests::find_or_create_different_agents_different_sessions ... ok
[INFO] [stdout] test sessions::tests::get_session_empty_id_returns_none ... ok
[INFO] [stdout] test sessions::tests::find_or_create_returns_same_id ... ok
[INFO] [stdout] test sessions::tests::get_session_after_create ... ok
[INFO] [stdout] test sessions::tests::find_or_create_skips_archived_sessions ... ok
[INFO] [stdout] test sessions::tests::get_feedback_returns_none_for_missing ... ok
[INFO] [stdout] test sessions::tests::find_or_create_different_scopes_different_sessions ... ok
[INFO] [stdout] test sessions::tests::get_turn_by_id_nonexistent ... ok
[INFO] [stdout] test sessions::tests::get_session_returns_none_for_missing ... ok
[INFO] [stdout] test sessions::tests::get_turn_by_id_existing ... ok
[INFO] [stdout] test sessions::tests::list_messages_nonexistent_session ... ok
[INFO] [stdout] test sessions::tests::message_role_display ... ok
[INFO] [stdout] test sessions::tests::message_role_from_str_lossy ... ok
[INFO] [stdout] test sessions::tests::find_or_create_with_peer_scope ... ok
[INFO] [stdout] test sessions::tests::list_active_sessions_filters_correctly ... ok
[INFO] [stdout] test sessions::tests::get_turn_by_id_with_custom_id ... ok
[INFO] [stdout] test sessions::tests::list_messages_ordering_is_chronological ... ok
[INFO] [stdout] test sessions::tests::list_messages_with_limit ... ok
[INFO] [stdout] test sessions::tests::list_messages_stable_when_created_at_ties ... ok
[INFO] [stdout] test sessions::tests::proptest_derive_nickname_strips_greeting_prefix ... ok
[INFO] [stdout] test sessions::tests::scope_key_agent ... ok
[INFO] [stdout] test sessions::tests::scope_key_group ... ok
[INFO] [stdout] test sessions::tests::scope_key_peer ... ok
[INFO] [stdout] test sessions::tests::session_scope_serde_roundtrip ... ok
[INFO] [stdout] test sessions::tests::session_status_display ... ok
[INFO] [stdout] test sessions::tests::session_status_from_str_lossy ... ok
[INFO] [stdout] test sessions::tests::list_stale_active_session_ids_excludes_fresh ... ok
[INFO] [stdout] test sessions::tests::proptest_derive_nickname_first_char_uppercase ... ok
[INFO] [stdout] test sessions::tests::list_session_feedback_returns_all ... ok
[INFO] [stdout] test sessions::tests::list_session_feedback_empty ... ok
[INFO] [stdout] test sessions::tests::list_turns_stable_when_created_at_ties ... ok
[INFO] [stdout] test sessions::tests::message_count_empty ... ok
[INFO] [stdout] test sessions::tests::record_and_get_feedback ... ok
[INFO] [stdout] test sessions::tests::list_stale_active_session_ids_returns_stale ... ok
[INFO] [stdout] test sessions::tests::message_count_after_append ... ok
[INFO] [stdout] test sessions::tests::list_turns_for_session_empty ... ok
[INFO] [stdout] test sessions::tests::record_feedback_upserts_on_duplicate_turn ... ok
[INFO] [stdout] test sessions::tests::set_cross_channel_consent_updates_session ... ok
[INFO] [stdout] test sessions::tests::message_fields_populated ... ok
[INFO] [stdout] test sessions::tests::set_session_status_active_to_archived ... ok
[INFO] [stdout] test sessions::tests::rotate_agent_session_archives_previous_and_creates_new ... ok
[INFO] [stdout] test sessions::tests::update_feedback_changes_grade ... ok
[INFO] [stdout] test sessions::tests::set_session_status_active_to_expired ... ok
[INFO] [stdout] test sessions::tests::set_session_status_missing_session_errors ... ok
[INFO] [stdout] test sessions::tests::update_feedback_missing_returns_error ... ok
[INFO] [stdout] test sessions::tests::proptest_derive_nickname_never_empty ... ok
[INFO] [stdout] test sessions::tests::update_metadata_missing_session ... ok
[INFO] [stdout] test sessions::tests::update_metadata_roundtrip ... ok
[INFO] [stdout] test sessions::tests::update_model_populates_field ... ok
[INFO] [stdout] test sessions::tests::update_metadata_accepts_malformed_json ... ok
[INFO] [stdout] test sessions::tests::update_nickname_missing_session ... ok
[INFO] [stdout] test sessions::tests::update_nickname_overwrite ... ok
[INFO] [stdout] test sessions::tests::upsert_context_snapshot_rejects_invalid_complexity_level ... ok
[INFO] [stdout] test sessions::tests::upsert_context_snapshot_retrieval_metrics_persisted ... ok
[INFO] [stdout] test sessions::tests::proptest_derive_nickname_bounded_length ... ok
[INFO] [stdout] test shadow_routing::tests::agreement_summary_empty ... ok
[INFO] [stdout] test sessions::tests::upsert_and_get_context_snapshot_roundtrip ... ok
[INFO] [stdout] test shadow_routing::tests::agreement_summary_mixed ... ok
[INFO] [stdout] test shadow_routing::tests::disagreement_pairs_basic ... ok
[INFO] [stdout] test shadow_routing::tests::agreement_summary_with_since_filter ... ok
[INFO] [stdout] test sessions::tests::update_nickname_roundtrip ... ok
[INFO] [stdout] test shadow_routing::tests::recent_predictions_limit ... ok
[INFO] [stdout] test shadow_routing::tests::shadow_model_none_excluded_from_disagreement_pairs ... ok
[INFO] [stdout] test skills::tests::find_by_trigger_excludes_disabled ... ok
[INFO] [stdout] test skills::tests::delete_skill_nonexistent_is_noop ... ok
[INFO] [stdout] test shadow_routing::tests::recent_predictions_ordering ... ok
[INFO] [stdout] test shadow_routing::tests::record_and_retrieve ... ok
[INFO] [stdout] test skills::tests::find_by_trigger_escapes_special_like_chars ... ok
[INFO] [stdout] test skills::tests::find_by_trigger_no_matches ... ok
[INFO] [stdout] test skills::tests::find_by_trigger_keyword ... ok
[INFO] [stdout] test skills::tests::find_skill_by_script_path_no_match ... ok
[INFO] [stdout] test skills::tests::find_enabled_skill_by_script_path_excludes_disabled ... ok
[INFO] [stdout] test skills::tests::find_enabled_skill_by_script_path_not_found ... ok
[INFO] [stdout] test skills::tests::find_skill_by_script_path_rejects_ambiguous_duplicates ... ok
[INFO] [stdout] test skills::tests::find_enabled_skill_by_script_path_found ... ok
[INFO] [stdout] test skills::tests::get_skill_nonexistent_returns_none ... ok
[INFO] [stdout] test skills::tests::list_and_delete_skills ... ok
[INFO] [stdout] test skills::tests::find_skill_by_script_path_single_match ... ok
[INFO] [stdout] test skills::tests::register_skill_all_optional_fields ... ok
[INFO] [stdout] test skills::tests::register_and_get_skill ... ok
[INFO] [stdout] test skills::tests::toggle_skill_enabled_flips_value ... ok
[INFO] [stdout] test task_events::tests::lifecycle_state_display_is_lowercase ... ok
[INFO] [stdout] test skills::tests::register_skill_defaults_to_caution_risk ... ok
[INFO] [stdout] test task_events::tests::lifecycle_state_round_trips_through_serde ... ok
[INFO] [stdout] test skills::tests::list_skills_empty_db ... ok
[INFO] [stdout] test task_events::tests::lifecycle_state_is_copy ... ok
[INFO] [stdout] test skills::tests::update_skill_full_clears_optional_fields ... ok
[INFO] [stdout] test skills::tests::register_skill_full_persists_risk_level ... ok
[INFO] [stdout] test skills::tests::update_skill_changes_hash ... ok
[INFO] [stdout] test tasks::tests::normalize_task_source_handles_json_string_wrapped_object ... ok
[INFO] [stdout] test tasks::tests::normalize_task_source_wraps_origin_strings ... ok
[INFO] [stdout] test skills::tests::update_skill_full_updates_all_fields ... ok
[INFO] [stdout] test skills::tests::update_skill_sets_last_loaded_at ... ok
[INFO] [stdout] test task_events::tests::current_state_for_task_returns_terminal_state ... ok
[INFO] [stdout] test task_events::tests::active_task_summaries_returns_only_non_terminal ... ok
[INFO] [stdout] test task_events::tests::insert_and_query_task_events ... ok
[INFO] [stdout] test task_events::tests::insert_event_syncs_task_status_to_completed ... ok
[INFO] [stdout] test task_events::tests::insert_event_for_synthetic_task_id_does_not_error ... ok
[INFO] [stdout] test task_events::tests::insert_event_syncs_task_status_to_running ... ok
[INFO] [stdout] test task_events::tests::insert_progress_event_does_not_change_task_status ... ok
[INFO] [stdout] test task_events::tests::latest_event_returns_most_recent ... ok
[INFO] [stdout] test task_events::tests::recent_task_events_respects_limit ... ok
[INFO] [stdout] test task_events::tests::query_task_events_by_assigned_to ... ok
[INFO] [stdout] test task_events::tests::retry_count_tracks_retries ... ok
[INFO] [stdout] test tasks::tests::list_open_tasks_with_lifecycle_state ... ok
[INFO] [stdout] test task_events::tests::subtask_events_for_parent_returns_latest_per_subtask ... ok
[INFO] [stdout] test tests::database_debug_impl ... ok
[INFO] [stdout] test tasks::tests::repair_classifies_and_cleans_revenue_and_noise_tasks ... ok
[INFO] [stdout] test tool_embeddings::tests::missing_tool_returns_none ... ok
[INFO] [stdout] test tool_embeddings::tests::save_and_load_tool_embedding ... ok
[INFO] [stdout] test tests::database_new_in_memory ... ok
[INFO] [stdout] test tool_embeddings::tests::different_tools_same_hash_are_independent ... ok
[INFO] [stdout] test tool_embeddings::tests::insert_or_replace_updates_embedding ... ok
[INFO] [stdout] test tool_embeddings::tests::stale_embedding_not_returned ... ok
[INFO] [stdout] test tools::tests::get_tool_calls_nonexistent_turn ... ok
[INFO] [stdout] test tools::tests::batch_get_empty_session ... ok
[INFO] [stdout] test tools::tests::batch_get_tool_calls_for_session ... ok
[INFO] [stdout] test tools::tests::empty_turn_returns_empty_vec ... ok
[INFO] [stdout] test tools::tests::record_and_retrieve_tool_call ... ok
[INFO] [stdout] test tools::tests::record_tool_call_no_output_no_duration ... ok
[INFO] [stdout] test tools::tests::record_tool_call_error_status ... ok
[INFO] [stdout] test tools::tests::record_tool_call_with_skill_attribution ... ok
[INFO] [stdout] test tools::tests::multiple_calls_ordered_by_time ... ok
[INFO] [stdout] test traces::tests::get_react_trace_returns_none_for_missing_turn ... ok
[INFO] [stdout] test tools::tests::tool_call_fields_populated ... ok
[INFO] [stdout] test traces::tests::get_react_trace_returns_none_when_null ... ok
[INFO] [stdout] test traces::tests::save_and_retrieve_react_trace ... ok
[INFO] [stdout] test traces::tests::save_pipeline_trace_inserts_row ... ok
[INFO] [stdout] test treasury::tests::upsert_and_read_treasury_state ... ok
[INFO] [stdout] test treasury::tests::upsert_overwrites_previous ... ok
[INFO] [stdout] test tests::database_new_invalid_path_returns_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 544 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 17.02s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests roboticus_db
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/lib.rs - Database::new (line 110) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.89s; merged doctests compilation took 0.82s
[INFO] running `Command { std: "docker" "inspect" "57ea1639e3f5012a444d25d53685f7fcf5863bda698d4ae11f63478d3f43be95", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "57ea1639e3f5012a444d25d53685f7fcf5863bda698d4ae11f63478d3f43be95", kill_on_drop: false }`
[INFO] [stdout] 57ea1639e3f5012a444d25d53685f7fcf5863bda698d4ae11f63478d3f43be95
