[INFO] fetching crate rein-lang 0.1.0... [INFO] testing rein-lang-0.1.0 against 1.95.0 for beta-1.96-2 [INFO] extracting crate rein-lang 0.1.0 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate rein-lang 0.1.0 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate rein-lang 0.1.0 [INFO] tweaked toml for crates.io crate rein-lang 0.1.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate rein-lang 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 rein-lang 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 tower-lsp v0.20.0 [INFO] [stderr] Downloaded ariadne v0.4.1 [INFO] [stderr] Downloaded tower-lsp-macros v0.9.0 [INFO] [stderr] Downloaded lsp-types v0.94.1 [INFO] [stderr] Downloaded bumpalo v3.20.1 [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] 42c98ac117ee4dd92ebc61385d06a3513b510598830ac7a91cc0c42bcd2240c5 [INFO] running `Command { std: "docker" "start" "-a" "42c98ac117ee4dd92ebc61385d06a3513b510598830ac7a91cc0c42bcd2240c5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "42c98ac117ee4dd92ebc61385d06a3513b510598830ac7a91cc0c42bcd2240c5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "42c98ac117ee4dd92ebc61385d06a3513b510598830ac7a91cc0c42bcd2240c5", kill_on_drop: false }` [INFO] [stdout] 42c98ac117ee4dd92ebc61385d06a3513b510598830ac7a91cc0c42bcd2240c5 [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] 4708bb8ee82938f32ec03e7facd62189e16b2a9a522af7ddf921fdc36f0c935c [INFO] running `Command { std: "docker" "start" "-a" "4708bb8ee82938f32ec03e7facd62189e16b2a9a522af7ddf921fdc36f0c935c", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling syn v2.0.116 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling clap_builder v4.5.59 [INFO] [stderr] Compiling yansi v1.0.1 [INFO] [stderr] Compiling ariadne v0.4.1 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling dashmap v5.5.3 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [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 serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling auto_impl v1.3.0 [INFO] [stderr] Compiling tower-lsp-macros v0.9.0 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling pin-project v1.1.10 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling clap v4.5.59 [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 toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling toml_edit v0.22.27 [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 v0.3.32 [INFO] [stderr] Compiling tower v0.4.13 [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 tower v0.5.3 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling lsp-types v0.94.1 [INFO] [stderr] Compiling toml v0.8.23 [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 axum v0.8.8 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling tower-lsp v0.20.0 [INFO] [stderr] Compiling rein-lang v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.11s [INFO] running `Command { std: "docker" "inspect" "4708bb8ee82938f32ec03e7facd62189e16b2a9a522af7ddf921fdc36f0c935c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4708bb8ee82938f32ec03e7facd62189e16b2a9a522af7ddf921fdc36f0c935c", kill_on_drop: false }` [INFO] [stdout] 4708bb8ee82938f32ec03e7facd62189e16b2a9a522af7ddf921fdc36f0c935c [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] 9d9dce332106a6f2c6a569b2351301c2c93bdd21c1a0a7d2157975996201c9e5 [INFO] running `Command { std: "docker" "start" "-a" "9d9dce332106a6f2c6a569b2351301c2c93bdd21c1a0a7d2157975996201c9e5", kill_on_drop: false }` [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling deadpool-runtime v0.1.4 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling getrandom v0.4.1 [INFO] [stderr] Compiling deadpool v0.12.3 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling tower-lsp v0.20.0 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling wiremock v0.6.5 [INFO] [stderr] Compiling native-tls v0.2.18 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rein-lang v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 46.10s [INFO] running `Command { std: "docker" "inspect" "9d9dce332106a6f2c6a569b2351301c2c93bdd21c1a0a7d2157975996201c9e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9d9dce332106a6f2c6a569b2351301c2c93bdd21c1a0a7d2157975996201c9e5", kill_on_drop: false }` [INFO] [stdout] 9d9dce332106a6f2c6a569b2351301c2c93bdd21c1a0a7d2157975996201c9e5 [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] 51ed9f40d9047f6a924cb0dbad885a01d5224a04fcfc5f9147c8908f52a46514 [INFO] running `Command { std: "docker" "start" "-a" "51ed9f40d9047f6a924cb0dbad885a01d5224a04fcfc5f9147c8908f52a46514", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rein-84b5d00d0f9d1881) [INFO] [stdout] [INFO] [stdout] running 546 tests [INFO] [stdout] test ast::tests::agent_def_minimal_model_none ... ok [INFO] [stdout] test ast::tests::capability_without_constraint_serializes ... ok [INFO] [stdout] test ast::tests::capability_with_constraint_serializes ... ok [INFO] [stdout] test ast::tests::conditional_route_serializes ... ok [INFO] [stdout] test ast::tests::constraint_monetary_cap_serializes ... ok [INFO] [stdout] test ast::tests::span_serializes_to_json ... ok [INFO] [stdout] test ast::tests::stage_serializes ... ok [INFO] [stdout] test ast::tests::workflow_def_find_stage ... ok [INFO] [stdout] test ast::tests::rein_file_with_workflows_roundtrips ... ok [INFO] [stdout] test ast::tests::agent_def_full_serializes ... ok [INFO] [stdout] test ast::tests::rein_file_roundtrips_via_json ... ok [INFO] [stdout] test ast::tests::workflow_roundtrips_via_json ... ok [INFO] [stdout] test auth::apikey::tests::invalid_key_rejected ... ok [INFO] [stdout] test ast::tests::workflow_def_serializes ... ok [INFO] [stdout] test auth::apikey::tests::list_keys ... ok [INFO] [stdout] test auth::apikey::tests::create_and_validate ... ok [INFO] [stdout] test ast::tests::budget_serializes ... ok [INFO] [stdout] test auth::apikey::tests::revoke_key ... ok [INFO] [stdout] test auth::namespace::tests::create_and_lookup ... ok [INFO] [stdout] test auth::namespace::tests::isolation ... ok [INFO] [stdout] test auth::rbac::tests::admin_has_all_permissions ... ok [INFO] [stdout] test auth::rbac::tests::operator_can_execute ... ok [INFO] [stdout] test auth::rbac::tests::viewer_read_only ... ok [INFO] [stdout] test auth::rbac::tests::assign_role ... ok [INFO] [stdout] test config::tests::has_openai_key_false_when_empty ... ok [INFO] [stdout] test config::tests::has_openai_key_false_when_missing ... ok [INFO] [stdout] test config::tests::has_openai_key_true_when_set ... ok [INFO] [stdout] test error::tests::format_error_contains_code ... ok [INFO] [stdout] test error::tests::format_error_contains_message ... ok [INFO] [stdout] test error::tests::format_parse_error_contains_message_text ... ok [INFO] [stdout] test error::tests::format_parse_error_contains_e000 ... ok [INFO] [stdout] test lexer::tests::defaults_keyword ... ok [INFO] [stdout] test error::tests::format_warning_contains_code ... ok [INFO] [stdout] test lexer::tests::display_dollar_cents_only ... ok [INFO] [stdout] test lexer::tests::display_dollar_mixed ... ok [INFO] [stdout] test config::tests::rein_toml_all_sections_deserialize ... ok [INFO] [stdout] test lexer::tests::display_dollar_whole ... ok [INFO] [stdout] test lexer::tests::display_eof ... ok [INFO] [stdout] test lexer::tests::display_euro ... ok [INFO] [stdout] test lexer::tests::display_ident ... ok [INFO] [stdout] test lexer::tests::display_comment ... ok [INFO] [stdout] test config::tests::default_model_is_gpt4o ... ok [INFO] [stdout] test config::tests::default_timeout_is_30_seconds ... ok [INFO] [stdout] test config::tests::load_env_override_missing_file_uses_base ... ok [INFO] [stdout] test lexer::tests::display_keywords ... ok [INFO] [stdout] test config::tests::load_missing_rein_toml_uses_defaults ... ok [INFO] [stdout] test config::tests::load_rein_toml ... ok [INFO] [stdout] test config::tests::load_env_override_merges ... ok [INFO] [stdout] test lexer::tests::display_string_literal ... ok [INFO] [stdout] test lexer::tests::display_symbols ... ok [INFO] [stdout] test lexer::tests::eof_is_always_last ... ok [INFO] [stdout] test lexer::tests::equality_operators ... ok [INFO] [stdout] test lexer::tests::error_bare_dollar_eof ... ok [INFO] [stdout] test lexer::tests::error_bare_dollar_space ... ok [INFO] [stdout] test lexer::tests::error_dollar_alpha ... ok [INFO] [stdout] test lexer::tests::error_dollar_leading_dot ... ok [INFO] [stdout] test lexer::tests::error_dollar_multiple_dots ... ok [INFO] [stdout] test lexer::tests::error_dollar_trailing_dot ... ok [INFO] [stdout] test lexer::tests::error_on_invalid_char ... ok [INFO] [stdout] test lexer::tests::error_on_unterminated_block_comment ... ok [INFO] [stdout] test lexer::tests::error_span_points_to_bad_char ... ok [INFO] [stdout] test lexer::tests::error_unterminated_string_literal ... ok [INFO] [stdout] test lexer::tests::guardrails_keyword ... ok [INFO] [stdout] test lexer::tests::hash_comment_at_start_of_file_with_code ... ok [INFO] [stdout] test lexer::tests::hash_comment_empty ... ok [INFO] [stdout] test lexer::tests::hash_comment_inline_after_code ... ok [INFO] [stdout] test lexer::tests::hash_comment_mixed_with_slash_comments ... ok [INFO] [stdout] test lexer::tests::parse_cents_dollar_fifty ... ok [INFO] [stdout] test lexer::tests::parse_cents_fractional ... ok [INFO] [stdout] test lexer::tests::parse_cents_whole_number ... ok [INFO] [stdout] test lexer::tests::parse_cents_one_decimal_place ... ok [INFO] [stdout] test lexer::tests::parse_cents_truncates_sub_cent ... ok [INFO] [stdout] test lexer::tests::span_is_correct_for_ident ... ok [INFO] [stdout] test lexer::tests::tokenize_agent_header ... ok [INFO] [stdout] test lexer::tests::tokenize_all_keywords ... ok [INFO] [stdout] test lexer::tests::tokenize_block_comment ... ok [INFO] [stdout] test lexer::tests::tokenize_dollar_amount ... ok [INFO] [stdout] test lexer::tests::tokenize_dollar_integer ... ok [INFO] [stdout] test lexer::tests::tokenize_dotted_capability ... ok [INFO] [stdout] test lexer::tests::tokenize_empty_string_literal ... ok [INFO] [stdout] test lexer::tests::tokenize_euro ... ok [INFO] [stdout] test lexer::tests::tokenize_full_agent_snippet ... ok [INFO] [stdout] test lexer::tests::tokenize_hash_comment ... ok [INFO] [stdout] test lexer::tests::tokenize_line_comment ... ok [INFO] [stdout] test lexer::tests::tokenize_pound ... ok [INFO] [stdout] test lexer::tests::tokenize_string_literal_simple ... ok [INFO] [stdout] test lexer::tests::tokenize_string_literal_span ... ok [INFO] [stdout] test lexer::tests::tokenize_string_literal_with_slash ... ok [INFO] [stdout] test lexer::tests::tokenize_symbols ... ok [INFO] [stdout] test lexer::tests::tokenize_up_to_constraint ... ok [INFO] [stdout] test lexer::tests::tokenize_yen ... ok [INFO] [stdout] test lexer::tests::tool_and_endpoint_keywords ... ok [INFO] [stdout] test lockfile::tests::lockfile_header_preserved ... ok [INFO] [stdout] test lockfile::tests::new_lockfile_is_empty ... ok [INFO] [stdout] test lsp::tests::completions_include_agent ... ok [INFO] [stdout] test lsp::tests::completions_include_workflow ... ok [INFO] [stdout] test lockfile::tests::pin_model ... ok [INFO] [stdout] test lsp::tests::keyword_docs_returns_agent ... ok [INFO] [stdout] test lsp::tests::keyword_docs_returns_none_for_unknown ... ok [INFO] [stdout] test lsp::tests::offset_to_line_col_first_line ... ok [INFO] [stdout] test lsp::tests::offset_to_line_col_second_line ... ok [INFO] [stdout] test lsp::tests::parse_error_produces_diagnostic ... ok [INFO] [stdout] test lsp::tests::valid_file_no_diagnostics ... ok [INFO] [stdout] test lsp::tests::word_at_position_extracts_ident ... ok [INFO] [stdout] test lsp::tests::word_at_position_extracts_keyword ... ok [INFO] [stdout] test mcp::tests::explain_shows_agents_and_workflows ... ok [INFO] [stdout] test lockfile::tests::save_and_load ... ok [INFO] [stdout] test lockfile::tests::sha256_is_deterministic ... ok [INFO] [stdout] test mcp::tests::fmt_valid_source_returns_source ... ok [INFO] [stdout] test mcp::tests::list_tools_has_validate ... ok [INFO] [stdout] test mcp::tests::list_agents_returns_json ... ok [INFO] [stdout] test mcp::tests::list_tools_returns_five ... ok [INFO] [stdout] test mcp::tests::list_workflows_returns_json ... ok [INFO] [stdout] test mcp::tests::unknown_tool_returns_error ... ok [INFO] [stdout] test mcp::tests::validate_strict_warns_on_guardrails ... ok [INFO] [stdout] test mcp::tests::validate_valid_source ... ok [INFO] [stdout] test parser::approval_tests::collaborate_suggest_mode ... ok [INFO] [stdout] test parser::approval_tests::collaborate_with_mode ... ok [INFO] [stdout] test parser::consensus_tests::consensus_majority ... ok [INFO] [stdout] test parser::approval_tests::approve_with_timeout ... ok [INFO] [stdout] test parser::consensus_tests::consensus_unanimous_no_require ... ok [INFO] [stdout] test parser::eval_parser_tests::eval_block_multiple_assertions ... ok [INFO] [stdout] test parser::eval_parser_tests::eval_block_path_without_quotes ... ok [INFO] [stdout] test parser::eval_parser_tests::eval_block_with_dataset_and_assertion ... ok [INFO] [stdout] test parser::eval_parser_tests::eval_block_with_name_and_failure_action ... ok [INFO] [stdout] test parser::memory_parser_tests::memory_block_empty_tier ... ok [INFO] [stdout] test parser::memory_parser_tests::memory_block_with_name ... ok [INFO] [stdout] test parser::scenario_tests::scenario_basic ... ok [INFO] [stdout] test parser::schedule_parser_tests::schedule_cron_string ... ok [INFO] [stdout] test parser::scenario_tests::scenario_ident_values ... ok [INFO] [stdout] test parser::memory_parser_tests::memory_block_three_tiers ... ok [INFO] [stdout] test parser::schedule_parser_tests::schedule_daily_at ... ok [INFO] [stdout] test mcp::tests::validate_invalid_source ... ok [INFO] [stdout] test parser::schedule_parser_tests::schedule_every_n_hours ... ok [INFO] [stdout] test parser::secrets_parser_tests::secrets_block_multiple_bindings ... ok [INFO] [stdout] test parser::secrets_parser_tests::secrets_block_vault ... ok [INFO] [stdout] test parser::step_ext_tests::step_typed_input ... ok [INFO] [stdout] test parser::step_ext_tests::step_typed_output ... ok [INFO] [stdout] test parser::tests::capability_span_simple ... ok [INFO] [stdout] test parser::tests::circuit_breaker_block ... ok [INFO] [stdout] test parser::tests::env_default_requires_string_literal ... ok [INFO] [stdout] test parser::tests::env_missing_lparen_errors ... ok [INFO] [stdout] test parser::tests::env_missing_rparen_errors ... ok [INFO] [stdout] test parser::tests::env_missing_string_arg_errors ... ok [INFO] [stdout] test parser::tests::capability_span_with_constraint ... ok [INFO] [stdout] test parser::tests::env_resolve_with_missing_var ... ok [INFO] [stdout] test parser::tests::env_resolve_with_present_var ... ok [INFO] [stdout] test parser::tests::env_with_default_value ... ok [INFO] [stdout] test parser::tests::env_without_default_value ... ok [INFO] [stdout] test parser::tests::env_resolve_with_default_missing_var ... ok [INFO] [stdout] test parser::tests::env_resolve_with_default_present_var ... ok [INFO] [stdout] test parser::step_ext_tests::step_for_each ... ok [INFO] [stdout] test parser::step_ext_tests::step_escalate_to_human ... ok [INFO] [stdout] test parser::tests::error_duplicate_can ... ok [INFO] [stdout] test parser::tests::error_budget_missing_currency ... ok [INFO] [stdout] test parser::tests::error_can_without_bracket ... ok [INFO] [stdout] test parser::tests::channel_block ... ok [INFO] [stdout] test parser::tests::error_duplicate_budget ... ok [INFO] [stdout] test parser::tests::error_duplicate_cannot ... ok [INFO] [stdout] test parser::tests::error_duplicate_model ... ok [INFO] [stdout] test parser::tests::error_missing_agent_name ... ok [INFO] [stdout] test parser::tests::error_missing_lbrace ... ok [INFO] [stdout] test parser::tests::error_model_invalid_value ... ok [INFO] [stdout] test parser::tests::fleet_block ... ok [INFO] [stdout] test parser::tests::inline_step_shorthand_with_goal ... ok [INFO] [stdout] test parser::tests::key_as_identifier_in_agent_name ... ok [INFO] [stdout] test parser::tests::inline_step_shorthand_without_goal ... ok [INFO] [stdout] test parser::tests::error_missing_rbrace ... ok [INFO] [stdout] test parser::tests::key_field_still_works_in_provider ... ok [INFO] [stdout] test parser::tests::literal_value_resolves_directly ... ok [INFO] [stdout] test parser::tests::observe_block ... ok [INFO] [stdout] test parser::tests::parse_agent_duplicate_guardrails_errors ... ok [INFO] [stdout] test parser::tests::parse_agent_guardrails_empty ... ok [INFO] [stdout] test parser::tests::parse_agent_guardrails_multiple_sections ... ok [INFO] [stdout] test parser::tests::parse_agent_with_guardrails ... ok [INFO] [stdout] test parser::tests::parse_agent_without_from ... ok [INFO] [stdout] test parser::tests::parse_archetype_basic ... ok [INFO] [stdout] test parser::tests::parse_archetype_empty_body ... ok [INFO] [stdout] test parser::tests::parse_archetype_with_guardrails ... ok [INFO] [stdout] test parser::tests::parse_auto_resolve_basic ... ok [INFO] [stdout] test parser::tests::parse_budget ... ok [INFO] [stdout] test parser::tests::parse_budget_euro ... ok [INFO] [stdout] test parser::tests::parse_budget_yen ... ok [INFO] [stdout] test parser::tests::parse_auto_resolve_comparison_only ... ok [INFO] [stdout] test parser::tests::parse_can_list ... ok [INFO] [stdout] test parser::tests::parse_budget_pound ... ok [INFO] [stdout] test parser::tests::parse_cannot_list ... ok [INFO] [stdout] test parser::tests::parse_capability_constraint_euro ... ok [INFO] [stdout] test parser::tests::parse_defaults_before_agents ... ok [INFO] [stdout] test parser::tests::parse_defaults_duplicate_model_errors ... ok [INFO] [stdout] test parser::tests::parse_defaults_empty ... ok [INFO] [stdout] test parser::tests::parse_defaults_unknown_field_errors ... ok [INFO] [stdout] test parser::tests::parse_defaults_with_model ... ok [INFO] [stdout] test parser::tests::parse_defaults_with_all_fields ... ok [INFO] [stdout] test parser::tests::parse_duplicate_defaults_errors ... ok [INFO] [stdout] test lockfile::tests::pin_and_verify_tool ... ok [INFO] [stdout] test parser::tests::parse_agent_no_guardrails ... ok [INFO] [stdout] test parser::tests::parse_agent_no_model ... ok [INFO] [stdout] test parser::tests::parse_env_in_model_field ... ok [INFO] [stdout] test parser::tests::parse_full_agent ... ok [INFO] [stdout] test parser::tests::parse_guardrails_duplicate_section_errors ... ok [INFO] [stdout] test parser::tests::parse_import_single_name ... ok [INFO] [stdout] test parser::tests::parse_minimal_agent ... ok [INFO] [stdout] test parser::tests::parse_model_string_literal_with_dashes ... ok [INFO] [stdout] test parser::tests::parse_defaults_with_budget ... ok [INFO] [stdout] test parser::tests::parse_model_as_string_literal ... ok [INFO] [stdout] test parser::tests::parse_multiple_imports ... ok [INFO] [stdout] test parser::tests::parse_multiple_providers ... ok [INFO] [stdout] test parser::tests::parse_multiple_tools ... ok [INFO] [stdout] test parser::tests::parse_multiple_type_defs ... ok [INFO] [stdout] test parser::tests::parse_named_import ... ok [INFO] [stdout] test parser::tests::parse_no_defaults ... ok [INFO] [stdout] test parser::tests::parse_multiple_workflows ... ok [INFO] [stdout] test parser::tests::parse_one_of_empty_variants_errors ... ok [INFO] [stdout] test parser::tests::parse_file_with_agents_and_workflows ... ok [INFO] [stdout] test parser::tests::parse_one_of_trailing_comma ... ok [INFO] [stdout] test parser::tests::parse_model_ident_still_works ... ok [INFO] [stdout] test parser::tests::parse_parallel_block_basic ... ok [INFO] [stdout] test parser::tests::parse_multiple_agents ... ok [INFO] [stdout] test parser::tests::parse_parallel_empty_errors ... ok [INFO] [stdout] test parser::tests::parse_glob_import ... ok [INFO] [stdout] test parser::tests::parse_parallel_with_sequential_steps ... ok [INFO] [stdout] test parser::tests::parse_policy_empty ... ok [INFO] [stdout] test parser::tests::parse_policy_basic ... ok [INFO] [stdout] test parser::tests::parse_policy_with_compound_condition ... ok [INFO] [stdout] test parser::tests::parse_provider_basic ... ok [INFO] [stdout] test parser::tests::parse_provider_duplicate_key_errors ... ok [INFO] [stdout] test parser::tests::parse_provider_model_only ... ok [INFO] [stdout] test parser::tests::parse_provider_duplicate_model_errors ... ok [INFO] [stdout] test parser::tests::parse_provider_unknown_field_errors ... ok [INFO] [stdout] test parser::tests::parse_registry_import ... ok [INFO] [stdout] test parser::tests::parse_route_on_basic ... ok [INFO] [stdout] test parser::tests::parse_step_duplicate_agent_errors ... ok [INFO] [stdout] test parser::tests::parse_step_duplicate_goal_errors ... ok [INFO] [stdout] test parser::tests::parse_simple_workflow ... ok [INFO] [stdout] test parser::tests::parse_route_on_with_steps ... ok [INFO] [stdout] test parser::tests::parse_route_on_multiple_arms ... ok [INFO] [stdout] test parser::tests::parse_step_goal_env_ref_errors ... ok [INFO] [stdout] test parser::tests::parse_step_missing_agent_errors ... ok [INFO] [stdout] test parser::tests::parse_step_with_one_of_constraint ... ok [INFO] [stdout] test parser::tests::parse_step_with_multiple_one_of_constraints ... ok [INFO] [stdout] test parser::tests::parse_step_with_retry_escalate ... ok [INFO] [stdout] test parser::tests::parse_step_with_retry_linear_then_step ... ok [INFO] [stdout] test parser::tests::parse_step_with_retry_fixed ... ok [INFO] [stdout] test parser::tests::parse_step_with_when_and ... ok [INFO] [stdout] test parser::tests::parse_step_with_when_and_retry ... ok [INFO] [stdout] test parser::tests::parse_step_with_when_currency ... ok [INFO] [stdout] test parser::tests::parse_step_with_when_equality ... ok [INFO] [stdout] test parser::tests::parse_step_with_when_not_equal ... ok [INFO] [stdout] test parser::tests::parse_step_with_when_or ... ok [INFO] [stdout] test parser::tests::parse_step_with_when_percent ... ok [INFO] [stdout] test parser::tests::parse_type_def_float_range ... ok [INFO] [stdout] test parser::tests::parse_type_def_with_range ... ok [INFO] [stdout] test parser::tests::parse_step_without_goal ... ok [INFO] [stdout] test parser::tests::parse_type_with_agents ... ok [INFO] [stdout] test parser::tests::parse_step_without_when ... ok [INFO] [stdout] test parser::tests::parse_tool_duplicate_provider_errors ... ok [INFO] [stdout] test parser::tests::parse_tool_endpoint_env_ref ... ok [INFO] [stdout] test parser::tests::parse_tool_empty_block ... ok [INFO] [stdout] test parser::tests::parse_tool_unknown_field_errors ... ok [INFO] [stdout] test parser::tests::parse_tool_with_endpoint ... ok [INFO] [stdout] test parser::tests::parse_type_def_basic ... ok [INFO] [stdout] test parser::tests::parse_tool_duplicate_key_errors ... ok [INFO] [stdout] test parser::tests::parse_tool_with_all_fields ... ok [INFO] [stdout] test parser::tests::parse_tool_duplicate_endpoint_errors ... ok [INFO] [stdout] test parser::tests::parse_type_def_builtins ... ok [INFO] [stdout] test parser::tests::parse_workflow_duplicate_trigger_errors ... ok [INFO] [stdout] test parser::tests::pipe_expression_full ... ok [INFO] [stdout] test parser::tests::step_duplicate_fallback_errors ... ok [INFO] [stdout] test parser::tests::pipe_expression_select_and_unique ... ok [INFO] [stdout] test parser::tests::parse_workflow_empty_stages_errors ... ok [INFO] [stdout] test parser::tests::step_with_fallback ... ok [INFO] [stdout] test parser::tests::parse_workflow_missing_trigger_errors ... ok [INFO] [stdout] test parser::tests::parse_workflow_mixed_stages_and_steps ... ok [INFO] [stdout] test parser::tests::step_with_send_to ... ok [INFO] [stdout] test parser::tests::parse_workflow_multiple_stages ... ok [INFO] [stdout] test parser::tests::parse_workflow_stages_without_commas ... ok [INFO] [stdout] test parser::tests::parse_workflow_trigger_multi_word ... ok [INFO] [stdout] test parser::tests::parse_workflow_trigger_single_word ... ok [INFO] [stdout] test parser::tests::parse_workflow_trigger_string_literal ... ok [INFO] [stdout] test parser::tests::parse_workflow_with_multiple_steps ... ok [INFO] [stdout] test parser::tests::parse_workflow_with_step_blocks ... ok [INFO] [stdout] test parser::tests::parse_workflow_without_auto_resolve ... ok [INFO] [stdout] test parser::tests::when_and_binds_tighter_than_or ... ok [INFO] [stdout] test parser::tests::when_or_chain_without_and ... ok [INFO] [stdout] test parser::tests::when_and_chain_without_or ... ok [INFO] [stdout] test parser::tests::when_mixed_precedence_complex ... ok [INFO] [stdout] test runtime::alerting::tests::clear_alerts ... ok [INFO] [stdout] test runtime::alerting::tests::non_matching_metric_ignored ... ok [INFO] [stdout] test runtime::alerting::tests::threshold_fires ... ok [INFO] [stdout] test runtime::audit::tests::entry_builder ... ok [INFO] [stdout] test runtime::budget::tests::alert_triggers_at_threshold ... ok [INFO] [stdout] test runtime::budget::tests::budget_exceeded_display ... ok [INFO] [stdout] test runtime::audit::tests::append_and_read ... ok [INFO] [stdout] test runtime::budget::tests::claude_pricing ... ok [INFO] [stdout] test runtime::audit::tests::empty_log_returns_empty_vec ... ok [INFO] [stdout] test runtime::audit::tests::multiple_entries ... ok [INFO] [stdout] test runtime::budget::tests::gpt35_pricing ... ok [INFO] [stdout] test runtime::audit::tests::query_by_workflow ... ok [INFO] [stdout] test runtime::budget::tests::gpt4o_cost_calculation ... ok [INFO] [stdout] test runtime::audit::tests::serialization_roundtrip ... ok [INFO] [stdout] test runtime::budget::tests::gpt4o_mini_is_cheaper ... ok [INFO] [stdout] test runtime::audit::tests::query_by_kind ... ok [INFO] [stdout] test runtime::budget::tests::alert_multiple_thresholds_at_once ... ok [INFO] [stdout] test runtime::budget::tests::record_usage_over_limit_returns_error ... ok [INFO] [stdout] test runtime::budget::tests::alert_display_format ... ok [INFO] [stdout] test runtime::budget::tests::large_token_count ... ok [INFO] [stdout] test runtime::budget::tests::record_usage_reduces_remaining ... ok [INFO] [stdout] test runtime::budget::tests::multiple_recordings ... ok [INFO] [stdout] test runtime::budget::tests::new_tracker_has_full_budget ... ok [INFO] [stdout] test runtime::budget::tests::unknown_model_uses_default ... ok [INFO] [stdout] test runtime::budget::tests::record_usage_at_exact_limit ... ok [INFO] [stdout] test runtime::engine::tests::budget_exceeded_stops_run ... ok [INFO] [stdout] test runtime::engine::tests::denied_tool_sends_error_to_llm ... ok [INFO] [stdout] test runtime::budget::tests::zero_tokens_costs_zero ... ok [INFO] [stdout] test runtime::engine::tests::max_turns_respected ... ok [INFO] [stdout] test parser::tests::parse_with_comments ... ok [INFO] [stdout] test runtime::engine::tests::simple_response_no_tools ... ok [INFO] [stdout] test runtime::engine::tests::stream_callback_receives_text ... ok [INFO] [stdout] test runtime::engine::tests::system_prompt_included ... ok [INFO] [stdout] test runtime::engine::tests::tool_call_then_response ... ok [INFO] [stdout] test runtime::eval::tests::check_gt_fails ... ok [INFO] [stdout] test runtime::eval::tests::check_gt_passes ... ok [INFO] [stdout] test runtime::eval::tests::check_neq_passes ... ok [INFO] [stdout] test runtime::engine::tests::trace_contains_run_complete ... ok [INFO] [stdout] test runtime::eval::tests::check_lt_passes ... ok [INFO] [stdout] test runtime::eval::tests::run_eval_one_fails ... ok [INFO] [stdout] test runtime::eval::tests::run_eval_all_pass ... ok [INFO] [stdout] test runtime::events::tests::drain_empty ... ok [INFO] [stdout] test runtime::eval::tests::check_percentage_threshold ... ok [INFO] [stdout] test runtime::events::tests::emit_and_drain ... ok [INFO] [stdout] test runtime::eval::tests::run_eval_missing_metric_defaults_to_zero ... ok [INFO] [stdout] test runtime::events::tests::sender_clone ... ok [INFO] [stdout] test runtime::execution::tests::dedup_key_deterministic ... ok [INFO] [stdout] test runtime::execution::tests::dedup_key_different_inputs ... ok [INFO] [stdout] test runtime::execution::tests::retry_tracker_allows_up_to_max ... ok [INFO] [stdout] test runtime::execution::tests::retry_tracker_independent_keys ... ok [INFO] [stdout] test runtime::execution::tests::retry_tracker_reset ... ok [INFO] [stdout] test runtime::executor::tests::mock_returns_registered_response ... ok [INFO] [stdout] test runtime::executor::tests::mock_returns_failure ... ok [INFO] [stdout] test runtime::injection::tests::case_insensitive_detection ... ok [INFO] [stdout] test runtime::execution::tests::execution_id_unique ... ok [INFO] [stdout] test runtime::injection::tests::clean_input_not_detected ... ok [INFO] [stdout] test runtime::execution::tests::dedup_cache_miss_then_hit ... ok [INFO] [stdout] test runtime::executor::tests::mock_multiple_tools ... ok [INFO] [stdout] test runtime::injection::tests::instruction_override_detected ... ok [INFO] [stdout] test runtime::injection::tests::system_prompt_extraction_detected ... ok [INFO] [stdout] test runtime::injection::tests::validate_output_clean ... ok [INFO] [stdout] test runtime::executor::tests::mock_unknown_tool_returns_not_found ... ok [INFO] [stdout] test runtime::interceptor::tests::allowed_tool_returns_allowed ... ok [INFO] [stdout] test runtime::interceptor::tests::cannot_overrides_can ... ok [INFO] [stdout] test runtime::injection::tests::role_assumption_detected ... ok [INFO] [stdout] test runtime::injection::tests::sanitized_output_redacts ... ok [INFO] [stdout] test runtime::interceptor::tests::capped_tool_returns_capped_at ... ok [INFO] [stdout] test runtime::injection::tests::tag_untrusted_wraps ... ok [INFO] [stdout] test runtime::eval::tests::check_gte_passes ... ok [INFO] [stdout] test runtime::eval::tests::check_eq_passes ... ok [INFO] [stdout] test runtime::injection::tests::validate_output_leaked ... ok [INFO] [stdout] test runtime::memory::tests::clear_working_removes_entries ... ok [INFO] [stdout] test runtime::interceptor::tests::unknown_tool_is_denied_by_default ... ok [INFO] [stdout] test runtime::memory::tests::session_memory_set_get ... ok [INFO] [stdout] test runtime::memory::tests::get_falls_back_to_session ... ok [INFO] [stdout] test runtime::memory::tests::working_memory_missing_key ... ok [INFO] [stdout] test runtime::memory::tests::clear_working_does_not_affect_session ... ok [INFO] [stdout] test runtime::observability::tests::prometheus_export ... ok [INFO] [stdout] test runtime::memory::tests::default_creates_empty_store ... ok [INFO] [stdout] test runtime::memory::tests::working_memory_set_get ... ok [INFO] [stdout] test runtime::interceptor::tests::multiple_tools_mixed_permissions ... ok [INFO] [stdout] test runtime::observability::tests::empty_collector ... ok [INFO] [stdout] test runtime::observability::tests::record_and_export_json ... ok [INFO] [stdout] test runtime::otel_export::tests::otlp_json_serializes ... ok [INFO] [stdout] test runtime::otel_export::tests::otlp_resource_has_service_info ... ok [INFO] [stdout] test runtime::otel_export::tests::otlp_root_span_has_stats ... ok [INFO] [stdout] test runtime::otel_export::tests::otlp_export_produces_valid_structure ... ok [INFO] [stdout] test runtime::memory::tests::overwrite_working_value ... ok [INFO] [stdout] test runtime::interceptor::tests::denied_tool_returns_denied ... ok [INFO] [stdout] test runtime::otel_export::tests::otlp_export_has_correct_span_names ... ok [INFO] [stdout] test runtime::memory::tests::get_checks_working_first ... ok [INFO] [stdout] test parser::tests::parse_up_to_constraint ... ok [INFO] [stdout] test parser::tests::within_constraint_block ... ok [INFO] [stdout] test runtime::provider::openai::tests::rate_limit_returns_rate_limited ... ok [INFO] [stdout] test runtime::provider::anthropic::tests::tool_use_response ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_case_insensitive ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_claude_bare ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_missing_anthropic_key ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_missing_openai_key ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_anthropic_bare ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_unknown_provider ... ok [INFO] [stdout] test runtime::provider::openai::tests::provider_name_is_openai ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_anthropic_specific_model ... ok [INFO] [stdout] test runtime::provider::tests::chat_response_with_tool_calls ... ok [INFO] [stdout] test runtime::provider::openai::tests::basic_chat_completion ... ok [INFO] [stdout] test runtime::provider::tests::message_constructors ... ok [INFO] [stdout] test runtime::provider::tests::mock_provider_empty_queue_errors ... ok [INFO] [stdout] test runtime::provider::tests::mock_provider_name ... ok [INFO] [stdout] test runtime::provider::tests::mock_provider_multiple_responses_in_order ... ok [INFO] [stdout] test runtime::provider::tests::mock_provider_returns_queued_response ... ok [INFO] [stdout] test runtime::provider::tests::mock_provider_returns_queued_error ... ok [INFO] [stdout] test runtime::provider::tests::tool_def_serializes ... ok [INFO] [stdout] test runtime::provider::tests::usage_default ... ok [INFO] [stdout] test runtime::registry::tests::list_namespace ... ok [INFO] [stdout] test runtime::registry::tests::missing_tool ... ok [INFO] [stdout] test runtime::registry::tests::register_and_get ... ok [INFO] [stdout] test runtime::provider::openai::tests::empty_choices_returns_parse_error ... ok [INFO] [stdout] test runtime::provider::anthropic::tests::rate_limit ... ok [INFO] [stdout] test runtime::provider::tests::provider_error_display ... ok [INFO] [stdout] test runtime::sandbox::tests::allow_filesystem ... ok [INFO] [stdout] test runtime::provider::anthropic::tests::basic_text_response ... ok [INFO] [stdout] test runtime::sandbox::tests::tool_allowlist ... ok [INFO] [stdout] test runtime::schedule::tests::cron_default_interval ... ok [INFO] [stdout] test runtime::schedule::tests::daily_at_interval_is_24_hours ... ok [INFO] [stdout] test runtime::schedule::tests::describe_cron ... ok [INFO] [stdout] test runtime::sandbox::tests::restricted_denies_everything ... ok [INFO] [stdout] test runtime::schedule::tests::describe_every_1_minute ... ok [INFO] [stdout] test runtime::schedule::tests::describe_every_n_hours ... ok [INFO] [stdout] test runtime::schedule::tests::describe_daily ... ok [INFO] [stdout] test runtime::schedule::tests::every_30_minutes_interval ... ok [INFO] [stdout] test runtime::sandbox::tests::violation_messages ... ok [INFO] [stdout] test runtime::schedule::tests::describe_every_1_hour ... ok [INFO] [stdout] test runtime::provider::anthropic::tests::provider_name_is_anthropic ... ok [INFO] [stdout] test runtime::schedule::tests::validate_cron_wrong_fields ... ok [INFO] [stdout] test runtime::schedule::tests::validate_daily_empty_time ... ok [INFO] [stdout] test runtime::schedule::tests::every_6_hours_interval ... ok [INFO] [stdout] test runtime::schedule::tests::validate_daily_ok ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_anthropic_with_custom_base_url ... ok [INFO] [stdout] test runtime::schedule::tests::validate_cron_valid ... ok [INFO] [stdout] test runtime::provider::openai::tests::chat_with_tool_calls ... ok [INFO] [stdout] test runtime::schedule::tests::validate_hours_zero ... ok [INFO] [stdout] test runtime::sandbox::tests::restricted_allows_any_tool_when_empty ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_openai_bare ... ok [INFO] [stdout] test runtime::provider::anthropic::tests::auth_error ... ok [INFO] [stdout] test runtime::schedule::tests::validate_hours_too_large ... ok [INFO] [stdout] test runtime::tests::permissions_tests::allowed_tool_passes ... ok [INFO] [stdout] test runtime::tests::permissions_tests::monetary_cap_absent_for_denied_tool ... ok [INFO] [stdout] test runtime::tests::permissions_tests::monetary_cap_is_tracked ... ok [INFO] [stdout] test runtime::tests::permissions_tests::empty_agent_denies_all ... ok [INFO] [stdout] test runtime::tests::permissions_tests::monetary_cap_partial_eq ... ok [INFO] [stdout] test runtime::tests::permissions_tests::cannot_overrides_can_for_same_tool ... ok [INFO] [stdout] test runtime::tests::permissions_tests::multiple_can_tools_all_allowed ... ok [INFO] [stdout] test runtime::tests::permissions_tests::permission_denied_display_contains_reason ... ok [INFO] [stdout] test runtime::tests::permissions_tests::permission_denied_implements_error ... ok [INFO] [stdout] test runtime::tests::permissions_tests::unconstrained_tool_has_no_monetary_cap ... ok [INFO] [stdout] test runtime::tests::permissions_tests::unknown_tool_is_default_denied ... ok [INFO] [stdout] test runtime::tests::run_error_budget_exceeded_roundtrips ... ok [INFO] [stdout] test runtime::tests::permissions_tests::denied_tool_is_blocked ... ok [INFO] [stdout] test runtime::tests::run_error_config_error_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_error_permission_denied_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_error_provider_error_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_error_serializes_as_snake_case ... ok [INFO] [stdout] test runtime::tests::run_event_budget_update_has_type_tag ... ok [INFO] [stdout] test runtime::tests::run_event_budget_update_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_event_llm_call_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_event_llm_call_has_type_tag ... ok [INFO] [stdout] test runtime::tests::run_event_run_complete_has_type_tag ... ok [INFO] [stdout] test runtime::tests::run_event_run_complete_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_event_tool_call_attempt_denied_with_reason ... ok [INFO] [stdout] test runtime::tests::run_event_tool_call_attempt_allowed_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_event_tool_call_attempt_has_type_tag ... ok [INFO] [stdout] test runtime::tests::run_event_tool_call_result_roundtrips ... ok [INFO] [stdout] test runtime::tests::run_trace_empty_roundtrips ... ok [INFO] [stdout] test runtime::tests::structured_trace_serializes_to_json ... ok [INFO] [stdout] test runtime::tests::trace_summary_contains_turns ... ok [INFO] [stdout] test runtime::webhook::tests::inactive_never_matches ... ok [INFO] [stdout] test runtime::tests::tool_call_roundtrips ... ok [INFO] [stdout] test runtime::tests::tool_call_serializes_to_expected_keys ... ok [INFO] [stdout] test runtime::tests::trace_summary_shows_denied_tools ... ok [INFO] [stdout] test runtime::webhook::tests::matches_specific_event ... ok [INFO] [stdout] test runtime::webhook::tests::wildcard_matches_all ... ok [INFO] [stdout] test runtime::tests::tool_result_roundtrips ... ok [INFO] [stdout] test runtime::tests::trace_to_json_produces_valid_json ... ok [INFO] [stdout] test runtime::webhook::tests::registry_matching ... ok [INFO] [stdout] test runtime::workflow::persistence::tests::clear_state_nonexistent_is_ok ... ok [INFO] [stdout] test runtime::workflow::persistence::tests::load_nonexistent_returns_none ... ok [INFO] [stdout] test runtime::tests::tool_result_failure_roundtrips ... ok [INFO] [stdout] test runtime::webhook::tests::sign_payload ... ok [INFO] [stdout] test runtime::workflow::persistence::tests::corrupt_json_returns_error ... ok [INFO] [stdout] test runtime::workflow::persistence::tests::clear_state_removes_file ... ok [INFO] [stdout] test runtime::tests::structured_trace_has_stats ... ok [INFO] [stdout] test runtime::tests::trace_summary_empty_trace ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_with_custom_base_url ... ok [INFO] [stdout] test runtime::workflow::persistence::tests::multiple_completed_stages_roundtrip ... ok [INFO] [stdout] test runtime::workflow::tests::condition_match_rejects_prefix_false_positive ... ok [INFO] [stdout] test runtime::workflow::tests::condition_match_json_path ... ok [INFO] [stdout] test runtime::workflow::tests::conditional_no_else_ends_workflow ... ok [INFO] [stdout] test runtime::workflow::tests::circular_route_returns_error ... ok [INFO] [stdout] test runtime::workflow::persistence::tests::save_and_load_roundtrip ... ok [INFO] [stdout] test runtime::workflow::tests::conditional_routes_to_then_stage ... ok [INFO] [stdout] test runtime::workflow::tests::conditional_routes_to_else_stage ... ok [INFO] [stdout] test runtime::workflow::tests::parallel_workflow_runs_all_stages ... ok [INFO] [stdout] test runtime::workflow::tests::conditional_route_to_nonexistent_stage_errors ... ok [INFO] [stdout] test runtime::workflow::tests::run_workflow_dispatches_by_mode ... ok [INFO] [stdout] test runtime::workflow::tests::stage_failure_returns_error ... ok [INFO] [stdout] test runtime::workflow::tests::step_execution_runs_agent_with_goal ... ok [INFO] [stdout] test runtime::workflow::tests::resumable_resumes_after_first_stage ... ok [INFO] [stdout] test runtime::workflow::tests::three_stage_pipeline ... ok [INFO] [stdout] test runtime::workflow::tests::resumable_conditional_routing_on_resume ... ok [INFO] [stdout] test runtime::workflow::tests::two_stage_pipeline_passes_output ... ok [INFO] [stdout] test runtime::workflow::tests::unknown_agent_returns_error ... ok [INFO] [stdout] test runtime::workflow::tests::parallel_unknown_agent_errors ... ok [INFO] [stdout] test runtime::workflow::persistence::tests::load_state_without_version_defaults_to_1 ... ok [INFO] [stdout] test runtime::workflow::tests::single_stage_workflow ... ok [INFO] [stdout] test server::tests::audit_empty ... ok [INFO] [stdout] test server::tests::health_endpoint ... ok [INFO] [stdout] test server::tests::list_agents_endpoint ... ok [INFO] [stdout] test runtime::workflow::tests::resumable_fresh_run_no_checkpoint ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_gpt4o_bare ... ok [INFO] [stdout] test runtime::provider::anthropic::tests::server_error ... ok [INFO] [stdout] test server::tests::list_workflows_endpoint ... ok [INFO] [stdout] test validator::tests::duplicate_step_names_error ... ok [INFO] [stdout] test validator::tests::duplicate_tool_names_error ... ok [INFO] [stdout] test server::tests::not_found ... ok [INFO] [stdout] test validator::tests::model_with_known_provider_prefix_no_warning ... ok [INFO] [stdout] test validator::tests::model_with_unknown_provider_prefix_warns ... ok [INFO] [stdout] test validator::tests::multiple_errors_reported ... ok [INFO] [stdout] test validator::tests::duplicate_agent_names_detected ... ok [INFO] [stdout] test validator::tests::missing_model_produces_warning ... ok [INFO] [stdout] test validator::tests::duplicate_provider_names_error ... ok [INFO] [stdout] test validator::tests::duplicate_in_cannot_list ... ok [INFO] [stdout] test validator::strict::tests::empty_file_no_strict_warnings ... ok [INFO] [stdout] test validator::tests::duplicate_capability_produces_warning ... ok [INFO] [stdout] test validator::tests::present_model_no_warning ... ok [INFO] [stdout] test validator::tests::no_overlap_ok ... ok [INFO] [stdout] test validator::tests::positive_budget_ok ... ok [INFO] [stdout] test runtime::workflow::tests::resumable_resumes_mid_pipeline ... ok [INFO] [stdout] test runtime::workflow::tests::resumable_corrupt_checkpoint_returns_persistence_error ... ok [INFO] [stdout] test runtime::workflow::tests::resumable_different_workflow_name_restarts_fresh ... ok [INFO] [stdout] test validator::tests::model_without_slash_no_provider_warning ... ok [INFO] [stdout] test validator::tests::no_duplicate_capability_no_warning ... ok [INFO] [stdout] test validator::tests::provider_with_key_no_warning ... ok [INFO] [stdout] test validator::tests::step_stage_name_collision_errors ... ok [INFO] [stdout] test validator::tests::unique_agent_names_ok ... ok [INFO] [stdout] test runtime::provider::openai::tests::auth_error_returns_auth ... ok [INFO] [stdout] test validator::tests::provider_missing_key_warns ... ok [INFO] [stdout] test validator::tests::step_references_unknown_agent_errors ... ok [INFO] [stdout] test validator::tests::same_tool_in_can_and_cannot_detected ... ok [INFO] [stdout] test validator::tests::step_references_valid_agent_ok ... ok [INFO] [stdout] test validator::tests::workflow_duplicate_stages_warns ... ok [INFO] [stdout] test validator::tests::zero_budget_detected ... ok [INFO] [stdout] test validator::tests::workflow_unknown_agent_errors ... ok [INFO] [stdout] test validator::tests::positive_constraint_amount_no_error ... ok [INFO] [stdout] test validator::tests::zero_constraint_amount_produces_error ... ok [INFO] [stdout] test validator::tests::workflow_valid_stages_no_errors ... ok [INFO] [stdout] test validator::tests::workflow_duplicate_names_errors ... ok [INFO] [stdout] test runtime::tests::run_trace_with_events_roundtrips ... ok [INFO] [stdout] test runtime::provider::openai::tests::server_error_returns_api_error ... ok [INFO] [stdout] test runtime::provider::resolver::tests::resolve_with_specific_model ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 546 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.27s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rein-ed3ad15908cfb2c5) [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test commands::cost::tests::test_run_cost_empty_returns_error ... ok [INFO] [stdout] test commands::fmt::tests::test_format_single_trailing_newline ... ok [INFO] [stdout] test commands::fmt::tests::test_format_basic_agent ... ok [INFO] [stdout] test commands::fmt::tests::test_format_removes_extra_blank_lines ... ok [INFO] [stdout] test commands::fmt::tests::test_format_preserves_comments ... ok [INFO] [stdout] test commands::fmt::tests::test_format_blank_between_top_level_blocks ... ok [INFO] [stdout] test commands::fmt::tests::test_check_mode ... ok [INFO] [stdout] test commands::cost::tests::test_run_cost_with_dir ... ok [INFO] [stdout] test commands::cost::tests::test_load_trace_from_file ... ok [INFO] [stdout] test commands::cost::tests::test_collect_traces_from_dir ... ok [INFO] [stdout] test commands::fmt::tests::test_write_mode ... ok [INFO] [stdout] test commands::init::tests::test_init_fails_on_nonempty_dir ... ok [INFO] [stdout] test commands::init::tests::test_init_creates_scaffold ... ok [INFO] [stdout] test commands::init::tests::test_init_succeeds_on_empty_existing_dir ... ok [INFO] [stdout] test commands::fmt::tests::test_format_normalizes_colon_spacing ... ok [INFO] [stderr] Running tests/cli.rs (/opt/rustwide/target/debug/deps/cli-f014bb3cfc40b9ea) [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stderr] error: cannot read 'no_such_file.rein': No such file or directory (os error 2) [INFO] [stdout] test missing_file_exits_one ... ok [INFO] [stdout] ✓ Valid [INFO] [stderr] [E000] Error: parse error [INFO] [stdout] test ast_flag_multi_agent_contains_both_names ... ok [INFO] [stderr] ╭─[/opt/rustwide/workdir/examples/invalid.rein:6:9] [INFO] [stdout] test multi_agent_exits_zero ... ok [INFO] [stderr] │ [INFO] [stdout] ✓ Valid [INFO] [stderr] 6 │     can zendesk.read_ticket [INFO] [stderr]  │ ───┬─── [INFO] [stderr]  │ ╰───── expected [, got zendesk [INFO] [stderr] ───╯ [INFO] [stdout] test ast_flag_invalid_file_exits_one ... ok [INFO] [stdout] test basic_prints_valid ... ok [INFO] [stdout] test invalid_exits_one ... ok [INFO] [stdout] test basic_exits_zero ... ok [INFO] [stdout] test ast_flag_exits_zero_and_outputs_json ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [INFO] [stdout] [INFO] [stderr] Running tests/runtime.rs (/opt/rustwide/target/debug/deps/runtime-0fd48cb146f73020) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test full_pipeline_budget_exceeded ... ok [INFO] [stdout] test full_pipeline_tool_call_denied ... ok [INFO] [stdout] test full_pipeline_simple_response ... ok [INFO] [stdout] test full_pipeline_trace_summary_is_readable ... ok [INFO] [stdout] test integration_parallel_workflow ... ok [INFO] [stdout] test integration_sequential_workflow ... ok [INFO] [stdout] test full_pipeline_tool_call_allowed ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests rein [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "51ed9f40d9047f6a924cb0dbad885a01d5224a04fcfc5f9147c8908f52a46514", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "51ed9f40d9047f6a924cb0dbad885a01d5224a04fcfc5f9147c8908f52a46514", kill_on_drop: false }` [INFO] [stdout] 51ed9f40d9047f6a924cb0dbad885a01d5224a04fcfc5f9147c8908f52a46514