[INFO] fetching crate tinycortex 0.1.1...
[INFO] testing tinycortex-0.1.1 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate tinycortex 0.1.1 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate tinycortex 0.1.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate tinycortex 0.1.1
[INFO] tweaked toml for crates.io crate tinycortex 0.1.1 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate tinycortex 0.1.1 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate tinycortex 0.1.1 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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a
[INFO] running `Command { std: "docker" "start" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a", 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" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a", 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" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling cc v1.2.65
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling libz-sys v1.1.29
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling libgit2-sys v0.17.0+1.8.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]    Compiling openssl-probe v0.1.6
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling uuid v1.23.4
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling regex v1.12.4
[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 serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling async-trait v0.1.89
[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_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[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 serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling toml_edit v0.22.27
[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 toml v0.8.23
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling git2 v0.19.0
[INFO] [stderr]    Compiling tinycortex v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 01s
[INFO] running `Command { std: "docker" "inspect" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a", 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" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling git2 v0.19.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling rusqlite v0.32.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling tinycortex v0.1.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 58.97s
[INFO] running `Command { std: "docker" "inspect" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a", 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" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/tinycortex/1ef9cfffa803bd17/out/tinycortex-1ef9cfffa803bd17)
[INFO] [stdout] 
[INFO] [stdout] running 1060 tests
[INFO] [stdout] test memory::archivist::compose::tests::empty_input_gives_empty_string ... ok
[INFO] [stdout] test memory::archivist::compose::tests::turns_separated_by_blank_line ... ok
[INFO] [stdout] test memory::archivist::clip::tests::drops_tool_calls_json_on_assistant_turns ... ok
[INFO] [stdout] test memory::archivist::compose::tests::role_headings_separate_turns ... ok
[INFO] [stdout] test memory::archivist::clip::tests::preserves_user_and_system_turns_unchanged ... ok
[INFO] [stdout] test memory::archivist::clip::tests::drops_tool_role_turns_entirely ... ok
[INFO] [stdout] test memory::archivist::tree_writer::tests::archive_to_tree_accumulates_multiple_sessions_in_call_order ... ok
[INFO] [stdout] test memory::archivist::tree_writer::tests::archive_to_tree_handles_empty_turns_via_fallback_markdown ... ok
[INFO] [stdout] test memory::archivist::tree_writer::tests::archive_to_tree_propagates_sealed_summary_ids_from_sink ... ok
[INFO] [stdout] test memory::archivist::tree_writer::tests::archive_to_tree_writes_one_cleaned_leaf_for_conversation_turns ... ok
[INFO] [stdout] test memory::archivist::tree_writer::tests::chunk_id_changes_when_markdown_changes ... ok
[INFO] [stdout] test memory::archivist::tree_writer::tests::chunk_id_changes_when_session_changes ... ok
[INFO] [stdout] test memory::archivist::tree_writer::tests::chunk_id_is_stable_for_same_session_and_markdown ... ok
[INFO] [stdout] test memory::archivist::store::tests::missing_session_returns_empty ... ok
[INFO] [stdout] test memory::archivist::types::tests::archived_turn_serde_skips_absent_optional_fields ... ok
[INFO] [stdout] test memory::chunks::connection::tests::tripped_breaker_is_open_until_cooldown ... ok
[INFO] [stdout] test memory::archivist::types::tests::archived_turn_defaults_are_empty_and_zero ... ok
[INFO] [stdout] test memory::archivist::types::tests::turn_new_sets_role_content_and_no_tool_calls ... ok
[INFO] [stdout] test memory::chunks::connection::tests::record_success_announces_only_on_trip_to_healthy_transition ... ok
[INFO] [stdout] test memory::chunks::produce::tests::chat_messages_pack_into_one_chunk_when_small ... ok
[INFO] [stdout] test memory::chunks::produce::tests::adjacent_chunks_overlap_without_duplicating ... ok
[INFO] [stdout] test memory::chunks::produce::tests::chat_messages_split_at_boundary_when_large ... ok
[INFO] [stdout] test memory::chunks::produce::tests::chunk_ids_are_stable_across_runs ... ok
[INFO] [stdout] test memory::chunks::produce::tests::email_thread_large_splits_at_email_boundaries ... ok
[INFO] [stdout] test memory::chunks::produce::tests::email_threads_pack_into_one_chunk_when_small ... ok
[INFO] [stdout] test memory::chunks::produce::tests::document_falls_through_to_paragraph_split ... ok
[INFO] [stdout] test memory::chunks::produce::tests::empty_chat_input_produces_one_empty_chunk ... ok
[INFO] [stdout] test memory::chunks::produce::tests::header_line_dropped_in_chat ... ok
[INFO] [stdout] test memory::chunks::produce::tests::falls_back_to_line_split_when_no_paragraphs_document ... ok
[INFO] [stdout] test memory::chunks::produce::tests::large_consecutive_segments_stay_within_budget ... ok
[INFO] [stdout] test memory::archivist::store::tests::round_trip_single_turn ... ok
[INFO] [stdout] test memory::archivist::store::tests::preserves_lesson_and_tool_calls ... ok
[INFO] [stdout] test memory::chunks::produce::tests::dense_hash_content_splits_under_budget ... ok
[INFO] [stdout] test memory::chunks::produce::tests::oversize_content_splits_into_multiple_ordered_pieces ... ok
[INFO] [stdout] test memory::chunks::produce::tests::packed_units_joined_by_double_newline ... ok
[INFO] [stdout] test memory::chunks::produce::tests::normal_small_content_is_single_chunk_unchanged ... ok
[INFO] [stdout] test memory::archivist::store::tests::append_increments_seq ... ok
[INFO] [stdout] test memory::archivist::store::tests::distinct_sessions_dont_mix ... ok
[INFO] [stdout] test memory::chunks::produce::tests::hebrew_content_splits_under_budget ... ok
[INFO] [stdout] test memory::chunks::produce::tests::mixed_markdown_code_splits_under_budget ... ok
[INFO] [stdout] test memory::chunks::produce::tests::sequence_numbers_start_at_zero ... ok
[INFO] [stdout] test memory::chunks::produce::tests::paragraph_boundaries_preferred_for_documents ... ok
[INFO] [stdout] test memory::chunks::produce::tests::tiny_input_produces_single_chunk ... ok
[INFO] [stdout] test memory::chunks::produce::tests::utf8_boundaries_preserved_on_hard_split_document ... ok
[INFO] [stdout] test memory::chunks::produce::tests::zero_token_budget_is_clamped_without_empty_leading_chunk_document ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::all_atx_heading_levels_h1_through_h6_split ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::empty_text ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::fts5_special_chars_in_content ... ok
[INFO] [stdout] test memory::chunks::produce::tests::oversize_message_falls_back_with_partial_flag ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::atx_heading_requires_trailing_space ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::chunk_count_reasonable ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::heading_at_end_of_text ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::heading_sections ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::deep_atx_headings_split_through_h6 ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::indexes_are_sequential ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::max_tokens_one ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::multiple_blank_lines_between_paragraphs ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::no_content_loss ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::only_newlines_and_whitespace ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::oversize_line_no_spaces_hard_splits ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::oversize_line_splits_on_word_boundary ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::respects_max_tokens ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::seven_or_more_hashes_are_not_a_heading ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::single_heading_no_content ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::single_short_paragraph ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::headings_only_no_body ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::max_tokens_zero ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::unicode_content ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::very_long_single_line_no_newlines ... ok
[INFO] [stdout] test memory::chunks::semantic::tests::preserves_heading_in_split_sections ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::circuit_breaker_trips_after_threshold ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::is_transient_cold_start_classifies_known_extended_codes ... ok
[INFO] [stdout] test memory::chunks::produce::tests::oversize_single_email_splits_with_partial_flag ... ok
[INFO] [stdout] test memory::chunks::recovery::tests::recover_corrupt_db_is_noop_on_healthy_db ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::stale_shm_cleanup_removes_files ... ok
[INFO] [stdout] test memory::chunks::recovery::tests::recover_corrupt_db_quarantines_and_rebuilds ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::connection_cache_returns_same_arc_for_same_workspace ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::batch_embedding_lookup_empty_input_returns_empty_map ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::existing_wal_db_migrates_to_truncate ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::delete_chunks_by_source_removes_symlink_entry_not_target_file ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::memory_tree_uses_truncate_journal_not_wal ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::legacy_embeddings_migrate_to_sidecar_once ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::with_connection_keeps_foreign_keys_on_for_every_call ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::connection_cache_uses_separate_connections_for_different_workspaces ... ok
[INFO] [stdout] test memory::chunks::store_conn_tests::with_connection_serialises_concurrent_schema_init ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::batch_embedding_lookup_returns_only_signature_scoped_rows ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::batch_embedding_lookup_unknown_ids_absent_from_map ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::clear_chunk_reembed_skipped_is_idempotent ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::validate_reembed_skip_key_rejects_empty_and_oversized ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::batch_embedding_lookup_splits_id_list_above_per_batch_threshold ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::clear_reembed_skipped_for_signature_removes_all_tombstones_for_sig ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::extraction_coverage_empty_store_is_zero ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::get_chunks_batch_empty_input_and_missing_ids ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::extraction_coverage_reflects_indexed_fraction ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::get_chunks_batch_returns_present_ids_in_map ... ok
[INFO] [stdout] test memory::chunks::store_tests::chunk_embeddings_are_scoped_by_model_signature ... ok
[INFO] [stdout] test memory::chunks::store_tests::content_pointer_accessors_return_only_complete_non_deleted_rows ... ok
[INFO] [stdout] test memory::chunks::store_embed_tests::global_topic_purge_removes_only_global_and_topic ... ok
[INFO] [stdout] test memory::chunks::store_tests::delete_chunks_by_owner_preserves_other_owners_for_same_source ... ok
[INFO] [stdout] test memory::chunks::store_tests::empty_batch_is_noop ... ok
[INFO] [stdout] test memory::chunks::store_tests::delete_chunks_by_source_removes_chunks_side_rows_and_ingest_gate ... ok
[INFO] [stdout] test memory::chunks::store_tests::list_chunks_source_scope_filters_before_limit ... ok
[INFO] [stdout] test memory::chunks::store_tests::list_filters_by_time_range ... ok
[INFO] [stdout] test memory::chunks::store_tests::list_filters_by_source_kind ... ok
[INFO] [stdout] test memory::chunks::store_tests::delete_chunks_by_source_removes_safe_content_files_but_rejects_escape_paths ... ok
[INFO] [stdout] test memory::chunks::store_tests::list_limit_is_clamped_to_sane_range ... ok
[INFO] [stdout] test memory::chunks::store_tests::list_orders_by_timestamp_desc ... ok
[INFO] [stdout] test memory::chunks::store_tests::list_orders_equal_timestamps_by_sequence ... ok
[INFO] [stdout] test memory::chunks::store_tests::missing_chunk_returns_none ... ok
[INFO] [stdout] test memory::chunks::store_tests::raw_file_ingest_gate_is_order_preserving_and_prefix_scoped ... ok
[INFO] [stdout] test memory::chunks::types::tests::approx_token_count_scales_linearly ... ok
[INFO] [stdout] test memory::chunks::types::tests::chunk_id_is_deterministic ... ok
[INFO] [stdout] test memory::chunks::types::tests::chunk_id_varies_with_content ... ok
[INFO] [stdout] test memory::chunks::types::tests::chunk_id_varies_with_seq ... ok
[INFO] [stdout] test memory::chunks::types::tests::chunk_id_varies_with_source_id ... ok
[INFO] [stdout] test memory::chunks::types::tests::chunk_id_varies_with_source_kind ... ok
[INFO] [stdout] test memory::chunks::store_tests::raw_refs_round_trip_and_prefix_listing_tolerates_corrupt_rows ... ok
[INFO] [stdout] test memory::chunks::types::tests::conservative_estimate_exceeds_approx_for_dense_content ... ok
[INFO] [stdout] test memory::chunks::types::tests::conservative_estimate_weights_by_char_class ... ok
[INFO] [stdout] test memory::chunks::types::tests::data_source_has_all_variants ... ok
[INFO] [stdout] test memory::chunks::types::tests::data_source_kind_mapping ... ok
[INFO] [stdout] test memory::chunks::types::tests::data_source_parse_rejects_unknown ... ok
[INFO] [stdout] test memory::chunks::types::tests::data_source_round_trip ... ok
[INFO] [stdout] test memory::chunks::types::tests::source_kind_round_trip ... ok
[INFO] [stdout] test memory::chunks::types::tests::data_source_serde_is_snake_case ... ok
[INFO] [stdout] test memory::chunks::types::tests::truncate_respects_budget_and_char_boundaries ... ok
[INFO] [stdout] test memory::config::tests::config_fills_defaults_for_absent_sections ... ok
[INFO] [stdout] test memory::config::tests::config_roundtrips_through_json ... ok
[INFO] [stdout] test memory::config::tests::default_config_uses_openhuman_constants ... ok
[INFO] [stdout] test memory::config::tests::weight_profiles_match_spec ... ok
[INFO] [stdout] test memory::conversations::bus::tests::channel_thread_title_uses_thread_suffix_only_for_non_telegram_threads ... ok
[INFO] [stdout] test memory::chunks::types::tests::truncate_is_noop_within_budget ... ok
[INFO] [stdout] test memory::conversations::bus::tests::correct_workspace_after_stale_events ... ok
[INFO] [stdout] test memory::conversations::bus::tests::multiple_stale_workspaces_all_dropped ... ok
[INFO] [stdout] test memory::conversations::bus::tests::duplicate_events_do_not_append_duplicate_messages ... ok
[INFO] [stdout] test memory::conversations::bus::tests::persisted_channel_thread_id_ignores_blank_thread_ts ... ok
[INFO] [stdout] test memory::conversations::bus::tests::non_empty_trimmed_rejects_blank_strings ... ok
[INFO] [stdout] test memory::chunks::store_tests::schema_has_content_path_and_content_sha256_columns ... ok
[INFO] [stdout] test memory::chunks::store_tests::reingest_preserves_existing_embedding ... ok
[INFO] [stdout] test memory::conversations::bus::tests::processed_matching_workspace_is_appended ... ok
[INFO] [stdout] test memory::conversations::bus::tests::processed_stale_workspace_is_dropped ... ok
[INFO] [stdout] test memory::conversations::bus::tests::subscriber_reads_rebound_workspace_from_shared_handle ... ok
[INFO] [stdout] test memory::conversations::bus::tests::received_stale_workspace_is_dropped ... ok
[INFO] [stdout] test memory::conversations::bus::tests::received_matching_workspace_is_persisted ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::arabic_harakat_stripped ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::duplicate_message_id_is_idempotent ... ok
[INFO] [stdout] test memory::conversations::bus::tests::persists_inbound_and_processed_turns_into_workspace_thread ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::empty_query_returns_empty ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::excludes_active_thread ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::intersect_sorted_with_btreeset_basic ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::intersect_sorted_with_btreeset_empty_other ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::intern_pool_dedupes_repeated_thread_id_and_role ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::limit_zero_returns_empty ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::japanese_bigram_match ... ok
[INFO] [stdout] test memory::chunks::store_tests::staged_chunk_upsert_persists_preview_and_content_pointers ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::polish_diacritics_normalized_both_sides ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::remove_thread_drops_all_messages ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::score_matches_legacy_semantics ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::short_terms_only_returns_empty ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::substring_inside_word_matches ... ok
[INFO] [stdout] test memory::conversations::store::tests::backfill_writes_stats_snapshot_for_legacy_threads ... ok
[INFO] [stdout] test memory::conversations::store::tests::conversation_purge_stats_default ... ok
[INFO] [stdout] test memory::conversations::store::tests::conversation_store_new ... ok
[INFO] [stdout] test memory::conversations::bus::tests::telegram_thread_ts_does_not_split_persisted_thread ... ok
[INFO] [stdout] test memory::conversations::store::tests::delete_nonexistent_thread_is_ok ... ok
[INFO] [stdout] test memory::conversations::store::tests::cold_search_does_not_serialize_on_outer_lock ... ok
[INFO] [stdout] test memory::chunks::store_tests::upsert_is_idempotent ... ok
[INFO] [stdout] test memory::conversations::bus::tests::workspace_switch_mid_conversation ... ok
[INFO] [stdout] test memory::conversations::store::tests::ensure_thread_is_idempotent ... ok
[INFO] [stdout] test memory::conversations::store::tests::get_messages_empty_thread ... ok
[INFO] [stdout] test memory::conversations::store::tests::delete_thread_removes_thread_and_messages ... ok
[INFO] [stdout] test memory::conversations::store::tests::get_messages_nonexistent_thread ... ok
[INFO] [stdout] test memory::conversations::store::tests::legacy_log_without_stats_still_parses ... ok
[INFO] [stdout] test memory::conversations::store::tests::delete_thread_clears_stats_from_index ... ok
[INFO] [stdout] test memory::conversations::store::tests::get_messages_for_new_empty_thread_returns_empty_list ... ok
[INFO] [stdout] test memory::conversations::store::tests::purge_on_empty_store ... ok
[INFO] [stdout] test memory::conversations::store::tests::prime_index_cold_build_works_on_legacy_workspace_without_stats ... ok
[INFO] [stdout] test memory::conversations::store::tests::read_jsonl_skips_invalid_lines_but_keeps_valid_ones ... ok
[INFO] [stdout] test memory::conversations::store::tests::purge_removes_threads_and_messages ... ok
[INFO] [stdout] test memory::conversations::store::tests::list_threads_does_not_read_per_thread_files_after_first_call ... ok
[INFO] [stdout] test memory::conversations::store::tests::multiple_threads_and_messages ... ok
[INFO] [stdout] test memory::conversations::store::tests::search_cross_thread_messages_excludes_active_thread ... ok
[INFO] [stdout] test memory::conversations::store::tests::search_cross_thread_messages_finds_polish_substring_without_diacritics ... ok
[INFO] [stdout] test memory::conversations::store::tests::search_cross_thread_messages_finds_japanese_bigram_match ... ok
[INFO] [stdout] test memory::conversations::store::tests::search_cross_thread_messages_rebuilds_index_from_jsonl_after_reopen ... ok
[INFO] [stdout] test memory::conversations::store::tests::search_cross_thread_messages_finds_hits_outside_excluded_thread ... ok
[INFO] [stdout] test memory::conversations::store::tests::search_cross_thread_messages_skips_short_terms_and_empty_queries ... ok
[INFO] [stdout] test memory::conversations::store::tests::store_updates_message_metadata ... ok
[INFO] [stdout] test memory::conversations::store::tests::store_roundtrips_threads_and_messages ... ok
[INFO] [stdout] test memory::conversations::store::tests::update_thread_labels_missing_thread_returns_error ... ok
[INFO] [stdout] test memory::conversations::store::tests::update_message_nonexistent_returns_error ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::is_cjk_classifies_common_scripts ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::ngrams_drops_runs_too_short ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::ngrams_emits_bigrams_for_cjk ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::ngrams_emits_trigrams_for_latin ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::ngrams_empty_input_returns_empty ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::ngrams_mixed_script_splits_at_boundary ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::ngrams_substring_inside_word_is_indexable ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::normalize_folds_non_decomposing_letters ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::normalize_is_idempotent ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::normalize_lowercases_ascii ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::normalize_strips_arabic_harakat ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::normalize_strips_polish_diacritics ... ok
[INFO] [stdout] test memory::conversations::tokenize::tests::normalize_unifies_cjk_halfwidth_fullwidth ... ok
[INFO] [stdout] test memory::conversations::types::tests::conversation_message_patch_defaults_to_no_changes ... ok
[INFO] [stdout] test memory::conversations::types::tests::conversation_thread_serde_uses_camel_case_and_defaults_labels ... ok
[INFO] [stdout] test memory::conversations::types::tests::create_thread_optional_fields_roundtrip ... ok
[INFO] [stdout] test memory::conversations::store::tests::update_thread_title_persists_latest_title ... ok
[INFO] [stdout] test memory::conversations::store::tests::store_handles_labels_and_inference ... ok
[INFO] [stdout] test memory::diff::ledger::tests::commit_and_list_snapshots ... ok
[INFO] [stdout] test memory::diff::ledger::tests::checkpoint_round_trip ... ok
[INFO] [stdout] test memory::diff::ledger::tests::compute_changes_from_none_marks_all_added ... ok
[INFO] [stdout] test memory::diff::ledger::tests::cleanup_checkpoints_removes_old_tags ... ok
[INFO] [stdout] test memory::diff::ledger::tests::compute_changes_added_modified_removed_unchanged ... ok
[INFO] [stdout] test memory::diff::ledger::tests::encode_decode_round_trips ... ok
[INFO] [stdout] test memory::diff::ledger::tests::compute_changes_text_diff_only_when_requested ... ok
[INFO] [stdout] test memory::diff::ledger::tests::pathspec_does_not_leak_across_prefixed_sources ... ok
[INFO] [stdout] test memory::diff::ledger::tests::read_marker_set_and_get ... ok
[INFO] [stdout] test memory::diff::ledger::tests::read_marker_accepts_provider_style_source_ids ... ok
[INFO] [stdout] test memory::diff::source::tests::extract_item_id_composio ... ok
[INFO] [stdout] test memory::diff::source::tests::extract_item_id_no_prefix ... ok
[INFO] [stdout] test memory::diff::source::tests::extract_item_id_reader_backed ... ok
[INFO] [stdout] test memory::diff::source::tests::in_memory_source_groups_and_orders_items ... ok
[INFO] [stdout] test memory::diff::source::tests::in_memory_source_unknown_source_is_empty ... ok
[INFO] [stdout] test memory::diff::ledger::tests::source_ids_are_encoded_for_git_tree_paths ... ok
[INFO] [stdout] test memory::diff::ledger::tests::snapshots_carry_other_sources_forward ... ok
[INFO] [stdout] test memory::diff::source::tests::set_source_replaces_contents ... ok
[INFO] [stdout] test memory::diff::tests::auto_snapshot_uses_auto_trigger ... ok
[INFO] [stdout] test memory::diff::tests::cleanup_removes_old_checkpoints ... ok
[INFO] [stdout] test memory::diff::tests::compute_diff_against_none_marks_all_added ... ok
[INFO] [stdout] test memory::diff::tests::compute_diff_detects_added_modified_removed ... ok
[INFO] [stdout] test memory::diff::tests::compute_diff_text_diff_only_when_requested ... ok
[INFO] [stdout] test memory::diff::tests::create_checkpoint_baselines_lacking_sources ... ok
[INFO] [stdout] test memory::diff::tests::compute_diff_rejects_cross_source ... ok
[INFO] [stdout] test memory::conversations::inverted_index::tests::pathological_query_short_circuits_to_recency ... ok
[INFO] [stdout] test memory::diff::tests::diff_since_checkpoint_aggregates_across_sources ... ok
[INFO] [stdout] test memory::diff::tests::diff_since_last_handles_zero_one_two_snapshots ... ok
[INFO] [stdout] test memory::diff::tests::diff_since_read_without_commit_does_not_advance_marker ... ok
[INFO] [stdout] test memory::chunks::store_tests::upsert_then_get ... ok
[INFO] [stdout] test memory::diff::types::tests::change_kind_round_trips ... ok
[INFO] [stdout] test memory::diff::types::tests::change_kind_wire_strings ... ok
[INFO] [stdout] test memory::diff::types::tests::diff_summary_defaults_to_zero ... ok
[INFO] [stdout] test memory::diff::types::tests::item_change_omits_absent_optionals ... ok
[INFO] [stdout] test memory::diff::types::tests::snapshot_trigger_round_trips ... ok
[INFO] [stdout] test memory::diff::types::tests::snapshot_trigger_wire_strings ... ok
[INFO] [stdout] test memory::entities::canonical::tests::different_kinds_produce_different_ids_for_same_text ... ok
[INFO] [stdout] test memory::entities::canonical::tests::email_case_insensitive_canonicalises ... ok
[INFO] [stdout] test memory::entities::canonical::tests::handle_strips_leading_at ... ok
[INFO] [stdout] test memory::entities::canonical::tests::hashtag_and_topic_with_same_label_stay_distinct ... ok
[INFO] [stdout] test memory::entities::canonical::tests::hashtag_strips_leading_hash ... ok
[INFO] [stdout] test memory::entities::canonical::tests::slugify_strips_filesystem_unsafe_chars ... ok
[INFO] [stdout] test memory::entities::canonical::tests::topic_lowercases_and_strips_prefix ... ok
[INFO] [stdout] test memory::entities::canonical::tests::url_preserves_case ... ok
[INFO] [stdout] test memory::entities::frontmatter::tests::compose_emits_expected_front_matter_shape ... ok
[INFO] [stdout] test memory::diff::tests::diff_since_read_commits_marker_and_returns_only_new_changes ... ok
[INFO] [stdout] test memory::entities::frontmatter::tests::compose_parse_roundtrip ... ok
[INFO] [stdout] test memory::entities::frontmatter::tests::extract_notes_empty_without_front_matter ... ok
[INFO] [stdout] test memory::entities::frontmatter::tests::extract_notes_returns_body_after_fence ... ok
[INFO] [stdout] test memory::entities::frontmatter::tests::parse_returns_none_without_kind ... ok
[INFO] [stdout] test memory::entities::frontmatter::tests::values_with_colons_round_trip_quoted ... ok
[INFO] [stdout] test memory::entities::store::tests::entity_file_lands_at_expected_path ... ok
[INFO] [stdout] test memory::diff::tests::mark_read_advances_marker_for_explicit_sources ... ok
[INFO] [stdout] test memory::entities::store::tests::missing_entity_returns_none ... ok
[INFO] [stdout] test memory::diff::tests::mark_read_skips_sources_without_snapshots ... ok
[INFO] [stdout] test memory::entities::store::tests::lookup_alias_finds_by_alias_email_handle_or_name ... ok
[INFO] [stdout] test memory::entities::store::tests::put_entity_writes_atomically_without_stale_temp_file ... ok
[INFO] [stdout] test memory::entities::types::tests::entity_handle_and_entity_serde_roundtrip ... ok
[INFO] [stdout] test memory::entities::store::tests::list_entities_by_kind ... ok
[INFO] [stdout] test memory::entities::types::tests::entity_kind_parse_rejects_unknown ... ok
[INFO] [stdout] test memory::entities::types::tests::entity_kind_roundtrips ... ok
[INFO] [stdout] test memory::goals::reflect::tests::first_run_prompt_requests_initial_population ... ok
[INFO] [stdout] test memory::entities::types::tests::entity_new_sets_empty_collections_and_timestamps ... ok
[INFO] [stdout] test memory::diff::tests::take_snapshot_reads_from_injected_item_source ... ok
[INFO] [stdout] test memory::goals::reflect::tests::maintenance_prompt_requests_minimal_changes ... ok
[INFO] [stdout] test memory::entities::store::tests::round_trip_person ... ok
[INFO] [stdout] test memory::entities::store::tests::upsert_preserves_user_notes_body ... ok
[INFO] [stdout] test memory::chunks::store_tests::upsert_persists_path_scope ... ok
[INFO] [stdout] test memory::goals::reflect::tests::reflect_populates_initial_set_on_empty_and_dedupes ... ok
[INFO] [stdout] test memory::goals::store::tests::load_empty_when_missing ... ok
[INFO] [stdout] test memory::goals::store::tests::rejects_symlink_escape_outside_workspace ... ok
[INFO] [stdout] test memory::goals::reflect::tests::reflect_skips_unknown_id_edits_and_deletes ... ok
[INFO] [stdout] test memory::goals::reflect::tests::reflect_makes_no_change_on_nonempty_with_noop_generator ... ok
[INFO] [stdout] test memory::goals::types::tests::add_and_edit_reject_multiline_text ... ok
[INFO] [stdout] test memory::goals::types::tests::add_and_edit_reject_secret_or_pii_text ... ok
[INFO] [stdout] test memory::goals::types::tests::add_assigns_unique_ids ... ok
[INFO] [stdout] test memory::goals::types::tests::add_rejects_empty_text ... ok
[INFO] [stdout] test memory::goals::types::tests::delete_removes_known_id_and_rejects_unknown ... ok
[INFO] [stdout] test memory::goals::types::tests::edit_updates_known_id_and_rejects_unknown ... ok
[INFO] [stdout] test memory::goals::types::tests::next_id_avoids_collision_with_custom_ids ... ok
[INFO] [stdout] test memory::goals::types::tests::parse_ignores_non_item_lines ... ok
[INFO] [stdout] test memory::goals::store::tests::save_enforces_item_count_cap ... ok
[INFO] [stdout] test memory::goals::types::tests::parse_round_trips_render ... ok
[INFO] [stdout] test memory::goals::types::tests::render_starts_with_header ... ok
[INFO] [stdout] test memory::goals::reflect::tests::reflect_skips_secret_or_pii_goal_proposals ... ok
[INFO] [stdout] test memory::graph::query::tests::excludes_self_edges ... ok
[INFO] [stdout] test memory::graph::query::tests::empty_when_no_co_occurrence ... ok
[INFO] [stdout] test memory::graph::query::tests::group_by_weight_buckets_neighbors ... ok
[INFO] [stdout] test memory::graph::query::tests::limit_caps_result_set ... ok
[INFO] [stdout] test memory::goals::store::tests::config_rooted_wrappers_round_trip ... ok
[INFO] [stdout] test memory::graph::query::tests::neighbors_returns_ids_in_weight_order ... ok
[INFO] [stdout] test memory::graph::query::tests::single_co_occurrence_weight_one ... ok
[INFO] [stdout] test memory::graph::query::tests::weight_counts_distinct_nodes_not_rows ... ok
[INFO] [stdout] test memory::graph::query::tests::ties_break_on_object_id_ascending ... ok
[INFO] [stdout] test memory::goals::store::tests::add_edit_delete_round_trip_to_disk ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::blank_source_ref_is_dropped ... ok
[INFO] [stdout] test memory::graph::types::tests::graph_edge_roundtrips_via_serde ... ok
[INFO] [stdout] test memory::graph::types::tests::graph_edge_is_constructible ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::includes_per_message_sections_without_header ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::empty_batch_returns_none ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::messages_are_sorted_and_range_captured ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::source_ref_taken_from_first_message ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::metadata_carries_owner_and_tags ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::timestamp_iso8601_string_accepted ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::blank_source_ref_is_dropped ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::empty_doc_returns_none ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::modified_at_epoch_ms_integer_still_works ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::metadata_single_point_time_range ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::timestamp_numeric_string_accepted ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::provider_missing_defaults_to_unknown ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::modified_at_iso8601_string_accepted ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::modified_at_missing_defaults_to_now ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::renders_body_without_header ... ok
[INFO] [stdout] test memory::ingest::canonicalize::document::tests::source_ref_carried_through ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::blank_source_ref_is_dropped ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::clean_body_strips_footer_before_canonicalise ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::empty_thread_returns_none ... ok
[INFO] [stdout] test memory::ingest::canonicalize::chat::tests::timestamp_epoch_ms_integer_still_works ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::renders_headers_and_body_per_message ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::sent_at_epoch_ms_integer_still_works ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::sent_at_iso8601_string_accepted ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::sent_at_numeric_string_accepted ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::source_ref_from_first_message ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::clean_body_combines_passes ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email::tests::time_range_spans_thread ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::drop_footer_noise_strips_legal_disclaimer ... ok
[INFO] [stdout] test memory::goals::store::tests::save_enforces_byte_cap ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::collapse_blank_runs_keeps_paragraph_breaks ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::drop_reply_chain_handles_zwnj_in_body ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::drop_reply_chain_keeps_short_quote ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::drop_footer_noise_strips_unsubscribe_block ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::drop_reply_chain_strips_consecutive_quoted_run ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::drop_reply_chain_strips_forwarded_separator ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::drop_reply_chain_strips_on_x_wrote_preamble ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::extract_email_handles_both_forms ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::md_escape_handles_special_chars ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::parse_message_date_handles_iso_and_rfc2822 ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::truncate_body_adds_ellipsis ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::parse_message_date_returns_none_when_missing_or_blank ... ok
[INFO] [stdout] test memory::ingest::canonicalize::email_clean::tests::truncate_body_passthrough_when_short ... ok
[INFO] [stdout] test memory::ingest::extract::parse::parse_tests::alias_map_builds_reverse_lookup ... ok
[INFO] [stdout] test memory::ingest::extract::parse::parse_tests::build_units_respects_extraction_mode ... ok
[INFO] [stdout] test memory::ingest::extract::parse::parse_tests::detect_primary_subject_only_matches_openhuman ... ok
[INFO] [stdout] test memory::ingest::extract::parse::parse_tests::enrich_document_metadata_merges_tags_and_ingestion_details ... ok
[INFO] [stdout] test memory::ingest::extract::parse::parse_tests::find_chunk_index_prefers_hint_then_wraps ... ok
[INFO] [stdout] test memory::ingest::extract::parse::parse_tests::split_sentences_breaks_on_punctuation_and_merges_tiny_fragments ... ok
[INFO] [stdout] test memory::ingest::extract::parse::parse_tests::extract_people_from_header_collects_named_people ... ok
[INFO] [stdout] test memory::ingest::extract::regex::tests::sanitize_entity_name_trims_punctuation_and_uppercases ... ok
[INFO] [stdout] test memory::ingest::extract::regex::tests::sanitize_fact_text_collapses_whitespace_and_strips_edges ... ok
[INFO] [stdout] test memory::ingest::extract::rules::tests::add_entity_tracks_highest_confidence_and_person_aliases ... ok
[INFO] [stdout] test memory::ingest::extract::rules::tests::add_relation_canonicalizes_predicate_and_collects_chunk_index ... ok
[INFO] [stdout] test memory::ingest::extract::rules::tests::add_relation_rejects_invalid_or_self_relations ... ok
[INFO] [stdout] test memory::ingest::extract::rules::tests::relation_rule_normalizes_supported_predicates ... ok
[INFO] [stdout] test memory::ingest::extract::rules::tests::resolve_person_alias_uses_known_people_map ... ok
[INFO] [stdout] test memory::ingest::extract::rules::tests::type_allowed_honors_allowlist_and_empty_list ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::chunk_document_content_empty_input_returns_empty ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::chunk_document_content_returns_nonempty_for_content ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::chunk_document_content_whitespace_only_returns_empty ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::collapse_whitespace_empty ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::collapse_whitespace_normalizes ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::normalize_graph_predicate_strips_trailing_underscores ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::normalize_graph_predicate_underscores_separators ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::normalize_search_text_lowercases_and_strips_special ... ok
[INFO] [stdout] test memory::ingest::extract::text::tests::normalize_search_text_preserves_separators ... ok
[INFO] [stdout] test memory::ingest::extract::types::tests::extraction_mode_default_is_sentence ... ok
[INFO] [stdout] test memory::ingest::extract::types::tests::memory_ingestion_config_default_matches_expected_thresholds ... ok
[INFO] [stdout] test memory::ingest::extract::types::tests::memory_ingestion_request_defaults_config_when_absent ... ok
[INFO] [stdout] test memory::ingest::extract::regex::tests::classify_entity_detects_dates_people_and_products ... ok
[INFO] [stdout] test memory::ingest::extract::extract_tests::sentence_mode_extraction_recovers_east_and_west_spatial_relations ... ok
[INFO] [stdout] test memory::ingest::extract::extract_tests::chunk_mode_extraction_recovers_spatial_relations_and_recipient_units ... ok
[INFO] [stdout] test memory::ingest::extract::extract_tests::notion_fixture_extraction_recovers_required_signals ... ok
[INFO] [stdout] test memory::ingest::extract::extract_tests::gmail_fixture_extraction_recovers_required_signals ... ok
[INFO] [stdout] test memory::queue::gate::tests::acquire_returns_immediately_when_free ... ok
[INFO] [stdout] test memory::queue::gate::tests::default_gate_is_single_slot ... ok
[INFO] [stdout] test memory::queue::gate::tests::multi_slot_gate_allows_n_then_blocks ... ok
[INFO] [stdout] test memory::queue::gate::tests::single_slot_gate_limits_to_one ... ok
[INFO] [stdout] test memory::queue::gate::tests::zero_permits_is_clamped_to_one ... ok
[INFO] [stdout] test memory::conversations::store::tests::search_cold_rebuild_does_not_block_concurrent_append ... ok
[INFO] [stdout] test memory::ingest::pipeline::tests::ingest_chat_empty_batch_is_noop ... ok
[INFO] [stdout] test memory::ingest::pipeline::tests::second_document_ingest_with_same_source_id_is_short_circuited ... ok
[INFO] [stdout] test memory::ingest::pipeline::tests::ingest_email_with_raw_refs_attaches_archive_refs_to_every_chunk ... ok
[INFO] [stdout] test memory::ingest::pipeline::tests::ingest_chat_writes_chunks_and_enqueues_extract_jobs ... ok
[INFO] [stdout] test memory::queue::handlers::tests::append_buffer_enqueues_seal_when_gate_met ... ok
[INFO] [stdout] test memory::ingest::pipeline::tests::versioned_document_admits_second_revision ... ok
[INFO] [stdout] test memory::queue::handlers::tests::append_buffer_no_seal_when_gate_unmet ... ok
[INFO] [stdout] test memory::queue::handlers::tests::reembed_defers_when_more_pending_then_done ... ok
[INFO] [stdout] test memory::queue::handlers::tests::reembed_no_provider_completes_without_defer ... ok
[INFO] [stdout] test memory::queue::handlers::tests::seal_document_empty_is_noop ... ok
[INFO] [stdout] test memory::queue::handlers::tests::seal_document_nonempty_calls_delegate ... ok
[INFO] [stdout] test memory::queue::handlers::tests::extract_admits_and_enqueues_append_buffer ... ok
[INFO] [stdout] test memory::queue::ops::tests::backfill_flag_setters_are_wired ... ok
[INFO] [stdout] test memory::queue::handlers::tests::extract_dropped_chunk_enqueues_nothing ... ok
[INFO] [stdout] test memory::queue::handlers::tests::extract_admits_doc_subtree_skips_flat_append ... ok
[INFO] [stdout] test memory::queue::redact::tests::masks_bearer_token ... ok
[INFO] [stdout] test memory::queue::handlers::tests::extract_missing_chunk_is_noop_done ... ok
[INFO] [stdout] test memory::queue::redact::tests::masks_email ... ok
[INFO] [stdout] test memory::queue::redact::tests::idempotent_on_already_scrubbed_string ... ok
[INFO] [stdout] test memory::queue::redact::tests::masks_openai_key ... ok
[INFO] [stdout] test memory::queue::redact::tests::masks_github_token_variants ... ok
[INFO] [stdout] test memory::queue::redact::tests::masks_generic_secret_assignments ... ok
[INFO] [stdout] test memory::queue::redact::tests::passthrough_for_safe_string ... ok
[INFO] [stdout] test memory::queue::redact::tests::masks_slack_token ... ok
[INFO] [stdout] test memory::queue::redact::tests::truncate_handles_multibyte_boundary ... ok
[INFO] [stdout] test memory::queue::redact::tests::strips_url_userinfo ... ok
[INFO] [stdout] test memory::queue::redact::tests::truncates_oversized_input ... ok
[INFO] [stdout] test memory::queue::store::tests::backoff_grows_then_caps ... ok
[INFO] [stdout] test memory::queue::handlers::tests::extract_arms_reembed_when_uncovered ... ok
[INFO] [stdout] test memory::queue::handlers::tests::flush_stale_enqueues_a_seal_per_stale_buffer ... ok
[INFO] [stdout] test memory::conversations::store::tests::legacy_workspace_cold_rebuild_does_not_block_concurrent_append ... ok
[INFO] [stdout] test memory::queue::handlers::tests::seal_enqueues_parent_when_cascading ... ok
[INFO] [stdout] test memory::queue::store::tests::is_retired_kind_recognises_legacy_strings ... ok
[INFO] [stdout] test memory::queue::scheduler::tests::enqueue_flush_stale_dedupes_within_current_block ... ok
[INFO] [stdout] test memory::queue::scheduler::tests::self_heal_requeues_transient_failures ... ok
[INFO] [stdout] test memory::queue::store::tests::count_by_status_reports_each_state ... ok
[INFO] [stdout] test memory::queue::store::tests::enqueue_after_done_creates_fresh_row ... ok
[INFO] [stdout] test memory::queue::store::tests::enqueue_and_claim_roundtrip ... ok
[INFO] [stdout] test memory::queue::store::tests::enqueue_dedupes_active_jobs ... ok
[INFO] [stdout] test memory::queue::store::tests::retired_kind_rows_are_skipped_then_purged ... ok
[INFO] [stdout] test memory::queue::ops::tests::ensure_reembed_backfill_enqueues_only_when_uncovered ... ok
[INFO] [stdout] test memory::queue::store::tests::typed_failure_columns_roundtrip_as_none_by_default ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::deferred_row_not_claimable_until_until_ms ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mark_deferred_does_not_increment_attempts ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::count_failed_unrecoverable_excludes_transient_and_untyped ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mark_deferred_stale_lease_is_noop ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mark_done_settles_current_lessee ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mark_failed_persists_full_error_unredacted ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mark_failed_retries_then_terminates ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mark_failed_typed_transient_still_retries ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mark_failed_typed_unrecoverable_terminates_immediately ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::recover_stale_locks_resets_running_rows ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::mixed_outcomes_stress ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::release_running_locks_resets_running_rows_regardless_of_lease ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::requeue_failed_resets_failed_jobs_only ... ok
[INFO] [stdout] test memory::queue::types::tests::append_target_serializes_with_kind_tag ... ok
[INFO] [stdout] test memory::queue::types::tests::dedupe_keys_distinguish_node_kinds ... ok
[INFO] [stdout] test memory::queue::types::tests::dedupe_keys_distinguish_targets ... ok
[INFO] [stdout] test memory::queue::types::tests::flush_stale_dedupe_key_is_pure_and_per_3h_block ... ok
[INFO] [stdout] test memory::queue::types::tests::job_failure_classification ... ok
[INFO] [stdout] test memory::queue::types::tests::job_kind_roundtrip ... ok
[INFO] [stdout] test memory::queue::types::tests::job_status_roundtrip ... ok
[INFO] [stdout] test memory::queue::types::tests::job_status_terminality ... ok
[INFO] [stdout] test memory::queue::types::tests::llm_bound_kinds ... ok
[INFO] [stdout] test memory::queue::types::tests::new_job_append_buffer_builder_uses_payload_dedupe_key ... ok
[INFO] [stdout] test memory::queue::types::tests::new_job_extract_chunk_builder_sets_kind_payload_and_dedupe_key ... ok
[INFO] [stdout] test memory::queue::types::tests::new_job_flush_stale_builder_uses_supplied_time_bucket ... ok
[INFO] [stdout] test memory::queue::types::tests::new_job_reembed_backfill_builder_is_one_chain_per_signature ... ok
[INFO] [stdout] test memory::queue::types::tests::node_ref_serializes_with_kind_tag ... ok
[INFO] [stdout] test memory::queue::types::tests::seal_document_dedupe_key_is_per_version ... ok
[INFO] [stdout] test memory::queue::types::tests::seal_document_roundtrips_through_newjob ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::requeue_transient_failed_skips_unrecoverable_jobs ... ok
[INFO] [stdout] test memory::queue::worker::tests::is_sqlite_busy_matches_busy_and_locked ... ok
[INFO] [stdout] test memory::queue::worker::tests::is_sqlite_busy_matches_through_context_and_text ... ok
[INFO] [stdout] test memory::queue::worker::tests::is_sqlite_busy_negatives ... ok
[INFO] [stdout] test memory::queue::worker::tests::is_sqlite_corrupt_matches_code_notadb_context_text ... ok
[INFO] [stdout] test memory::queue::worker::tests::is_sqlite_disk_full_matches_code_context_text ... ok
[INFO] [stdout] test memory::queue::worker::tests::is_sqlite_io_transient_matches_family ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::stale_worker_mark_failed_is_noop ... ok
[INFO] [stdout] test memory::queue::store_settle::tests::stale_worker_settlement_is_noop ... ok
[INFO] [stdout] test memory::queue::testing::tests::drain_terminates_on_a_deferred_job ... ok
[INFO] [stdout] test memory::queue::testing::tests::drain_runs_the_full_extract_append_seal_pipeline ... ok
[INFO] [stdout] test memory::queue::testing::tests::drain_until_idle_is_noop_when_queue_is_empty ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::cover_window_until_before_since_errors ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::empty_eligible_set_covers_nothing ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::filter_superseded_doc_versions_dedups_duplicate_winning_revision ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::filter_superseded_doc_versions_keeps_newest_and_suppresses_old_chunks ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::ineligible_parent_leaves_child_as_frontier ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::parent_subsumes_child_only_parent_is_maximal ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::restrict_drops_summaries_spanning_out_of_filter_chunks ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::sibling_frontier_nodes_each_emitted ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::single_eligible_summary_covers_its_leaves ... ok
[INFO] [stdout] test memory::queue::testing::tests::drain_tolerates_retired_kind_rows ... ok
[INFO] [stdout] test memory::queue::worker::tests::bootstrap_purges_retired_and_recovers_locks ... ok
[INFO] [stdout] test memory::queue::worker::tests::run_once_claims_and_completes_a_flush_stale_job ... ok
[INFO] [stdout] test memory::queue::worker::tests::run_once_holds_an_llm_permit_for_llm_bound_jobs ... ok
[INFO] [stdout] test memory::queue::worker::tests::run_once_reschedules_reembed_jobs_that_defer ... ok
[INFO] [stdout] test memory::queue::worker::tests::run_once_returns_false_when_queue_is_empty ... ok
[INFO] [stdout] test memory::retrieval::cover::tests::cover_window_emits_raw_chunks_when_no_tree ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::depth_zero_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::deeper_max_depth_does_not_break_on_shallow_tree ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::drill_down_surfaces_only_latest_doc_version ... ok
[INFO] [stdout] test memory::retrieval::fetch::tests::empty_input_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::invalid_id_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::leaf_drill_down_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::per_depth_batch_keys_hit_scope_by_tree_id_not_position ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::query_with_limit_truncates_after_rerank ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::query_without_limit_returns_all_children ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::summary_drills_to_leaves_at_depth_one ... ok
[INFO] [stdout] test memory::retrieval::drill_down::tests::walk_visits_siblings_before_descendants_bfs_order ... ok
[INFO] [stdout] test memory::retrieval::fetch::tests::fetch_leaves_preserves_input_order_and_propagates_scores ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_global_until_before_since_errors ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_topic_empty_entity_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::fetch::tests::leaf_hit_carries_source_ref_and_scope ... ok
[INFO] [stdout] test memory::retrieval::fetch::tests::returns_existing_chunks_in_order ... ok
[INFO] [stdout] test memory::retrieval::fetch::tests::missing_ids_are_skipped ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_global_drops_out_of_window_summaries ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_global_empty_store_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::mmr::tests::diversity_selects_distinct_vectors ... ok
[INFO] [stdout] test memory::retrieval::mmr::tests::empty_candidates_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::mmr::tests::lambda_one_is_pure_relevance ... ok
[INFO] [stdout] test memory::retrieval::mmr::tests::limit_caps_output ... ok
[INFO] [stdout] test memory::retrieval::mmr::tests::single_candidate ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::compose_applies_weights ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::freshness_future_timestamp_clamps_to_one ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::freshness_now_is_one_and_decays ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::freshness_zero_half_life_disables_decay ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::keyword_relevance_empty_query_or_content_is_zero ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::keyword_relevance_full_and_partial_overlap ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::keyword_relevance_is_case_insensitive ... ok
[INFO] [stdout] test memory::retrieval::scoring::tests::profiles_sum_to_one ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_global_gathers_across_sources_in_window ... ok
[INFO] [stdout] test memory::retrieval::search::tests::build_sql_with_kinds_adds_in_clause ... ok
[INFO] [stdout] test memory::retrieval::search::tests::build_sql_without_kinds_has_no_in_clause ... ok
[INFO] [stdout] test memory::retrieval::fetch::tests::over_cap_is_truncated ... ok
[INFO] [stdout] test memory::retrieval::search::tests::huge_limit_is_clamped ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_topic_resolves_indexed_leaf ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_topic_resolves_indexed_summary_with_scope ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_topic_unknown_entity_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::global::tests::query_topic_window_filters_old_nodes ... ok
[INFO] [stdout] test memory::retrieval::graph_adapter_tests::config_entity_index_reads_nodes_and_entities_from_sqlite_index ... ok
[INFO] [stdout] test memory::retrieval::search::tests::zero_limit_defaults_to_five ... ok
[INFO] [stdout] test memory::retrieval::search::tests::empty_index_returns_empty_vec ... ok
[INFO] [stdout] test memory::retrieval::search::tests::blank_query_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::search::tests::kind_filter_narrows_results ... ok
[INFO] [stdout] test memory::retrieval::search::tests::limit_truncates_results ... ok
[INFO] [stdout] test memory::retrieval::search::tests::matches_aggregate_across_multiple_nodes ... ok
[INFO] [stdout] test memory::retrieval::search::tests::matches_on_entity_id_substring ... ok
[INFO] [stdout] test memory::retrieval::search::tests::matches_on_surface_substring ... ok
[INFO] [stdout] test memory::retrieval::source::tests::legacy_null_embedding_rows_sort_last_under_query ... ok
[INFO] [stdout] test memory::retrieval::source::tests::scope_prefix_matching_known_platforms ... ok
[INFO] [stdout] test memory::retrieval::source::tests::query_by_source_id_returns_tree_summaries ... ok
[INFO] [stdout] test memory::retrieval::types::tests::entity_match_serde_round_trip ... ok
[INFO] [stdout] test memory::retrieval::types::tests::leaf_placeholder_is_always_source ... ok
[INFO] [stdout] test memory::retrieval::types::tests::node_kind_as_str_round_trips ... ok
[INFO] [stdout] test memory::retrieval::types::tests::query_response_empty_is_inert ... ok
[INFO] [stdout] test memory::retrieval::types::tests::query_response_not_truncated_when_all_returned ... ok
[INFO] [stdout] test memory::retrieval::types::tests::query_response_truncated_when_total_exceeds_hits ... ok
[INFO] [stdout] test memory::retrieval::source::tests::query_all_source_trees_when_no_filter ... ok
[INFO] [stdout] test memory::retrieval::types::tests::retrieval_hit_serde_round_trip ... ok
[INFO] [stdout] test memory::score::embed::tests::check_embed_dim_validates ... ok
[INFO] [stdout] test memory::score::embed::tests::cosine_identical_vectors_is_one ... ok
[INFO] [stdout] test memory::score::embed::tests::cosine_length_mismatch_returns_zero ... ok
[INFO] [stdout] test memory::score::embed::tests::cosine_opposite_vectors_is_minus_one ... ok
[INFO] [stdout] test memory::score::embed::tests::cosine_orthogonal_vectors_is_zero ... ok
[INFO] [stdout] test memory::score::embed::tests::cosine_zero_vector_returns_zero_not_nan ... ok
[INFO] [stdout] test memory::score::embed::tests::decode_optional_blob_handles_null_and_value ... ok
[INFO] [stdout] test memory::score::embed::tests::default_embed_batch_calls_embed_per_text ... ok
[INFO] [stdout] test memory::score::embed::tests::default_embed_batch_preserves_per_position_errors ... ok
[INFO] [stdout] test memory::score::embed::tests::inert_empty_input_still_returns_full_vector ... ok
[INFO] [stdout] test memory::score::embed::tests::inert_name_is_inert ... ok
[INFO] [stdout] test memory::score::embed::tests::cosine_empty_returns_zero ... ok
[INFO] [stdout] test memory::score::embed::tests::inert_returns_zero_vector_of_embedding_dim ... ok
[INFO] [stdout] test memory::score::embed::tests::pack_checked_rejects_wrong_dim ... ok
[INFO] [stdout] test memory::score::embed::tests::unpack_wrong_byte_count_errors ... ok
[INFO] [stdout] test memory::score::embed::tests::pack_unpack_round_trip ... ok
[INFO] [stdout] test memory::score::embed::tests::unpack_wrong_dim_errors ... ok
[INFO] [stdout] test memory::score::extract::composite::tests::composite_survives_one_failing_extractor ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::build_prompt_carries_user_text_and_kind_tag ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::build_prompt_sets_extraction_max_tokens_cap ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::build_system_prompt_default_omits_topics ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::build_system_prompt_includes_output_language_directive ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::build_system_prompt_with_flag_includes_topics ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_does_not_retry_on_500_wrapped_monthly_quota ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_does_not_retry_on_permanent_402 ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_does_not_retry_on_wrong_shape_response ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_retries_on_truncated_response ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_retries_transient_provider_error ... ok
[INFO] [stdout] test memory::score::extract::composite::tests::regex_only_extractor_works ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_returns_empty_on_completed_empty_extraction ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_returns_empty_on_malformed_provider_response ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_soft_fallback_on_provider_failure ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extract_routes_through_chat_provider_and_parses_response ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extraction_output_parses_topics_when_present ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::extraction_output_tolerates_missing_topics ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::find_char_span_from_advances_past_prior_match ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::find_char_span_from_preserves_utf8 ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::find_char_span_from_rejects_non_char_boundary ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::find_char_span_from_returns_none_after_exhaustion ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::find_char_span_handles_unicode ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::into_extracted_entities_clamps_importance ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::into_extracted_entities_disallowed_known_kind_falls_back_to_misc ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::into_extracted_entities_drops_extra_duplicate_when_source_only_has_one ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::into_extracted_entities_drops_hallucinations ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::into_extracted_entities_gives_distinct_spans_to_duplicate_mentions ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::into_extracted_entities_lenient_falls_back_to_misc ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::find_char_span_returns_none_for_missing ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::into_extracted_entities_strict_drops_unknown_kinds ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::parse_kind_normalisation ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::truncate_for_log_long_input_appends_ellipsis ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::truncate_for_log_short_input_unchanged ... ok
[INFO] [stdout] test memory::score::extract::llm::tests::parse_kind_accepts_new_semantic_kinds_and_synonyms ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::discord_style_handle ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::all_mechanical_kinds_in_one_pass ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::email_basic ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::empty_input_no_matches ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::hashtag_emits_topic ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::handle_vs_email_boundary ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::hashtag_requires_leading_letter ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::scores_always_one ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::url_stops_at_trailing_punct ... ok
[INFO] [stdout] test memory::score::extract::regex::tests::utf8_span_is_char_not_byte ... ok
[INFO] [stdout] test memory::score::extract::types::tests::entity_kind_round_trip ... ok
[INFO] [stdout] test memory::score::extract::types::tests::mechanical_classification ... ok
[INFO] [stdout] test memory::score::extract::types::tests::merge_dedups_by_kind_text_span ... ok
[INFO] [stdout] test memory::score::extract::types::tests::unique_entity_count_dedups_case_insensitive ... ok
[INFO] [stdout] test memory::score::extract::types::tests::unique_entity_count_keeps_different_kinds_distinct ... ok
[INFO] [stdout] test memory::score::resolver::tests::canonicalise_batch_preserves_spans ... ok
[INFO] [stdout] test memory::score::resolver::tests::canonicalise_mixes_entities_and_topics_in_order ... ok
[INFO] [stdout] test memory::score::resolver::tests::different_kinds_produce_different_ids_for_same_text ... ok
[INFO] [stdout] test memory::score::resolver::tests::email_case_insensitive_canonicalises ... ok
[INFO] [stdout] test memory::score::resolver::tests::handle_strips_leading_at ... ok
[INFO] [stdout] test memory::score::resolver::tests::hashtag_and_topic_with_same_label_coexist ... ok
[INFO] [stdout] test memory::score::resolver::tests::hashtag_strips_leading_hash ... ok
[INFO] [stdout] test memory::score::resolver::tests::topic_canonicalisation_lowercases ... ok
[INFO] [stdout] test memory::score::resolver::tests::topic_entity_kind_round_trips_through_parse ... ok
[INFO] [stdout] test memory::score::resolver::tests::topics_are_promoted_to_canonical_entities ... ok
[INFO] [stdout] test memory::score::resolver::tests::url_preserves_case ... ok
[INFO] [stdout] test memory::score::signals::interaction::tests::dm_plus_mention ... ok
[INFO] [stdout] test memory::score::signals::interaction::tests::no_tags_neutral ... ok
[INFO] [stdout] test memory::score::signals::interaction::tests::sent_tag_high_score ... ok
[INFO] [stdout] test memory::score::signals::interaction::tests::reply_only ... ok
[INFO] [stdout] test memory::score::signals::interaction::tests::stacking_capped_at_one ... ok
[INFO] [stdout] test memory::score::signals::metadata_weight::tests::bounded_zero_one ... ok
[INFO] [stdout] test memory::score::signals::metadata_weight::tests::per_kind_weights ... ok
[INFO] [stdout] test memory::score::signals::ops::tests::combine_all_ones_is_one ... ok
[INFO] [stdout] test memory::score::signals::ops::tests::combine_all_zeros_is_zero ... ok
[INFO] [stdout] test memory::score::signals::ops::tests::compute_wires_all_signals ... ok
[INFO] [stdout] test memory::score::signals::ops::tests::entity_density_scales ... ok
[INFO] [stdout] test memory::score::signals::ops::tests::weights_influence_total ... ok
[INFO] [stdout] test memory::score::signals::source_weight::tests::all_data_sources_bounded ... ok
[INFO] [stdout] test memory::score::signals::source_weight::tests::data_source_inferred_from_tags ... ok
[INFO] [stdout] test memory::score::signals::source_weight::tests::plain_user_label_does_not_infer_provider ... ok
[INFO] [stdout] test memory::score::signals::source_weight::tests::provider_specific_weights_applied ... ok
[INFO] [stdout] test memory::score::signals::source_weight::tests::unknown_tag_falls_back_to_kind_default ... ok
[INFO] [stdout] test memory::score::signals::token_count::tests::monotonic_in_bands ... ok
[INFO] [stdout] test memory::score::signals::token_count::tests::plateau_is_one ... ok
[INFO] [stdout] test memory::score::signals::token_count::tests::ramp_down_to_half ... ok
[INFO] [stdout] test memory::score::signals::token_count::tests::ramp_up_linear ... ok
[INFO] [stdout] test memory::score::signals::token_count::tests::tiny_is_zero ... ok
[INFO] [stdout] test memory::score::signals::types::tests::score_signals_default_to_zero ... ok
[INFO] [stdout] test memory::score::signals::types::tests::signal_weights_default_match_expected_priorities ... ok
[INFO] [stdout] test memory::score::signals::types::tests::with_llm_enabled_only_changes_llm_weight ... ok
[INFO] [stdout] test memory::score::signals::unique_words::tests::high_repetition_scored_low ... ok
[INFO] [stdout] test memory::score::signals::unique_words::tests::medium_repetition_ramps ... ok
[INFO] [stdout] test memory::score::signals::unique_words::tests::punctuation_stripped ... ok
[INFO] [stdout] test memory::score::signals::unique_words::tests::short_text_returns_neutral ... ok
[INFO] [stdout] test memory::score::signals::unique_words::tests::substantive_text_scored_high ... ok
[INFO] [stdout] test memory::retrieval::source::tests::query_by_source_kind_filters_scopes ... ok
[INFO] [stdout] test memory::retrieval::source::tests::query_orders_newest_first ... ok
[INFO] [stdout] test memory::retrieval::source::tests::query_truncates_to_limit ... ok
[INFO] [stdout] test memory::retrieval::source::tests::query_unknown_source_id_returns_empty ... ok
[INFO] [stdout] test memory::retrieval::source::tests::query_with_time_window_filters_old_hits ... ok
[INFO] [stdout] test memory::retrieval::source::tests::sidecar_embeddings_hydrate_for_rerank ... ok
[INFO] [stdout] test memory::score::store::tests::dropped_flag_persists ... ok
[INFO] [stdout] test memory::score::store::tests::clear_entity_index_drops_stale_rows ... ok
[INFO] [stdout] test memory::score::store::tests::get_missing_score_is_none ... ok
[INFO] [stdout] test memory::score::store::tests::get_scores_batch_empty_input_and_missing_chunk_ids ... ok
[INFO] [stdout] test memory::score::store::tests::get_scores_batch_returns_present_chunk_ids ... ok
[INFO] [stdout] test memory::score::tests::borderline_chunk_consults_llm ... ok
[INFO] [stdout] test memory::score::tests::entities_are_canonicalised ... ok
[INFO] [stdout] test memory::score::tests::llm_consulted_reports_full_total ... ok
[INFO] [stdout] test memory::score::tests::llm_failure_falls_back_gracefully ... ok
[INFO] [stdout] test memory::score::tests::noise_chunk_is_dropped ... ok
[INFO] [stdout] test memory::score::tests::short_circuit_reports_cheap_only_total ... ok
[INFO] [stdout] test memory::score::tests::short_circuit_skips_llm_when_cheap_total_is_definite_drop ... ok
[INFO] [stdout] test memory::score::tests::short_circuit_skips_llm_when_cheap_total_is_definite_keep ... ok
[INFO] [stdout] test memory::score::tests::substantive_chunk_is_kept ... ok
[INFO] [stdout] test memory::score::tests::threshold_override_respected ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::format_thread_handles_missing_title ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::format_thread_handles_no_messages ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::format_thread_produces_markdown ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::format_thread_skips_empty_content ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::list_items_finds_json_thread_files ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::list_items_returns_empty_when_no_threads_dir ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::read_item_rejects_path_traversal ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::read_item_returns_error_for_missing_thread ... ok
[INFO] [stdout] test memory::sources::readers::conversation::tests::read_item_returns_formatted_content ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::glob_to_regex_matches_default_pattern ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::glob_to_regex_single_star_excludes_separators ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::list_items_finds_md_files ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::list_items_nonexistent_folder_errors ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::list_items_recurses_into_subdirectories ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::read_item_missing_file_errors ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::read_item_prevents_path_traversal ... ok
[INFO] [stdout] test memory::sources::readers::folder::tests::read_item_returns_file_content ... ok
[INFO] [stdout] test memory::sources::registry::tests::add_get_list_round_trip ... ok
[INFO] [stdout] test memory::sources::registry::tests::add_rejects_duplicate_id ... ok
[INFO] [stdout] test memory::sources::registry::tests::add_rejects_invalid_entry ... ok
[INFO] [stdout] test memory::sources::registry::tests::apply_all_in_enables_and_clears_caps ... ok
[INFO] [stdout] test memory::sources::registry::tests::composio_defaults_for_known_and_unknown_toolkits ... ok
[INFO] [stdout] test memory::sources::registry::tests::in_place_upsert_inserts_then_updates_label_only ... ok
[INFO] [stdout] test memory::sources::registry::tests::list_enabled_by_kind_filters ... ok
[INFO] [stdout] test memory::sources::registry::tests::list_is_empty_for_missing_file ... ok
[INFO] [stdout] test memory::sources::registry::tests::memory_source_patch_deserializes_partial_and_github_fields ... ok
[INFO] [stdout] test memory::sources::registry::tests::remove_returns_whether_anything_was_removed ... ok
[INFO] [stdout] test memory::sources::registry::tests::update_applies_patch_and_persists ... ok
[INFO] [stdout] test memory::sources::registry::tests::update_missing_id_errors ... ok
[INFO] [stdout] test memory::sources::registry::tests::upsert_composio_source_persists_and_disconnect_removes ... ok
[INFO] [stdout] test memory::sources::registry::tests::write_preserves_other_top_level_config_keys ... ok
[INFO] [stdout] test memory::sources::registry::tests::write_uses_atomic_temp_file_without_leaving_stale_temp ... ok
[INFO] [stdout] test memory::sources::types::tests::content_type_serializes_to_snake_case ... ok
[INFO] [stdout] test memory::sources::types::tests::conversation_kind_serializes_to_snake_case ... ok
[INFO] [stdout] test memory::sources::types::tests::conversation_toml_round_trip ... ok
[INFO] [stdout] test memory::sources::types::tests::enabled_defaults_to_true_when_absent ... ok
[INFO] [stdout] test memory::sources::types::tests::source_kind_as_str_matches_wire_strings ... ok
[INFO] [stdout] test memory::sources::types::tests::source_kind_round_trips_via_serde ... ok
[INFO] [stdout] test memory::sources::types::tests::toml_round_trip ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_composio_requires_toolkit_and_connection_id ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_conversation_fails_with_empty_id ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_conversation_fails_with_empty_label ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_conversation_needs_only_id_and_label ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_folder_requires_path ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_github_requires_url ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_rss_and_web_page_require_url ... ok
[INFO] [stdout] test memory::sources::types::tests::validate_twitter_requires_query ... ok
[INFO] [stdout] test memory::sources::validation::tests::composio_requires_both_toolkit_and_connection ... ok
[INFO] [stdout] test memory::sources::validation::tests::empty_id_or_label_is_rejected_for_every_kind ... ok
[INFO] [stdout] test memory::sources::validation::tests::empty_string_field_counts_as_missing ... ok
[INFO] [stdout] test memory::sources::validation::tests::ensure_within_base_accepts_contained_file ... ok
[INFO] [stdout] test memory::sources::validation::tests::ensure_within_base_rejects_escape ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::sha256_hex_is_stable ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::stage_summary_global_uses_singleton_folder_no_date ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::stage_summary_is_idempotent ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::stage_summary_rewrites_stale_on_disk_body ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::stage_summary_sha256_is_over_body_only ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::stage_summary_writes_file_and_returns_staged ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::write_creates_file_and_returns_true ... ok
[INFO] [stdout] test memory::store::content::atomic::tests::write_is_idempotent_returns_false_on_second_call ... ok
[INFO] [stdout] test memory::store::content::compose::tests::chat_chunk_has_no_email_specific_fields ... ok
[INFO] [stdout] test memory::store::content::compose::tests::child_basename_overrides_replace_chunk_id_in_wikilink ... ok
[INFO] [stdout] test memory::store::content::compose::tests::children_are_emitted_as_obsidian_wikilinks ... ok
[INFO] [stdout] test memory::store::content::compose::tests::compose_global_summary_alias_format ... ok
[INFO] [stdout] test memory::store::content::compose::tests::compose_persists_path_scope_and_seeds_scoped_source_tag ... ok
[INFO] [stdout] test memory::store::content::compose::tests::compose_produces_front_matter_and_body ... ok
[INFO] [stdout] test memory::store::content::compose::tests::compose_source_summary_has_required_front_matter ... ok
[INFO] [stdout] test memory::store::content::compose::tests::compose_summary_same_start_end_date_single_date_alias ... ok
[INFO] [stdout] test memory::store::content::compose::tests::compose_summary_with_zero_children ... ok
[INFO] [stdout] test memory::store::content::compose::tests::compose_topic_summary_alias_format ... ok
[INFO] [stdout] test memory::store::content::compose::tests::email_chunk_body_bytes_unchanged_by_extra_fields ... ok
[INFO] [stdout] test memory::store::content::compose::tests::email_chunk_has_participants_list_and_alias ... ok
[INFO] [stdout] test memory::store::content::compose::tests::email_chunk_many_participants_alias_summarises ... ok
[INFO] [stdout] test memory::store::content::compose::tests::email_chunk_with_malformed_source_id_omits_extra_fields ... ok
[INFO] [stdout] test memory::store::content::compose::tests::rewrite_summary_tags_backfills_missing_provenance ... ok
[INFO] [stdout] test memory::store::content::compose::tests::rewrite_summary_tags_delegates_to_rewrite_tags ... ok
[INFO] [stdout] test memory::store::content::compose::tests::rewrite_tags_empty_list ... ok
[INFO] [stdout] test memory::store::content::compose::tests::rewrite_tags_preserves_body ... ok
[INFO] [stdout] test memory::store::content::compose::tests::scope_short_label_many_participants ... ok
[INFO] [stdout] test memory::store::content::compose::tests::scope_short_label_non_gmail_returns_raw ... ok
[INFO] [stdout] test memory::store::content::compose::tests::scope_short_label_two_participants ... ok
[INFO] [stdout] test memory::store::content::compose::tests::split_front_matter_round_trips ... ok
[INFO] [stdout] test memory::store::content::compose::tests::structured_child_summary_id_is_sanitised_in_wikilink ... ok
[INFO] [stdout] test memory::store::content::compose::tests::yaml_scalar_quotes_special_characters ... ok
[INFO] [stdout] test memory::store::content::paths::tests::chat_path ... ok
[INFO] [stdout] test memory::store::content::paths::tests::chunk_abs_path_uses_os_separator ... ok
[INFO] [stdout] test memory::store::content::paths::tests::document_path ... ok
[INFO] [stdout] test memory::store::content::paths::tests::email_group_conversation_path ... ok
[INFO] [stdout] test memory::store::content::paths::tests::email_malformed_source_id_falls_back_to_flat_layout ... ok
[INFO] [stdout] test memory::store::content::paths::tests::email_one_to_one_conversation_path ... ok
[INFO] [stdout] test memory::store::content::paths::tests::email_solo_no_to_path ... ok
[INFO] [stdout] test memory::store::content::paths::tests::email_three_participant_path ... ok
[INFO] [stdout] test memory::store::content::paths::tests::layout_doc_subtree_nests_under_docs_and_version ... ok
[INFO] [stdout] test memory::store::content::paths::tests::layout_doc_subtree_unversioned_folder ... ok
[INFO] [stdout] test memory::store::content::paths::tests::layout_merge_tier_nests_under_merge ... ok
[INFO] [stdout] test memory::store::content::paths::tests::layout_standard_matches_flat_path ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_collapses_consecutive_separators ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_empty_falls_back_to_unknown ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_gmail_thread ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_preserves_interior_underscore ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_preserves_interior_underscore_between_chars ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_slack_channel ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_truncates_at_120_chars ... ok
[INFO] [stdout] test memory::store::content::paths::tests::slugify_uppercase_lowercased ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_abs_path_rooted_under_content_root ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_filename_falls_back_for_unknown_shapes ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_filename_legacy_branch_rejects_path_separator_in_level ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_filename_legacy_branch_rejects_traversal_in_level ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_filename_preserves_legacy_level_first_shape ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_filename_rejects_canonical_shape_with_non_numeric_level ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_filename_rejects_canonical_shape_with_path_separators ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_rel_path_current_ids_keep_time_first_basename ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_rel_path_global ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_rel_path_global_levels_share_one_folder ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_rel_path_source ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_rel_path_strips_trailing_md_extension ... ok
[INFO] [stdout] test memory::store::content::paths::tests::summary_rel_path_topic ... ok
[INFO] [stdout] test memory::store::content::raw::tests::github_raw_kinds_use_repo_grouped_subdirs ... ok
[INFO] [stdout] test memory::store::content::raw::tests::raw_rel_path_uses_kind_subdir ... ok
[INFO] [stdout] test memory::store::content::raw::tests::slug_account_email_basic ... ok
[INFO] [stdout] test memory::store::content::raw::tests::slug_account_email_falls_back_to_unknown ... ok
[INFO] [stdout] test memory::store::content::raw::tests::slug_account_email_handles_plus_aliases ... ok
[INFO] [stdout] test memory::store::content::raw::tests::slug_account_email_lowercases_and_trims ... ok
[INFO] [stdout] test memory::store::content::raw::tests::write_raw_items_creates_named_files ... ok
[INFO] [stdout] test memory::store::content::raw::tests::write_raw_items_empty_is_noop ... ok
[INFO] [stdout] test memory::score::store::tests::index_and_lookup_entity ... ok
[INFO] [stdout] test memory::store::content::raw::tests::write_raw_items_is_idempotent ... ok
[INFO] [stdout] test memory::store::content::raw::tests::write_raw_items_sanitises_uid_path_chars ... ok
[INFO] [stdout] test memory::store::content::read::tests::read_chunk_file_rejects_invalid_utf8 ... ok
[INFO] [stdout] test memory::store::content::read::tests::read_chunk_file_rejects_missing_front_matter ... ok
[INFO] [stdout] test memory::store::content::read::tests::read_missing_file_returns_error ... ok
[INFO] [stdout] test memory::store::content::read::tests::read_returns_body_and_correct_sha256 ... ok
[INFO] [stdout] test memory::store::content::raw::tests::write_raw_items_splits_kinds_into_subdirs ... ok
[INFO] [stdout] test memory::store::content::read::tests::resolve_within_content_root_rejects_traversal_and_absolute ... ok
[INFO] [stdout] test memory::store::content::read::tests::read_summary_file_returns_body_and_sha ... ok
[INFO] [stdout] test memory::store::content::read::tests::verify_fails_for_wrong_hash ... ok
[INFO] [stdout] test memory::store::content::read::tests::verify_passes_for_correct_hash ... ok
[INFO] [stdout] test memory::store::content::read::tests::verify_summary_file_mismatch_returns_actual_sha ... ok
[INFO] [stdout] test memory::store::content::read::tests::verify_summary_file_missing_for_absent_file ... ok
[INFO] [stdout] test memory::store::content::read::tests::verify_summary_file_mismatch_for_wrong_hash ... ok
[INFO] [stdout] test memory::store::content::tags::tests::compose_chunk_file_seeds_source_tag ... ok
[INFO] [stdout] test memory::store::content::read::tests::verify_summary_file_ok_for_correct_hash ... ok
[INFO] [stdout] test memory::store::content::tags::tests::rewrite_summary_tags_preserves_body_and_replaces_tags ... ok
[INFO] [stdout] test memory::store::content::tags::tests::slugify_tag_kind_examples ... ok
[INFO] [stdout] test memory::store::content::tags::tests::slugify_tag_value_capitalises_words ... ok
[INFO] [stdout] test memory::store::content::tags::tests::update_chunk_tags_is_noop_for_missing_file ... ok
[INFO] [stdout] test memory::store::content::tags::tests::entity_tag_builds_obsidian_tag ... ok
[INFO] [stdout] test memory::store::content::tags::tests::update_chunk_tags_prefers_path_scope_for_source_tag ... ok
[INFO] [stdout] test memory::store::content::tests::stage_chunks_email_skips_disk_write ... ok
[INFO] [stdout] test memory::store::content::tags::tests::update_chunk_tags_replaces_tag_block ... ok
[INFO] [stdout] test memory::store::content::tests::stage_chunks_is_idempotent ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::clear_entity_index_drops_stale_rows ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::custom_identity_marks_self_rows ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::default_identity_marks_no_rows_as_user ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::entity_kind_wire_strings_round_trip_and_reject_unknowns ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::index_and_lookup_entity ... ok
[INFO] [stdout] test memory::store::content::tests::stage_chunks_writes_files_and_returns_staged ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::index_batch ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::list_entity_ids_for_node_orders_by_score ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::index_idempotent_per_entity_node_pair ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::lookup_limit_respected ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::summary_entity_index_kind_is_parseable ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::summary_entity_index_skips_identity_for_malformed_ids ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::transaction_indexing_commits_with_outer_work ... ok
[INFO] [stdout] test memory::store::kv::tests::global_kv_roundtrips_and_deletes ... ok
[INFO] [stdout] test memory::store::kv::tests::kv_rejects_pii_like_keys ... ok
[INFO] [stdout] test memory::store::kv::tests::kv_rejects_secret_like_keys ... ok
[INFO] [stdout] test memory::store::kv::tests::kv_sanitizes_secret_values_before_storing ... ok
[INFO] [stdout] test memory::store::kv::tests::missing_keys_return_none ... ok
[INFO] [stdout] test memory::store::kv::tests::namespace_is_sanitized_consistently_between_write_and_read ... ok
[INFO] [stdout] test memory::store::kv::tests::namespace_kv_roundtrips_lists_and_combines_scope_records ... ok
[INFO] [stdout] test memory::store::safety::tests::has_likely_pii_detects_email_and_phone_and_ssn ... ok
[INFO] [stdout] test memory::store::entity_index::store::tests::open_creates_parent_directories_for_file_backed_index ... ok
[INFO] [stdout] test memory::store::safety::tests::has_likely_secret_detects_common_patterns ... ok
[INFO] [stdout] test memory::store::safety::tests::sanitize_json_redacts_common_sensitive_key_variants ... ok
[INFO] [stdout] test memory::store::safety::tests::sanitize_json_redacts_sensitive_keys_and_nested_strings ... ok
[INFO] [stdout] test memory::store::safety::tests::sanitize_text_blocks_private_key_blocks ... ok
[INFO] [stdout] test memory::store::safety::tests::sanitize_json_redacts_values_beyond_max_depth ... ok
[INFO] [stdout] test memory::score::store::tests::index_batch ... ok
[INFO] [stdout] test memory::store::safety::tests::sanitize_text_redacts_bearer_and_openai_key ... ok
[INFO] [stdout] test memory::store::store::tests::searches_by_namespace_and_text ... ok
[INFO] [stdout] test memory::store::store::tests::inserts_and_retrieves_memory ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::backend_accessor ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::bytes_to_vec_truncates_partial_bytes ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::clear_empty_namespace ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::cosine_empty ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::cosine_identical ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::cosine_mismatched_lengths ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::cosine_opposite ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::cosine_orthogonal ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::cosine_similar_high ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::cosine_zero_vector ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::count_empty ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::delete_existing ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::clear_namespace_removes_all ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::delete_wrong_namespace ... ok
[INFO] [stdout] test memory::store::safety::tests::sanitize_text_scrubs_pii_after_secrets ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::embedding_signature_format_is_stable ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::empty_vec_roundtrip ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::delete_nonexistent ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::inert_embedding_is_deterministic_zero_vector_mock_backend ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::insert_and_count ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::insert_batch_multiple ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::insert_batch_empty ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::insert_batch_mismatch_error ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::insert_upsert_replaces ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::list_namespaces_empty ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::list_namespaces_populated ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::open_in_memory_succeeds ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::insert_with_vector_sync ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::open_on_disk ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::roundtrip_vec_bytes ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_by_vector_falls_back_to_null_on_invalid_metadata ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_by_vector_limit_zero ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_by_vector_preserves_metadata ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_by_vector_returns_metadata_of_surviving_rows ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_by_vector_scores_correct ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_empty_namespace ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_handles_invalid_metadata_json ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_namespace_isolation ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_respects_limit ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::open_reopen_same_dims_succeeds ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::open_reopen_different_dims_errors ... ok
[INFO] [stdout] test memory::tool_memory::render::tests::renders_byte_stable_output_for_identical_inputs ... ok
[INFO] [stdout] test memory::tool_memory::render::tests::renders_critical_before_high_regardless_of_input_order ... ok
[INFO] [stdout] test memory::store::vectors::store::tests::search_returns_ranked_results ... ok
[INFO] [stdout] test memory::tool_memory::render::tests::renders_empty_when_no_rules ... ok
[INFO] [stdout] test memory::tool_memory::render::tests::section_empty_returns_blank_output ... ok
[INFO] [stdout] test memory::tool_memory::render::tests::section_renders_snapshot_via_rendered_accessor ... ok
[INFO] [stdout] test memory::tool_memory::render::tests::renders_heading_and_priority_markers ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::delete_rule_removes_only_target_rule ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::list_rules_json_serializes_payload_for_rpc_envelopes ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::list_rules_skips_malformed_entries ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::delete_rule_returns_false_when_missing ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::put_rule_assigns_id_when_blank ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::list_tool_names_returns_only_tool_prefixed_namespaces ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::put_rule_rejects_blank_body ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::put_rule_rejects_blank_tool_name ... ok
[INFO] [stdout] test memory::score::store::tests::index_idempotent_per_entity_node_pair ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::put_then_get_round_trip_returns_same_rule ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::rules_for_prompt_caps_results ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::rules_for_prompt_scans_all_namespaces_when_caller_passes_empty_slice ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::rules_for_prompt_returns_only_eager_priorities ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::put_rule_preserves_created_at_on_upsert ... ok
[INFO] [stdout] test memory::tool_memory::store::tests::list_rules_sorts_critical_first_then_freshest ... ok
[INFO] [stdout] test memory::tool_memory::test_helpers::tests::mock_memory_empty_state_helpers_return_empty_values ... ok
[INFO] [stdout] test memory::tool_memory::test_helpers::tests::mock_memory_forget_and_namespace_summaries_track_entries ... ok
[INFO] [stdout] test memory::tool_memory::test_helpers::tests::mock_memory_recall_is_empty_noop ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::generated_rule_ids_are_safe_memory_document_keys ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::namespace_uses_tool_prefix_and_trims_whitespace ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::priority_default_is_normal ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::priority_is_eager_for_high_and_critical_only ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::priority_snake_case_serde ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::priority_ordering_puts_critical_above_high ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::rule_generate_id_produces_unique_values ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::rule_new_fills_id_and_timestamps ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::rule_serde_roundtrip_preserves_fields ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::rule_storage_key_uses_rule_prefix ... ok
[INFO] [stdout] test memory::tool_memory::test_helpers::tests::mock_memory_store_get_list_and_count_roundtrip ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::source_default_is_programmatic ... ok
[INFO] [stdout] test memory::tool_memory::types::tests::source_snake_case_serde ... ok
[INFO] [stdout] test memory::score::store::tests::lookup_limit_respected ... ok
[INFO] [stdout] test memory::score::store::tests::summary_entity_index_kind_is_parseable ... ok
[INFO] [stdout] test memory::score::store::tests::upsert_score_idempotent ... ok
[INFO] [stdout] test memory::score::store::tests::upsert_then_get_score ... ok
[INFO] [stdout] test memory::tree::bucket_seal::label_tests::hydrate_summary_inputs_preserves_order_and_skips_missing ... ok
[INFO] [stdout] test memory::tree::bucket_seal::label_tests::seal_with_empty_strategy_leaves_labels_empty ... ok
[INFO] [stdout] test memory::tree::bucket_seal::label_tests::seal_with_extract_strategy_populates_entities_and_topics ... ok
[INFO] [stdout] test memory::tree::bucket_seal::tests::append_below_budget_does_not_seal ... ok
[INFO] [stdout] test memory::tree::bucket_seal::label_tests::topic_tree_seal_persists_topic_kind_not_source ... ok
[INFO] [stdout] test memory::tree::factory::tests::from_tree_round_trips_kind ... ok
[INFO] [stdout] test memory::tree::factory::tests::global_uses_global_scope_and_kind ... ok
[INFO] [stdout] test memory::tree::factory::tests::source_factory_uses_source_kind_and_full_scope ... ok
[INFO] [stdout] test memory::tree::factory::tests::source_label_strategy_extracts_topic_empty ... ok
[INFO] [stdout] test memory::tree::bucket_seal::label_tests::seal_with_union_strategy_inherits_labels_from_children ... ok
[INFO] [stdout] test memory::tree::bucket_seal::label_tests::whitespace_summary_falls_back_to_deterministic_content ... ok
[INFO] [stdout] test memory::tree::bucket_seal::tests::crossing_budget_triggers_seal ... ok
[INFO] [stdout] test memory::tree::flush::tests::flush_default_noops_when_no_stale_buffers_exist ... ok
[INFO] [stdout] test memory::tree::factory::tests::factory_insert_seal_and_archive_use_profile_scope ... ok
[INFO] [stdout] test memory::tree::flush::tests::flush_does_not_force_seal_under_fanout_upper_buffer ... ok
[INFO] [stdout] test memory::tree::factory::tests::get_or_create_persists_tree_for_each_profile ... ok
[INFO] [stdout] test memory::tree::io::tests::label_strategy_default_is_inherit ... ok
[INFO] [stdout] test memory::tree::io::tests::tree_leaf_payload_converts_to_and_from_leaf_ref ... ok
[INFO] [stdout] test memory::tree::io::tests::tree_read_result_empty_copies_tree_id ... ok
[INFO] [stdout] test memory::tree::flush::tests::flush_noop_when_buffer_is_recent ... ok
[INFO] [stdout] test memory::tree::flush::tests::flush_seals_multiple_distinct_trees_via_batched_lookup ... ok
[INFO] [stdout] test memory::tree::bucket_seal::tests::upper_level_does_not_seal_below_fanout ... ok
[INFO] [stdout] test memory::tree::bucket_seal::tests::fanout_at_l1_triggers_l2_seal ... ok
[INFO] [stdout] test memory::tree::flush::tests::force_flush_tree_reports_missing_tree ... ok
[INFO] [stdout] test memory::tree::flush::tests::flush_seals_old_buffer_even_under_budget ... ok
[INFO] [stdout] test memory::tree::flush::tests::force_flush_tree_seals_current_l0_buffer ... ok
[INFO] [stdout] test memory::tree::read::tests::depth_bound_limits_descent ... ok
[INFO] [stdout] test memory::tree::read::tests::full_walk_visits_summaries_and_leaves ... ok
[INFO] [stdout] test memory::tree::registry::tests::summary_id_format_is_lexicographically_chronological ... ok
[INFO] [stdout] test memory::tree::registry::tests::tree_id_has_expected_prefix ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::discover_active_namespaces_requires_markdown_entries ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::group_by_hour_buckets_entries ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::group_by_hour_unparseable_falls_back ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::propagate_node_day_from_hour_children_fits_budget ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::propagate_node_preserves_created_at_on_update ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::propagate_node_with_no_children_is_noop ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::rebuild_tree_on_empty_namespace_is_noop ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::rebuild_tree_partial_success_when_one_level_fails ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::rebuild_tree_rewrites_ancestors ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::run_summarization_builds_ancestor_chain ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::run_summarization_empty_buffer_returns_none ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::run_summarization_multi_hour_groups_produce_multiple_leaves ... ok
[INFO] [stdout] test memory::tree::runtime::engine::tests::summarize_to_limit_truncates_overlong_output ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::ancestors_walk_to_root ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::buffer_write_and_drain ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::buffer_write_with_metadata ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::collect_root_summaries_carries_root_updated_at ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::collect_root_summaries_respects_per_namespace_cap ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::collect_root_summaries_returns_empty_for_unknown_workspace ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::collect_root_summaries_stops_at_total_cap ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::count_nodes_and_status ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::delete_tree_removes_all ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::frontmatter_parsing ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::list_namespaces_with_root_returns_only_summarised ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::parse_node_markdown_uses_deterministic_fallback_timestamps ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::read_children_of_day ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::read_children_of_root ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::read_node_missing_returns_none ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::validate_namespace_accepts_and_rejects ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::validate_node_id_accepts_valid_and_rejects_bad ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::write_and_read_hour_leaf ... ok
[INFO] [stdout] test memory::tree::runtime::store::tests::write_and_read_node_roundtrip ... ok
[INFO] [stdout] test memory::tree::read::tests::missing_tree_returns_empty ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::derive_node_ids_from_timestamp ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::derive_parent_id_chain ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::estimate_tokens_rough ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::node_id_to_path_mapping ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::level_from_node_id_all_levels ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::node_level_parent_chain ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::node_level_max_tokens ... ok
[INFO] [stdout] test memory::tree::runtime::types::tests::node_level_roundtrip ... ok
[INFO] [stdout] test memory::tree::read::tests::query_scores_and_orders_by_token_overlap ... ok
[INFO] [stdout] test memory::tree::read::tests::zero_depth_returns_empty ... ok
[INFO] [stdout] test memory::tree::registry::tests::different_kinds_same_scope_yield_different_trees ... ok
[INFO] [stdout] test memory::tree::registry::tests::get_or_create_is_idempotent_on_scope ... ok
[INFO] [stdout] test memory::tree::registry::tests::different_scopes_yield_different_trees ... ok
[INFO] [stdout] test memory::tree::registry::tests::get_or_create_recovers_from_unique_race ... ok
[INFO] [stdout] test memory::tree::store::hotness::tests::get_missing_is_none ... ok
[INFO] [stdout] test memory::tree::store::hotness::tests::get_or_fresh_returns_zero_row ... ok
[INFO] [stdout] test memory::tree::store::hotness::tests::upsert_round_trip ... ok
[INFO] [stdout] test memory::tree::store::tests::buffer_upsert_and_clear ... ok
[INFO] [stdout] test memory::tree::store::tests::get_buffer_returns_empty_when_missing ... ok
[INFO] [stdout] test memory::tree::store::tests::duplicate_scope_fails ... ok
[INFO] [stdout] test memory::tree::store::tests::get_summaries_batch_returns_present_ids_and_skips_missing ... ok
[INFO] [stdout] test memory::tree::store::tests::get_trees_batch_returns_present_ids_and_skips_missing ... ok
[INFO] [stdout] test memory::tree::store::tests::list_summaries_in_window_excludes_deleted ... ok
[INFO] [stdout] test memory::tree::store::tests::list_stale_buffers_orders_by_age ... ok
[INFO] [stdout] test memory::tree::store::tests::list_summaries_in_window_includes_exact_boundaries ... ok
[INFO] [stdout] test memory::tree::store::tests::list_summaries_in_window_keeps_only_fully_contained ... ok
[INFO] [stdout] test memory::tree::store::types::tests::budgets_match_config_defaults ... ok
[INFO] [stdout] test memory::tree::store::types::tests::empty_buffer_is_not_stale ... ok
[INFO] [stdout] test memory::tree::store::types::tests::fresh_counters_are_zero ... ok
[INFO] [stdout] test memory::tree::store::types::tests::stale_buffer_detected ... ok
[INFO] [stdout] test memory::tree::store::types::tests::stats_projection_mirrors_row ... ok
[INFO] [stdout] test memory::tree::store::types::tests::tree_kind_round_trip ... ok
[INFO] [stdout] test memory::tree::store::types::tests::tree_status_round_trip ... ok
[INFO] [stdout] test memory::tree::summarise::tests::concat_summariser_matches_fallback ... ok
[INFO] [stdout] test memory::tree::summarise::tests::fallback_concatenates_with_provenance_prefix ... ok
[INFO] [stdout] test memory::tree::summarise::tests::fallback_skips_blank_inputs ... ok
[INFO] [stdout] test memory::tree::summarise::tests::fallback_truncates_at_budget ... ok
[INFO] [stdout] test memory::types::tests::global_namespace_constant_is_stable ... ok
[INFO] [stdout] test memory::types::tests::memory_category_display_outputs_expected_values ... ok
[INFO] [stdout] test memory::types::tests::memory_category_serde_uses_snake_case ... ok
[INFO] [stdout] test memory::types::tests::memory_entry_roundtrip_preserves_optional_fields ... ok
[INFO] [stdout] test memory::types::tests::memory_item_kind_serde_uses_snake_case ... ok
[INFO] [stdout] test memory::types::tests::memory_kv_record_roundtrips_with_optional_namespace ... ok
[INFO] [stdout] test memory::types::tests::memory_taint_db_str_roundtrip_and_fails_closed ... ok
[INFO] [stdout] test memory::types::tests::memory_taint_defaults_to_internal_for_legacy_rows ... ok
[INFO] [stdout] test memory::types::tests::namespace_document_input_defaults_optional_fields ... ok
[INFO] [stdout] test memory::types::tests::namespace_document_input_taint_roundtrips_external_sync ... ok
[INFO] [stdout] test memory::types::tests::namespace_memory_hit_defaults_optional_fields_and_taint ... ok
[INFO] [stdout] test memory::types::tests::retrieval_score_breakdown_default_is_zeroed ... ok
[INFO] [stdout] test memory::tree::store::tests::list_trees_by_kind_and_archive ... ok
[INFO] [stdout] test memory::tree::store::tests::summary_batch_embedding_lookup_returns_only_signature_scoped_rows ... ok
[INFO] [stdout] test memory::tree::store::tests::summary_insert_and_fetch ... ok
[INFO] [stdout] test memory::tree::store::tests::summary_embeddings_are_scoped_by_model_signature ... ok
[INFO] [stdout] test memory::tree::store::tests::summary_insert_is_idempotent_on_id ... ok
[INFO] [stdout] test memory::tree::store::tests::tree_round_trip ... ok
[INFO] [stdout] test memory::tree::store::tests::update_tree_after_seal_persists ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1060 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 44.25s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/smoke.rs (/opt/rustwide/target/debug/build/tinycortex/9b24917c506f69ad/out/smoke-9b24917c506f69ad)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test stores_and_finds_memory ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests tinycortex
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/memory/store/vectors/store.rs - memory::store::vectors::store (line 14) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a", kill_on_drop: false }`
[INFO] [stdout] c8340db6b6fc1b257bc1f54eb5859cca39ea2abd7a4c7bb8a36a69c11bebda3a
