[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] [31m[E000] Error:[0m parse error
[INFO] [stdout] test ast_flag_multi_agent_contains_both_names ... ok
[INFO] [stderr]    [38;5;246m╭[0m[38;5;246m─[0m[38;5;246m[[0m/opt/rustwide/workdir/examples/invalid.rein:6:9[38;5;246m][0m
[INFO] [stdout] test multi_agent_exits_zero ... ok
[INFO] [stderr]    [38;5;246m│[0m
[INFO] [stdout] ✓ Valid
[INFO] [stderr]  [38;5;246m6 │[0m [38;5;249m [0m[38;5;249m [0m[38;5;249m [0m[38;5;249m [0m[38;5;249mc[0m[38;5;249ma[0m[38;5;249mn[0m[38;5;249m [0m[31mz[0m[31me[0m[31mn[0m[31md[0m[31me[0m[31ms[0m[31mk[0m[38;5;249m.[0m[38;5;249mr[0m[38;5;249me[0m[38;5;249ma[0m[38;5;249md[0m[38;5;249m_[0m[38;5;249mt[0m[38;5;249mi[0m[38;5;249mc[0m[38;5;249mk[0m[38;5;249me[0m[38;5;249mt[0m
[INFO] [stderr]  [38;5;240m  │[0m         [31m─[0m[31m─[0m[31m─[0m[31m┬[0m[31m─[0m[31m─[0m[31m─[0m  
[INFO] [stderr]  [38;5;240m  │[0m            [31m╰[0m[31m─[0m[31m─[0m[31m─[0m[31m─[0m[31m─[0m expected [, got zendesk
[INFO] [stderr] [38;5;246m───╯[0m
[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
