[INFO] fetching crate cognisgraph 0.1.0... [INFO] testing cognisgraph-0.1.0 against 1.95.0 for beta-1.96-1 [INFO] extracting crate cognisgraph 0.1.0 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate cognisgraph 0.1.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate cognisgraph 0.1.0 [INFO] tweaked toml for crates.io crate cognisgraph 0.1.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate cognisgraph 0.1.0 on toolchain 1.95.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate cognisgraph 0.1.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded atoi v2.0.0 [INFO] [stderr] Downloaded crc v3.4.0 [INFO] [stderr] Downloaded crossbeam-queue v0.3.12 [INFO] [stderr] Downloaded dotenvy v0.15.7 [INFO] [stderr] Downloaded sqlx-macros v0.8.6 [INFO] [stderr] Downloaded etcetera v0.8.0 [INFO] [stderr] Downloaded sqlx-macros-core v0.8.6 [INFO] [stderr] Downloaded wasite v0.1.0 [INFO] [stderr] Downloaded whoami v1.6.1 [INFO] [stderr] Downloaded openssl-sys v0.9.111 [INFO] [stderr] Downloaded sqlx-mysql v0.8.6 [INFO] [stderr] Downloaded sqlx-postgres v0.8.6 [INFO] [stderr] Downloaded sqlx v0.8.6 [INFO] [stderr] Downloaded sqlx-core v0.8.6 [INFO] [stderr] Downloaded hkdf v0.12.4 [INFO] [stderr] Downloaded sqlx-sqlite v0.8.6 [INFO] [stderr] Downloaded futures-intrusive v0.5.0 [INFO] [stderr] Downloaded openssl v0.10.75 [INFO] [stderr] Downloaded cognis-core v0.1.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] e4f9417d9f25f8c4efbdab0195d5d9f26f8b766bbf6e0960f1a9034b7a24e0eb [INFO] running `Command { std: "docker" "start" "-a" "e4f9417d9f25f8c4efbdab0195d5d9f26f8b766bbf6e0960f1a9034b7a24e0eb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e4f9417d9f25f8c4efbdab0195d5d9f26f8b766bbf6e0960f1a9034b7a24e0eb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e4f9417d9f25f8c4efbdab0195d5d9f26f8b766bbf6e0960f1a9034b7a24e0eb", kill_on_drop: false }` [INFO] [stdout] e4f9417d9f25f8c4efbdab0195d5d9f26f8b766bbf6e0960f1a9034b7a24e0eb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 050134d5a3c69f37eea70c78f50826e76fd5970712cc68c63ffac6bf257d3aab [INFO] running `Command { std: "docker" "start" "-a" "050134d5a3c69f37eea70c78f50826e76fd5970712cc68c63ffac6bf257d3aab", kill_on_drop: false }` [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling foreign-types-shared v0.1.1 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling foreign-types v0.3.2 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling uuid v1.21.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling cognis-core v0.1.0 [INFO] [stderr] Compiling cognisgraph v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 13s [INFO] running `Command { std: "docker" "inspect" "050134d5a3c69f37eea70c78f50826e76fd5970712cc68c63ffac6bf257d3aab", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "050134d5a3c69f37eea70c78f50826e76fd5970712cc68c63ffac6bf257d3aab", kill_on_drop: false }` [INFO] [stdout] 050134d5a3c69f37eea70c78f50826e76fd5970712cc68c63ffac6bf257d3aab [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9d4b68377ecb4d2fb19a185ed7ccd43d53d5a7e1282d71d38fcde11071c909ba [INFO] running `Command { std: "docker" "start" "-a" "9d4b68377ecb4d2fb19a185ed7ccd43d53d5a7e1282d71d38fcde11071c909ba", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling tempfile v3.26.0 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling cognis-core v0.1.0 [INFO] [stderr] Compiling cognisgraph v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 16s [INFO] running `Command { std: "docker" "inspect" "9d4b68377ecb4d2fb19a185ed7ccd43d53d5a7e1282d71d38fcde11071c909ba", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9d4b68377ecb4d2fb19a185ed7ccd43d53d5a7e1282d71d38fcde11071c909ba", kill_on_drop: false }` [INFO] [stdout] 9d4b68377ecb4d2fb19a185ed7ccd43d53d5a7e1282d71d38fcde11071c909ba [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 06a5084d8a2912c8012f1a6a438d665d26294f6aba66b7c69579515874fe1cd5 [INFO] running `Command { std: "docker" "start" "-a" "06a5084d8a2912c8012f1a6a438d665d26294f6aba66b7c69579515874fe1cd5", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.35s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/cognisgraph-aad5be32cb25f6b3) [INFO] [stdout] [INFO] [stdout] running 2196 tests [INFO] [stdout] test channels::any_value::tests::test_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::any_value::tests::test_empty_update_clears_value ... ok [INFO] [stdout] test channels::any_value::tests::test_from_checkpoint_none ... ok [INFO] [stdout] test channels::any_value::tests::test_empty_update_on_empty_channel ... ok [INFO] [stdout] test channels::any_value::tests::test_update_multiple_values_takes_last ... ok [INFO] [stdout] test channels::any_value::tests::test_with_value ... ok [INFO] [stdout] test channels::base::tests::test_base_channel_trait ... ok [INFO] [stdout] test channels::base::tests::test_box_clone ... ok [INFO] [stdout] test channels::binop::tests::test_add_arrays ... ok [INFO] [stdout] test channels::base::tests::test_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::binop::tests::test_add_strings ... ok [INFO] [stdout] test channels::binop::tests::test_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::binop::tests::test_extend_arrays ... ok [INFO] [stdout] test channels::binop::tests::test_add_floats ... ok [INFO] [stdout] test channels::binop::tests::test_multiple_overwrites_error ... ok [INFO] [stdout] test channels::binop::tests::test_add_numbers ... ok [INFO] [stdout] test channels::binop::tests::test_multiple_values_in_single_update ... ok [INFO] [stdout] test channels::any_value::tests::test_new_channel_is_empty ... ok [INFO] [stdout] test channels::any_value::tests::test_update_single_value ... ok [INFO] [stdout] test channels::binop::tests::test_empty_update ... ok [INFO] [stdout] test channels::binop::tests::test_custom_operator ... ok [INFO] [stdout] test channels::binop::tests::test_overwrite_wrapper ... ok [INFO] [stdout] test channels::broadcast::tests::test_buffer_overflow_drop_oldest ... ok [INFO] [stdout] test channels::broadcast::tests::test_buffer_overflow_best_effort ... ok [INFO] [stdout] test channels::broadcast::tests::test_clear_history ... ok [INFO] [stdout] test channels::broadcast::tests::test_custom_filter_function ... ok [INFO] [stdout] test channels::broadcast::tests::test_config_defaults ... ok [INFO] [stdout] test channels::broadcast::tests::test_empty_channel_receive ... ok [INFO] [stdout] test channels::broadcast::tests::test_drain_all_pending_messages ... ok [INFO] [stdout] test channels::binop::tests::test_update_on_empty_channel ... ok [INFO] [stdout] test channels::broadcast::tests::test_history_by_topic ... ok [INFO] [stdout] test channels::broadcast::tests::test_history_retention ... ok [INFO] [stdout] test channels::binop::tests::test_replace ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_guarded_multiple_values_error ... ok [INFO] [stdout] test channels::broadcast::tests::test_message_count_tracking ... ok [INFO] [stdout] test channels::broadcast::tests::test_multiple_subscribers_receive_same_message ... ok [INFO] [stdout] test channels::broadcast::tests::test_publish_and_receive_single_message ... ok [INFO] [stdout] test channels::broadcast::tests::test_sequence_number_monotonicity ... ok [INFO] [stdout] test channels::broadcast::tests::test_subscriber_count_tracking ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_guarded_single_value_ok ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_consume_on_empty ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_consume_clears_value ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_from_checkpoint_always_empty ... ok [INFO] [stdout] test channels::broadcast::tests::test_topic_filtering ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_non_guarded_multiple_values_takes_last ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_not_checkpointed ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_guarded_empty_update_does_not_clear ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_unguarded_empty_update_clears_value ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_with_guard_builder ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_new_channel_is_empty ... ok [INFO] [stdout] test channels::last_value::tests::test_key ... ok [INFO] [stdout] test channels::last_value::tests::test_new_channel_is_empty ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_update_and_get ... ok [INFO] [stdout] test channels::last_value::tests::test_update_empty_values ... ok [INFO] [stdout] test channels::last_value::tests::test_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::last_value::tests::test_update_replaces_value ... ok [INFO] [stdout] test channels::last_value::tests::test_update_single_value ... ok [INFO] [stdout] test channels::last_value::tests::test_update_multiple_values_errors ... ok [INFO] [stdout] test channels::last_value::tests::test_with_value ... ok [INFO] [stdout] test channels::last_value::tests_after_finish::test_after_finish_available_after_finish ... ok [INFO] [stdout] test channels::last_value::tests_after_finish::test_after_finish_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::last_value::tests_after_finish::test_after_finish_not_available_before_finish ... ok [INFO] [stdout] test channels::named_barrier::tests::test_after_finish_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::last_value::tests::test_from_checkpoint_none ... ok [INFO] [stdout] test channels::named_barrier::tests::test_after_finish_available_when_both ... ok [INFO] [stdout] test channels::last_value::tests_after_finish::test_after_finish_consume_resets ... ok [INFO] [stdout] test channels::named_barrier::tests::test_from_checkpoint_none ... ok [INFO] [stdout] test channels::named_barrier::tests::test_duplicate_name_no_change ... ok [INFO] [stdout] test channels::named_barrier::tests::test_after_finish_consume_resets_both ... ok [INFO] [stdout] test channels::base::tests::test_default_consume_and_finish ... ok [INFO] [stdout] test channels::named_barrier::tests::test_after_finish_not_available_without_all_names ... ok [INFO] [stdout] test channels::named_barrier::tests::test_after_finish_not_available_without_finish ... ok [INFO] [stdout] test channels::named_barrier::tests::test_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::named_barrier::tests::test_all_at_once ... ok [INFO] [stdout] test channels::named_barrier::tests::test_checkpoint_empty ... ok [INFO] [stdout] test channels::named_barrier::tests::test_complete_barrier ... ok [INFO] [stdout] test channels::named_barrier::tests::test_consume_on_incomplete_noop ... ok [INFO] [stdout] test channels::named_barrier::tests::test_consume_resets_barrier ... ok [INFO] [stdout] test channels::named_barrier::tests::test_new_barrier_not_available ... ok [INFO] [stdout] test channels::named_barrier::tests::test_partial_update_not_available ... ok [INFO] [stdout] test channels::reducers::tests::test_append_reducer_accumulates ... ok [INFO] [stdout] test channels::named_barrier::tests::test_unknown_name_ignored ... ok [INFO] [stdout] test channels::reducers::tests::test_append_reducer_from_non_array_current ... ok [INFO] [stdout] test channels::reducers::tests::test_append_reducer_accumulates_array_update ... ok [INFO] [stdout] test channels::named_barrier::tests::test_empty_names_never_complete ... ok [INFO] [stdout] test channels::reducers::tests::test_append_reducer_null_start ... ok [INFO] [stdout] test channels::reducers::tests::test_append_reducer_null_start_array_update ... ok [INFO] [stdout] test channels::reducers::tests::test_binary_op_reducer_max ... ok [INFO] [stdout] test channels::reducers::tests::test_last_value_overwrites_object ... ok [INFO] [stdout] test channels::reducers::tests::test_last_value_overwrites ... ok [INFO] [stdout] test channels::reducers::tests::test_merge_reducer_concatenates_arrays ... ok [INFO] [stdout] test channels::reducers::tests::test_merge_reducer_scalar_overwrite ... ok [INFO] [stdout] test channels::reducers::tests::test_reduce_state_default_used_as_base_for_reducer ... ok [INFO] [stdout] test channels::reducers::tests::test_reduce_state_preserves_untouched_fields ... ok [INFO] [stdout] test channels::reducers::tests::test_reduce_state_non_object_fallback ... ok [INFO] [stdout] test channels::reducers::tests::test_reduce_state_with_defaults ... ok [INFO] [stdout] test channels::reducers::tests::test_merge_reducer_deep_merges_objects ... ok [INFO] [stdout] test channels::state::tests::test_binary_channel_advance_without_set ... ok [INFO] [stdout] test channels::state::tests::test_binary_channel_advance_step_allows_new_set ... ok [INFO] [stdout] test channels::reducers::tests::test_reducer_complex_nested_state ... ok [INFO] [stdout] test channels::state::tests::test_binary_channel_double_set_errors ... ok [INFO] [stdout] test channels::state::tests::test_binary_channel_new ... ok [INFO] [stdout] test channels::state::tests::test_binary_channel_set_once ... ok [INFO] [stdout] test channels::reducers::tests::test_schema_builder_pattern ... ok [INFO] [stdout] test channels::reducers::tests::test_binary_op_reducer_sum ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_from_float ... ok [INFO] [stdout] test channels::reducers::tests::test_schema_with_mixed_reducers ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_float_roundtrip ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_from_bool ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_from_int ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_from_list ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_from_map ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_from_null ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_from_text ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_json_variant ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_roundtrip_int ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_roundtrip_null ... ok [INFO] [stdout] test channels::state::tests::test_channel_value_roundtrip_text ... ok [INFO] [stdout] test channels::state::tests::test_last_value_channel_new ... ok [INFO] [stdout] test channels::state::tests::test_last_value_channel_overwrites ... ok [INFO] [stdout] test channels::state::tests::test_last_value_channel_update ... ok [INFO] [stdout] test channels::state::tests::test_manager_add_and_has ... ok [INFO] [stdout] test channels::state::tests::test_manager_default_trait ... ok [INFO] [stdout] test channels::state::tests::test_manager_channel_names ... ok [INFO] [stdout] test channels::state::tests::test_manager_new_is_empty ... ok [INFO] [stdout] test channels::state::tests::test_manager_get_missing ... ok [INFO] [stdout] test channels::state::tests::test_manager_replace_existing_channel ... ok [INFO] [stdout] test channels::state::tests::test_manager_update_and_get ... ok [INFO] [stdout] test channels::state::tests::test_protocol_define ... ok [INFO] [stdout] test channels::state::tests::test_protocol_validate_empty_protocol ... ok [INFO] [stdout] test channels::state::tests::test_protocol_new_empty ... ok [INFO] [stdout] test channels::state::tests::test_protocol_default_trait ... ok [INFO] [stdout] test channels::state::tests::test_protocol_validate_missing_channels ... ok [INFO] [stdout] test channels::state::tests::test_reducer_append_both_arrays ... ok [INFO] [stdout] test channels::state::tests::test_reducer_append_scalar_to_array ... ok [INFO] [stdout] test channels::state::tests::test_reducer_append_scalar_to_scalar ... ok [INFO] [stdout] test channels::state::tests::test_manager_update_missing_channel ... ok [INFO] [stdout] test channels::state::tests::test_reducer_custom_defaults_to_replace ... ok [INFO] [stdout] test channels::state::tests::test_manager_restore ... ok [INFO] [stdout] test channels::state::tests::test_manager_snapshot ... ok [INFO] [stdout] test channels::state::tests::test_reducer_append_null_incoming ... ok [INFO] [stdout] test channels::state::tests::test_manager_snapshot_empty ... ok [INFO] [stdout] test channels::state::tests::test_reducer_merge_non_objects_fallback ... ok [INFO] [stdout] test channels::state::tests::test_reducer_merge_objects ... ok [INFO] [stdout] test channels::state::tests::test_reducer_max ... ok [INFO] [stdout] test channels::state::tests::test_reducer_max_non_numeric_fallback ... ok [INFO] [stdout] test channels::state::tests::test_protocol_validate_success ... ok [INFO] [stdout] test channels::state::tests::test_reducer_min_non_numeric_fallback ... ok [INFO] [stdout] test channels::state::tests::test_reducer_replace ... ok [INFO] [stdout] test channels::state::tests::test_reducer_sum_floats ... ok [INFO] [stdout] test channels::state::tests::test_protocol_to_json ... ok [INFO] [stdout] test channels::state::tests::test_reducer_sum_integers ... ok [INFO] [stdout] test channels::state::tests::test_reducer_merge_overwrites_keys ... ok [INFO] [stdout] test channels::state::tests::test_state_channel_multiple_appends ... ok [INFO] [stdout] test channels::state::tests::test_reducer_sum_non_numeric_treated_as_zero ... ok [INFO] [stdout] test channels::state::tests::test_reducer_sum_with_null ... ok [INFO] [stdout] test channels::state::tests::test_reducer_min ... ok [INFO] [stdout] test channels::state::tests::test_state_channel_new ... ok [INFO] [stdout] test channels::state::tests::test_state_channel_reset ... ok [INFO] [stdout] test channels::state::tests::test_state_channel_update_applies_reducer ... ok [INFO] [stdout] test channels::state::tests::test_state_channel_with_default ... ok [INFO] [stdout] test channels::state_reducers::tests::test_add_field_to_schema ... ok [INFO] [stdout] test channels::state_reducers::tests::test_add_number_null_current ... ok [INFO] [stdout] test channels::state_reducers::tests::test_add_number_type_error ... ok [INFO] [stdout] test channels::state_reducers::tests::test_add_number_integers ... ok [INFO] [stdout] test channels::state_reducers::tests::test_append_list_array_update ... ok [INFO] [stdout] test channels::state::tests::test_state_channel_update_increments_version ... ok [INFO] [stdout] test channels::state_reducers::tests::test_append_list_null_start ... ok [INFO] [stdout] test channels::state_reducers::tests::test_add_number_floats ... ok [INFO] [stdout] test channels::state_reducers::tests::test_concat_string_no_separator ... ok [INFO] [stdout] test channels::state_reducers::tests::test_concat_string_error_on_non_string_update ... ok [INFO] [stdout] test channels::state_reducers::tests::test_concat_string_null_current ... ok [INFO] [stdout] test channels::state_reducers::tests::test_concat_string_with_separator ... ok [INFO] [stdout] test channels::state_reducers::tests::test_custom_reducer ... ok [INFO] [stdout] test channels::state_reducers::tests::test_max_number_keeps_larger ... ok [INFO] [stdout] test channels::state_reducers::tests::test_builder_produces_correct_schema ... ok [INFO] [stdout] test channels::state_reducers::tests::test_max_number_null_current ... ok [INFO] [stdout] test channels::state_reducers::tests::test_merge_object_scalar_overwrite ... ok [INFO] [stdout] test channels::state_reducers::tests::test_append_list_single_item ... ok [INFO] [stdout] test channels::state_reducers::tests::test_message_list_dedup_by_id ... ok [INFO] [stdout] test channels::state_reducers::tests::test_message_list_no_id_always_appends ... ok [INFO] [stdout] test channels::state_reducers::tests::test_min_number_error_on_non_number ... ok [INFO] [stdout] test channels::state_reducers::tests::test_message_list_null_start ... ok [INFO] [stdout] test channels::state_reducers::tests::test_message_list_appends ... ok [INFO] [stdout] test channels::state_reducers::tests::test_reduce_state_non_object_fallback ... ok [INFO] [stdout] test channels::state_reducers::tests::test_merge_object_deep_merges ... ok [INFO] [stdout] test channels::state_reducers::tests::test_schema_reduce_state_preserves_untouched ... ok [INFO] [stdout] test channels::state_reducers::tests::test_schema_reduce_state_mixed_reducers ... ok [INFO] [stdout] test channels::state_reducers::tests::test_overwrite_reducer_replaces_object ... ok [INFO] [stdout] test channels::state_reducers::tests::test_overwrite_reducer_replaces_value ... ok [INFO] [stdout] test channels::state_reducers::tests::test_overwrite_reducer_name ... ok [INFO] [stdout] test channels::state_reducers::tests::test_min_number_keeps_smaller ... ok [INFO] [stdout] test channels::state_reducers::tests::test_schema_reduce_state_default_as_base ... ok [INFO] [stdout] test channels::state_reducers::tests::test_schema_reduce_state_defaults ... ok [INFO] [stdout] test channels::state_reducers::tests::test_unique_list_deduplicates ... ok [INFO] [stdout] test channels::state_reducers::tests::test_unique_list_null_start ... ok [INFO] [stdout] test channels::state_reducers::tests::test_unique_list_single_duplicate ... ok [INFO] [stdout] test channels::state_reducers::tests::test_unknown_fields_use_overwrite ... ok [INFO] [stdout] test channels::topic::tests::test_accumulate_mode ... ok [INFO] [stdout] test channels::state_reducers::tests::test_validate_state_required_present ... ok [INFO] [stdout] test channels::topic::tests::test_bus_dead_letters_drain ... ok [INFO] [stdout] test channels::state_reducers::tests::test_validate_state_non_object ... ok [INFO] [stdout] test channels::state_reducers::tests::test_validate_state_optional_missing_ok ... ok [INFO] [stdout] test channels::topic::tests::test_bus_new ... ok [INFO] [stdout] test channels::topic::tests::test_bus_end_to_end ... ok [INFO] [stdout] test channels::state_reducers::tests::test_validate_state_required_missing ... ok [INFO] [stdout] test channels::state_reducers::tests::test_validate_state_required_null ... ok [INFO] [stdout] test channels::topic::tests::test_bus_no_routes_empty ... ok [INFO] [stdout] test channels::state_reducers::tests::test_custom_reducer_error ... ok [INFO] [stdout] test channels::topic::tests::test_bus_publish_with_route ... ok [INFO] [stdout] test channels::topic::tests::test_bus_stats_tracking ... ok [INFO] [stdout] test channels::topic::tests::test_bus_subscribe ... ok [INFO] [stdout] test channels::topic::tests::test_bus_unrouted_goes_to_dlq ... ok [INFO] [stdout] test channels::topic::tests::test_bus_with_config ... ok [INFO] [stdout] test channels::topic::tests::test_channel_capacity_eviction ... ok [INFO] [stdout] test channels::topic::tests::test_channel_clear ... ok [INFO] [stdout] test channels::topic::tests::test_channel_new_is_empty ... ok [INFO] [stdout] test channels::topic::tests::test_channel_consume_removes_messages ... ok [INFO] [stdout] test channels::topic::tests::test_channel_sequence_numbers ... ok [INFO] [stdout] test channels::topic::tests::test_channel_peek ... ok [INFO] [stdout] test channels::topic::tests::test_channel_peek_missing_topic ... ok [INFO] [stdout] test channels::topic::tests::test_checkpoint_roundtrip ... ok [INFO] [stdout] test channels::topic::tests::test_channel_subscribe_all ... ok [INFO] [stdout] test channels::topic::tests::test_consume_noop_on_accumulate ... ok [INFO] [stdout] test channels::topic::tests::test_consume_clears_non_accumulate ... ok [INFO] [stdout] test channels::topic::tests::test_checkpoint_empty ... ok [INFO] [stdout] test channels::topic::tests::test_consume_noop_on_empty ... ok [INFO] [stdout] test channels::topic::tests::test_channel_topics ... ok [INFO] [stdout] test channels::topic::tests::test_dlq_add_and_drain ... ok [INFO] [stdout] test channels::topic::tests::test_channel_consume_empties_buffer ... ok [INFO] [stdout] test channels::topic::tests::test_dlq_capacity_eviction ... ok [INFO] [stdout] test channels::topic::tests::test_channel_publish_and_subscribe ... ok [INFO] [stdout] test channels::topic::tests::test_dlq_new_is_empty ... ok [INFO] [stdout] test channels::topic::tests::test_empty_update ... ok [INFO] [stdout] test channels::topic::tests::test_filter_all ... ok [INFO] [stdout] test channels::topic::tests::test_filter_exact_match ... ok [INFO] [stdout] test channels::topic::tests::test_filter_pattern_complex ... ok [INFO] [stdout] test channels::topic::tests::test_filter_pattern_question ... ok [INFO] [stdout] test channels::topic::tests::test_filter_pattern_star ... ok [INFO] [stdout] test channels::topic::tests::test_filter_prefix_match ... ok [INFO] [stdout] test channels::topic::tests::test_from_checkpoint_none ... ok [INFO] [stdout] test channels::topic::tests::test_new_channel_is_empty ... ok [INFO] [stdout] test channels::topic::tests::test_non_accumulate_clears_on_update ... ok [INFO] [stdout] test channels::topic::tests::test_router_add_and_route ... ok [INFO] [stdout] test channels::topic::tests::test_router_multi_route ... ok [INFO] [stdout] test channels::topic::tests::test_router_new_is_empty ... ok [INFO] [stdout] test channels::topic::tests::test_router_no_match ... ok [INFO] [stdout] test channels::topic::tests::test_router_remove_route ... ok [INFO] [stdout] test channels::topic::tests::test_topic_message_age ... ok [INFO] [stdout] test channels::topic::tests::test_topic_message_new ... ok [INFO] [stdout] test channels::topic::tests::test_topic_message_to_json ... ok [INFO] [stdout] test channels::topic::tests::test_topic_message_to_json_no_sender ... ok [INFO] [stdout] test channels::topic::tests::test_update_multiple_values ... ok [INFO] [stdout] test channels::topic::tests::test_topic_message_with_sender ... ok [INFO] [stdout] test channels::topic::tests::test_update_single_value ... ok [INFO] [stdout] test channels::topic::tests::test_with_accumulate_builder ... ok [INFO] [stdout] test channels::untracked::tests::test_update_empty ... ok [INFO] [stdout] test channels::topic::tests::test_router_routes_list ... ok [INFO] [stdout] test channels::untracked::tests::test_from_checkpoint_always_empty ... ok [INFO] [stdout] test channels::untracked::tests::test_new_channel_is_empty ... ok [INFO] [stdout] test channels::untracked::tests::test_unguarded_multiple_values_takes_last ... ok [INFO] [stdout] test channels::untracked::tests::test_never_checkpointed ... ok [INFO] [stdout] test channels::state_reducers::tests::test_schema_propagates_reducer_error ... ok [INFO] [stdout] test channels::untracked::tests::test_update_multiple_values_errors ... ok [INFO] [stdout] test channels::untracked::tests::test_update_single_value ... ok [INFO] [stdout] test channels::untracked::tests::test_with_value ... ok [INFO] [stdout] test channels::untracked::tests::test_update_replaces_value ... ok [INFO] [stdout] test channels::untracked::tests::test_with_guard_builder ... ok [INFO] [stdout] test checkpoint::memory::tests::test_clear_thread_empty ... ok [INFO] [stdout] test checkpoint::memory::tests::test_delete_existing ... ok [INFO] [stdout] test checkpoint::memory::tests::test_channel_values_preserved ... ok [INFO] [stdout] test checkpoint::memory::tests::test_get_tuple ... ok [INFO] [stdout] test checkpoint::memory::tests::test_get_latest_stored ... ok [INFO] [stdout] test checkpoint::memory::tests::test_delete_nonexistent ... ok [INFO] [stdout] test checkpoint::memory::tests::test_get_nonexistent ... ok [INFO] [stdout] test checkpoint::memory::tests::test_default_creates_empty ... ok [INFO] [stdout] test checkpoint::memory::tests::test_get_by_checkpoint_id ... ok [INFO] [stdout] test checkpoint::memory::tests::test_latest_returns_most_recent ... ok [INFO] [stdout] test checkpoint::memory::tests::test_list_checkpoints_oldest_first ... ok [INFO] [stdout] test checkpoint::memory::tests::test_clone_shares_state ... ok [INFO] [stdout] test checkpoint::memory::tests::test_list_with_limit ... ok [INFO] [stdout] test checkpoint::memory::tests::test_clear_thread ... ok [INFO] [stdout] test checkpoint::memory::tests::test_multi_thread_isolation ... ok [INFO] [stdout] test checkpoint::memory::tests::test_put_returns_config_with_checkpoint_id ... ok [INFO] [stdout] test checkpoint::memory::tests::test_put_stored_and_get_stored ... ok [INFO] [stdout] test checkpoint::memory::tests::test_put_writes ... ok [INFO] [stdout] test checkpoint::memory::tests::test_put_writes_not_found ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_builder_basic ... ok [INFO] [stdout] test checkpoint::memory::tests::test_total_checkpoints ... ok [INFO] [stdout] test checkpoint::memory::tests::test_thread_ids ... ok [INFO] [stdout] test checkpoint::memory::tests::test_put_and_get ... ok [INFO] [stdout] test checkpoint::memory::tests::test_list_newest_first ... ok [INFO] [stdout] test checkpoint::memory::tests::test_list_stored_ordering ... ok [INFO] [stdout] test checkpoint::memory::tests::test_metadata_roundtrip ... ok [INFO] [stdout] test channels::binop::tests::test_extend_non_array_into_array ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_builder_with_custom_id ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_builder_with_metadata ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_builder_with_parent ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_clone ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_default ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_equality ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_display ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_from_str ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_hash ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_inequality ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_id_new_is_unique ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_to_json ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_is_root ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_empty_saver_operations ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_with_complex_state ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_filter_by_metadata_key ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_filter_by_step_range ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_filter_by_thread ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_to_json_with_parent ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_filter_combined ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_checkpoint_to_json_without_parent ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_filter_empty_matches_all ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_history_children ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_history_lineage_chain ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_history_no_children_for_leaf ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_history_empty ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_create_with_metadata ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_history_depth ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_create_with_parent ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_history_lineage ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_restore_latest_nonexistent ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_query_with_filter ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_create_checkpoint ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_rollback_nonexistent_step ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_restore_latest ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_rollback ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_history_single_root ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_rollback_nonexistent_thread ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_rollback_to_step_0 ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_stats_empty ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_delete_nonexistent ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_query_across_threads ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_multi_thread_isolation ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_multi_thread_independent_steps ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_stats_to_json ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_list ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_manager_stats_populated ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_delete ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_load_latest ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_list_empty_thread ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_overwrite_same_id ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_save_and_load ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_load_nonexistent ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_load_latest_nonexistent_thread ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_thread_ids ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_binary_serialize_deserialize_roundtrip ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_saver_new_is_empty ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_binary_version_header ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_format_name_and_content_type ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_compressed_serialize_deserialize_roundtrip ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_json_serialize_deserialize_roundtrip ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_empty_checkpoint_serialization ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_state_change_variants ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_diff_apply_produces_expected_state ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_checkpoint_entry_roundtrip_compressed ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_json_pretty_vs_compact ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_checkpoint_diff_compute ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compact_json_all_null_object_becomes_empty_then_removed ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_checkpoint_entry_roundtrip_json ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_checkpoint_entry_roundtrip_versioned ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_checkpoint_entry_with_null_state ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compact_json_nested_nulls ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compact_json_preserves_false_and_zero ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compact_json_removes_empty_arrays ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compact_json_removes_nulls ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_checkpoint_bundle_export_import ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_bundle_metadata ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compact_json_removes_empty_objects ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_compression_reduces_size ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compressed_serializer_empty_state ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compressed_serializer_output_is_base64 ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compressed_serializer_roundtrip ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compressed_then_versioned_roundtrip ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_json_serializer_empty_object ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_metadata_channel_versions_multiple ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_metadata_from_json_invalid ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_metadata_new_defaults ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_compact_json_roundtrip_no_nulls ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_metadata_to_json_and_back ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_migration_backwards_error ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_migration_missing_step_error ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_json_serializer_array ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_json_serializer_nested_objects ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_json_serializer_null ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_json_serializer_roundtrip ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_metadata_builder_pattern ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_migration_multi_step ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_migration_single_step ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_pretty_json_larger_than_compact ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_serialization_format_serde_roundtrip ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_pretty_json_roundtrip ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_serialization_format_as_str ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_versioned_serializer_reads_older_version ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_versioned_serializer_includes_version ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_versioned_serializer_rejects_missing_data ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_versioned_serializer_rejects_missing_version ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_pretty_json_formatting ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_versioned_serializer_roundtrip ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_serializer_deeply_nested ... ok [INFO] [stdout] test checkpoint::storage::tests::test_clear_namespace_returns_zero_for_unknown ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_default ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_clear_namespace ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_get_missing ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_exists ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_delete_missing ... ok [INFO] [stdout] test checkpoint::serialization::tests::test_large_state_serialization ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_migration_same_version_noop ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_clear_empty_namespace ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_delete_existing ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_namespaces_empty ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_list_keys_sorted ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_namespaces ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_total_size_bytes ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_cache_hit ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_cache_hit_rate_no_gets ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_new ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_cache_miss_then_hit ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_list_keys ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_list_keys_empty_namespace ... ok [INFO] [stdout] test channels::topic::tests::test_flatten_arrays_in_input ... ok [INFO] [stdout] test checkpoint::memory::tests::test_put_writes_requires_checkpoint_id ... ok [INFO] [stdout] test checkpoint::persistence::tests::test_filter_matches_all ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_put_and_get ... ok [INFO] [stdout] test checkpoint::storage::tests::test_in_memory_storage_put_overwrites ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_delete ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_clear_namespace ... ok [INFO] [stdout] test channels::ephemeral_value::tests::test_empty_update ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_exists ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_list_keys ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_put_and_get ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_primary_only_data ... ok [INFO] [stdout] test checkpoint::storage::tests::test_layered_storage_invalidate_cache ... ok [INFO] [stdout] test checkpoint::storage::tests::test_put_get_delete_cycle ... ok [INFO] [stdout] test checkpoint::storage::tests::test_quota_error_equality ... ok [INFO] [stdout] test checkpoint::storage::tests::test_multiple_namespaces ... ok [INFO] [stdout] test checkpoint::storage::tests::test_quota_error_key_limit_display ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_display ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_clone ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_empty_parts ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_equality ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_record_delete ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_record_get_hit ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_record_get_miss ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_migration_migrate_all ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_migration_migrate_empty_namespace ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_to_json ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_migration_verify_failure_different_data ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_migration_verify_failure_missing_key ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_migration_verify_success ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_full_path ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_record_put ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_migration_migrate_namespace ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_migration_verify_empty_namespace ... ok [INFO] [stdout] test channels::state::tests::test_reducer_append_to_null ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_hash ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_inequality ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_quota_check_put_one_over_byte_limit ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_new ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_key_inequality_namespace ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_default ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_quota_check_put_exact_byte_limit ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_hit_rate_mixed ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_quota_check_put_key_limit ... ok [INFO] [stdout] test checkpoint::storage::tests::test_quota_error_byte_limit_display ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_metrics_new ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_quota_check_put_ok ... ok [INFO] [stdout] test checkpoint::storage::tests::test_quota_error_is_error ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_quota_to_json ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_clone ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_from_bytes ... ok [INFO] [stdout] test checkpoint::store::tests::test_batch_store_get_missing_key ... ok [INFO] [stdout] test checkpoint::store::tests::test_batch_store_operation_count ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_from_bytes_invalid_json ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_from_bytes_valid_json ... ok [INFO] [stdout] test checkpoint::store::tests::test_default_impl ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_from_json ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_size_bytes ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_to_json ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_quota_check_put_byte_limit ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_to_json_from_bytes_non_json ... ok [INFO] [stdout] test checkpoint::store::tests::test_batch_store_drains_operations ... ok [INFO] [stdout] test checkpoint::store::tests::test_batch_store_execute_list_and_clear ... ok [INFO] [stdout] test checkpoint::store::tests::test_batch_store_execute_put_then_get ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_cleanup_expired ... ok [INFO] [stdout] test checkpoint::store::tests::test_batch_store_execute_delete ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_delete_existing ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_delete_missing ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_get_missing ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_list_by_namespace ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_list_excludes_expired ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_list_empty_namespace ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_namespaces ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_new_is_empty ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_put_and_get ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_clear_namespace ... ok [INFO] [stdout] test checkpoint::store::tests::test_namespaced_store_clear ... ok [INFO] [stdout] test checkpoint::store::tests::test_namespaced_store_delete ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_from_parts_multiple ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_from_parts_single ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_full_key ... ok [INFO] [stdout] test checkpoint::store::tests::test_namespaced_store_put_and_get ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_put_updates_existing ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_full_key_empty_key ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_ttl_expiration ... ok [INFO] [stdout] test checkpoint::store::tests::test_in_memory_store_clear_empty_namespace ... ok [INFO] [stdout] test checkpoint::store::tests::test_namespaced_store_isolation ... ok [INFO] [stdout] test checkpoint::storage::tests::test_storage_value_large_data ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_equality ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_new ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_stats_empty ... ok [INFO] [stdout] test checkpoint::serializer::tests::test_serializer_large_value ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_inequality ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_key_matches_namespace ... ok [INFO] [stdout] test checkpoint::store::tests::test_empty_namespace_operations ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_stats_populated ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_value_expired ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_value_new ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_value_not_expired_with_long_ttl ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_value_not_expired_without_ttl ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_value_update_increments_version ... ok [INFO] [stdout] test checkpoint::store::tests::test_version_incrementing_across_updates ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_value_to_json ... ok [INFO] [stdout] test config::tests::test_in_memory_store_delete ... ok [INFO] [stdout] test config::tests::test_in_memory_store_get_missing ... ok [INFO] [stdout] test config::tests::test_get_stream_writer_from_config ... ok [INFO] [stdout] test config::tests::test_in_memory_store_overwrite ... ok [INFO] [stdout] test config::tests::test_in_memory_store_list ... ok [INFO] [stdout] test config::tests::test_in_memory_store_put_get ... ok [INFO] [stdout] test config::tests::test_no_op_stream_writer ... ok [INFO] [stdout] test config::tests::test_runtime_config_debug ... ok [INFO] [stdout] test graph::analysis::tests::test_add_duplicate_node ... ok [INFO] [stdout] test config::tests::test_runtime_config_with_store ... ok [INFO] [stdout] test config::tests::test_runtime_config_with_stream_writer ... ok [INFO] [stdout] test config::tests::test_runtime_config_new ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_stats_to_json ... ok [INFO] [stdout] test config::tests::test_in_memory_store_namespace_isolation ... ok [INFO] [stdout] test config::tests::test_get_store_from_config_empty ... ok [INFO] [stdout] test config::tests::test_in_memory_store_delete_nonexistent ... ok [INFO] [stdout] test config::tests::test_in_memory_store_list_empty_namespace ... ok [INFO] [stdout] test graph::analysis::tests::test_add_edge_adds_nodes ... ok [INFO] [stdout] test graph::analysis::tests::test_all_paths_diamond ... ok [INFO] [stdout] test graph::analysis::tests::test_all_paths_no_path ... ok [INFO] [stdout] test graph::analysis::tests::test_all_paths_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_cycle_detector_multiple_cycles ... ok [INFO] [stdout] test graph::analysis::tests::test_all_paths_same_node ... ok [INFO] [stdout] test graph::analysis::tests::test_diff_empty_graphs ... ok [INFO] [stdout] test graph::analysis::tests::test_diff_identical_graphs ... ok [INFO] [stdout] test graph::analysis::tests::test_diff_to_json ... ok [INFO] [stdout] test graph::analysis::tests::test_degree_nonexistent_node ... ok [INFO] [stdout] test graph::analysis::tests::test_diff_removed_node_and_edge ... ok [INFO] [stdout] test graph::analysis::tests::test_diff_added_node_and_edge ... ok [INFO] [stdout] test graph::analysis::tests::test_disconnected_components ... ok [INFO] [stdout] test graph::analysis::tests::test_cycle_detector_no_cycles ... ok [INFO] [stdout] test graph::analysis::tests::test_downstream_from_middle ... ok [INFO] [stdout] test graph::analysis::tests::test_downstream_from_leaf ... ok [INFO] [stdout] test graph::analysis::tests::test_cycle_detector_dag ... ok [INFO] [stdout] test graph::analysis::tests::test_cycle_detector_self_loop ... ok [INFO] [stdout] test graph::analysis::tests::test_cyclic_no_sources_no_sinks ... ok [INFO] [stdout] test graph::analysis::tests::test_empty_graph ... ok [INFO] [stdout] test graph::analysis::tests::test_downstream_nonexistent ... ok [INFO] [stdout] test graph::analysis::tests::test_cycle_detector_simple_cycle ... ok [INFO] [stdout] test graph::analysis::tests::test_extract_subgraph_empty_nodes ... ok [INFO] [stdout] test graph::analysis::tests::test_is_dag_diamond ... ok [INFO] [stdout] test graph::analysis::tests::test_in_degree ... ok [INFO] [stdout] test graph::analysis::tests::test_is_not_dag_cyclic ... ok [INFO] [stdout] test graph::analysis::tests::test_is_dag_empty ... ok [INFO] [stdout] test graph::analysis::tests::test_is_reachable_same_node ... ok [INFO] [stdout] test graph::analysis::tests::test_is_dag_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_is_reachable_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_longest_path_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_is_reachable_nonexistent ... ok [INFO] [stdout] test graph::analysis::tests::test_longest_path_no_path ... ok [INFO] [stdout] test graph::analysis::tests::test_extract_subgraph ... ok [INFO] [stdout] test graph::analysis::tests::test_downstream_from_root ... ok [INFO] [stdout] test graph::analysis::tests::test_extract_nonexistent_nodes ... ok [INFO] [stdout] test graph::analysis::tests::test_metrics_disconnected ... ok [INFO] [stdout] test graph::analysis::tests::test_metrics_empty_graph ... ok [INFO] [stdout] test graph::analysis::tests::test_metrics_diamond ... ok [INFO] [stdout] test graph::analysis::tests::test_out_degree ... ok [INFO] [stdout] test graph::analysis::tests::test_metrics_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_self_loop_in_out_degree ... ok [INFO] [stdout] test graph::analysis::tests::test_self_loop_not_dag ... ok [INFO] [stdout] test graph::analysis::tests::test_shortest_path_no_path ... ok [INFO] [stdout] test graph::analysis::tests::test_metrics_to_json ... ok [INFO] [stdout] test graph::analysis::tests::test_shortest_path_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_shortest_path_diamond ... ok [INFO] [stdout] test graph::analysis::tests::test_single_node ... ok [INFO] [stdout] test graph::analysis::tests::test_sinks_diamond ... ok [INFO] [stdout] test graph::analysis::tests::test_sinks_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_sources_diamond ... ok [INFO] [stdout] test graph::analysis::tests::test_sources_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_longest_path_with_extra_path ... ok [INFO] [stdout] test graph::analysis::tests::test_to_ascii_contains_edges ... ok [INFO] [stdout] test graph::analysis::tests::test_to_ascii_contains_node_count ... ok [INFO] [stdout] test graph::analysis::tests::test_to_ascii_header ... ok [INFO] [stdout] test graph::analysis::tests::test_to_ascii_contains_sources_and_sinks ... ok [INFO] [stdout] test graph::analysis::tests::test_to_dot_empty_graph ... ok [INFO] [stdout] test graph::analysis::tests::test_to_dot_contains_digraph ... ok [INFO] [stdout] test graph::analysis::tests::test_to_mermaid_contains_edges ... ok [INFO] [stdout] test graph::analysis::tests::test_topological_sort_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_topological_sort_cyclic_error ... ok [INFO] [stdout] test graph::analysis::tests::test_to_mermaid_contains_nodes ... ok [INFO] [stdout] test graph::annotations::tests::test_default_values_applied ... ok [INFO] [stdout] test graph::annotations::tests::test_json_type_matches ... ok [INFO] [stdout] test checkpoint::store::tests::test_store_value_update ... ok [INFO] [stdout] test graph::annotations::tests::test_apply_annotations_merges_with_reducers ... ok [INFO] [stdout] test graph::annotations::tests::test_multiple_field_types ... ok [INFO] [stdout] test graph::analysis::tests::test_to_dot_contains_edges ... ok [INFO] [stdout] test graph::annotations::tests::test_description_metadata ... ok [INFO] [stdout] test graph::analysis::tests::test_to_dot_contains_nodes ... ok [INFO] [stdout] test graph::analysis::tests::test_topological_sort_diamond ... ok [INFO] [stdout] test graph::analysis::tests::test_to_mermaid_header ... ok [INFO] [stdout] test graph::annotations::tests::test_annotated_state_graph_integration ... ok [INFO] [stdout] test graph::annotations::tests::test_builder_pattern_fluent_api ... ok [INFO] [stdout] test graph::annotations::tests::test_basic_annotated_state_with_required_fields ... ok [INFO] [stdout] test graph::annotations::tests::test_validation_rejects_non_object_state ... ok [INFO] [stdout] test graph::annotations::tests::test_messages_field_shortcut ... ok [INFO] [stdout] test graph::ascii::tests::test_horizontal_rendering ... ok [INFO] [stdout] test graph::ascii::tests::test_edge_labels_displayed ... ok [INFO] [stdout] test graph::ascii::tests::test_graph_with_cycle ... ok [INFO] [stdout] test graph::ascii::tests::test_compact_mode ... ok [INFO] [stdout] test graph::ascii::tests::test_minimal_node_style ... ok [INFO] [stdout] test graph::ascii::tests::test_empty_graph ... ok [INFO] [stdout] test graph::annotations::tests::test_validation_catches_wrong_type ... ok [INFO] [stdout] test graph::annotations::tests::test_optional_fields_pass_when_absent ... ok [INFO] [stdout] test graph::ascii::tests::test_render_with_options_customization ... ok [INFO] [stdout] test graph::ascii::tests::test_simple_linear_graph ... ok [INFO] [stdout] test graph::annotations::tests::test_required_field_with_default_passes ... ok [INFO] [stdout] test graph::annotations::tests::test_validation_catches_missing_required_field ... ok [INFO] [stdout] test graph::audit::tests::test_audit_trail_find_errors ... ok [INFO] [stdout] test graph::audit::tests::test_audit_trail_trace_graph_execution ... ok [INFO] [stdout] test graph::audit::tests::test_audit_trail_trace_node ... ok [INFO] [stdout] test graph::ascii::tests::test_single_node_graph ... ok [INFO] [stdout] test graph::audit::tests::test_clear_log ... ok [INFO] [stdout] test graph::audit::tests::test_event_counts_by_type ... ok [INFO] [stdout] test graph::ascii::tests::test_start_and_end_nodes ... ok [INFO] [stdout] test graph::ascii::tests::test_wide_graph_many_parallel ... ok [INFO] [stdout] test graph::audit::tests::test_audit_report_generation ... ok [INFO] [stdout] test graph::ascii::tests::test_single_branch ... ok [INFO] [stdout] test graph::audit::tests::test_disabled_log ... ok [INFO] [stdout] test graph::audit::tests::test_export_json ... ok [INFO] [stdout] test graph::ascii::tests::test_to_ascii_helper ... ok [INFO] [stdout] test graph::audit::tests::test_filter_by_event_type ... ok [INFO] [stdout] test graph::audit::tests::test_max_events_rolling_buffer ... ok [INFO] [stdout] test graph::audit::tests::test_node_activity_in_report ... ok [INFO] [stdout] test graph::audit::tests::test_time_range_filtering ... ok [INFO] [stdout] test graph::audit::tests::test_text_search ... ok [INFO] [stdout] test graph::branch::tests::test_branch_multiple_routes ... ok [INFO] [stdout] test graph::audit::tests::test_state_capture_in_events ... ok [INFO] [stdout] test graph::audit::tests::test_record_and_retrieve_events ... ok [INFO] [stdout] test graph::branch::tests::test_branch_sends ... ok [INFO] [stdout] test graph::branch::tests::test_async_branch_single_route ... ok [INFO] [stdout] test graph::branch::tests::test_branch_unmapped_key_passes_through ... ok [INFO] [stdout] test graph::branch::tests::test_branch_single_route ... ok [INFO] [stdout] test graph::branch::tests::test_async_branch_with_path_map ... ok [INFO] [stdout] test graph::audit::tests::test_filter_by_node_name ... ok [INFO] [stdout] test graph::audit::tests::test_min_severity_filtering ... ok [INFO] [stdout] test graph::breakpoint::tests::test_abort_action ... ok [INFO] [stdout] test graph::breakpoint::tests::test_breakpoint_state_enum ... ok [INFO] [stdout] test graph::breakpoint::tests::test_always_matches_any_node ... ok [INFO] [stdout] test graph::breakpoint::tests::test_after_node_matches ... ok [INFO] [stdout] test graph::breakpoint::tests::test_clear_breakpoints ... ok [INFO] [stdout] test graph::breakpoint::tests::test_before_node_no_match ... ok [INFO] [stdout] test graph::breakpoint::tests::test_before_node_matches ... ok [INFO] [stdout] test graph::breakpoint::tests::test_conditional_wrong_node ... ok [INFO] [stdout] test graph::breakpoint::tests::test_conditional_true ... ok [INFO] [stdout] test graph::breakpoint::tests::test_event_state_snapshot ... ok [INFO] [stdout] test graph::branch::tests::test_branch_with_path_map ... ok [INFO] [stdout] test graph::breakpoint::tests::test_continue_with_state_action ... ok [INFO] [stdout] test graph::breakpoint::tests::test_conditional_false ... ok [INFO] [stdout] test graph::breakpoint::tests::test_auto_approve_handler ... ok [INFO] [stdout] test graph::breakpoint::tests::test_handle_breakpoint_no_handler ... ok [INFO] [stdout] test graph::breakpoint::tests::test_logging_handler ... ok [INFO] [stdout] test graph::breakpoint::tests::test_handle_breakpoint_delegates ... ok [INFO] [stdout] test graph::breakpoint::tests::test_history_records_events ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_graph_debug ... ok [INFO] [stdout] test graph::breakpoint::tests::test_skip_action ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_graph_add_edge ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_graph_new ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_edge_conditional_source ... ok [INFO] [stdout] test graph::breakpoint::tests::test_remove_does_not_affect_always ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_graph_node_names_sorted ... ok [INFO] [stdout] test graph::breakpoint::tests::test_list_breakpoints ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_edge_direct_source ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_edge_debug ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_graph_set_finish_point ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_node_debug ... ok [INFO] [stdout] test graph::breakpoint::tests::test_handler_error_propagates ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_node_execute_passthrough ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_graph_set_finish_point_dedup ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_graph_add_node ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_node_new_and_name ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_node_execute_transform ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_node_execute_error ... ok [INFO] [stdout] test graph::compiled::tests::test_compiler_compile_conditional ... ok [INFO] [stdout] test graph::compiled::tests::test_compiled_edge_conditional_debug ... ok [INFO] [stdout] test graph::breakpoint::tests::test_remove_breakpoint ... ok [INFO] [stdout] test graph::compiled::tests::test_compiler_default ... ok [INFO] [stdout] test graph::compiled::tests::test_definition_builder_build_entry_not_a_node ... ok [INFO] [stdout] test graph::compiled::tests::test_deep_merge_objects ... ok [INFO] [stdout] test graph::compiled::tests::test_definition_builder_build_finish_not_a_node ... ok [INFO] [stdout] test graph::compiled::tests::test_deep_merge_nested ... ok [INFO] [stdout] test graph::compiled::tests::test_compiler_compile_linear ... ok [INFO] [stdout] test graph::analysis::tests::test_shortest_path_same_node ... ok [INFO] [stdout] test graph::compiled::tests::test_definition_builder_build_no_nodes ... ok [INFO] [stdout] test graph::compiled::tests::test_deep_merge_non_object ... ok [INFO] [stdout] test graph::compiled::tests::test_definition_builder_build_no_entry ... ok [INFO] [stdout] test graph::compiled::tests::test_execution_log_new_empty ... ok [INFO] [stdout] test graph::compiled::tests::test_definition_builder_debug ... ok [INFO] [stdout] test graph::compiled::tests::test_execution_log_record ... ok [INFO] [stdout] test graph::compiled::tests::test_has_cycle_linear ... ok [INFO] [stdout] test graph::compiled::tests::test_execution_log_with_duration ... ok [INFO] [stdout] test graph::compiled::tests::test_has_cycle_self_loop ... ok [INFO] [stdout] test graph::compiled::tests::test_has_cycle_with_cycle ... ok [INFO] [stdout] test graph::compiled::tests::test_definition_builder_build_valid ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_conditional_edge_branch_a ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_conditional_edge_branch_b ... ok [INFO] [stdout] test graph::compiled::tests::test_definition_builder_name ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_conditional_unknown_target_stops ... ok [INFO] [stdout] test graph::compiled::tests::test_execution_log_default ... ok [INFO] [stdout] test graph::compiled::tests::test_execution_log_record_multiple ... ok [INFO] [stdout] test graph::compiled::tests::test_execution_log_to_json ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_linear_a_b_c ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_error_propagation ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_preserves_input_fields ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_with_log ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_single_node ... ok [INFO] [stdout] test graph::compiled::tests::test_reachable_from_disconnected ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_missing_conditional_target ... ok [INFO] [stdout] test graph::compiled::tests::test_to_mermaid_basic ... ok [INFO] [stdout] test graph::compiled::tests::test_to_mermaid_conditional ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_missing_edge_source ... ok [INFO] [stdout] test graph::compiled::tests::test_multiple_finish_points ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_stops_at_no_edges ... ok [INFO] [stdout] test graph::compiled::tests::test_invoke_state_threading ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_missing_edge_target ... ok [INFO] [stdout] test graph::conditional::tests::conditional_edge_source_getter ... ok [INFO] [stdout] test graph::conditional::tests::conditional_edge_evaluate ... ok [INFO] [stdout] test graph::conditional::tests::empty_router_has_no_sources ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_unreachable_finish_point ... ok [INFO] [stdout] test graph::compiled::tests::test_to_mermaid_no_edges ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_missing_finish_point_node ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_no_finish_points_ok ... ok [INFO] [stdout] test graph::conditional::tests::empty_router_route_returns_error ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_missing_entry_point ... ok [INFO] [stdout] test graph::conditional::tests::conditional_edge_error_propagation ... ok [INFO] [stdout] test graph::compiled::tests::test_validate_valid_graph ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_bool_value ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_missing_field ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_null_value ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_numeric_value ... ok [INFO] [stdout] test graph::conditional::tests::multi_condition_first_match ... ok [INFO] [stdout] test graph::conditional::tests::multi_condition_second_match ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_no_match_no_default ... ok [INFO] [stdout] test graph::conditional::tests::predicate_condition_complex_logic ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_exact_match ... ok [INFO] [stdout] test graph::conditional::tests::predicate_condition_false_path ... ok [INFO] [stdout] test graph::conditional::tests::predicate_condition_missing_field_defaults_false ... ok [INFO] [stdout] test graph::conditional::tests::predicate_condition_true_path ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_no_match_with_default ... ok [INFO] [stdout] test graph::conditional::tests::field_condition_second_match ... ok [INFO] [stdout] test graph::conditional::tests::multi_condition_no_match_no_default ... ok [INFO] [stdout] test graph::conditional::tests::full_routing_workflow ... ok [INFO] [stdout] test graph::conditional::tests::router_len_and_is_empty ... ok [INFO] [stdout] test graph::conditional::tests::multi_condition_no_match_with_default ... ok [INFO] [stdout] test graph::conditional::tests::router_has_route ... ok [INFO] [stdout] test graph::conditional::tests::router_edges_from ... ok [INFO] [stdout] test graph::conditional::tests::router_route_no_edge_for_source ... ok [INFO] [stdout] test graph::conditional::tests::router_sources ... ok [INFO] [stdout] test graph::conditional::tests::routing_decision_to_json ... ok [INFO] [stdout] test graph::conditional::tests::routing_table_clear ... ok [INFO] [stdout] test graph::conditional::tests::routing_table_decisions_from ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_above ... ok [INFO] [stdout] test graph::conditional::tests::router_route_basic ... ok [INFO] [stdout] test graph::conditional::tests::multi_condition_first_match_semantics ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_equal_with_equal_target ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_integer_value ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_missing_field ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_negative_values ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_non_numeric_field ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_always ... ok [INFO] [stdout] test graph::conditional::tests::routing_table_record_and_query ... ok [INFO] [stdout] test graph::conditional::tests::router_multiple_edges_same_source_uses_first ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_below ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_custom ... ok [INFO] [stdout] test graph::conditional::tests::threshold_condition_equal_no_equal_target ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_on_value_no_match ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_display ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_enable_disable ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_on_iteration ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_record_hit ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_should_break_always ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_on_state_change_present ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_should_break_disabled ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_should_break_no_condition ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_should_break_on_iteration ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_on_value_display ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_to_json ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_on_state_change_absent ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_new ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_to_json_with_condition ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_on_value_missing_key ... ok [INFO] [stdout] test graph::debug::tests::test_compute_depth_empty_object ... ok [INFO] [stdout] test graph::debug::tests::test_compute_depth_flat_object ... ok [INFO] [stdout] test graph::debug::tests::test_compute_depth_nested ... ok [INFO] [stdout] test graph::debug::tests::test_count_fields_empty ... ok [INFO] [stdout] test graph::debug::tests::test_count_fields_flat ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_add_breakpoint ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_on_value_condition ... ok [INFO] [stdout] test graph::debug::tests::test_count_fields_nested ... ok [INFO] [stdout] test graph::debug::tests::test_breakpoint_with_condition ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_clear_breakpoints ... ok [INFO] [stdout] test graph::debug::tests::test_compute_depth_array ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_is_breakpoint_false ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_is_breakpoint_increments_hit ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_is_breakpoint_true ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_disabled_breakpoint_no_trigger ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_record_step ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_new ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_default ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_remove_breakpoint ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_execution_history ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_remove_nonexistent ... ok [INFO] [stdout] test graph::debug::tests::test_debug_session_replace_breakpoint ... ok [INFO] [stdout] test graph::debug::tests::test_debug_step_new ... ok [INFO] [stdout] test graph::debug::tests::test_debug_step_complete ... ok [INFO] [stdout] test graph::debug::tests::test_delta_type_display ... ok [INFO] [stdout] test graph::debug::tests::test_delta_type_eq ... ok [INFO] [stdout] test graph::debug::tests::test_debug_step_to_json_incomplete ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_average_time_missing ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_average_time ... ok [INFO] [stdout] test graph::debug::tests::test_debug_step_to_json ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_default ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_new ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_slowest_node ... ok [INFO] [stdout] test graph::debug::tests::test_break_condition_on_value_match ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_to_json ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_multiple_runs ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_start_end_node ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_end_node_without_start ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_slowest_node_empty ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_to_json_empty ... ok [INFO] [stdout] test graph::debug::tests::test_state_delta_display_added ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_to_json_slowest ... ok [INFO] [stdout] test graph::debug::tests::test_state_delta_display_modified ... ok [INFO] [stdout] test graph::debug::tests::test_profiler_total_execution_ms ... ok [INFO] [stdout] test graph::debug::tests::test_state_delta_display_removed ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_default ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_diff_multiple ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_diff_no_change ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_diff_modified ... ok [INFO] [stdout] test graph::debug::tests::test_state_delta_to_json ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_inspect_flat ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_inspect_nested ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_estimated_size ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_new ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_action_continue ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_watch_key ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_action_modify_state ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_diff_removed ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_watch_key_dedup ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_inspect_empty ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_inspect_non_object ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_diff_added ... ok [INFO] [stdout] test graph::debug::tests::test_state_report_to_json ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_inspect_with_array ... ok [INFO] [stdout] test graph::debug::tests::test_state_inspector_watched_values ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_context_builder ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_context_with_edge ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_phase_clone ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_phase_equality ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_error_propagation ... ok [INFO] [stdout] test graph::hooks::tests::test_logging_hook_returns_continue ... ok [INFO] [stdout] test graph::hooks::tests::test_logging_hook_all_phases ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_dispatch_modify_state ... ok [INFO] [stdout] test graph::hooks::tests::test_logging_hook_edge_event ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_new_is_empty ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_hooks_for_phase ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_action_abort ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_dispatch_skip_node ... ok [INFO] [stdout] test graph::debug::tests::test_compute_depth_scalar ... ok [INFO] [stdout] test graph::compiled::tests::test_reachable_from_linear ... ok [INFO] [stdout] test graph::debug::tests::test_count_fields_array ... ok [INFO] [stdout] test graph::hooks::tests::test_hook_action_skip_node ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_register ... ok [INFO] [stdout] test graph::hooks::tests::test_multiple_hooks_in_registry ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_dispatch_continue ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_dispatch_no_matching_hooks ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_unregister ... ok [INFO] [stdout] test graph::hooks::tests::test_snapshot_hook_captures ... ok [INFO] [stdout] test graph::hooks::tests::test_snapshot_hook_clear ... ok [INFO] [stdout] test graph::hooks::tests::test_snapshot_hook_for_node ... ok [INFO] [stdout] test graph::hooks::tests::test_snapshot_hook_ignores_no_node ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_default ... ok [INFO] [stdout] test graph::hooks::tests::test_state_validation_missing_key ... ok [INFO] [stdout] test graph::hooks::tests::test_state_validation_passes ... ok [INFO] [stdout] test graph::hooks::tests::test_snapshot_hook_phases ... ok [INFO] [stdout] test graph::hooks::tests::test_registry_dispatch_abort_short_circuits ... ok [INFO] [stdout] test graph::hooks::tests::test_state_validation_phases ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_config_builder_with_policy ... ok [INFO] [stdout] test graph::hooks::tests::test_timing_hook_phases ... ok [INFO] [stdout] test graph::hooks::tests::test_state_validation_empty_keys ... ok [INFO] [stdout] test graph::hooks::tests::test_timing_hook_multiple_invocations ... ok [INFO] [stdout] test graph::hooks::tests::test_state_validation_non_object_state ... ok [INFO] [stdout] test graph::hooks::tests::test_timing_hook_total_durations ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_config_default ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_approval_request_contains_correct_state ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_edit_state_before_continuing ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_config_builder_basic ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_approve_and_complete ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_config_builder_review_nodes_bulk ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_approval_rate_none_approved ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_by_node ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_by_node_no_node_name ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_default ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_execute_to_completion_with_reject ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_recent_empty ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_recent_more_than_available ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_approved ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_approved_to_json ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_modified_to_json ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_added_to_state ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_display ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_timeout ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_timeout_to_json ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_new_empty ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_rejected_to_json ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_feedback_builder_chain ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_feedback_new ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_execute_to_completion_auto_approve ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_rejected ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_feedback_to_json ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_feedback_with_feedback_text ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_feedback_with_node_name ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_policy_always_approve ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_policy_always_reject ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_policy_auto_approve_if_false ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_policy_auto_approve_if_missing_field ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_policy_auto_approve_if_true ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_no_interrupt_nodes_normal_execution ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_approval_rate_all_approved ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_approval_rate_mixed ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_feedback_with_reviewer ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_multiple_approval_points ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_policy_require_human ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_approval_request_builder_with_metadata ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_recent ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_approval_request_builder_with_timeout ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_approval_request_default_proposed_value ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_policy_debug_format ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_approval_request_to_json ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_point_apply_approved ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_reject_execution ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_approval_request_builder_basic ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_point_apply_timeout ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_point_debug ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_default ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_point_request_approval ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_resolve_nonexistent ... ok [INFO] [stdout] test graph::interrupt::tests::test_auto_resume_handler ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_dequeue_empty ... ok [INFO] [stdout] test graph::interrupt::tests::test_auto_resume_handler_with_options ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_fifo_order ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_point_apply_modified ... ok [INFO] [stdout] test graph::interrupt::tests::test_default_option_handler_single_option ... ok [INFO] [stdout] test graph::interrupt::tests::test_default_option_handler_empty_options ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_enqueue_dequeue ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_new_empty ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_multiple_resolve ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_peek ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_point_apply_rejected ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_review_queue_resolve_existing ... ok [INFO] [stdout] test graph::interrupt::tests::test_default_option_handler_with_options ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_after_node_display ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_before_node_display ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_manual_display ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_conditional_display ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_node_name_after ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_node_name_before ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_node_name_conditional ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_node_name_manual ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_timeout_display ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_record_and_len ... ok [INFO] [stdout] test graph::interrupt::tests::test_interrupt_type_node_name_timeout ... ok [INFO] [stdout] test graph::interrupt::tests::test_log_default ... ok [INFO] [stdout] test graph::interrupt::tests::test_log_entries_for_manual_interrupt ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_feedback_log_to_json ... ok [INFO] [stdout] test graph::interrupt::tests::test_log_entries_for_node ... ok [INFO] [stdout] test graph::human_in_loop::tests::test_human_approval_modified ... ok [INFO] [stdout] test graph::interrupt::tests::test_log_new_empty ... ok [INFO] [stdout] test graph::interrupt::tests::test_log_multiple_actions_recorded ... ok [INFO] [stdout] test graph::interrupt::tests::test_log_record_and_entries ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_add_interrupt ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_default ... ok [INFO] [stdout] test graph::interrupt::tests::test_log_clear ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_new_empty ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_pending_interrupts ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_and_log_integration ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_should_interrupt_after ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_should_interrupt_before ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_trigger_global_handler ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_handler_error_propagates ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_trigger_no_handler ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_trigger_per_node_handler_override ... ok [INFO] [stdout] test graph::interrupt::tests::test_multiple_interrupt_points ... ok [INFO] [stdout] test graph::hooks::tests::test_timing_hook_records_duration ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_clear ... ok [INFO] [stdout] test graph::interrupt::tests::test_payload_new ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_should_interrupt_conditional ... ok [INFO] [stdout] test graph::interrupt::tests::test_payload_with_message ... ok [INFO] [stdout] test graph::interrupt::tests::test_manager_should_interrupt_manual_never_matches ... ok [INFO] [stdout] test graph::interrupt::tests::test_resume_action_abort_is_terminal ... ok [INFO] [stdout] test graph::interrupt::tests::test_resume_action_retry_not_terminal ... ok [INFO] [stdout] test graph::interrupt::tests::test_resume_action_continue_with_state_not_terminal ... ok [INFO] [stdout] test graph::interrupt::tests::test_payload_to_json_no_message ... ok [INFO] [stdout] test graph::interrupt::tests::test_resume_action_select_option_not_terminal ... ok [INFO] [stdout] test graph::interrupt::tests::test_payload_with_options ... ok [INFO] [stdout] test graph::interrupt::tests::test_resume_action_continue_not_terminal ... ok [INFO] [stdout] test graph::interrupt::tests::test_resume_action_skip_not_terminal ... ok [INFO] [stdout] test graph::interrupt::tests::test_payload_builder_chain ... ok [INFO] [stdout] test graph::interrupt::tests::test_payload_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_action_auto_reject ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_action_pause ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_approval_display ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_action_timeout ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_approval_name ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_approval_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_custom_display ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_custom_name ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_custom_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_input_name ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_input_display ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_input_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_review_display ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_review_name ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_type_review_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_log_default ... ok [INFO] [stdout] test graph::interrupts::tests::test_log_filter_by_node ... ok [INFO] [stdout] test graph::interrupts::tests::test_log_mixed_events ... ok [INFO] [stdout] test graph::interrupts::tests::test_log_new_empty ... ok [INFO] [stdout] test graph::interrupts::tests::test_log_record_request ... ok [INFO] [stdout] test graph::interrupts::tests::test_log_record_response ... ok [INFO] [stdout] test graph::interrupts::tests::test_log_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_multiple_requests_lifecycle ... ok [INFO] [stdout] test graph::interrupt::tests::test_timeout_handler_exceeded ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_conditional_interrupt ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_interrupt_after ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_interrupt_before ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_multiple_before ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_new_empty ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_no_match ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_combined ... ok [INFO] [stdout] test graph::interrupts::tests::test_handler_on_interrupt_auto_approve ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_handler_on_interrupt_pause ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_with_timeout ... ok [INFO] [stdout] test graph::interrupts::tests::test_interrupt_action_auto_approve ... ok [INFO] [stdout] test graph::interrupts::tests::test_policy_always_interrupt ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_fifo_order ... ok [INFO] [stdout] test graph::interrupt::tests::test_timeout_handler_within_timeout ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_dequeue_empty ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_enqueue_dequeue ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_pending_count ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_respond_success ... ok [INFO] [stdout] test graph::interrupts::tests::test_full_interrupt_lifecycle ... ok [INFO] [stdout] test graph::interrupts::tests::test_request_input_type ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_responded_count ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_respond_unknown_id ... ok [INFO] [stdout] test graph::interrupts::tests::test_handler_on_resume ... ok [INFO] [stdout] test graph::interrupts::tests::test_request_new ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_new_empty ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_peek ... ok [INFO] [stdout] test graph::interrupts::tests::test_request_to_json ... ok [INFO] [stdout] test graph::interrupts::tests::test_queue_get_response_none ... ok [INFO] [stdout] test graph::interrupts::tests::test_request_unique_ids ... ok [INFO] [stdout] test graph::interrupts::tests::test_request_with_context ... ok [INFO] [stdout] test graph::interrupts::tests::test_response_approve ... ok [INFO] [stdout] test graph::interrupts::tests::test_response_approve_with_data ... ok [INFO] [stdout] test graph::interrupts::tests::test_response_reject ... ok [INFO] [stdout] test graph::interrupts::tests::test_response_responder_field ... ok [INFO] [stdout] test graph::interrupts::tests::test_response_to_json_reject ... ok [INFO] [stdout] test graph::interrupts::tests::test_response_to_json_with_data ... ok [INFO] [stdout] test graph::interrupts::tests::test_timeout_policy_is_expired_nonzero ... ok [INFO] [stdout] test graph::interrupts::tests::test_timeout_policy_default_timeout ... ok [INFO] [stdout] test graph::interrupts::tests::test_timeout_policy_is_expired_zero_timeout ... ok [INFO] [stdout] test graph::interrupts::tests::test_timeout_policy_multiple_overrides ... ok [INFO] [stdout] test graph::interrupts::tests::test_response_to_json_approve ... ok [INFO] [stdout] test graph::interrupts::tests::test_timeout_policy_per_node_override ... ok [INFO] [stdout] test graph::mermaid::tests::test_conditional_edges_with_path_map ... ok [INFO] [stdout] test graph::mermaid::tests::test_multiple_branches_from_same_node ... ok [INFO] [stdout] test graph::mermaid::tests::test_self_loop_edge ... ok [INFO] [stdout] test graph::mermaid::tests::test_valid_mermaid_syntax ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_empty_left ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_empty_right ... ok [INFO] [stdout] test graph::mermaid::tests::test_mermaid_url_generation ... ok [INFO] [stdout] test graph::mermaid::tests::test_start_and_end_nodes_have_rounded_shape ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_mixed_operations ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_remove_message_variant ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_append ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_no_id_always_appends ... ok [INFO] [stdout] test graph::message::tests::test_builder_basic ... ok [INFO] [stdout] test graph::message::tests::test_builder_conditional_edge ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_replace_by_id ... ok [INFO] [stdout] test graph::mermaid::tests::test_conditional_edge_without_path_map ... ok [INFO] [stdout] test graph::message::tests::test_builder_default ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_single_value_not_array ... ok [INFO] [stdout] test graph::mermaid::tests::test_simple_linear_graph ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_builder_pattern ... ok [INFO] [stdout] test graph::message::tests::test_builder_execute_full_pipeline ... ok [INFO] [stdout] test graph::message::tests::test_add_messages_remove ... ok [INFO] [stdout] test graph::message::tests::test_builder_no_entry_fails ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_is_ai ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_is_tool ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_is_system ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_new ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_to_json ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_to_json_with_metadata ... ok [INFO] [stdout] test graph::message::tests::test_message_edge_direct_source ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_to_json_minimal ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_debug ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_execute_conditional_edge ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_execute_no_entry ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_execute_linear_flow ... ok [INFO] [stdout] test graph::message::tests::test_message_edge_debug ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_execute_no_outgoing_edge_stops ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_new ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_validate_edge_target_not_found ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_add_node_and_edge ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_clone ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_validate_entry_not_found ... ok [INFO] [stdout] test graph::message::tests::test_graph_message_is_human ... ok [INFO] [stdout] test graph::message::tests::test_message_edge_conditional_source ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_validate_finish_point_not_found ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_execute_single_node ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_execute_with_initial_messages ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_validate_success ... ok [INFO] [stdout] test graph::message::tests::test_message_node_debug ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_validate_no_entry ... ok [INFO] [stdout] test graph::message::tests::test_message_graph_basic ... ok [INFO] [stdout] test graph::message::tests::test_message_node_execute ... ok [INFO] [stdout] test graph::message::tests::test_message_node_execute_empty_state ... ok [INFO] [stdout] test graph::message::tests::test_message_node_returns_multiple_messages ... ok [INFO] [stdout] test graph::message::tests::test_message_role_as_str ... ok [INFO] [stdout] test graph::message::tests::test_message_state_messages ... ok [INFO] [stdout] test graph::message::tests::test_message_state_last_human ... ok [INFO] [stdout] test graph::message::tests::test_message_state_new_is_empty ... ok [INFO] [stdout] test graph::message::tests::test_message_state_to_json ... ok [INFO] [stdout] test graph::message::tests::test_message_state_last ... ok [INFO] [stdout] test graph::message::tests::test_message_role_clone ... ok [INFO] [stdout] test graph::message::tests::test_message_role_display ... ok [INFO] [stdout] test graph::message::tests::test_message_role_equality ... ok [INFO] [stdout] test graph::message::tests::test_message_role_from_str ... ok [INFO] [stdout] test graph::message::tests::test_message_state_add_and_len ... ok [INFO] [stdout] test graph::message::tests::test_message_state_clear ... ok [INFO] [stdout] test graph::message::tests::test_message_state_default ... ok [INFO] [stdout] test graph::message::tests::test_message_state_filter_by_role ... ok [INFO] [stdout] test graph::message::tests::test_message_state_filter_by_role_empty_result ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_avg_run_duration ... ok [INFO] [stdout] test graph::message::tests::test_message_state_last_ai ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_avg_run_duration_empty ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_durations_combined ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_error_rate_empty ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_error_rate ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_merge_multiple ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_merge_single ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_default ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_min_max_across_runs ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_new ... ok [INFO] [stdout] test graph::metrics::tests::collector_default ... ok [INFO] [stdout] test graph::metrics::tests::collector_mismatched_finish_ignored ... ok [INFO] [stdout] test graph::metrics::tests::collector_history_contains_all_node_data ... ok [INFO] [stdout] test graph::metrics::tests::collector_multiple_runs ... ok [INFO] [stdout] test graph::metrics::tests::collector_new ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_top_edges ... ok [INFO] [stdout] test graph::metrics::tests::collector_run_lifecycle ... ok [INFO] [stdout] test graph::metrics::tests::collector_snapshot ... ok [INFO] [stdout] test graph::metrics::tests::export_node_json ... ok [INFO] [stdout] test graph::metrics::tests::export_profile_json ... ok [INFO] [stdout] test graph::metrics::tests::export_report_json ... ok [INFO] [stdout] test graph::metrics::tests::aggregator_top_nodes ... ok [INFO] [stdout] test graph::metrics::tests::edge_metrics_new ... ok [INFO] [stdout] test graph::metrics::tests::export_aggregator_json ... ok [INFO] [stdout] test graph::metrics::tests::edge_metrics_record ... ok [INFO] [stdout] test graph::metrics::tests::export_edge_json ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_edges_by_traversal ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_hot_edge ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_cold_edge_empty ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_cold_edge ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_bottleneck ... ok [INFO] [stdout] test graph::metrics::tests::export_roundtrip_graph_metrics ... ok [INFO] [stdout] test graph::metrics::tests::export_roundtrip_report ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_bottleneck_empty ... ok [INFO] [stdout] test graph::metrics::tests::full_pipeline_single_run ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_hot_edge_empty ... ok [INFO] [stdout] test graph::metrics::tests::full_pipeline_multi_run_aggregation ... ok [INFO] [stdout] test graph::metrics::tests::export_graph_metrics_json ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_start_and_finish ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_record_edge ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_avg_duration ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_avg_duration_empty ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_error_rate_all ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_new_defaults ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_record_node ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_p95 ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_min_max ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_error_rate_zero ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_p50 ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_error_rate_half ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_record_error ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_percentile_empty ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_record_success ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_p99 ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_new ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_percentile_single ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_total_duration_accumulates ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_nodes_by_duration ... ok [INFO] [stdout] test graph::metrics::tests::percentile_p0 ... ok [INFO] [stdout] test graph::metrics::tests::graph_metrics_profile_populated ... ok [INFO] [stdout] test graph::metrics::tests::node_metrics_last_executed_updates ... ok [INFO] [stdout] test graph::metrics::tests::percentile_p100 ... ok [INFO] [stdout] test graph::metrics::tests::profile_default ... ok [INFO] [stdout] test graph::metrics::tests::profile_execution_order ... ok [INFO] [stdout] test graph::metrics::tests::profile_new_is_empty ... ok [INFO] [stdout] test graph::metrics::tests::profile_total_duration ... ok [INFO] [stdout] test graph::metrics::tests::report_error_rate ... ok [INFO] [stdout] test graph::metrics::tests::report_hot_path ... ok [INFO] [stdout] test graph::metrics::tests::report_from_aggregator ... ok [INFO] [stdout] test graph::metrics::tests::report_node_summaries_sorted ... ok [INFO] [stdout] test graph::metrics::tests::report_cold_path ... ok [INFO] [stdout] test graph::persistent::tests::test_fork_creates_independent_copy ... ok [INFO] [stdout] test graph::persistent::tests::test_invoke_fresh_ignores_checkpoint ... ok [INFO] [stdout] test graph::persistent::tests::test_invoke_saves_checkpoint ... ok [INFO] [stdout] test graph::metrics::tests::report_from_graph_metrics ... ok [INFO] [stdout] test graph::runner::tests::test_events_collected ... ok [INFO] [stdout] test graph::persistent::tests::test_second_invoke_loads_checkpoint ... ok [INFO] [stdout] test graph::runner::tests::test_edge_events ... ok [INFO] [stdout] test graph::runner::tests::test_hook_receives_events ... ok [INFO] [stdout] test graph::persistent::tests::test_get_history_returns_ordered_list ... ok [INFO] [stdout] test graph::persistent::tests::test_get_state_returns_latest ... ok [INFO] [stdout] test graph::runner::tests::test_basic_run ... ok [INFO] [stdout] test graph::runner::tests::test_error_event ... ok [INFO] [stdout] test graph::runner::tests::test_logging_hook ... ok [INFO] [stdout] test graph::runner::tests::test_custom_hook ... ok [INFO] [stdout] test graph::metrics::tests::profile_record_entries ... ok [INFO] [stdout] test graph::runner::tests::test_default_config ... ok [INFO] [stdout] test graph::runner::tests::test_max_steps_event ... ok [INFO] [stdout] test graph::send::tests::test_fan_in_merges_results ... ok [INFO] [stdout] test graph::runner::tests::test_max_steps_reached ... ok [INFO] [stdout] test graph::send::tests::test_fan_out_empty_commands ... ok [INFO] [stdout] test graph::send::tests::test_fan_out_different_inputs_per_node ... ok [INFO] [stdout] test graph::send::tests::test_fan_out_executes_nodes_in_parallel ... ok [INFO] [stdout] test graph::runner::tests::test_metrics_hook_durations ... ok [INFO] [stdout] test graph::runner::tests::test_metrics_total_durations ... ok [INFO] [stdout] test graph::send::tests::test_map_reduce_graph_basic ... ok [INFO] [stdout] test graph::runner::tests::test_multiple_hooks ... ok [INFO] [stdout] test graph::runner::tests::test_recursion_limit ... ok [INFO] [stdout] test graph::runner::tests::test_step_count ... ok [INFO] [stdout] test graph::send::tests::test_deep_merge_empty ... ok [INFO] [stdout] test graph::runner::tests::test_single_node ... ok [INFO] [stdout] test graph::send::tests::test_deep_merge_non_objects ... ok [INFO] [stdout] test graph::send::tests::test_fan_in_custom_merge ... ok [INFO] [stdout] test graph::runner::tests::test_run_config_builder ... ok [INFO] [stdout] test graph::send::tests::test_map_reduce_graph_with_concurrency_limit ... ok [INFO] [stdout] test graph::serialization::tests::test_format_yaml_serialize ... ok [INFO] [stdout] test graph::runner::tests::test_step_count_resets ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_changes_has_changes_true ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_changes_has_changes_with_edges_only ... ok [INFO] [stdout] test graph::send::tests::test_map_reduce_multi_step ... ok [INFO] [stdout] test graph::send::tests::test_send_command_creation_and_fields ... ok [INFO] [stdout] test graph::send::tests::test_send_to_convenience ... ok [INFO] [stdout] test graph::serialization::tests::test_edge_type_as_str ... ok [INFO] [stdout] test graph::serialization::tests::test_format_compact_serialize ... ok [INFO] [stdout] test graph::serialization::tests::test_format_deserialize_invalid_json ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_changes_has_changes_false ... ok [INFO] [stdout] test graph::serialization::tests::test_format_json_serialize ... ok [INFO] [stdout] test graph::serialization::tests::test_format_json_deserialize ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_changes_has_changes_with_modified_only ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_changes_to_json ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_builder ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_empty_graph ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_from_json_invalid ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_from_json ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_json_round_trip ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_edge_with_label ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_node_from_json ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_node_from_json_missing_field ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_to_json ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_node_json_round_trip ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_node_empty_config ... ok [INFO] [stdout] test graph::serialization::tests::test_edge_type_display ... ok [INFO] [stdout] test graph::serialization::tests::test_format_compact_deserialize ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_no_description_skipped ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_edge_from_json_missing_field ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_edge_json_round_trip ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_edge_conditional_to_json ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_edge_direct_to_json ... ok [INFO] [stdout] test graph::serialization::tests::test_template_instantiate_no_params ... ok [INFO] [stdout] test graph::serialization::tests::test_graph_def_to_pretty_json ... ok [INFO] [stdout] test graph::serialization::tests::test_template_substitution_in_metadata ... ok [INFO] [stdout] test graph::serialization::tests::test_serialized_node_to_json ... ok [INFO] [stdout] test graph::serialization::tests::test_substitute_nested_array ... ok [INFO] [stdout] test graph::serialization::tests::test_substitute_nested_object ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_diff_added_node ... ok [INFO] [stdout] test graph::serialization::tests::test_template_default_parameter_used ... ok [INFO] [stdout] test graph::serialization::tests::test_template_with_parameter ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_diff_added_edge ... ok [INFO] [stdout] test graph::serialization::tests::test_template_from_definition ... ok [INFO] [stdout] test graph::serialization::tests::test_template_new ... ok [INFO] [stdout] test graph::serialization::tests::test_template_numeric_substitution ... ok [INFO] [stdout] test graph::serialization::tests::test_template_no_placeholder_unchanged ... ok [INFO] [stdout] test graph::serialization::tests::test_template_parameter_substitution ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_diff_no_changes ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_diff_modified_node ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_get_nonexistent ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_diff_removed_node ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_latest ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_diff_nonexistent_version ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_new_is_empty ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_save_and_get ... ok [INFO] [stdout] test graph::serialization::tests::test_versioning_version_list ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_to_definition_captures_nodes_and_edges ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_validate_catches_invalid_edge_target ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_validate_catches_invalid_entry_point ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_save_load_file ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_graph_registry ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_to_mermaid_from_definition ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_json_round_trip ... ok [INFO] [stdout] test graph::serialize::tests::test_serialize_validate_warns_orphan_nodes ... ok [INFO] [stdout] test graph::snapshot::tests::test_comparator_diff_empty_states ... ok [INFO] [stdout] test graph::snapshot::tests::test_comparator_diff_added_removed_changed ... ok [INFO] [stdout] test graph::snapshot::tests::test_comparator_diff_non_object_states ... ok [INFO] [stdout] test graph::snapshot::tests::test_comparator_is_equivalent_false ... ok [INFO] [stdout] test graph::snapshot::tests::test_comparator_is_equivalent_true ... ok [INFO] [stdout] test graph::snapshot::tests::test_comparator_diff_identical ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_diff_steps ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_execution_path_empty ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_diff_steps_missing ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_execution_path ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_goto_step ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_goto_snapshot ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_goto_step_missing ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_rewind ... ok [INFO] [stdout] test graph::snapshot::tests::test_debugger_rewind_empty_store ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_diff_is_not_empty_with_added ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_diff_summary_added_only ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_diff_summary_no_differences ... ok [INFO] [stdout] test graph::snapshot::tests::test_full_workflow_save_navigate_diff ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_diff_summary_with_all_kinds ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_diff_to_json ... ok [INFO] [stdout] test graph::snapshot::tests::test_same_state_different_snapshots_equivalent ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_diff_is_empty ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_id_equality ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_id_new_generates_unique_ids ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_id_display ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_id_default_generates_id ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_id_from_str_roundtrip ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_capacity_eviction ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_clear ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_get_by_node ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_get_by_step ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_history_order ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_get_missing ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_latest ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_new_is_empty ... ok [INFO] [stdout] test graph::snapshot::tests::test_snapshot_store_save_and_get ... ok [INFO] [stdout] test graph::snapshot::tests::test_state_snapshot_new ... ok [INFO] [stdout] test graph::snapshot::tests::test_state_snapshot_state_diff_changed ... ok [INFO] [stdout] test graph::snapshot::tests::test_state_snapshot_state_diff ... ok [INFO] [stdout] test graph::snapshot::tests::test_state_snapshot_to_json ... ok [INFO] [stdout] test graph::snapshot::tests::test_state_snapshot_to_json_with_parent ... ok [INFO] [stdout] test graph::snapshot::tests::test_state_snapshot_with_metadata ... ok [INFO] [stdout] test graph::snapshot::tests::test_state_snapshot_with_parent ... ok [INFO] [stdout] test graph::snapshot::tests::test_store_with_max_one_keeps_only_latest ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_conditional_entry_default_when_no_match ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_conditional_entry_full_graph_integration ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_conditional_entry_no_match_no_default_uses_key ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_conditional_entry_multiple_routes ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_conditional_entry_path_map_with_string_keys ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_mermaid_conditional_without_path_map ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_mermaid_png_wrapping ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_mermaid_conditional_edges_with_path_map ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_conditional_entry_different_inputs_route_differently ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_conditional_entry_routes_to_correct_node ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_to_json_structure ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_mermaid_interrupt_style ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_mermaid_simple_linear_graph ... ok [INFO] [stdout] test graph::state::tests::test_add_edges_join ... ok [INFO] [stdout] test graph::state::tests::test_add_node_with_full_config ... ok [INFO] [stdout] test graph::state::tests::test_add_sequence ... ok [INFO] [stdout] test graph::state::mermaid_tests::test_regular_entry_point_still_works ... ok [INFO] [stdout] test graph::state::tests::test_branching_graph ... ok [INFO] [stdout] test graph::state::tests::test_compile_unknown_edge_source ... ok [INFO] [stdout] test graph::state::tests::test_compile_unknown_edge_target ... ok [INFO] [stdout] test graph::state::tests::test_compile_no_entry_point ... ok [INFO] [stdout] test graph::state::tests::test_interrupt_after ... ok [INFO] [stdout] test graph::state::tests::test_conditional_with_path_map ... ok [INFO] [stdout] test graph::state::tests::test_node_names ... ok [INFO] [stdout] test graph::state::tests::test_cycle_with_recursion_limit ... ok [INFO] [stdout] test graph::state::tests::test_interrupt_resume_after_interrupt ... ok [INFO] [stdout] test graph::state::tests::test_node_spec_with_cache_policy ... ok [INFO] [stdout] test graph::state::tests::test_node_spec_defer ... ok [INFO] [stdout] test graph::state::tests::test_interrupt_before ... ok [INFO] [stdout] test graph::state::tests::test_recursion_limit_exceeded ... ok [INFO] [stdout] test graph::state::tests::test_schema_accessors ... ok [INFO] [stdout] test graph::state::tests::test_interrupt_no_interrupt_normal_flow ... ok [INFO] [stdout] test graph::state::tests::test_linear_graph ... ok [INFO] [stdout] test graph::state::tests::test_send_fan_out_to_worker ... ok [INFO] [stdout] test graph::state::tests::test_send_with_different_inputs ... ok [INFO] [stdout] test graph::state::tests::test_interrupt_resume_with_update ... ok [INFO] [stdout] test graph::state::tests::test_send_map_reduce ... ok [INFO] [stdout] test graph::state::tests::test_stream_values_mode ... ok [INFO] [stdout] test graph::state::tests::test_stream_updates_mode ... ok [INFO] [stdout] test graph::state::tests::test_set_conditional_entry_point ... ok [INFO] [stdout] test graph::state::tests::test_single_node_graph ... ok [INFO] [stdout] test graph::state::tests::test_stream_debug_mode ... ok [INFO] [stdout] test graph::state::tests::test_stream_conditional_routing ... ok [INFO] [stdout] test graph::state::tests::test_stream_two_node_graph ... ok [INFO] [stdout] test graph::state::tests::test_subgraph_simple ... ok [INFO] [stdout] test graph::state::tests::test_subgraph_in_conditional_branch ... ok [INFO] [stdout] test graph::state::tests::test_subgraph_state_passthrough ... ok [INFO] [stdout] test graph::state::tests::time_travel::test_get_state_history_empty_for_unknown_thread ... ok [INFO] [stdout] test graph::state_machine::tests::builder_chaining_preserves_order ... ok [INFO] [stdout] test graph::state::tests::time_travel::test_replay_from_nonexistent_checkpoint_fails ... ok [INFO] [stdout] test graph::state::tests::time_travel::test_get_state_history_lists_all_checkpoints ... ok [INFO] [stdout] test graph::state::tests::test_sync_node_action ... ok [INFO] [stdout] test graph::state_machine::tests::builder_run_through ... ok [INFO] [stdout] test graph::state_machine::tests::history_new_empty ... ok [INFO] [stdout] test graph::state_machine::tests::history_path ... ok [INFO] [stdout] test graph::state_machine::tests::history_path_empty ... ok [INFO] [stdout] test graph::state::tests::time_travel::test_fork_from_nonexistent_checkpoint_fails ... ok [INFO] [stdout] test graph::state_machine::tests::history_record_and_retrieve ... ok [INFO] [stdout] test graph::state_machine::tests::builder_empty_initial_error ... ok [INFO] [stdout] test graph::state::tests::time_travel::test_fork_creates_independent_thread ... ok [INFO] [stdout] test graph::state::tests::time_travel::test_replay_from_checkpoint ... ok [INFO] [stdout] test graph::state_machine::tests::builder_guarded_transition ... ok [INFO] [stdout] test graph::state_machine::tests::history_multiple_records ... ok [INFO] [stdout] test graph::state_machine::tests::machine_add_final_state ... ok [INFO] [stdout] test graph::state_machine::tests::history_to_json ... ok [INFO] [stdout] test graph::state_machine::tests::machine_debug_format ... ok [INFO] [stdout] test graph::state_machine::tests::machine_add_state ... ok [INFO] [stdout] test graph::state_machine::tests::machine_is_finished_false ... ok [INFO] [stdout] test graph::state_machine::tests::machine_new_sets_initial ... ok [INFO] [stdout] test graph::state_machine::tests::machine_is_finished_true ... ok [INFO] [stdout] test graph::state_machine::tests::machine_no_transitions_at_all ... ok [INFO] [stdout] test graph::state_machine::tests::machine_run_with_context_mutation ... ok [INFO] [stdout] test graph::state_machine::tests::machine_run_linear ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_executes_action ... ok [INFO] [stdout] test graph::state_machine::tests::machine_run_stops_at_dead_end ... ok [INFO] [stdout] test graph::state_machine::tests::machine_multiple_actions_accumulate ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_first_matching_transition_wins ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_guard_passes ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_invalid_target ... ok [INFO] [stdout] test graph::state_machine::tests::state_id_clone ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_no_transition ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_simple ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_skips_first_guard_fails ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_guard_blocks ... ok [INFO] [stdout] test graph::state_machine::tests::state_id_hash_consistency ... ok [INFO] [stdout] test graph::state_machine::tests::transition_can_transition_no_guard ... ok [INFO] [stdout] test graph::state_machine::tests::state_id_display ... ok [INFO] [stdout] test graph::state_machine::tests::transition_debug_format ... ok [INFO] [stdout] test graph::state_machine::tests::machine_step_already_finished ... ok [INFO] [stdout] test graph::state_machine::tests::transition_record_to_json ... ok [INFO] [stdout] test graph::state_machine::tests::state_id_from_string ... ok [INFO] [stdout] test graph::state_machine::tests::state_id_creation ... ok [INFO] [stdout] test graph::state_machine::tests::transition_with_action ... ok [INFO] [stdout] test graph::state::tests::test_state_merging ... ok [INFO] [stdout] test graph::state_machine::tests::builder_simple ... ok [INFO] [stdout] test graph::state_machine::tests::history_step_increments ... ok [INFO] [stdout] test graph::state_machine::tests::machine_reset ... ok [INFO] [stdout] test graph::state_machine::tests::machine_run_already_at_final ... ok [INFO] [stdout] test graph::state_machine::tests::state_id_equality ... ok [INFO] [stdout] test graph::state_machine::tests::machine_run_guard_driven ... ok [INFO] [stdout] test graph::state_machine::tests::transition_guard_and_action_combined ... ok [INFO] [stdout] test graph::state_machine::tests::transition_new ... ok [INFO] [stdout] test graph::state_machine::tests::machine_reset_after_run ... ok [INFO] [stdout] test graph::state_machine::tests::transition_with_guard_pass ... ok [INFO] [stdout] test graph::state_machine::tests::validator_all_reachable_complex ... ok [INFO] [stdout] test graph::state_machine::tests::transition_with_guard_fail ... ok [INFO] [stdout] test graph::state_machine::tests::validator_unreachable_state ... ok [INFO] [stdout] test graph::state_machine::tests::validator_multiple_errors ... ok [INFO] [stdout] test graph::stream_events::tests::test_event_collector_success ... ok [INFO] [stdout] test graph::stream_events::tests::test_conditional_graph_takes_branch_a ... ok [INFO] [stdout] test graph::stream_events::tests::test_state_updates_reflect_changes ... ok [INFO] [stdout] test graph::stream_events::tests::test_node_error_event ... ok [INFO] [stdout] test graph::state_machine::tests::validator_valid_machine ... ok [INFO] [stdout] test graph::stream_events::tests::test_node_start_end_pairs ... ok [INFO] [stdout] test graph::stream_events::tests::test_graph_start_end_wrap_node_events ... ok [INFO] [stdout] test graph::stream_writer::tests::test_chunk_serialization ... ok [INFO] [stdout] test graph::stream_events::tests::test_event_collector_propagates_error ... ok [INFO] [stdout] test graph::stream_events::tests::test_linear_graph_event_sequence ... ok [INFO] [stdout] test graph::stream_writer::tests::test_cloned_writer_sees_close ... ok [INFO] [stdout] test graph::stream_writer::tests::test_close_marks_closed ... ok [INFO] [stdout] test graph::stream_events::tests::test_multi_node_event_ordering ... ok [INFO] [stdout] test graph::state_machine::tests::validator_no_final_state ... ok [INFO] [stdout] test graph::state_machine::tests::validator_transition_to_unknown_state ... ok [INFO] [stdout] test graph::stream_writer::tests::test_collector_add_chunk ... ok [INFO] [stdout] test graph::stream_writer::tests::test_collector_get_final_state ... ok [INFO] [stdout] test graph::stream_writer::tests::test_collector_no_values_chunks ... ok [INFO] [stdout] test graph::stream_writer::tests::test_collector_get_node_outputs ... ok [INFO] [stdout] test graph::stream_writer::tests::test_filter_by_mode ... ok [INFO] [stdout] test graph::stream_writer::tests::test_collector_new_empty ... ok [INFO] [stdout] test graph::stream_writer::tests::test_collector_get_chunks_by_step ... ok [INFO] [stdout] test graph::stream_writer::tests::test_collector_integration ... ok [INFO] [stdout] test graph::stream_writer::tests::test_filter_by_node ... ok [INFO] [stdout] test graph::stream_writer::tests::test_reader_as_stream ... ok [INFO] [stdout] test graph::stream_writer::tests::test_filter_yields_empty_when_no_match ... ok [INFO] [stdout] test graph::stream_writer::tests::test_write_after_close_errors ... ok [INFO] [stdout] test graph::stream_writer::tests::test_write_and_read_single_chunk ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_execution_order ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_from_collector ... ok [INFO] [stdout] test graph::stream_writer::tests::test_write_update_convenience ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_ignores_irrelevant_types ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_new ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_process_node_output ... ok [INFO] [stdout] test graph::stream_writer::tests::test_multiple_chunks_order ... ok [INFO] [stdout] test graph::stream_writer::tests::test_write_value_convenience ... ok [INFO] [stdout] test graph::stream_writer::tests::test_reader_terminates_on_writer_drop ... ok [INFO] [stdout] test graph::stream_writer::tests::test_reader_sees_writer_closed ... ok [INFO] [stdout] test graph::stream_writer::tests::test_writer_clone_sends_to_same_channel ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_process_state_update ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_default ... ok [INFO] [stdout] test graph::streaming::tests::test_chunk_type_display ... ok [INFO] [stdout] test graph::streaming::tests::test_aggregator_to_json ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_clear ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_chunks_for_node ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_default ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_filter_replay_integration ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_new_is_empty ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_latest_state ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_push_assigns_sequence ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_by_type ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_by_node_and_type ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_by_node ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_default ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_exclude_multiple_types ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_multiple_nodes ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_errors ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_no_criteria_passes_all ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_default ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_errors_empty ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_record_counts ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_no_duration_without_start ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_to_json ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_from_collector ... ok [INFO] [stdout] test graph::streaming::tests::test_replay_empty ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_total_duration ... ok [INFO] [stdout] test graph::streaming::tests::test_filter_exclude_type ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_node_durations ... ok [INFO] [stdout] test graph::streaming::tests::test_metrics_new ... ok [INFO] [stdout] test graph::streaming::tests::test_replay_basic ... ok [INFO] [stdout] test graph::streaming::tests::test_replay_peek ... ok [INFO] [stdout] test graph::streaming::tests::test_replay_reset ... ok [INFO] [stdout] test graph::streaming::tests::test_replay_skip_to_node ... ok [INFO] [stdout] test graph::streaming::tests::test_replay_skip_to_node_not_found ... ok [INFO] [stdout] test graph::streaming::tests::test_stream_chunk_new ... ok [INFO] [stdout] test graph::streaming::tests::test_stream_chunk_to_json ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_latest_state_none ... ok [INFO] [stdout] test graph::streaming::tests::test_collector_node_ids ... ok [INFO] [stdout] test graph::streaming::tests::test_stream_mode_display ... ok [INFO] [stdout] test graph::streaming::tests::test_stream_mode_equality ... ok [INFO] [stdout] test graph::streaming::tests::test_stream_mode_name ... ok [INFO] [stdout] test graph::streaming::tests::test_stream_mode_to_json ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_by_node ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_by_node_and_type ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_empty_matches_nothing ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_subscribed_nodes ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_by_type ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_subscribed_types ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_with_collector ... ok [INFO] [stdout] test graph::subgraph::tests::test_builder_fluent_api ... ok [INFO] [stdout] test graph::subgraph::tests::test_builder_minimal ... ok [INFO] [stdout] test graph::subgraph::tests::test_builder_missing_graph_fn_errors ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_depth_leaf ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_depth_three_levels ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_depth_two_levels ... ok [INFO] [stdout] test graph::subgraph::tests::test_add_subgraph_with_mapping_convenience ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_error_propagation ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_execute_chain ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_flatten ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_multiple_children ... ok [INFO] [stdout] test graph::subgraph::tests::test_registry_register_and_get ... ok [INFO] [stdout] test graph::subgraph::tests::test_registry_new_is_empty ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_apply_input_empty_passthrough ... ok [INFO] [stdout] test graph::subgraph::tests::test_simple_subgraph_transforms_value ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_apply_input_missing_keys ... ok [INFO] [stdout] test graph::subgraph::tests::test_nested_subgraphs ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_isolation ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_apply_output_basic ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_apply_input_basic ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_apply_output_empty_merges_all ... ok [INFO] [stdout] test graph::subgraph::tests::test_registry_remove_nonexistent ... ok [INFO] [stdout] test graph::subgraph::tests::test_registry_list ... ok [INFO] [stdout] test graph::subgraph::tests::test_registry_remove ... ok [INFO] [stdout] test graph::subgraph::tests::test_registry_replace_existing ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_apply_output_overwrites_existing ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_new_is_empty ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_config_defaults ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_config_builder_pattern ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_identity ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_node_execute_error_propagation ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_in_pipeline ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_node_empty_state ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_node_execute_passthrough ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_node_name ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_identity_apply_roundtrip ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_with_input_output_mapping ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_node_execute_with_mappings ... ok [INFO] [stdout] test graph::subgraph::tests::test_subgraph_node_with_namespace ... ok [INFO] [stdout] test graph::time_travel::tests::test_empty_checkpoint_list_for_new_thread ... ok [INFO] [stdout] test graph::time_travel::tests::test_fork_creates_new_thread ... ok [INFO] [stdout] test graph::time_travel::tests::test_replay_from_latest_checkpoint ... ok [INFO] [stdout] test graph::ui::tests::test_reducer_append ... ok [INFO] [stdout] test graph::time_travel::tests::test_fork_with_modified_state_produces_different_result ... ok [INFO] [stdout] test graph::time_travel::tests::test_replay_from_middle_checkpoint ... ok [INFO] [stdout] test graph::ui::tests::test_any_ui_message_serde ... ok [INFO] [stdout] test graph::time_travel::tests::test_time_travel_with_multi_node_graph ... ok [INFO] [stdout] test graph::time_travel::tests::test_get_state_at_specific_checkpoint ... ok [INFO] [stdout] test graph::ui::tests::test_reducer_merge_props ... ok [INFO] [stdout] test graph::ui::tests::test_reducer_remove_by_id ... ok [INFO] [stdout] test graph::ui::tests::test_reducer_remove_nonexistent_errors ... ok [INFO] [stdout] test graph::ui::tests::test_reducer_replace_by_id ... ok [INFO] [stdout] test graph::time_travel::tests::test_list_checkpoints_after_execution ... ok [INFO] [stdout] test graph::ui::tests::test_remove_ui_message_new ... ok [INFO] [stdout] test graph::validation::tests::test_cache_clear ... ok [INFO] [stdout] test graph::validation::tests::test_cache_len ... ok [INFO] [stdout] test graph::validation::tests::test_cache_invalidate ... ok [INFO] [stdout] test graph::validation::tests::test_cache_overwrite ... ok [INFO] [stdout] test graph::validation::tests::test_cache_store_and_get ... ok [INFO] [stdout] test graph::validation::tests::test_gv_all_reachable ... ok [INFO] [stdout] test graph::validation::tests::test_gv_empty_graph ... ok [INFO] [stdout] test graph::validation::tests::test_gv_dangling_edge_target ... ok [INFO] [stdout] test graph::validation::tests::test_gv_dangling_edge_source ... ok [INFO] [stdout] test graph::ui::tests::test_ui_message_new ... ok [INFO] [stdout] test graph::validation::tests::test_gv_invalid_entry ... ok [INFO] [stdout] test graph::validation::tests::test_gv_missing_finish ... ok [INFO] [stdout] test graph::validation::tests::test_gv_self_loop ... ok [INFO] [stdout] test graph::validation::tests::test_gv_duplicate_edges ... ok [INFO] [stdout] test graph::validation::tests::test_gv_missing_entry ... ok [INFO] [stdout] test graph::validation::tests::test_gv_linear_chain ... ok [INFO] [stdout] test graph::validation::tests::test_gv_invalid_finish ... ok [INFO] [stdout] test graph::validation::tests::test_issue_builder_chain ... ok [INFO] [stdout] test graph::validation::tests::test_gv_orphan_node ... ok [INFO] [stdout] test graph::validation::tests::test_issue_display_basic ... ok [INFO] [stdout] test graph::validation::tests::test_issue_display_with_suggestion ... ok [INFO] [stdout] test graph::validation::tests::test_gv_unreachable_node ... ok [INFO] [stdout] test graph::validation::tests::test_gv_multiple_issues ... ok [INFO] [stdout] test graph::validation::tests::test_issue_for_node ... ok [INFO] [stdout] test graph::validation::tests::test_issue_display_with_node ... ok [INFO] [stdout] test graph::validation::tests::test_issue_new ... ok [INFO] [stdout] test graph::validation::tests::test_issue_to_json ... ok [INFO] [stdout] test graph::validation::tests::test_issue_with_suggestion ... ok [INFO] [stdout] test graph::validation::tests::test_issue_to_json_minimal ... ok [INFO] [stdout] test graph::validation::tests::test_level_severity_values ... ok [INFO] [stdout] test graph::validation::tests::test_gv_valid_simple_graph ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_cycles_false ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_cycles_self_loop ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_cycles_no_edges ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_entry_false ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_entry_true ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_finish_false ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_finish_true ... ok [INFO] [stdout] test graph::validation::tests::test_qc_is_connected_empty ... ok [INFO] [stdout] test graph::validation::tests::test_level_severity_ordering ... ok [INFO] [stdout] test graph::validation::tests::test_qc_is_connected_false ... ok [INFO] [stdout] test graph::validation::tests::test_qc_is_connected_single_node ... ok [INFO] [stdout] test graph::validation::tests::test_report_display ... ok [INFO] [stdout] test graph::validation::tests::test_report_errors_filter ... ok [INFO] [stdout] test graph::validation::tests::test_level_equality ... ok [INFO] [stdout] test graph::validation::tests::test_report_add_issue ... ok [INFO] [stdout] test graph::validation::tests::test_qc_is_connected_true ... ok [INFO] [stdout] test graph::validation::tests::test_level_display ... ok [INFO] [stdout] test graph::validation::tests::test_qc_has_cycles_true ... ok [INFO] [stdout] test graph::validation::tests::test_report_issues_accessor ... ok [INFO] [stdout] test graph::validation::tests::test_report_summary_with_errors ... ok [INFO] [stdout] test graph::validation::tests::test_report_summary_with_warnings_only ... ok [INFO] [stdout] test graph::validation::tests::test_report_to_json ... ok [INFO] [stdout] test graph::validation::tests::test_schema_validator_compatible ... ok [INFO] [stdout] test graph::validation::tests::test_schema_validator_no_schemas ... ok [INFO] [stdout] test graph::validation::tests::test_schema_validator_node_count ... ok [INFO] [stdout] test graph::validation::tests::test_report_has_warnings ... ok [INFO] [stdout] test graph::validation::tests::test_schema_validator_missing_source_schema ... ok [INFO] [stdout] test graph::validation::tests::test_schema_validator_mismatch ... ok [INFO] [stdout] test graph::validation::tests::test_state_multiple_rules_all_pass ... ok [INFO] [stdout] test graph::validation::tests::test_state_multiple_rules_multiple_fail ... ok [INFO] [stdout] test graph::validation::tests::test_report_new_is_valid ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_immutable_key_fail ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_custom ... ok [INFO] [stdout] test graph::validation::tests::test_schema_validator_missing_target_schema ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_immutable_key_missing_in_from ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_immutable_key_pass ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_required_key_non_object_state ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_required_key_pass ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_to_json ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_type_constraint_pass ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_type_constraint_key_absent ... ok [INFO] [stdout] test graph::validation::tests::test_state_validator_rule_count ... ok [INFO] [stdout] test graph::validator::tests::test_conditional_edges_empty_targets_warning ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_name ... ok [INFO] [stdout] test graph::validator::tests::test_conditional_edges_invalid_source ... ok [INFO] [stdout] test graph::validator::tests::test_conditional_edges_invalid_target ... ok [INFO] [stdout] test graph::validator::tests::test_conditional_edges_end_target_valid ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_required_key_fail ... ok [INFO] [stdout] test graph::validator::tests::test_conditional_edges_valid ... ok [INFO] [stdout] test graph::validation::tests::test_state_rule_type_constraint_fail ... ok [INFO] [stdout] test graph::validator::tests::test_connectivity_all_reachable ... ok [INFO] [stdout] test graph::validator::tests::test_connectivity_unreachable_node ... ok [INFO] [stdout] test graph::validation::tests::test_report_summary_empty ... ok [INFO] [stdout] test graph::streaming::tests::test_chunk_type_name ... ok [INFO] [stdout] test graph::streaming::tests::test_subscription_default ... ok [INFO] [stdout] test graph::validator::tests::test_cycle_detector_self_loop ... ok [INFO] [stdout] test graph::validator::tests::test_cycle_detector_no_cycle ... ok [INFO] [stdout] test graph::validator::tests::test_cycle_detector_with_cycle ... ok [INFO] [stdout] test graph::validator::tests::test_edges_missing_source ... ok [INFO] [stdout] test graph::validator::tests::test_dead_end_nodes ... ok [INFO] [stdout] test graph::validator::tests::test_edges_valid ... ok [INFO] [stdout] test graph::validator::tests::test_edges_missing_target ... ok [INFO] [stdout] test graph::validator::tests::test_no_cycles_acyclic ... ok [INFO] [stdout] test graph::validator::tests::test_no_cycles_with_cycle ... ok [INFO] [stdout] test graph::state::tests::test_cannot_add_end_node - should panic ... ok [INFO] [stdout] test graph::validator::tests::test_node_names_duplicate ... ok [INFO] [stdout] test graph::state::tests::test_cannot_add_start_node - should panic ... ok [INFO] [stdout] test graph::validator::tests::test_node_names_empty ... ok [INFO] [stdout] test graph::validator::tests::test_node_names_reserved ... ok [INFO] [stdout] test graph::validator::tests::test_node_names_valid ... ok [INFO] [stdout] test graph::validator::tests::test_reachability_unreachable ... ok [INFO] [stdout] test graph::validator::tests::test_termination_all_reach_end ... ok [INFO] [stdout] test graph::validator::tests::test_termination_dead_end ... ok [INFO] [stdout] test graph::validator::tests::test_validate_all_invalid_entry_point ... ok [INFO] [stdout] test graph::validator::tests::test_validate_all_valid_simple_graph ... ok [INFO] [stdout] test graph::validator::tests::test_validate_all_with_invalid_conditional_target ... ok [INFO] [stdout] test graph::validator::tests::test_validation_result_display ... ok [INFO] [stdout] test graph::validator::tests::test_validate_all_with_conditional_edges ... ok [INFO] [stdout] test graph::validator::tests::test_validation_result_is_valid_when_empty ... ok [INFO] [stdout] test graph::validator::tests::test_validation_result_merge ... ok [INFO] [stdout] test graph::versioning::tests::test_backward_compatible_additions ... ok [INFO] [stdout] test graph::versioning::tests::test_compatibility_added_nodes_incompatible ... ok [INFO] [stdout] test graph::versioning::tests::test_compatibility_edge_change_compatible ... ok [INFO] [stdout] test graph::versioning::tests::test_compatibility_entry_point_changed ... ok [INFO] [stdout] test graph::versioning::tests::test_compatibility_removed_nodes_incompatible ... ok [INFO] [stdout] test graph::validator::tests::test_reachability_simple ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_apply_output_missing_child_key ... ok [INFO] [stdout] test graph::versioning::tests::test_compatibility_versioned ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_any ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_compatible ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_display ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_display_compatible ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_display_range ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_exact ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_greater_or_equal ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_less_than ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_parse_any ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_parse_compatible ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_parse_exact ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_parse_gte ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_parse_invalid_range ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_parse_lt ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_parse_range ... ok [INFO] [stdout] test graph::versioning::tests::test_constraint_range ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_entry_point_unchanged ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_entry_point_changed ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_identical ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_edges_added ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_summary_no_changes ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_interrupt_changed ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_edges_removed ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_serialize ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_modified_node_edges ... ok [INFO] [stdout] test graph::versioning::tests::test_history_diff_version_not_found ... ok [INFO] [stdout] test graph::versioning::tests::test_history_diff_versions ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_summary_entry_point_change ... ok [INFO] [stdout] test graph::versioning::tests::test_history_empty_latest ... ok [INFO] [stdout] test graph::versioning::tests::test_history_add_version ... ok [INFO] [stdout] test graph::versioning::tests::test_history_list_versions ... ok [INFO] [stdout] test graph::versioning::tests::test_migration_step_debug ... ok [INFO] [stdout] test graph::versioning::tests::test_migration_step_error_propagation ... ok [INFO] [stdout] test graph::versioning::tests::test_history_latest ... ok [INFO] [stdout] test graph::versioning::tests::test_history_json_round_trip ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_default ... ok [INFO] [stdout] test graph::versioning::tests::test_history_new ... ok [INFO] [stdout] test graph::versioning::tests::test_migration_step_identity ... ok [INFO] [stdout] test graph::versioning::tests::test_migration_step_transform ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_list_steps ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_has_path ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_multi_step ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_no_path ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_same_version ... ok [INFO] [stdout] test graph::versioning::tests::test_version_bump_minor ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_single_step ... ok [INFO] [stdout] test graph::versioning::tests::test_pipeline_three_step_chain ... ok [INFO] [stdout] test graph::versioning::tests::test_version_bump_major ... ok [INFO] [stdout] test graph::versioning::tests::test_version_compatible ... ok [INFO] [stdout] test graph::versioning::tests::test_version_hash ... ok [INFO] [stdout] test graph::versioning::tests::test_version_display ... ok [INFO] [stdout] test graph::versioning::tests::test_version_equality ... ok [INFO] [stdout] test graph::versioning::tests::test_not_backward_compatible_removals ... ok [INFO] [stdout] test graph::versioning::tests::test_version_new ... ok [INFO] [stdout] test graph::versioning::tests::test_version_parse ... ok [INFO] [stdout] test graph::versioning::tests::test_version_ordering ... ok [INFO] [stdout] test graph::versioning::tests::test_not_backward_compatible_entry_change ... ok [INFO] [stdout] test graph::versioning::tests::test_version_ordering_patch ... ok [INFO] [stdout] test graph::versioning::tests::test_version_parse_invalid ... ok [INFO] [stdout] test graph::versioning::tests::test_versioned_graph_new ... ok [INFO] [stdout] test graph::versioning::tests::test_versioned_graph_with_description ... ok [INFO] [stdout] test graph::versioning::tests::test_versioned_graph_with_timestamp ... ok [INFO] [stdout] test graph::versioning::tests::test_version_zero ... ok [INFO] [stdout] test graph::versioning::tests::test_version_serialize ... ok [INFO] [stdout] test managed::base::tests::test_is_managed_value ... ok [INFO] [stdout] test graph::versioning::tests::test_versioned_graph_json_round_trip ... ok [INFO] [stdout] test managed::base::tests::test_managed_value_mapping ... ok [INFO] [stdout] test managed::base::tests::test_managed_value_spec_eq_hash ... ok [INFO] [stdout] test managed::base::tests::test_pregel_scratchpad_new ... ok [INFO] [stdout] test managed::base::tests::test_scratchpad_resume ... ok [INFO] [stdout] test managed::base::tests::test_managed_value_spec_resolve_is_last_step ... ok [INFO] [stdout] test managed::base::tests::test_scratchpad_counters ... ok [INFO] [stdout] test managed::base::tests::test_managed_value_spec_resolve_remaining_steps ... ok [INFO] [stdout] test managed::is_last_step::tests::test_is_last_step_single_step ... ok [INFO] [stdout] test managed::is_last_step::tests::test_is_last_step_true ... ok [INFO] [stdout] test managed::is_last_step::tests::test_remaining_steps_at_last ... ok [INFO] [stdout] test managed::is_last_step::tests::test_remaining_steps_at_start ... ok [INFO] [stdout] test managed::is_last_step::tests::test_is_last_step_and_remaining_consistency ... ok [INFO] [stdout] test managed::is_last_step::tests::test_is_last_step_false ... ok [INFO] [stdout] test managed::is_last_step::tests::test_remaining_steps_at_stop ... ok [INFO] [stdout] test managed::is_last_step::tests::test_is_last_step_zero_stop ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_accumulator_push_get_all ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_counter_decrement_saturates ... ok [INFO] [stdout] test managed::is_last_step::tests::test_remaining_steps_basic ... ok [INFO] [stdout] test managed::is_last_step::tests::test_remaining_steps_saturating ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_counter_increment_decrement ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_accumulator_drain ... ok [INFO] [stdout] test graph::versioning::tests::test_version_bump_patch ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_value_get_set ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_counter_reset ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_value_has_changed_since ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_map_get_set_remove ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_value_on_change_callback ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_value_read_only ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_value_update ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_map_merge ... ok [INFO] [stdout] test managed::shared_value::tests::test_value_history_tracking ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_value_versioning ... ok [INFO] [stdout] test managed::shared_value::tests::test_value_history_get_at_version ... ok [INFO] [stdout] test managed::shared_value::tests::test_value_history_diff_versions ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_add_message ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_is_over_limit_at_boundary ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_value_concurrent_access ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_add_multiple_messages ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_is_over_limit_beyond ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_add_tool_call ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_is_over_limit_false ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_clone ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_mark_finished ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_to_json ... ok [INFO] [stdout] test prebuilt::agents::tests::config_builder_chained ... ok [INFO] [stdout] test prebuilt::agents::tests::config_builder_all_options ... ok [INFO] [stdout] test prebuilt::agents::tests::agent_state_new_defaults ... ok [INFO] [stdout] test prebuilt::agents::tests::config_builder_default_matches_config_default ... ok [INFO] [stdout] test managed::shared_value::tests::test_shared_counter_concurrent ... ok [INFO] [stdout] test prebuilt::agents::tests::config_builder_system_message ... ok [INFO] [stdout] test prebuilt::agents::tests::create_react_agent_returns_agent ... ok [INFO] [stdout] test prebuilt::agents::tests::create_tool_node_empty_vec ... ok [INFO] [stdout] test prebuilt::agents::tests::create_tool_node_returns_functional_node ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_available_tools ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_config_accessor ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_all_tools_fail ... ok [INFO] [stdout] test prebuilt::agents::tests::config_builder_tool_choice ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_debug ... ok [INFO] [stdout] test prebuilt::agents::tests::config_default_values ... ok [INFO] [stdout] test prebuilt::agents::tests::config_builder_max_iterations ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_invoke_empty_input ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_invoke_no_tools_finishes_immediately ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_invoke_plain_object_input ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_iteration_count_after_tool_execution ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_max_iteration_limit ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_system_message_plus_tool_calls ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_invoke_with_system_message ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_tool_call_with_unknown_tool ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_invoke_with_tool_calls ... ok [INFO] [stdout] test prebuilt::agents::tests::react_agent_zero_max_iterations ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_call_clone ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_call_to_json_resolved ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_call_new_is_unresolved ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_auto_as_str ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_clone ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_call_with_result_is_resolved ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_display ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_equality ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_default_is_auto ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_call_to_json_unresolved ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_none_as_str ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_required_as_str ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_call_arguments_preserved ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_definition_complex_handler ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_definition_creation ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_definition_execute_error ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_definition_execute_success ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_definition_null_input ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_choice_specific_as_str ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_adds_tool_messages ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_debug ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_execute_with_complex_result ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_handler_error_produces_error_result ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_empty ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_execute_resolves_calls ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_multiple_calls ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_skips_resolved_calls ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_mixed_resolved_unresolved ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_unknown_tool_produces_error ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_config_defaults ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_agent_step_construction ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_builder_style ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_node_tool_names ... ok [INFO] [stdout] test graph::subgraph::tests::test_state_mapping_map_adds_entries ... ok [INFO] [stdout] test graph::versioning::tests::test_compatibility_same_graph ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_conditional_edges_changed ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_summary_with_changes ... ok [INFO] [stdout] test graph::versioning::tests::test_history_changelog ... ok [INFO] [stdout] test graph::versioning::tests::test_history_get_version ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_removed_nodes ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_added_nodes ... ok [INFO] [stdout] test prebuilt::agents::tests::tool_definition_debug ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_state_initialization ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_empty_messages ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_event_types ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_max_iterations_limit ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_stream_with_tools ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_system_message_injection ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_response_structure ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_multiple_tools ... ok [INFO] [stdout] test graph::versioning::tests::test_diff_is_empty_false ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_system_message_not_duplicated ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_chat_agent_without_tools_direct_response ... ok [INFO] [stdout] test prebuilt::chat_agent::tests::test_create_chat_agent_with_config ... ok [INFO] [stdout] test prebuilt::tool_agent::tests::test_tool_agent_creation_compiles ... ok [INFO] [stdout] test prebuilt::react_agent::tests::test_create_react_agent_compiles ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_channels_from_checkpoint ... ok [INFO] [stdout] test prebuilt::react_agent::tests::test_react_agent_simple_response ... ok [INFO] [stdout] test prebuilt::tool_agent::tests::test_tool_agent_simple_response ... ok [INFO] [stdout] test prebuilt::tool_agent::tests::test_tool_agent_with_system_prompt ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_empty_checkpoint ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_create_checkpoint_without_channels ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_in_memory_saver_get_empty ... ok [INFO] [stdout] test prebuilt::react_agent::tests::test_react_agent_multiple_tools ... ok [INFO] [stdout] test prebuilt::react_agent::tests::test_react_agent_with_tool_call ... ok [INFO] [stdout] test prebuilt::tool_agent::tests::test_tool_agent_tool_call_loop ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_copy_checkpoint ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_checkpoint_metadata_serialization ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_create_checkpoint_with_updated_channels ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_in_memory_saver_get_tuple ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_in_memory_saver_put_and_get ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_create_checkpoint_with_explicit_id ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_checkpoint_serialization_roundtrip ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_in_memory_saver_put_writes_not_found ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_in_memory_saver_put_writes ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_in_memory_saver_list ... ok [INFO] [stdout] test pregel::executor::tests::test_diamond_superstep_structure ... ok [INFO] [stdout] test pregel::executor::tests::test_empty_executor ... ok [INFO] [stdout] test pregel::executor::tests::test_empty_executor_execute ... ok [INFO] [stdout] test pregel::executor::tests::test_dependency_on_nonexistent_node ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_node_builder ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_config_defaults ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_node_debug ... ok [INFO] [stdout] test pregel::executor::tests::test_deep_chain_10_nodes ... ok [INFO] [stdout] test pregel::executor::tests::test_diamond_a_bc_d ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_result_from_run ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_result_to_json ... ok [INFO] [stdout] test pregel::checkpoint::tests::test_create_checkpoint_with_channels ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_node_no_deps ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_trace_add_step ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_trace_to_json ... ok [INFO] [stdout] test pregel::executor::tests::test_executor_is_not_empty_after_add ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_trace_new ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_trace_from_execution ... ok [INFO] [stdout] test pregel::executor::tests::test_halt_on_error_false_continues ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_config_default_trait ... ok [INFO] [stdout] test pregel::executor::tests::test_execution_config_builder ... ok [INFO] [stdout] test pregel::executor::tests::test_circular_dependency_does_not_hang ... ok [INFO] [stdout] test pregel::executor::tests::test_halt_on_error_true ... ok [INFO] [stdout] test pregel::executor::tests::test_linear_chain_a_b_c ... ok [INFO] [stdout] test pregel::executor::tests::test_max_supersteps_zero ... ok [INFO] [stdout] test pregel::executor::tests::test_linear_chain_order ... ok [INFO] [stdout] test pregel::executor::tests::test_node_retry_exhausted ... ok [INFO] [stdout] test pregel::executor::tests::test_max_supersteps_limit ... ok [INFO] [stdout] test pregel::executor::tests::test_node_returns_non_object ... ok [INFO] [stdout] test pregel::executor::tests::test_partial_cycle_with_valid_nodes ... ok [INFO] [stdout] test pregel::executor::tests::test_parallel_nodes_same_superstep ... ok [INFO] [stdout] test pregel::executor::tests::test_halt_on_error_false_dependent_sees_error ... ok [INFO] [stdout] test pregel::executor::tests::test_pregel_executor_debug ... ok [INFO] [stdout] test pregel::executor::tests::test_single_node_execution ... ok [INFO] [stdout] test pregel::executor::tests::test_retry_zero_means_single_attempt ... ok [INFO] [stdout] test pregel::executor::tests::test_single_node_reads_state ... ok [INFO] [stdout] test pregel::executor::tests::test_three_node_cycle ... ok [INFO] [stdout] test pregel::executor::tests::test_multiple_nodes_write_different_keys ... ok [INFO] [stdout] test pregel::executor::tests::test_node_overwrites_state_key ... ok [INFO] [stdout] test pregel::executor::tests::test_superstep_messages_populated ... ok [INFO] [stdout] test pregel::executor::tests::test_replace_node_with_same_name ... ok [INFO] [stdout] test pregel::executor::tests::test_node_retry_succeeds_on_second_attempt ... ok [INFO] [stdout] test pregel::executor::tests::test_superstep_to_json ... ok [INFO] [stdout] test pregel::executor::tests::test_parallel_independent_nodes ... ok [INFO] [stdout] test pregel::executor::tests::test_wide_fan_out ... ok [INFO] [stdout] test pregel::io::tests::test_map_command_goto_node ... ok [INFO] [stdout] test pregel::io::tests::test_map_command_with_resume ... ok [INFO] [stdout] test pregel::io::tests::test_map_command_with_update ... ok [INFO] [stdout] test pregel::io::tests::test_map_input_multiple_channels_non_object ... ok [INFO] [stdout] test pregel::io::tests::test_map_input_multiple_channels ... ok [INFO] [stdout] test pregel::io::tests::test_map_input_single_channel ... ok [INFO] [stdout] test pregel::io::tests::test_map_output_updates_empty ... ok [INFO] [stdout] test pregel::io::tests::test_map_output_updates_all_null ... ok [INFO] [stdout] test pregel::io::tests::test_map_output_updates_multiple_channels ... ok [INFO] [stdout] test pregel::io::tests::test_map_output_values_single_channel ... ok [INFO] [stdout] test pregel::io::tests::test_read_channel_empty_catch ... ok [INFO] [stdout] test pregel::io::tests::test_map_output_values_no_matching_writes ... ok [INFO] [stdout] test pregel::io::tests::test_map_output_updates_single_channel ... ok [INFO] [stdout] test pregel::io::tests::test_read_channel_missing_catch ... ok [INFO] [stdout] test pregel::io::tests::test_read_channel_available ... ok [INFO] [stdout] test pregel::io::tests::test_map_input_none ... ok [INFO] [stdout] test pregel::read::tests::test_convenience_read_channel_values ... ok [INFO] [stdout] test pregel::io::tests::test_read_channels_multiple ... ok [INFO] [stdout] test pregel::read::tests::test_read_missing_channel_no_skip ... ok [INFO] [stdout] test pregel::io::tests::test_read_channels_as_value_multiple ... ok [INFO] [stdout] test pregel::io::tests::test_read_channels_as_value_single ... ok [INFO] [stdout] test pregel::read::tests::test_read_multiple_channels_some_empty ... ok [INFO] [stdout] test pregel::io::tests::test_read_channel_missing_no_catch ... ok [INFO] [stdout] test pregel::read::tests::test_read_single_channel_empty_no_skip ... ok [INFO] [stdout] test pregel::read::tests::test_read_single_channel ... ok [INFO] [stdout] test pregel::read::tests::test_read_with_mapper_none ... ok [INFO] [stdout] test pregel::retry::tests::test_compute_sleep_duration_capped_at_max ... ok [INFO] [stdout] test pregel::read::tests::test_read_fresh ... ok [INFO] [stdout] test pregel::retry::tests::test_compute_sleep_duration_no_jitter ... ok [INFO] [stdout] test pregel::read::tests::test_convenience_read_channel_value ... ok [INFO] [stdout] test pregel::read::tests::test_read_missing_channel_skip ... ok [INFO] [stdout] test pregel::retry::tests::test_compute_sleep_duration_with_jitter ... ok [INFO] [stdout] test pregel::read::tests::test_read_multiple_channels ... ok [INFO] [stdout] test pregel::read::tests::test_read_with_mapper ... ok [INFO] [stdout] test pregel::scheduler::tests::test_all_nodes_ready ... ok [INFO] [stdout] test pregel::io::tests::test_map_command_parent_error ... ok [INFO] [stdout] test pregel::retry::tests::test_default_retry_policy ... ok [INFO] [stdout] test pregel::read::tests::test_read_single_channel_empty_skip ... ok [INFO] [stdout] test pregel::scheduler::tests::test_circular_deps_handled_gracefully ... ok [INFO] [stdout] test pregel::scheduler::tests::test_custom_strategy_falls_back_to_fifo ... ok [INFO] [stdout] test pregel::scheduler::tests::test_empty_scheduler_next_batch_returns_empty ... ok [INFO] [stdout] test pregel::scheduler::tests::test_is_ready_empty_completed ... ok [INFO] [stdout] test pregel::scheduler::tests::test_dependency_chain ... ok [INFO] [stdout] test pregel::scheduler::tests::test_is_ready_with_deps_unsatisfied ... ok [INFO] [stdout] test pregel::scheduler::tests::test_is_ready_no_deps ... ok [INFO] [stdout] test pregel::scheduler::tests::test_metrics_new ... ok [INFO] [stdout] test pregel::scheduler::tests::test_is_ready_with_deps_satisfied ... ok [INFO] [stdout] test pregel::scheduler::tests::test_empty_scheduler_next_returns_none ... ok [INFO] [stdout] test pregel::scheduler::tests::test_fifo_ordering ... ok [INFO] [stdout] test pregel::scheduler::tests::test_metrics_record ... ok [INFO] [stdout] test pregel::scheduler::tests::test_next_batch_fewer_ready_than_max ... ok [INFO] [stdout] test pregel::scheduler::tests::test_next_batch_parallel ... ok [INFO] [stdout] test pregel::scheduler::tests::test_next_batch_with_dependencies ... ok [INFO] [stdout] test pregel::scheduler::tests::test_no_ready_nodes ... ok [INFO] [stdout] test pregel::scheduler::tests::test_priority_ordering ... ok [INFO] [stdout] test pregel::scheduler::tests::test_priority_scheduling ... ok [INFO] [stdout] test pregel::scheduler::tests::test_priority_equality ... ok [INFO] [stdout] test pregel::scheduler::tests::test_priority_weights ... ok [INFO] [stdout] test pregel::scheduler::tests::test_priority_sort ... ok [INFO] [stdout] test pregel::scheduler::tests::test_reset ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_aware_scheduler_memory_constrained ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_aware_scheduler_basic ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_aware_scheduler_metrics_tracking ... ok [INFO] [stdout] test pregel::retry::tests::test_run_with_retry_does_not_retry_parent_command ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_aware_scheduler_no_slots ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_aware_scheduler_release_and_reschedule ... ok [INFO] [stdout] test pregel::retry::tests::test_run_with_retry_policies_empty_list ... ok [INFO] [stdout] test pregel::retry::tests::test_run_with_retry_succeeds_first_try ... ok [INFO] [stdout] test pregel::retry::tests::test_simple_jitter_range ... ok [INFO] [stdout] test pregel::io::tests::test_map_command_goto_send ... ok [INFO] [stdout] test pregel::scheduler::tests::test_remaining_and_is_empty ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_pool_release_saturating ... ok [INFO] [stdout] test pregel::retry::tests::test_run_with_retry_does_not_retry_graph_interrupt ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_pool_memory_limit ... ok [INFO] [stdout] test pregel::scheduler::tests::test_scheduled_node_builder ... ok [INFO] [stdout] test pregel::scheduler::tests::test_scheduled_node_new ... ok [INFO] [stdout] test pregel::scheduler::tests::test_shortest_job_first ... ok [INFO] [stdout] test pregel::utils::tests::test_is_xxh3_128_hexdigest_valid ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_pool_acquire_release ... ok [INFO] [stdout] test pregel::utils::tests::test_new_versions_empty_previous ... ok [INFO] [stdout] test pregel::scheduler::tests::test_round_robin ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_graph_success ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_input_channel_not_in_channels ... ok [INFO] [stdout] test pregel::utils::tests::test_new_versions_all_same ... ok [INFO] [stdout] test pregel::scheduler::tests::test_resource_pool_utilization ... ok [INFO] [stdout] test pregel::retry::tests::test_run_with_retry_policies_uses_first_matching ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_all_nodes_reachable_dead_end ... ok [INFO] [stdout] test pregel::utils::tests::test_new_versions_filters_old ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_input_channel_not_subscribed ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_interrupt_all_is_ok ... ok [INFO] [stdout] test pregel::utils::tests::test_new_versions_includes_new_channels ... ok [INFO] [stdout] test pregel::utils::tests::test_is_xxh3_128_hexdigest_invalid ... ok [INFO] [stdout] test pregel::io::tests::test_read_channel_empty_no_catch ... ok [INFO] [stdout] test pregel::scheduler::tests::test_metrics_to_json ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_keys_missing ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_interrupt_unknown_node ... ok [INFO] [stdout] test pregel::validate::tests::test_interrupt_spec_none ... ok [INFO] [stdout] test pregel::retry::tests::test_run_with_retry_exhausts_attempts ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_all_nodes_reachable_success ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_output_channel_missing ... ok [INFO] [stdout] test pregel::write::tests::test_assemble_writes ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_keys_success ... ok [INFO] [stdout] test pregel::retry::tests::test_run_with_retry_succeeds_after_failures ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_no_unreachable_nodes_success ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_no_unreachable_nodes_unreachable ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_trigger_unknown_channel ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_stream_channel_missing ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_reserved_node_name ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_reserved_channel_name ... ok [INFO] [stdout] test pregel::validate::tests::test_validate_node_reads_unknown_channel ... ok [INFO] [stdout] test pregel::write::tests::test_assemble_writes_with_output ... ok [INFO] [stdout] test pregel::write::tests::test_channel_write_entry_new ... ok [INFO] [stdout] test pregel::write::tests::test_channel_write_entry_passthrough ... ok [INFO] [stdout] test pregel::write::tests::test_channel_write_entry_resolve_passthrough ... ok [INFO] [stdout] test pregel::write::tests::test_channel_write_entry_resolve_with_value ... ok [INFO] [stdout] test pregel::write::tests::test_writer_add_raw_write ... ok [INFO] [stdout] test pregel::write::tests::test_writer_add_write ... ok [INFO] [stdout] test pregel::write::tests::test_writer_add_writes ... ok [INFO] [stdout] test pregel::write::tests::test_channel_write_entry_resolve_skip_none ... ok [INFO] [stdout] test pregel::write::tests::test_writer_apply_multiple_writes_same_channel ... ok [INFO] [stdout] test pregel::write::tests::test_channel_write_entry_resolve_skip_none_with_value ... ok [INFO] [stdout] test pregel::write::tests::test_writer_apply_reserved_channel ... ok [INFO] [stdout] test runtime::tests::test_runtime_builders ... ok [INFO] [stdout] test runtime::tests::test_runtime_merge ... ok [INFO] [stdout] test runtime::tests::test_runtime_default ... ok [INFO] [stdout] test runtime::tests::test_runtime_merge_preserves_existing ... ok [INFO] [stdout] test utils::config::tests::test_ensure_config_none ... ok [INFO] [stdout] test utils::config::tests::test_ensure_config_some ... ok [INFO] [stdout] test pregel::write::tests::test_writer_apply_success ... ok [INFO] [stdout] test pregel::write::tests::test_writer_apply_unknown_channel ... ok [INFO] [stdout] test pregel::write::tests::test_writer_clear ... ok [INFO] [stdout] test utils::config::tests::test_merge_configs_recursion_limit ... ok [INFO] [stdout] test pregel::write::tests::test_writer_into_writes ... ok [INFO] [stdout] test utils::config::tests::test_runnable_config_builder ... ok [INFO] [stdout] test utils::profiler::tests::test_error_recording ... ok [INFO] [stdout] test utils::profiler::tests::test_disabled_profiler ... ok [INFO] [stdout] test utils::profiler::tests::test_edge_traversal ... ok [INFO] [stdout] test utils::profiler::tests::test_display_trait ... ok [INFO] [stdout] test utils::config::tests::test_merge_configs_configurable ... ok [INFO] [stdout] test pregel::write::tests::test_default_writer ... ok [INFO] [stdout] test utils::config::tests::test_merge_configs_metadata ... ok [INFO] [stdout] test utils::config::tests::test_runnable_config_new ... ok [INFO] [stdout] test utils::profiler::tests::test_report_generation ... ok [INFO] [stdout] test utils::profiler::tests::test_reset_clears_data ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_token_cancel ... ok [INFO] [stdout] test utils::profiler::tests::test_sample_rate_filtering ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_token_clone ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_token_default ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_token_already_cancelled ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_token_initial_state ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_token_reset ... ok [INFO] [stdout] test utils::timeout::tests::test_execution_budget_allocate ... ok [INFO] [stdout] test utils::timeout::tests::test_execution_budget_record_execution ... ok [INFO] [stdout] test utils::config::tests::test_patch_configurable ... ok [INFO] [stdout] test utils::timeout::tests::test_execution_budget_remaining ... ok [INFO] [stdout] test utils::config::tests::test_runnable_config_serialize_deserialize ... ok [INFO] [stdout] test utils::config::tests::test_merge_configs_tags ... ok [INFO] [stdout] test utils::timeout::tests::test_execution_budget_with_node_timeout ... ok [INFO] [stdout] test utils::profiler::tests::test_concurrent_profiling ... ok [INFO] [stdout] test utils::profiler::tests::test_summary_formatting ... ok [INFO] [stdout] test utils::timeout::tests::test_node_timeout_propagates_inner_error ... ok [INFO] [stdout] test utils::timeout::tests::test_node_timeout_success ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_action_variants ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_config_builder ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_config_defaults ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_config_effective_timeout ... ok [INFO] [stdout] test utils::profiler::tests::test_profile_scope_raii ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_config_accessor ... ok [INFO] [stdout] test utils::profiler::tests::test_start_end_node ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_config_node_timeout ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_execute_success ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_error_display ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_default_timeout ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_per_node_override ... ok [INFO] [stdout] test utils::profiler::tests::test_multiple_calls_same_node ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_remove_override ... ok [INFO] [stdout] test utils::profiler::tests::test_hotpath_detection ... ok [INFO] [stdout] test utils::profiler::tests::test_bottleneck_detection ... ok [INFO] [stdout] test utils::profiler::tests::test_node_profile_statistics ... ok [INFO] [stdout] test utils::profiler::tests::test_percentage_calculation ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_token_cancelled_future ... ok [INFO] [stdout] test utils::timeout::tests::test_cancellation_with_timeout ... ok [INFO] [stdout] test utils::timeout::tests::test_node_timeout_return_partial ... ok [INFO] [stdout] test utils::timeout::tests::test_node_timeout_skip ... ok [INFO] [stdout] test utils::timeout::tests::test_node_timeout_error_on_timeout ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_execute_timeout ... ok [INFO] [stdout] test utils::timeout::tests::test_execution_budget_exhausted ... ok [INFO] [stdout] test utils::timeout::tests::test_node_timeout_retry_succeeds_on_second_attempt ... ok [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_execute_with_retries ... ok [INFO] [stdout] test utils::timeout::tests::test_node_timeout_retry_with_retries ... ok [INFO] [stderr] Running tests/integration_tests.rs (/opt/rustwide/target/debug/deps/integration_tests-b5b6ed0a44ea1325) [INFO] [stdout] test utils::timeout::tests::test_timeout_manager_per_node_timeout_execution ... ok [INFO] [stderr] Doc-tests cognisgraph [INFO] [stdout] [INFO] [stdout] test result: ok. 2196 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 16 tests [INFO] [stdout] test test_add_sequence_helper ... ok [INFO] [stdout] test test_conditional_branching ... ok [INFO] [stdout] test test_mermaid_diagram_generation ... ok [INFO] [stdout] test test_interrupt_before_and_resume ... ok [INFO] [stdout] test test_recursion_limit_triggers ... ok [INFO] [stdout] test test_interrupt_after_and_resume ... ok [INFO] [stdout] test test_streaming_updates_mode ... ok [INFO] [stdout] test test_graph_with_cycle ... ok [INFO] [stdout] test test_parallel_fan_out ... ok [INFO] [stdout] test test_node_names_and_introspection ... ok [INFO] [stdout] test test_streaming_values_mode ... ok [INFO] [stdout] test test_graph_with_many_nodes ... ok [INFO] [stdout] test test_streaming_debug_mode ... ok [INFO] [stdout] test test_linear_graph_execution ... ok [INFO] [stdout] test test_subgraph_composition ... ok [INFO] [stdout] test test_tool_agent_end_to_end ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 24 tests [INFO] [stdout] test src/graph/subgraph.rs - graph::subgraph::SubgraphBuilder (line 492) ... ignored [INFO] [stdout] test src/graph/validator.rs - graph::validator (line 10) ... ignored [INFO] [stdout] test src/lib.rs - (line 11) ... ignored [INFO] [stdout] test src/prebuilt/chat_agent.rs - prebuilt::chat_agent (line 19) - compile ... ok [INFO] [stdout] test src/prebuilt/react_agent.rs - prebuilt::react_agent::create_react_agent (line 50) - compile ... ok [INFO] [stdout] test src/prebuilt/tool_agent.rs - prebuilt::tool_agent::create_tool_agent (line 71) - compile ... ok [INFO] [stdout] test src/pregel/retry.rs - pregel::retry::run_with_retry (line 49) - compile ... ok [INFO] [stdout] test src/graph/human_in_loop.rs - graph::human_in_loop::HumanInTheLoop (line 72) - compile ... ok [INFO] [stdout] test src/graph/audit.rs - graph::audit::AuditLog (line 186) ... ok [INFO] [stdout] test src/checkpoint/store.rs - checkpoint::store::StoreKey::from_parts (line 76) ... ok [INFO] [stdout] test src/graph/state.rs - graph::state::StateGraph (line 160) ... ok [INFO] [stdout] test src/graph/subgraph.rs - graph::subgraph::SubgraphNode (line 212) ... ok [INFO] [stdout] test src/pregel/scheduler.rs - pregel::scheduler (line 9) ... ok [INFO] [stdout] test src/graph/message.rs - graph::message::message_graph (line 738) ... ok [INFO] [stdout] test src/graph/message.rs - graph::message::add_messages (line 654) ... ok [INFO] [stdout] test src/prebuilt/agents.rs - prebuilt::agents (line 13) ... ok [INFO] [stdout] test src/graph/state.rs - graph::state::StateGraph::set_conditional_entry_point (line 507) ... ok [INFO] [stdout] test src/checkpoint/memory.rs - checkpoint::memory (line 10) ... ok [INFO] [stdout] test src/graph/annotations.rs - graph::annotations::AnnotatedStateBuilder (line 255) ... ok [INFO] [stdout] test src/pregel/executor.rs - pregel::executor (line 21) ... ok [INFO] [stdout] test src/graph/send.rs - graph::send::send_to (line 53) ... ok [INFO] [stdout] test src/graph/state.rs - graph::state::StateGraph::add_subgraph_with_mapping (line 316) ... ok [INFO] [stdout] test src/graph/state.rs - graph::state::StateGraph::add_subgraph (line 274) ... ok [INFO] [stdout] test src/utils/profiler.rs - utils::profiler::GraphProfiler (line 194) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 21 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 12.36s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "06a5084d8a2912c8012f1a6a438d665d26294f6aba66b7c69579515874fe1cd5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "06a5084d8a2912c8012f1a6a438d665d26294f6aba66b7c69579515874fe1cd5", kill_on_drop: false }` [INFO] [stdout] 06a5084d8a2912c8012f1a6a438d665d26294f6aba66b7c69579515874fe1cd5