[INFO] fetching crate enact-core 0.0.2... [INFO] testing enact-core-0.0.2 against 1.95.0 for beta-1.96-1 [INFO] extracting crate enact-core 0.0.2 into /workspace/builds/worker-3-tc1/source [INFO] started tweaking crates.io crate enact-core 0.0.2 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate enact-core 0.0.2 [INFO] tweaked toml for crates.io crate enact-core 0.0.2 written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate enact-core 0.0.2 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 enact-core 0.0.2 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 base-encode v0.3.1 [INFO] [stderr] Downloaded svix-ksuid v0.7.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 42a4fd292dbd3d31fc3bb0d01bdd0d057accffd4a996e05c9b220699d8afc5b3 [INFO] running `Command { std: "docker" "start" "-a" "42a4fd292dbd3d31fc3bb0d01bdd0d057accffd4a996e05c9b220699d8afc5b3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "42a4fd292dbd3d31fc3bb0d01bdd0d057accffd4a996e05c9b220699d8afc5b3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "42a4fd292dbd3d31fc3bb0d01bdd0d057accffd4a996e05c9b220699d8afc5b3", kill_on_drop: false }` [INFO] [stdout] 42a4fd292dbd3d31fc3bb0d01bdd0d057accffd4a996e05c9b220699d8afc5b3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 80441b32d2abe1e1c2dc7d0faa5039ac0a4af7ded026e1d6efd0dc8f5b87f5a6 [INFO] running `Command { std: "docker" "start" "-a" "80441b32d2abe1e1c2dc7d0faa5039ac0a4af7ded026e1d6efd0dc8f5b87f5a6", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling utf8-width v0.1.8 [INFO] [stderr] Compiling base-encode v0.3.1 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling html-escape v0.2.13 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling uuid v1.21.0 [INFO] [stderr] Compiling svix-ksuid v0.7.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling async-stream v0.3.6 [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 thiserror v1.0.69 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.8 [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 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 enact-core v0.0.2 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 56s [INFO] running `Command { std: "docker" "inspect" "80441b32d2abe1e1c2dc7d0faa5039ac0a4af7ded026e1d6efd0dc8f5b87f5a6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "80441b32d2abe1e1c2dc7d0faa5039ac0a4af7ded026e1d6efd0dc8f5b87f5a6", kill_on_drop: false }` [INFO] [stdout] 80441b32d2abe1e1c2dc7d0faa5039ac0a4af7ded026e1d6efd0dc8f5b87f5a6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 7075febc14f93daffd97d9d79bdee7791a423f9c3fbc3790251bd17c83cdb309 [INFO] running `Command { std: "docker" "start" "-a" "7075febc14f93daffd97d9d79bdee7791a423f9c3fbc3790251bd17c83cdb309", kill_on_drop: false }` [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling openssl v0.10.75 [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 tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tower v0.5.3 [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 enact-core v0.0.2 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 30s [INFO] running `Command { std: "docker" "inspect" "7075febc14f93daffd97d9d79bdee7791a423f9c3fbc3790251bd17c83cdb309", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7075febc14f93daffd97d9d79bdee7791a423f9c3fbc3790251bd17c83cdb309", kill_on_drop: false }` [INFO] [stdout] 7075febc14f93daffd97d9d79bdee7791a423f9c3fbc3790251bd17c83cdb309 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 835e526e8e15780ea676d7d8d286ae9962265e68581fdae70b5a1ce5db6058f2 [INFO] running `Command { std: "docker" "start" "-a" "835e526e8e15780ea676d7d8d286ae9962265e68581fdae70b5a1ce5db6058f2", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.32s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/enact_core-e259125d767fff5b) [INFO] [stdout] [INFO] [stdout] running 843 tests [INFO] [stdout] test background::executor::tests::test_background_execution_modes ... ok [INFO] [stdout] test background::executor::tests::test_spawn_mode_integration ... ok [INFO] [stdout] test background::target_binding::tests::test_target_binding_result ... ok [INFO] [stdout] test background::executor::tests::test_background_execution_lifecycle ... ok [INFO] [stdout] test background::target_binding::tests::test_target_binding_types ... ok [INFO] [stdout] test background::target_binding::tests::test_transform_first_line ... ok [INFO] [stdout] test background::executor::tests::test_background_execution_queue ... ok [INFO] [stdout] test background::target_binding::tests::test_transform_truncate ... ok [INFO] [stdout] test background::target_binding::tests::test_transform_json_extract ... ok [INFO] [stdout] test background::trigger::tests::test_trigger_id_generation ... ok [INFO] [stdout] test background::trigger::tests::test_trigger_max_fires ... ok [INFO] [stdout] test callable::composite::tests::test_callable_descriptor ... ok [INFO] [stdout] test background::target_binding::tests::test_truncate_string ... ok [INFO] [stdout] test callable::composite::tests::test_callable_invoker ... ok [INFO] [stdout] test callable::composite::tests::test_child_allocation ... ok [INFO] [stdout] test background::trigger::tests::test_trigger_can_fire ... ok [INFO] [stdout] test callable::composite::tests::test_cost_tier_comparison ... ok [INFO] [stdout] test callable::composite::tests::test_discovery ... ok [INFO] [stdout] test callable::composite::tests::test_resource_allocation ... ok [INFO] [stdout] test callable::graph::tests::test_graph_callable_name ... ok [INFO] [stdout] test callable::registry::tests::test_get_nonexistent ... ok [INFO] [stdout] test callable::llm::tests::run_uses_native_tool_calls_and_returns_final_content ... ok [INFO] [stdout] test callable::registry::tests::test_register_and_get ... ok [INFO] [stdout] test callable::registry::tests::test_list ... ok [INFO] [stdout] test callable::registry::tests::test_remove ... ok [INFO] [stdout] test context::execution_context::tests::test_builder_full_chain ... ok [INFO] [stdout] test context::execution_context::tests::test_builder_new ... ok [INFO] [stdout] test context::execution_context::tests::test_builder_with_metadata ... ok [INFO] [stdout] test context::execution_context::tests::test_builder_with_session ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_child_context ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_enter_step ... ok [INFO] [stdout] test callable::registry::tests::test_contains ... ok [INFO] [stdout] test callable::llm::tests::run_errors_when_tools_registered_but_provider_does_not_support_tools ... ok [INFO] [stdout] test callable::graph::tests::test_graph_callable_run ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_is_not_root_step_execution ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_accessors ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_from_user_message ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_is_root_system ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_is_root_user_message ... ok [INFO] [stdout] test context::execution_context::tests::test_builder_with_trace ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_new ... ok [INFO] [stdout] test context::execution_context::tests::test_nested_execution_hierarchy ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_with_metadata ... ok [INFO] [stdout] test context::execution_context::tests::test_session_context_new ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_with_step ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_with_session ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_with_trace ... ok [INFO] [stdout] test context::execution_context::tests::test_runtime_context_serde ... ok [INFO] [stdout] test context::execution_context::tests::test_session_context_serde ... ok [INFO] [stdout] test context::execution_context::tests::test_session_context_new_owned_string ... ok [INFO] [stdout] test context::execution_context::tests::test_step_execution_creates_correct_spans ... ok [INFO] [stdout] test context::tenant::tests::test_child_context ... ok [INFO] [stdout] test context::tenant::tests::test_feature_flags ... ok [INFO] [stdout] test context::execution_context::tests::test_session_context_metadata ... ok [INFO] [stdout] test context::tenant::tests::test_tenant_context_required_id ... ok [INFO] [stdout] test context::tenant::tests::test_tenant_context_with_user ... ok [INFO] [stdout] test context::trace::tests::test_child_span ... ok [INFO] [stdout] test context::trace::tests::test_traceparent_roundtrip ... ok [INFO] [stdout] test context::trace::tests::test_trace_context_new ... ok [INFO] [stdout] test flow::conditional::tests::test_branch_new_and_matches ... ok [INFO] [stdout] test flow::conditional::tests::test_branch_default_always_matches ... ok [INFO] [stdout] test flow::conditional::tests::test_conditional_error_propagation ... ok [INFO] [stdout] test flow::conditional::tests::test_conditional_first_match_priority ... ok [INFO] [stdout] test flow::conditional::tests::test_conditional_first_match_wins ... ok [INFO] [stdout] test flow::conditional::tests::test_contains_condition ... ok [INFO] [stdout] test context::execution_context::tests::test_session_context_touch ... ok [INFO] [stdout] test flow::conditional::tests::test_ends_with_condition ... ok [INFO] [stdout] test flow::parallel::tests::test_fan_out_broadcast ... ok [INFO] [stdout] test flow::parallel::tests::test_fan_out_default ... ok [INFO] [stdout] test flow::conditional::tests::test_starts_with_condition ... ok [INFO] [stdout] test flow::conditional::tests::test_conditional_flow_properties ... ok [INFO] [stdout] test flow::conditional::tests::test_conditional_no_match_no_default ... ok [INFO] [stdout] test flow::conditional::tests::test_conditional_with_default ... ok [INFO] [stdout] test flow::parallel::tests::test_fan_in_default ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_aggregated_concat ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_aggregated_json_array ... ok [INFO] [stdout] test flow::parallel::tests::test_fan_out_split_distributes_by_index ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_multiple_branches ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_single_branch ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_first_success ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_all_fail_first_success ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_result_contains_execution_id ... ok [INFO] [stdout] test flow::repeat::tests::test_condition_either ... ok [INFO] [stdout] test flow::repeat::tests::test_condition_output_matches ... ok [INFO] [stdout] test flow::repeat::tests::test_condition_helpers ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_error_propagation ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_execute_either_predicate_first ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_execute_either_max_first ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_execute_until_contains ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_execute_with_history_early_exit ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_execute_with_history ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_execute_with_predicate ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_execute_max_iterations ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_flow_times ... ok [INFO] [stdout] test flow::repeat::tests::test_condition_max_iterations ... ok [INFO] [stdout] test flow::repeat::tests::test_condition_output_contains ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_flow_until_contains ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_immediate_exit_predicate ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_flow_new ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_single_iteration ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_with_feedback_disabled ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_zero_iterations ... ok [INFO] [stdout] test flow::sequential::tests::test_sequential_empty ... ok [INFO] [stdout] test flow::sequential::tests::test_sequential_error_propagation ... ok [INFO] [stdout] test flow::sequential::tests::test_sequential_multiple_steps ... ok [INFO] [stdout] test flow::repeat::tests::test_loop_with_feedback_enabled ... ok [INFO] [stdout] test flow::sequential::tests::test_sequential_preserves_order ... ok [INFO] [stdout] test flow::sequential::tests::test_sequential_single_step ... ok [INFO] [stdout] test graph::checkpoint::tests::test_checkpoint_add_message ... ok [INFO] [stdout] test graph::checkpoint::tests::test_checkpoint_add_tool_result ... ok [INFO] [stdout] test graph::checkpoint::tests::test_checkpoint_agent_name_serialization ... ok [INFO] [stdout] test graph::checkpoint::tests::test_checkpoint_builder_chain ... ok [INFO] [stdout] test graph::loader::tests::test_context_builder ... ok [INFO] [stdout] test graph::checkpoint::tests::test_checkpoint_agent_name_none_when_not_set ... ok [INFO] [stdout] test graph::checkpoint::tests::test_checkpoint_with_agent_name ... ok [INFO] [stdout] test graph::loader::tests::test_functional_llm_node_executes ... ok [INFO] [stdout] test graph::loader::tests::test_load_with_context_creates_functional_node ... ok [INFO] [stdout] test graph::node::llm::tests::test_llm_node_execute ... ok [INFO] [stdout] test graph::node::llm::tests::test_llm_node_with_empty_input ... ok [INFO] [stdout] test graph::loader::tests::test_load_without_context_creates_placeholder ... ok [INFO] [stdout] test graph::node::llm::tests::test_llm_node_with_json_input ... ok [INFO] [stdout] test graph::loader::tests::test_multi_node_graph_loading ... ok [INFO] [stdout] test inbox::message::tests::test_guidance_priority ... ok [INFO] [stdout] test inbox::message::tests::test_message_sorting ... ok [INFO] [stdout] test inbox::message::tests::test_evidence_priority_contradicts ... ok [INFO] [stdout] test inbox::message::tests::test_control_message_priority ... ok [INFO] [stdout] test inbox::store::tests::test_cancel_long_running ... ok [INFO] [stdout] test inbox::store::tests::test_approval_flow_hitl ... ok [INFO] [stdout] test inbox::store::tests::test_execution_isolation_inv_inbox_004 ... ok [INFO] [stdout] test inbox::store::tests::test_clear ... ok [INFO] [stdout] test inbox::store::tests::test_hitl_priority_ordering ... ok [INFO] [stdout] test inbox::store::tests::test_inbox_scoped_to_execution ... ok [INFO] [stdout] test inbox::store::tests::test_inbox_drain_ordering ... ok [INFO] [stdout] test inbox::store::tests::test_pause_resume_execution ... ok [INFO] [stdout] test inbox::store::tests::test_has_control_messages ... ok [INFO] [stdout] test inbox::store::tests::test_control_priority ... ok [INFO] [stdout] test inbox::store::tests::test_pop_returns_highest_priority ... ok [INFO] [stdout] test inbox::store::tests::test_peek_does_not_remove ... ok [INFO] [stdout] test inbox::store::tests::test_priority_sorting_inv_inbox_002 ... ok [INFO] [stdout] test inbox::store::tests::test_push_and_drain ... ok [INFO] [stdout] test flow::sequential::tests::test_sequential_with_steps ... ok [INFO] [stdout] test graph::checkpoint::tests::test_checkpoint_new ... ok [INFO] [stdout] test graph::loader::tests::test_context_builder_with_default_model ... ok [INFO] [stdout] test kernel::artifact::metadata::tests::test_artifact_type_content_types ... ok [INFO] [stdout] test kernel::artifact::metadata::tests::test_compression_ratio ... ok [INFO] [stdout] test kernel::artifact::store::tests::test_in_memory_store_put_get ... ok [INFO] [stdout] test kernel::artifact::store::tests::test_in_memory_store_list ... ok [INFO] [stdout] test kernel::artifact::store::tests::test_in_memory_store_delete ... ok [INFO] [stdout] test kernel::cost::tests::test_cost_calculator ... ok [INFO] [stdout] test kernel::cost::tests::test_pricing_for_model ... ok [INFO] [stdout] test kernel::cost::tests::test_cost_calculator_small_usage ... ok [INFO] [stdout] test kernel::cost::tests::test_token_usage_from_total ... ok [INFO] [stdout] test kernel::cost::tests::test_token_usage_new ... ok [INFO] [stdout] test kernel::cost::tests::test_token_usage_is_empty ... ok [INFO] [stdout] test kernel::cost::tests::test_usage_accumulator_averages ... ok [INFO] [stdout] test kernel::cost::tests::test_usage_accumulator_empty ... ok [INFO] [stdout] test kernel::cost::tests::test_usage_accumulator ... ok [INFO] [stdout] test kernel::enforcement::tests::test_network_violation_type ... ok [INFO] [stdout] test kernel::enforcement::tests::test_step_limit_enforcement ... ok [INFO] [stdout] test kernel::enforcement::tests::test_token_limit_enforcement ... ok [INFO] [stdout] test kernel::enforcement::tests::test_usage_tracking ... ok [INFO] [stdout] test kernel::enforcement::tests::test_violation_type_display_network ... ok [INFO] [stdout] test kernel::enforcement::tests::test_warning_threshold ... ok [INFO] [stdout] test kernel::error::tests::test_backoff_constant ... ok [INFO] [stdout] test kernel::error::tests::test_backoff_default ... ok [INFO] [stdout] test kernel::artifact::filesystem::tests::test_filesystem_store_put_get ... ok [INFO] [stdout] test kernel::error::tests::test_backoff_none ... ok [INFO] [stdout] test kernel::error::tests::test_backoff_linear ... ok [INFO] [stdout] test kernel::error::tests::test_default_retry_policies ... ok [INFO] [stdout] test kernel::error::tests::test_default_retry_policy_network ... ok [INFO] [stdout] test kernel::error::tests::test_default_retry_policy_timeout ... ok [INFO] [stdout] test kernel::error::tests::test_default_retry_policy_tool_error ... ok [INFO] [stdout] test kernel::error::tests::test_error_categories_fatality ... ok [INFO] [stdout] test kernel::error::tests::test_error_category_display ... ok [INFO] [stdout] test kernel::error::tests::test_error_serialization ... ok [INFO] [stdout] test kernel::error::tests::test_error_category_serde ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_convenience_constructors ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_creation ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_display ... ok [INFO] [stdout] test kernel::artifact::filesystem::tests::test_filesystem_store_compression ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_display_with_attempt ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_is_retryable ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_display_no_attempt_shown_for_first ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_is_fatal ... ok [INFO] [stdout] test kernel::artifact::filesystem::tests::test_filesystem_store_list ... ok [INFO] [stdout] test kernel::enforcement::tests::test_concurrency_limit ... ok [INFO] [stdout] test kernel::error::tests::test_backoff_serde ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_new ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_retry_delay ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_to_http_status_all_categories ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_to_http_status_override ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_with_code ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_with_attempt ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_next_attempt ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_with_details ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_with_provider ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_with_retry_policy ... ok [INFO] [stdout] test kernel::error::tests::test_fatal_error_never_retries ... ok [INFO] [stdout] test kernel::error::tests::test_from_io_error_connection_refused ... ok [INFO] [stdout] test kernel::error::tests::test_from_io_error_connection_reset ... ok [INFO] [stdout] test kernel::error::tests::test_exponential_backoff ... ok [INFO] [stdout] test kernel::error::tests::test_from_io_error_connection_aborted ... ok [INFO] [stdout] test kernel::error::tests::test_execution_error_with_step_id ... ok [INFO] [stdout] test kernel::error::tests::test_from_io_error_other ... ok [INFO] [stdout] test kernel::error::tests::test_from_io_error_timeout ... ok [INFO] [stdout] test kernel::error::tests::test_http_status_mapping ... ok [INFO] [stdout] test kernel::error::tests::test_from_serde_json_error ... ok [INFO] [stdout] test kernel::error::tests::test_llm_error_code_serde ... ok [INFO] [stdout] test kernel::error::tests::test_retry_policy_default ... ok [INFO] [stdout] test kernel::error::tests::test_retry_policy_fatal ... ok [INFO] [stdout] test kernel::error::tests::test_llm_error_code_retryable ... ok [INFO] [stdout] test kernel::error::tests::test_llm_error_code_display ... ok [INFO] [stdout] test kernel::error::tests::test_retry_policy_delay_for_attempt ... ok [INFO] [stdout] test kernel::error::tests::test_should_retry ... ok [INFO] [stdout] test flow::parallel::tests::test_parallel_executes_concurrently ... ok [INFO] [stdout] test kernel::error::tests::test_tool_error_code_display ... ok [INFO] [stdout] test kernel::error::tests::test_retry_policy_should_retry ... ok [INFO] [stdout] test kernel::error::tests::test_retry_policy_serde ... ok [INFO] [stdout] test kernel::error::tests::test_tool_error_code_serde ... ok [INFO] [stdout] test kernel::event::tests::test_control_action_variants ... ok [INFO] [stdout] test kernel::event::tests::test_control_actor_variants ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_cancel_factory ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_id_format ... ok [INFO] [stdout] test kernel::error::tests::test_tool_error_code_retryable ... ok [INFO] [stdout] test kernel::error::tests::test_retry_policy_retryable ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_pause_factory ... ok [INFO] [stdout] test kernel::event::tests::test_control_actor_equality ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_resume_factory ... ok [INFO] [stdout] test kernel::event::tests::test_decision_alternative_creation ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_serde ... ok [INFO] [stdout] test kernel::event::tests::test_decision_alternative_serde ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_with_step ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_with_actor_id ... ok [INFO] [stdout] test kernel::event::tests::test_decision_input_creation ... ok [INFO] [stdout] test kernel::event::tests::test_control_outcome_variants ... ok [INFO] [stdout] test kernel::event::tests::test_decision_id_format ... ok [INFO] [stdout] test kernel::event::tests::test_decision_input_serde ... ok [INFO] [stdout] test kernel::event::tests::test_decision_record_new ... ok [INFO] [stdout] test kernel::event::tests::test_decision_record_with_alternatives ... ok [INFO] [stdout] test kernel::event::tests::test_decision_record_serde ... ok [INFO] [stdout] test kernel::event::tests::test_control_event_new ... ok [INFO] [stdout] test kernel::event::tests::test_decision_type_equality ... ok [INFO] [stdout] test kernel::event::tests::test_decision_record_with_model_context ... ok [INFO] [stdout] test kernel::event::tests::test_decision_record_with_reasoning ... ok [INFO] [stdout] test kernel::event::tests::test_decision_record_with_step ... ok [INFO] [stdout] test kernel::event::tests::test_decision_type_variants ... ok [INFO] [stdout] test kernel::event::tests::test_event_final_response ... ok [INFO] [stdout] test kernel::event::tests::test_event_id_format ... ok [INFO] [stdout] test kernel::event::tests::test_event_new ... ok [INFO] [stdout] test kernel::event::tests::test_event_with_content ... ok [INFO] [stdout] test kernel::event::tests::test_event_with_node ... ok [INFO] [stdout] test kernel::event::tests::test_execution_context_builder_chain ... ok [INFO] [stdout] test kernel::event::tests::test_execution_context_with_artifact ... ok [INFO] [stdout] test kernel::event::tests::test_event_builder_chain ... ok [INFO] [stdout] test kernel::event::tests::test_execution_context_new ... ok [INFO] [stdout] test kernel::event::tests::test_event_serde ... ok [INFO] [stdout] test kernel::event::tests::test_execution_context_with_parent ... ok [INFO] [stdout] test kernel::event::tests::test_execution_context_with_step ... ok [INFO] [stdout] test kernel::event::tests::test_execution_context_with_tenant ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_execution_end ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_execution_start_with_parent ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_artifact_created ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_execution_start ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_serde ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_step_start ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_artifact_created ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_new ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_control_pause ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_control_resume ... ok [INFO] [stdout] test kernel::event::tests::test_execution_context_serde ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_decision_made ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_step_end ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_execution_failed ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_step_end ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_execution_start ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_execution_end ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_state_snapshot ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_control_cancel ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_execution_cancelled ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_step_failed ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_as_str_step_start ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_equality ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_type_serde ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_with_payload ... ok [INFO] [stdout] test kernel::event::tests::test_execution_event_with_duration ... ok [INFO] [stdout] test kernel::event::tests::test_model_context_creation ... ok [INFO] [stdout] test kernel::event::tests::test_model_context_minimal ... ok [INFO] [stdout] test kernel::execution_model::tests::test_callable_type_default ... ok [INFO] [stdout] test kernel::event::tests::test_model_context_serde ... ok [INFO] [stdout] test kernel::execution_model::tests::test_callable_type_display ... ok [INFO] [stdout] test kernel::execution_model::tests::test_callable_type_serde_all_variants ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_child ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_get_step ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_add_step ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_get_step_mut ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_duration_ms_not_started ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_default ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_get_step_not_found ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_is_terminal_cancelled ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_is_terminal_completed ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_is_terminal_paused ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_is_terminal_running ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_is_terminal_created ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_is_terminal_failed ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_is_terminal_waiting ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_new ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_with_id ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_step_order_preserved ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_with_schema_version ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_with_multiple_steps ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_with_schema_version_owned_string ... ok [INFO] [stdout] test kernel::execution_model::tests::test_nested_execution_structure ... ok [INFO] [stdout] test kernel::execution_model::tests::test_nested_steps_structure ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_callable_serde ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_callable_none_not_serialized ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_clone ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_chained_builders ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_nested ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_error_handling ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_new_all_types ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_new ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_serde_field_names ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_state_modifications ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_with_callable ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_with_input ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_with_input_owned_string ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_timestamps ... ok [INFO] [stdout] test kernel::execution_model::tests::test_step_serde ... ok [INFO] [stdout] test kernel::execution_state::tests::test_execution_state_can_resume ... ok [INFO] [stdout] test kernel::execution_state::tests::test_execution_state_is_active ... ok [INFO] [stdout] test kernel::execution_state::tests::test_step_state_serde ... ok [INFO] [stdout] test kernel::execution_state::tests::test_step_state_terminal ... ok [INFO] [stdout] test kernel::execution_state::tests::test_execution_state_terminal ... ok [INFO] [stdout] test kernel::execution_state::tests::test_execution_state_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_artifact_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_artifact_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_artifact_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_artifact_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_artifact_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_callable_type_clone ... ok [INFO] [stdout] test kernel::ids::tests::test_callable_type_default ... ok [INFO] [stdout] test kernel::ids::tests::test_callable_type_display_all ... ok [INFO] [stdout] test kernel::ids::tests::test_callable_type_equality ... ok [INFO] [stdout] test kernel::ids::tests::test_callable_type_hash ... ok [INFO] [stdout] test kernel::ids::tests::test_callable_type_serde_all_variants ... ok [INFO] [stdout] test kernel::ids::tests::test_callable_type_serde_snake_case ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_duration_ms_started_not_ended ... ok [INFO] [stdout] test kernel::ids::tests::test_artifact_id_new_unique ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_all_variants_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_clone ... ok [INFO] [stdout] test kernel::ids::tests::test_artifact_id_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_default ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_serde_detach ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_variants ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_serde_cascade ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_hash ... ok [INFO] [stdout] test kernel::ids::tests::test_cancellation_policy_serde_wait ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_clone ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_from_str_trait ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_from_string_owned ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_from_string_trait ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_hash ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_graph_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_new_unique ... ok [INFO] [stdout] test kernel::ids::tests::test_graph_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_ids_sortable ... ok [INFO] [stdout] test kernel::ids::tests::test_graph_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_graph_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_graph_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_ksuid_contains_alphanumeric ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_execution_id_debug ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_from_traits ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_hash ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_node_id_alias ... ok [INFO] [stdout] test kernel::ids::tests::test_message_id_new_unique ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_execution ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_equality ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_clone ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_from_user_message ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_from_step ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_new ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_new_with_string ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_system ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_link_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_display_a2a_request ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_display_schedule_event ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_display_user_message ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_display_system ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_display_step_execution ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_display_webhook ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_artifact ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_equality ... ok [INFO] [stdout] test kernel::ids::tests::test_parent_type_serde_all_variants ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_control ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_execution ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_decision ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_event ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_graph ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_message ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_thread ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_tenant ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_step ... ok [INFO] [stdout] test kernel::ids::tests::test_run_id_alias ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_child_background ... ok [INFO] [stdout] test kernel::ids::tests::test_prefix_user ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_child_default_fields ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_child_with_inherit_inbox ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_clone ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_equality ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_inline_default ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_serde_child ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_serde_inline ... ok [INFO] [stdout] test kernel::ids::tests::test_spawn_mode_serde_child_with_policies ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_graph_id_new_unique ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_hash ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_graph_id_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_step_source_discovered_default_spawn_mode ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_new_unique ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_step_id_from_traits ... ok [INFO] [stdout] test kernel::ids::tests::test_step_source_serde_with_spawn_mode ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_clone ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_display_branch_node ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_display_llm_node ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_display_function_node ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_display_loop_node ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_display_graph_node ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_display_router_node ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_display_tool_node ... ok [INFO] [stdout] test kernel::ids::tests::test_step_source_with_spawn_mode ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_serde_llm_node ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_serde_all_variants ... ok [INFO] [stdout] test kernel::ids::tests::test_step_type_equality ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_new_unique ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_from_traits ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_from_traits ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_tenant_id_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_hash ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_new_unique ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_display ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_default ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_from_string ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_new_has_correct_prefix ... ok [INFO] [stdout] test kernel::ids::tests::test_thread_id_serde ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_from_traits ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_ksuid_length ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_serde ... ok [INFO] [stdout] test kernel::interrupt::tests::test_runner_with_always_approve_policy ... ok [INFO] [stdout] test kernel::interrupt::tests::test_runner_with_policy_arc ... ok [INFO] [stdout] test kernel::interrupt::tests::test_runner_with_always_require_policy ... ok [INFO] [stdout] test kernel::interrupt::tests::test_runner_with_threshold_policy ... ok [INFO] [stdout] test kernel::kernel::tests::test_get_inbox_execution_ids_child_background_inherit ... ok [INFO] [stdout] test kernel::interrupt::tests::test_runner_without_policy ... ok [INFO] [stdout] test kernel::kernel::tests::test_get_inbox_execution_ids_child_background_isolated ... ok [INFO] [stdout] test kernel::kernel::tests::test_get_inbox_execution_ids_child_inherit ... ok [INFO] [stdout] test kernel::ids::tests::test_user_id_new_unique ... ok [INFO] [stdout] test kernel::kernel::tests::emits_warning_event_when_limits_near_threshold ... ok [INFO] [stdout] test kernel::kernel::tests::test_kernel_with_parent_execution_id ... ok [INFO] [stdout] test kernel::kernel::tests::test_kernel_with_spawn_mode_child ... ok [INFO] [stdout] test kernel::kernel::tests::test_get_inbox_execution_ids_child_inherit_no_parent_id ... ok [INFO] [stdout] test kernel::execution_model::tests::test_execution_duration_ms_completed ... ok [INFO] [stdout] test kernel::kernel::tests::test_kernel_with_spawn_mode_inline ... ok [INFO] [stdout] test kernel::kernel::tests::test_get_inbox_execution_ids_child_isolated ... ok [INFO] [stdout] test kernel::persistence::event_store::tests::test_event_serialization ... ok [INFO] [stdout] test kernel::kernel::tests::test_get_inbox_execution_ids_no_spawn_mode ... ok [INFO] [stdout] test kernel::kernel::tests::test_kernel_default_no_spawn_mode ... ok [INFO] [stdout] test kernel::kernel::tests::test_get_inbox_execution_ids_inline_mode ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_create_message ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_get_messages_by_execution ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_list_threads_excludes_deleted ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_message_parent_chain ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_create_thread ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_soft_delete_message ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_message_with_parts ... ok [INFO] [stdout] test kernel::persistence::state_store::tests::test_snapshot_freshness ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_message_metadata ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_soft_delete_thread ... ok [INFO] [stdout] test kernel::persistence::vector_store::tests::test_document_serialization ... ok [INFO] [stdout] test kernel::reducer::tests::test_can_cancel_from_running ... ok [INFO] [stdout] test kernel::persistence::vector_store::tests::test_filter_creation ... ok [INFO] [stdout] test kernel::persistence::state_store::tests::test_snapshot_serialization ... ok [INFO] [stdout] test kernel::reducer::tests::test_can_cancel_from_paused ... ok [INFO] [stdout] test kernel::persistence::vector_store::tests::test_document_creation ... ok [INFO] [stdout] test kernel::reducer::tests::test_can_fail_from_paused ... ok [INFO] [stdout] test kernel::reducer::tests::test_can_fail_from_waiting ... ok [INFO] [stdout] test kernel::reducer::tests::test_can_fail_from_running ... ok [INFO] [stdout] test kernel::reducer::tests::test_can_cancel_from_waiting ... ok [INFO] [stdout] test kernel::reducer::tests::test_cancel_sets_ended_at ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_cancel_from_completed ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_cancel_from_failed ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_input_received_when_not_waiting ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_complete_from_created ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_fail_from_completed ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_resume_from_created ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_resume_from_running ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_pause_from_created ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_start_step_when_not_running ... ok [INFO] [stdout] test kernel::reducer::tests::test_cannot_wait_from_paused ... ok [INFO] [stdout] test kernel::reducer::tests::test_complete_sets_ended_at ... ok [INFO] [stdout] test kernel::reducer::tests::test_input_received_resumes_from_waiting ... ok [INFO] [stdout] test kernel::reducer::tests::test_invalid_start_from_running ... ok [INFO] [stdout] test kernel::reducer::tests::test_fail_sets_ended_at ... ok [INFO] [stdout] test kernel::reducer::tests::test_fail_with_structured_error ... ok [INFO] [stdout] test kernel::reducer::tests::test_fatal_error_not_retryable ... ok [INFO] [stdout] test kernel::reducer::tests::test_multiple_steps_preserved_order ... ok [INFO] [stdout] test kernel::reducer::tests::test_pause_resume ... ok [INFO] [stdout] test kernel::reducer::tests::test_nested_step_with_parent ... ok [INFO] [stdout] test kernel::reducer::tests::test_reducer_error_display_invalid_transition ... ok [INFO] [stdout] test kernel::reducer::tests::test_resume_from_waiting ... ok [INFO] [stdout] test kernel::reducer::tests::test_reducer_error_display_step_not_found ... ok [INFO] [stdout] test kernel::reducer::tests::test_step_fail_with_structured_error ... ok [INFO] [stdout] test kernel::reducer::tests::test_step_completed_sets_output ... ok [INFO] [stdout] test kernel::reducer::tests::test_step_failed_not_found ... ok [INFO] [stdout] test kernel::reducer::tests::test_start_sets_started_at ... ok [INFO] [stdout] test kernel::reducer::tests::test_step_not_found_error ... ok [INFO] [stdout] test kernel::reducer::tests::test_step_started_adds_step ... ok [INFO] [stdout] test kernel::reducer::tests::test_wait_for_tool_result ... ok [INFO] [stdout] test kernel::reducer::tests::test_wait_for_user_input ... ok [INFO] [stdout] test kernel::replay::tests::test_replay_simple_execution ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_limits_default ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_limits_strict ... ok [INFO] [stdout] test kernel::replay::tests::test_replay_with_steps ... ok [INFO] [stdout] test kernel::reducer::tests::test_valid_execution_lifecycle ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_evaluate_nested_denied ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_evaluate_other_actions_allowed ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_limits_unlimited ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_default ... ok [INFO] [stdout] test kernel::reducer::tests::test_wait_for_approval ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_evaluate_start_allowed ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_evaluate_nested_allowed ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_new ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_no_nested ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_no_parallel ... ok [INFO] [stdout] test policy::filters::tests::test_filter_action_variants ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_with_limits ... ok [INFO] [stdout] test policy::filters::tests::test_filter_result_block ... ok [INFO] [stdout] test policy::filters::tests::test_filter_result_allow ... ok [INFO] [stdout] test policy::filters::tests::test_filter_result_log_and_allow_is_allowed ... ok [INFO] [stdout] test policy::filters::tests::test_filter_result_redact ... ok [INFO] [stdout] test policy::execution_policy::tests::test_execution_policy_require_approval ... ok [INFO] [stdout] test policy::filters::tests::test_filter_result_with_matches ... ok [INFO] [stdout] test policy::filters::tests::test_pii_filter_block_mode ... ok [INFO] [stdout] test policy::filters::tests::test_pii_filter_default ... ok [INFO] [stdout] test policy::filters::tests::test_pii_filter_input_no_pii ... ok [INFO] [stdout] test policy::filters::tests::test_prompt_injection_filter_case_insensitive ... ok [INFO] [stdout] test policy::filters::tests::test_pii_filter_input_with_email ... ok [INFO] [stdout] test policy::filters::tests::test_pii_filter_output_no_pii ... ok [INFO] [stdout] test policy::filters::tests::test_pii_filter_output_with_email ... ok [INFO] [stdout] test policy::filters::tests::test_prompt_injection_filter_detects_injection ... ok [INFO] [stdout] test policy::input_processor::tests::test_input_processor_result_effective_input ... ok [INFO] [stdout] test policy::filters::tests::test_prompt_injection_filter_custom_keyword ... ok [INFO] [stdout] test policy::input_processor::tests::test_input_processor_result_is_blocked ... ok [INFO] [stdout] test policy::filters::tests::test_prompt_injection_filter_no_injection ... ok [INFO] [stdout] test policy::input_processor::tests::test_input_processor_result_should_proceed ... ok [INFO] [stdout] test policy::filters::tests::test_prompt_injection_filter_output_always_allowed ... ok [INFO] [stdout] test policy::filters::tests::test_prompt_injection_filter_default ... ok [INFO] [stdout] test policy::input_processor::tests::test_pipeline_block ... ok [INFO] [stdout] test policy::input_processor::tests::test_pipeline_empty ... ok [INFO] [stdout] test policy::input_processor::tests::test_pipeline_modify ... ok [INFO] [stdout] test policy::input_processor::tests::test_pipeline_pass_through ... ok [INFO] [stdout] test policy::input_processor::tests::test_pipeline_chained_modify ... ok [INFO] [stdout] test policy::pii_input::tests::test_pii_input_processor_name ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_feature_flags_all_enabled ... ok [INFO] [stdout] test policy::pii_input::tests::test_pii_input_processor_priority ... ok [INFO] [stdout] test policy::pii_input::tests::test_pii_input_no_pii ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_feature_flags_disable_overrides_enable ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_feature_flags_default ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_feature_flags_with_defaults ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_isolation_default ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_feature_flags_enable ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_limits_pro_tier ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_limits_unlimited ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_allow_model_empty_allows_all ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_allow_tool ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_limits_default ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_limits_free_tier ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_allow_model ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_default ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_evaluate_llm_allowed ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_evaluate_llm_denied ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_evaluate_tool_denied ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_no_tool_restriction_allows_all ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_evaluate_tool_allowed ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_with_limits ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_with_isolation ... ok [INFO] [stdout] test policy::tenant_policy::tests::test_tenant_policy_with_features ... ok [INFO] [stdout] test policy::tests::test_policy_action_variants ... ok [INFO] [stdout] test policy::tests::test_policy_context_creation ... ok [INFO] [stdout] test policy::tests::test_policy_decision_allow ... ok [INFO] [stdout] test policy::tests::test_policy_decision_deny ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_permissions_allow_domain ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_permissions_default ... ok [INFO] [stdout] test policy::tests::test_policy_decision_warn ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_permissions_allow_path ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_permissions_full ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_permissions_sandboxed ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_permissions_network_only ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_default ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_evaluate_allowed ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_evaluate_blocked ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_evaluate_trust_level_denied ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_block_tool ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_set_tool_trust ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_set_tool_permissions ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_evaluate_non_tool_action_allowed ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_trust_level_default ... ok [INFO] [stdout] test routing::tests::model_precedence_order_is_step_then_workflow_then_agent_then_default ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_policy_with_default_permissions ... ok [INFO] [stdout] test routing::tests::preserves_explicit_model_pin ... ok [INFO] [stdout] test routing::tests::resolves_to_default_router_when_unspecified ... ok [INFO] [stdout] test runner::approval_policy::tests::test_always_require_policy ... ok [INFO] [stdout] test runner::approval_policy::tests::test_composite_policy_any_match ... ok [INFO] [stdout] test runner::approval_policy::tests::test_composite_policy_no_match ... ok [INFO] [stdout] test runner::approval_policy::tests::test_always_approve_policy ... ok [INFO] [stdout] test runner::approval_policy::tests::test_pattern_policy_case_insensitive ... ok [INFO] [stdout] test runner::approval_policy::tests::test_composite_policy_empty ... ok [INFO] [stdout] test runner::approval_policy::tests::test_pattern_policy_match ... ok [INFO] [stdout] test runner::approval_policy::tests::test_pattern_policy_no_match ... ok [INFO] [stdout] test runner::approval_policy::tests::test_policy_config_threshold ... ok [INFO] [stdout] test runner::approval_policy::tests::test_policy_config_always_approve ... ok [INFO] [stdout] test runner::approval_policy::tests::test_policy_config_pattern ... ok [INFO] [stdout] test runner::approval_policy::tests::test_threshold_policy_at_threshold ... ok [INFO] [stdout] test runner::approval_policy::tests::test_threshold_policy_above_threshold ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_builder_chain ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_input_preview_truncation ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_new ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_serde ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_short_input_not_truncated ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_with_description ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_with_step ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_with_user ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_result_failure ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_result_output_truncation ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_result_success ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_result_with_output_preview ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_result_with_stats ... ok [INFO] [stdout] test runner::callbacks::tests::test_callback_registry_individual_registration ... ok [INFO] [stdout] test runner::callbacks::tests::test_callback_registry_multiple_callbacks ... ok [INFO] [stdout] test runner::callbacks::tests::test_callback_registry_new ... ok [INFO] [stdout] test runner::callbacks::tests::test_callback_registry_register_all ... ok [INFO] [stdout] test runner::callbacks::tests::test_counting_callback_implements_execution_callbacks ... ok [INFO] [stdout] test runner::callbacks::tests::test_execution_callbacks_trait ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_context_new ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_context_serde ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_context_with_params ... ok [INFO] [stdout] test policy::tool_policy::tests::test_tool_trust_level_ordering ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_context_with_request_info ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_context_with_step ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_result_failure ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_result_success ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_result_with_finish_info ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_result_with_tokens ... ok [INFO] [stdout] test runner::callbacks::tests::test_model_callback_result_cached ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_context_args_truncation ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_context_new ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_context_serde ... ok [INFO] [stdout] test runner::callbacks::tests::test_noop_callbacks_compiles ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_context_with_args_preview ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_context_with_tool_info ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_result_blocked ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_result_failure ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_result_with_output_preview ... ok [INFO] [stdout] test runner::callbacks::tests::test_tool_callback_result_success ... ok [INFO] [stdout] test runner::execution_runner::tests::test_default_runner_new ... ok [INFO] [stdout] test runner::execution_runner::tests::test_emitter_mode ... ok [INFO] [stdout] test runner::execution_runner::tests::test_run_callable_emits_events ... ok [INFO] [stdout] test runner::approval_policy::tests::test_threshold_policy_below_threshold ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_with_tenant ... ok [INFO] [stdout] test runner::callbacks::tests::test_agent_callback_context_with_trace ... ok [INFO] [stdout] test runner::execution_runner::tests::test_run_callable_failure_emits_failed_event ... ok [INFO] [stdout] test kernel::persistence::message_store::tests::test_thread_updated_on_message ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_cancel ... ok [INFO] [stdout] test runner::execution_runner::tests::test_run_callable_success ... ok [INFO] [stdout] test runner::execution_runner::tests::test_run_callable_failure ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_checkpoint_with_agent_name ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_execution_id_unique ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_callable_checks_cancellation_before_run ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_new ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_checkpoint_without_node ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_load_checkpoint_no_data ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_save_and_load_checkpoint ... ok [INFO] [stdout] test runner::protected_runner::tests::test_protected_runner_execution_id ... ok [INFO] [stdout] test runner::protected_runner::tests::test_protected_runner_blocked_input ... ok [INFO] [stdout] test runner::protected_runner::tests::test_default_protected_runner ... ok [INFO] [stdout] test runner::protected_runner::tests::test_protected_runner_no_processors ... ok [INFO] [stdout] test runner::protected_runner::tests::test_protected_runner_cancel ... ok [INFO] [stdout] test runner::r#loop::tests::test_discovered_step_builder ... ok [INFO] [stdout] test runner::r#loop::tests::test_checkpointing_on_discovery ... ok [INFO] [stdout] test runner::r#loop::tests::test_max_depth_limit ... ok [INFO] [stdout] test runner::r#loop::tests::test_discovery_loop_multiple_steps ... ok [INFO] [stdout] test runner::r#loop::tests::test_has_pending_work ... ok [INFO] [stdout] test runner::r#loop::tests::test_parse_complete_marker ... ok [INFO] [stdout] test runner::r#loop::tests::test_parse_done_marker ... ok [INFO] [stdout] test runner::r#loop::tests::test_history_tracking ... ok [INFO] [stdout] test runner::r#loop::tests::test_error_propagation ... ok [INFO] [stdout] test runner::r#loop::tests::test_max_steps_limit ... ok [INFO] [stdout] test runner::r#loop::tests::test_parse_json_with_status_complete ... ok [INFO] [stdout] test runner::r#loop::tests::test_parse_json_embedded_in_text ... ok [INFO] [stdout] test runner::r#loop::tests::test_parse_plain_output ... ok [INFO] [stdout] test runner::r#loop::tests::test_parse_json_with_discovered_steps ... ok [INFO] [stdout] test runner::r#loop::tests::test_priority_ordering ... ok [INFO] [stdout] test runner::r#loop::tests::test_single_shot_execution ... ok [INFO] [stdout] test signal::inmemory::tests::test_inmemory_signal_bus_new ... ok [INFO] [stdout] test signal::inmemory::tests::test_inmemory_signal_bus_default ... ok [INFO] [stdout] test signal::inmemory::tests::test_late_subscriber_misses_messages ... ok [INFO] [stdout] test signal::inmemory::tests::test_emit_to_different_channels ... ok [INFO] [stdout] test signal::inmemory::tests::test_concurrent_emit ... ok [INFO] [stdout] test signal::inmemory::tests::test_subscribe_and_receive ... ok [INFO] [stdout] test signal::inmemory::tests::test_multiple_messages ... ok [INFO] [stdout] test signal::inmemory::tests::test_multiple_subscribers ... ok [INFO] [stdout] test signal::inmemory::tests::test_unsubscribe ... ok [INFO] [stdout] test storage::tests::test_create_jsonl_event_store ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_pause_resume ... ok [INFO] [stdout] test streaming::event_logger::tests::test_event_log_get_after ... ok [INFO] [stdout] test streaming::event_logger::tests::test_event_log_append_and_retrieve ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_emit_and_drain ... ok [INFO] [stdout] test runner::execution_runner::tests::test_runner_emitter_access ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_emit_force ... ok [INFO] [stdout] test signal::inmemory::tests::test_emit_without_subscribers ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_mode_control_only ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_mode_silent ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_mode_summary ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_mode_full ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_new ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_with_mode ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_done ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_serialization ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_execution_factories ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_is_delta_event ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_is_control_event ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_tool_factories ... ok [INFO] [stdout] test storage::tests::test_create_storage_context ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_mode_default ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_is_summary_event ... ok [INFO] [stdout] test streaming::event_stream::tests::test_event_emitter_set_mode ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_step_factories ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_text_factories ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_event_to_sse ... ok [INFO] [stdout] test streaming::protected_emitter::tests::test_protected_emitter_context ... ok [INFO] [stdout] test streaming::protected_emitter::tests::test_protected_emitter_emit_unprotected ... ok [INFO] [stdout] test streaming::event_stream::tests::test_stream_mode_variants ... ok [INFO] [stdout] test streaming::protection::context::tests::test_data_destination_frontend_visible ... ok [INFO] [stdout] test streaming::protected_emitter::tests::test_protected_emitter_mode ... ok [INFO] [stdout] test streaming::protection::context::tests::test_protection_context_factories ... ok [INFO] [stdout] test streaming::protection::context::tests::test_data_destination_requires_encryption ... ok [INFO] [stdout] test streaming::jsonl_event_store::tests::test_jsonl_store_persistence ... ok [INFO] [stdout] test streaming::protected_emitter::tests::test_protected_emitter_no_processors ... ok [INFO] [stdout] test streaming::jsonl_event_store::tests::test_jsonl_store_append_and_retrieve ... ok [INFO] [stdout] test streaming::protection::context::tests::test_protection_context_with_tenant ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_processor_can_enable ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_encrypts_for_storage ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_control_events_pass_through ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_processor_disabled_by_default ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_processor_name ... ok [INFO] [stdout] test streaming::jsonl_state_store::tests::test_jsonl_state_store_kv ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_skips_when_disabled ... ok [INFO] [stdout] test streaming::protection::pii_protection::tests::test_pii_protection_processor_name ... ok [INFO] [stdout] test streaming::protection::pii_protection::tests::test_pii_protection_unchanged_event ... ok [INFO] [stdout] test streaming::protection::processor::tests::test_pipeline_new ... ok [INFO] [stdout] test streaming::protection::processor::tests::test_processed_event_modified ... ok [INFO] [stdout] test streaming::protection::processor::tests::test_processed_event_unchanged ... ok [INFO] [stdout] test streaming::protection::processor::tests::test_processed_event_with_encrypted ... ok [INFO] [stdout] test tool::cost::tests::test_cost_tool_get ... ok [INFO] [stdout] test tool::cost::tests::test_cost_tracker ... ok [INFO] [stdout] test tool::cost::tests::test_cost_tracker_reset ... ok [INFO] [stdout] test tool::dispatcher::tests::test_is_allowed ... ok [INFO] [stdout] test tool::dispatcher::tests::test_policy_decision_event_emission_allowed ... ok [INFO] [stdout] test streaming::jsonl_state_store::tests::test_jsonl_state_store_snapshot ... ok [INFO] [stdout] test tool::dispatcher::tests::test_policy_decision_event_emission_denied ... ok [INFO] [stdout] test tool::dispatcher::tests::test_tool_execution_blocked ... ok [INFO] [stdout] test tool::dispatcher::tests::test_tool_execution_allowed ... ok [INFO] [stdout] test tool::filesystem::tests::test_file_read_success ... ok [INFO] [stdout] test tool::filesystem::tests::test_file_write_success ... ok [INFO] [stdout] test tool::filesystem::tests::test_file_read_expands_tilde ... ok [INFO] [stdout] test tool::git::tests::test_git_status ... ok [INFO] [stdout] test tool::git::tests::test_git_version ... ok [INFO] [stdout] test kernel::enforcement::tests::test_step_timeout_guard ... ok [INFO] [stdout] test tool::shell::tests::test_shell_echo ... ok [INFO] [stdout] test tool::shell::tests::test_shell_error ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_panics_in_production_mode ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_skips_streaming_destination ... ok [INFO] [stdout] test tool::filesystem::tests::test_file_read_not_found ... ok [INFO] [stdout] test tool::web_search::tests::test_web_search_schema ... ok [INFO] [stdout] test workflow::contract::tests::test_parse_fields ... ok [INFO] [stdout] test workflow::contract::tests::test_get_feedback ... ok [INFO] [stdout] test streaming::protection::encryption::tests::test_encryption_works_when_production_false ... ok [INFO] [stdout] test tool::filesystem::tests::test_file_read_traversal_prevention ... ok [INFO] [stdout] test workflow::contract::tests::test_parse_status ... ok [INFO] [stdout] test workflow::contract::tests::test_parse_json_field ... ok [INFO] [stdout] test workflow::contract::tests::test_validate_contract ... ok [INFO] [stdout] test workflow::health::tests::test_abandoned_run_detection ... ok [INFO] [stdout] test workflow::health::tests::test_stuck_step_detection ... ok [INFO] [stdout] test workflow::health::tests::test_health_report ... ok [INFO] [stdout] test workflow::health::tests::test_orphaned_run_detection ... ok [INFO] [stdout] test workflow::contract::tests::test_validate_missing_field ... ok [INFO] [stdout] test workflow::health::tests::test_watchdog_registration ... ok [INFO] [stdout] test workflow::progress::tests::test_progress_journal ... ok [INFO] [stdout] test workflow::progress::tests::test_to_markdown ... ok [INFO] [stdout] test workflow::role::tests::test_analysis_profile ... ok [INFO] [stdout] test workflow::role::tests::test_capability_parsing ... ok [INFO] [stdout] test workflow::role::tests::test_coding_profile ... ok [INFO] [stdout] test workflow::role::tests::test_role_definition_override ... ok [INFO] [stdout] test workflow::role::tests::test_verification_profile ... ok [INFO] [stdout] test workflow::story_loop::tests::test_completion_conditions ... ok [INFO] [stdout] test workflow::story_loop::tests::test_context_variables ... ok [INFO] [stdout] test workflow::story_loop::tests::test_mark_completed ... ok [INFO] [stdout] test workflow::story_loop::tests::test_next_story ... ok [INFO] [stdout] test workflow::story_loop::tests::test_parse_stories ... ok [INFO] [stdout] test workflow::story_loop::tests::test_story_loop_state ... ok [INFO] [stdout] test workflow::tests::test_load_workflow ... ok [INFO] [stdout] test workflow::tests::test_validate_workflow ... ok [INFO] [stdout] test workflow::tests::test_workflow_context_substitution ... ok [INFO] [stdout] test tool::http::tests::test_http_get ... ok [INFO] [stdout] test tool::http::tests::test_http_post ... ok [INFO] [stdout] test tool::web_search::tests::test_web_search_duckduckgo ... ok [INFO] [stdout] test tool::shell::tests::test_shell_timeout ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 843 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.25s [INFO] [stdout] [INFO] [stderr] Running tests/airgapped_e2e_test.rs (/opt/rustwide/target/debug/deps/airgapped_e2e_test-d339f89879889a9d) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test test_airgapped_blocks_network_provider ... ok [INFO] [stdout] test test_airgapped_blocks_network_tool ... ok [INFO] [stdout] test test_airgapped_allows_local_tool ... ok [INFO] [stdout] test test_network_violation_error_format ... ok [INFO] [stdout] test test_airgapped_kernel_basic_operations ... ok [INFO] [stdout] test test_airgapped_allows_local_provider ... ok [INFO] [stderr] Running tests/e2e_agentic_loop.rs (/opt/rustwide/target/debug/deps/e2e_agentic_loop-efa7b8d4cf9a2cd9) [INFO] [stdout] test test_network_violation_serialization ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] Running tests/e2e_test.rs (/opt/rustwide/target/debug/deps/e2e_test-964a781dd0dd2ae7) [INFO] [stdout] test test_agentic_loop_event_persistence ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test test_execute_replay_same_state ... ok [INFO] [stdout] test test_artifact_hash_stable ... ok [INFO] [stdout] test test_policy_violation_blocks_execution ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/graph_test.rs (/opt/rustwide/target/debug/deps/graph_test-2c970ce0276d4ef9) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stderr] Running tests/stream_event_id_validation.rs (/opt/rustwide/target/debug/deps/stream_event_id_validation-d16f3372117448da) [INFO] [stdout] test test_conditional_routing ... ok [INFO] [stdout] test test_valid_dag_compiles ... ok [INFO] [stdout] test test_simple_two_node_graph ... ok [INFO] [stdout] test test_graph_validation ... ok [INFO] [stdout] test test_cycle_detection ... ok [INFO] [stdout] test test_two_node_cycle_detection ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 17 tests [INFO] [stdout] test test_all_events_have_complete_id_signatures ... ignored [INFO] [stdout] test test_artifact_created_has_all_ids ... ok [INFO] [stdout] test test_execution_end_has_execution_id ... ok [INFO] [stdout] test test_context_snapshot_has_execution_id ... ok [INFO] [stdout] test test_execution_start_has_execution_id ... ok [INFO] [stdout] test test_llm_call_end_has_execution_id ... ok [INFO] [stdout] test test_feedback_received_has_execution_id ... ok [INFO] [stdout] test test_guardrail_evaluated_has_execution_id ... ok [INFO] [stdout] test test_llm_call_failed_has_execution_id ... ok [INFO] [stdout] test test_llm_call_start_has_execution_id ... ok [INFO] [stdout] test test_step_end_has_execution_id_and_step_id ... ok [INFO] [stdout] test test_memory_recalled_has_execution_id ... ok [INFO] [stdout] test test_step_failed_has_execution_id_and_step_id ... ok [INFO] [stdout] test test_text_delta_missing_ids ... ok [INFO] [stdout] test test_tool_events_missing_ids ... ok [INFO] [stdout] test test_step_start_has_execution_id_and_step_id ... ok [INFO] [stderr] Doc-tests enact_core [INFO] [stdout] test test_token_usage_recorded_has_execution_id ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 16 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 16 tests [INFO] [stdout] test src/context/execution_context.rs - context::execution_context::RuntimeContext (line 59) ... ignored [INFO] [stdout] test src/context/mod.rs - context (line 19) ... ignored [INFO] [stdout] test src/context/tenant.rs - context::tenant (line 11) ... ignored [INFO] [stdout] test src/kernel/kernel.rs - kernel::kernel::ExecutionKernel::cancellation_token (line 613) ... ignored [INFO] [stdout] test src/kernel/kernel.rs - kernel::kernel::ExecutionKernel::with_protected_emitter (line 220) ... ignored [INFO] [stdout] test src/providers/mod.rs - providers (line 45) ... ignored [INFO] [stdout] test src/providers/trait.rs - providers::r#trait::ChatMessage::user_with_images (line 389) ... ignored [INFO] [stdout] test src/runner/callbacks.rs - runner::callbacks (line 32) ... ignored [INFO] [stdout] test src/runner/protected_runner.rs - runner::protected_runner::ProtectedRunner (line 41) ... ignored [INFO] [stdout] test src/streaming/protected_emitter.rs - streaming::protected_emitter::ProtectedEventEmitter (line 19) ... ignored [INFO] [stdout] test src/tool/agent_tool.rs - tool::agent_tool (line 38) ... ignored [INFO] [stdout] test src/tool/agent_tool.rs - tool::agent_tool::AgentTool::new (line 97) ... ignored [INFO] [stdout] test src/tool/dispatcher.rs - tool::dispatcher (line 7) ... ignored [INFO] [stdout] test src/tool/mod.rs - tool (line 8) ... ignored [INFO] [stdout] test src/lib.rs - (line 37) ... ok [INFO] [stdout] test src/lib.rs - prelude (line 404) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 14 ignored; 0 measured; 0 filtered out; finished in 0.62s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "835e526e8e15780ea676d7d8d286ae9962265e68581fdae70b5a1ce5db6058f2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "835e526e8e15780ea676d7d8d286ae9962265e68581fdae70b5a1ce5db6058f2", kill_on_drop: false }` [INFO] [stdout] 835e526e8e15780ea676d7d8d286ae9962265e68581fdae70b5a1ce5db6058f2