[INFO] fetching crate poolsim-cli 0.4.0...
[INFO] testing poolsim-cli-0.4.0 against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate poolsim-cli 0.4.0 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate poolsim-cli 0.4.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate poolsim-cli 0.4.0
[INFO] tweaked toml for crates.io crate poolsim-cli 0.4.0 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate poolsim-cli 0.4.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate poolsim-cli 0.4.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.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929
[INFO] running `Command { std: "docker" "start" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling anstyle-parse v0.2.7
[INFO] [stderr]    Compiling indexmap v2.2.6
[INFO] [stderr]    Compiling winnow v0.5.40
[INFO] [stderr]    Compiling bytecount v0.6.9
[INFO] [stderr]    Compiling clap_lex v0.6.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling clap_derive v4.4.7
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling papergrid v0.11.0
[INFO] [stderr]    Compiling rayon v1.8.1
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling safe_arch v0.7.4
[INFO] [stderr]    Compiling clap_builder v4.4.18
[INFO] [stderr]    Compiling wide v0.7.33
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling simba v0.6.0
[INFO] [stderr]    Compiling nalgebra-macros v0.1.0
[INFO] [stderr]    Compiling tabled_derive v0.7.0
[INFO] [stderr]    Compiling rand_distr v0.4.3
[INFO] [stderr]    Compiling clap v4.4.18
[INFO] [stderr]    Compiling tabled v0.15.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]    Compiling toml v0.7.8
[INFO] [stderr]    Compiling nalgebra v0.29.0
[INFO] [stderr]    Compiling statrs v0.16.1
[INFO] [stderr]    Compiling poolsim-core v0.4.0
[INFO] [stderr]    Compiling poolsim-cli v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 23s
[INFO] running `Command { std: "docker" "inspect" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling poolsim-cli v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 21.90s
[INFO] running `Command { std: "docker" "inspect" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.11s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/poolsim-cli/2d43a3d27905f07c/out/poolsim_cli-2d43a3d27905f07c)
[INFO] [stdout] 
[INFO] [stdout] running 104 tests
[INFO] [stdout] test args::tests::parser_handles_batch_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_connection_profile_flag ... ok
[INFO] [stdout] test args::tests::parser_handles_html_output_format ... ok
[INFO] [stdout] test args::tests::parser_handles_compare_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_doctor_pgbouncer_pools_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_import_pgbouncer_timeseries_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_database_contention_check_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_import_otlp_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_gate_telemetry_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_import_pgbouncer_pools_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_guard_prometheus_subcommand ... ok
[INFO] [stdout] test args::tests::cli_connection_profile_maps_to_core_enum ... ok
[INFO] [stdout] test args::tests::cli_saturation_model_maps_to_core_enum ... ok
[INFO] [stdout] test args::tests::parser_handles_import_pooler_evidence_subcommand ... ok
[INFO] [stdout] test args::tests::cli_queue_model_maps_to_core_enum ... ok
[INFO] [stdout] test args::tests::parser_handles_import_prometheus_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_budget_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_telemetry_quality_check_subcommand ... ok
[INFO] [stdout] test budget::tests::budget_plan_validates_inputs_and_caps_service_max ... ok
[INFO] [stdout] test args::tests::parser_handles_session_state_check_subcommand ... ok
[INFO] [stdout] test args::tests::parser_supports_global_flags_and_aliases ... ok
[INFO] [stdout] test budget::tests::budget_plan_covers_remaining_validation_errors_and_zero_capacity_warning ... ok
[INFO] [stdout] test args::tests::parser_handles_init_subcommand ... ok
[INFO] [stdout] test budget::tests::budget_plan_passes_when_recommendations_fit ... ok
[INFO] [stdout] test budget::tests::budget_plan_reduces_low_priority_services_when_over_budget ... ok
[INFO] [stdout] test config::tests::connection_profile_override_builds_and_replaces_pool_overhead ... ok
[INFO] [stdout] test args::tests::parser_handles_pool_scale_check_subcommand ... ok
[INFO] [stdout] test compare::tests::saturation_rank_orders_warning_and_critical_levels ... ok
[INFO] [stdout] test budget::tests::budget_plan_reports_critical_when_minimums_do_not_fit ... ok
[INFO] [stdout] test args::tests::cli_distribution_model_maps_to_core_enum ... ok
[INFO] [stdout] test config::tests::resolve_batch_input_rejects_empty_or_unsupported_config ... ok
[INFO] [stdout] test config::tests::resolve_budget_plan_input_supports_json_and_toml ... ok
[INFO] [stdout] test config::tests::resolve_evaluate_and_sweep_report_missing_sections ... ok
[INFO] [stdout] test config::tests::load_config_supports_toml_and_rejects_unknown_extension ... ok
[INFO] [stdout] test config::tests::resolve_evaluate_input_and_config_file_loading ... ok
[INFO] [stdout] test args::tests::cli_enum_conversions_cover_all_public_value_variants ... ok
[INFO] [stdout] test config::tests::parse_batch_helpers_cover_direct_paths ... ok
[INFO] [stdout] test config::tests::resolve_budget_plan_input_rejects_invalid_files ... ok
[INFO] [stdout] test config::tests::resolve_batch_input_supports_json_and_toml_formats ... ok
[INFO] [stdout] test config_gen::tests::config_snippets_cover_supported_frameworks ... ok
[INFO] [stdout] test args::tests::parser_handles_doctor_prometheus_subcommand ... ok
[INFO] [stdout] test args::tests::parser_handles_import_telemetry_subcommand ... ok
[INFO] [stdout] test config::tests::resolve_scenario_comparison_input_rejects_invalid_files ... ok
[INFO] [stdout] test args::tests::parser_handles_generate_config_sources ... ok
[INFO] [stdout] test config::tests::resolve_scenario_comparison_input_supports_json_and_toml ... ok
[INFO] [stdout] test config::tests::resolve_telemetry_input_rejects_bad_files ... ok
[INFO] [stdout] test args::tests::parser_handles_explain_flag ... ok
[INFO] [stdout] test config::tests::resolve_simulation_input_errors_when_required_sections_missing ... ok
[INFO] [stdout] test config::tests::resolve_simulation_input_from_cli_overrides ... ok
[INFO] [stdout] test config_gen::tests::recommendation_adapters_preserve_source_metrics ... ok
[INFO] [stdout] test doctor::tests::doctor_classifies_healthy_too_small_too_large_and_close_to_saturation ... ok
[INFO] [stdout] test explain::tests::evaluation_explanation_mentions_fixed_pool_size ... ok
[INFO] [stdout] test config_gen::tests::framework_mapping_and_labels_are_stable ... ok
[INFO] [stdout] test gate::tests::gate_report_warns_for_warning_saturation_above_ok_budget ... ok
[INFO] [stdout] test explain::tests::explanations_cover_remaining_saturation_and_risk_branches ... ok
[INFO] [stdout] test config::tests::samples_file_parsing_supports_mixed_delimiters_and_errors ... ok
[INFO] [stdout] test explain::tests::simulation_explanation_mentions_recommendation_and_step_load ... ok
[INFO] [stdout] test explain::tests::sweep_explanation_handles_empty_and_ranked_rows ... ok
[INFO] [stdout] test compare::tests::scenario_comparison_rejects_missing_baseline ... ok
[INFO] [stdout] test gate::tests::gate_report_fails_for_critical_policy_breaches ... ok
[INFO] [stdout] test gate::tests::gate_report_passes_when_all_checks_pass ... ok
[INFO] [stdout] test gate::tests::policy_from_args_loads_policy_file ... ok
[INFO] [stdout] test guard::tests::guard_report_maps_gate_status_to_deployment_fields ... ok
[INFO] [stdout] test config_gen::tests::explicit_min_idle_is_clamped_and_strings_are_escaped ... ok
[INFO] [stdout] test guard::tests::helper_outputs_are_stable ... ok
[INFO] [stdout] test gate::tests::policy_files_support_json_toml_and_errors ... ok
[INFO] [stdout] test init::tests::init_refuses_to_overwrite_without_force ... ok
[INFO] [stdout] test init::tests::init_validates_bounds ... ok
[INFO] [stdout] test init::tests::init_validation_covers_all_error_branches_and_names ... ok
[INFO] [stdout] test gate::tests::helpers_cover_formatting_and_rank_paths ... ok
[INFO] [stdout] test otlp::tests::rejects_missing_otlp_metric ... ok
[INFO] [stdout] test gate::tests::default_policy_allows_warning_saturation ... ok
[INFO] [stdout] test gate::tests::policy_from_args_applies_overrides_and_validates ... ok
[INFO] [stdout] test prometheus::tests::reads_response_file_and_builds_valid_input ... ok
[INFO] [stdout] test prometheus::tests::rejects_invalid_prometheus_values ... ok
[INFO] [stdout] test gate::tests::gate_report_fails_for_critical_saturation_above_budget ... ok
[INFO] [stdout] test otlp::tests::resolves_otlp_metrics_into_telemetry_input ... ok
[INFO] [stdout] test prometheus::tests::http_client_reports_connection_failures_with_endpoint ... ok
[INFO] [stdout] test prometheus::tests::parses_plain_and_chunked_http_responses ... ok
[INFO] [stdout] test compare::tests::scenario_comparison_builds_deltas_against_baseline ... ok
[INFO] [stdout] test prometheus::tests::rejects_malformed_prometheus_payload_shapes ... ok
[INFO] [stdout] {
[INFO] [stdout]   "answer": 42,
[INFO] [stdout]   "label": "ok"
[INFO] [stdout] }summary_field,value
[INFO] [stdout] optimal_pool_size,5
[INFO] [stdout] confidence_interval,4..6
[INFO] [stdout] cold_start_min_pool_size,4
[INFO] [stdout] utilisation_rho,0.81
[INFO] [stdout] mean_queue_wait_ms,6.2
[INFO] [stdout] p99_queue_wait_ms,32
[INFO] [stdout] saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,risk
[INFO] [stdout] 4,0.72,5,20,Low
[INFO] [stdout] 5,0.89,7.5,35,High
[INFO] [stdout] ,
[INFO] [stdout] time_s,requests_per_second,utilisation_rho,p99_queue_wait_ms,saturation
[INFO] [stdout] 0,180,0.8,30,Warning
[INFO] [stdout] pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,saturation
[INFO] [stdout] 6,0.75,4,18,Ok
[INFO] [stdout] pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,risk
[INFO] [stdout] 4,0.72,5,20,Low
[INFO] [stdout] 5,0.89,7.5,35,High
[INFO] [stdout] request_index,optimal_pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,saturation
[INFO] [stdout] 0,5,0.81,6.2,32,Warning
[INFO] [stdout] 1,5,0.81,6.2,32,Warning
[INFO] [stdout] test render::html::tests::summary_html_handles_arrays_and_objects ... ok
[INFO] [stdout] test prometheus::tests::validates_endpoint_headers_and_encoding ... ok
[INFO] [stdout] test render::json::tests::json_renderer_prints_serializable_values ... ok
[INFO] [stdout] test render::table::tests::private_render_helpers_cover_colored_and_plain_paths ... ok
[INFO] [stdout] test render::html::tests::escape_html_covers_special_characters ... ok
[INFO] [stdout] test prometheus::tests::resolve_prometheus_input_queries_live_endpoint ... ok
[INFO] [stdout] {
[INFO] [stdout]   "optimal_pool_size": 6,
[INFO] [stdout]   "confidence_interval": [
[INFO] [stdout]     5,
[INFO] [stdout]     7
[INFO] [stdout]   ],
[INFO] [stdout]   "cold_start_min_pool_size": 5,
[INFO] [stdout]   "utilisation_rho": 0.84,
[INFO] [stdout]   "mean_queue_wait_ms": 6.0,
[INFO] [stdout]   "p99_queue_wait_ms": 30.0,
[INFO] [stdout]   "saturation": "Warning",
[INFO] [stdout]   "sensitivity": [
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 6,
[INFO] [stdout]       "utilisation_rho": 0.84,
[INFO] [stdout]       "mean_queue_wait_ms": 6.0,
[INFO] [stdout]       "p99_queue_wait_ms": 30.0,
[INFO] [stdout]       "risk": "Medium"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "step_load_analysis": [
[INFO] [stdout]     {
[INFO] [stdout]       "time_s": 0,
[INFO] [stdout]       "requests_per_second": 210.0,
[INFO] [stdout]       "utilisation_rho": 0.83,
[INFO] [stdout]       "p99_queue_wait_ms": 28.0,
[INFO] [stdout]       "saturation": "Warning"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "warnings": []
[INFO] [stdout] }summary_field,value
[INFO] [stdout] optimal_pool_size,6
[INFO] [stdout] confidence_interval,5..7
[INFO] [stdout] cold_start_min_pool_size,5
[INFO] [stdout] utilisation_rho,0.84
[INFO] [stdout] mean_queue_wait_ms,6
[INFO] [stdout] p99_queue_wait_ms,30
[INFO] [stdout] saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,risk
[INFO] [stdout] 6,0.84,6,30,Medium
[INFO] [stdout] ,
[INFO] [stdout] time_s,requests_per_second,utilisation_rho,p99_queue_wait_ms,saturation
[INFO] [stdout] 0,210,0.83,28,Warning
[INFO] [stdout] {
[INFO] [stdout]   "status": "allowed",
[INFO] [stdout]   "scale_up_requested": false,
[INFO] [stdout]   "current_pool_size": 8,
[INFO] [stdout]   "recommended_pool_size": 6,
[INFO] [stdout]   "additional_connections_per_replica": 0,
[INFO] [stdout]   "additional_connections_total": 0,
[INFO] [stdout]   "replica_count": 1,
[INFO] [stdout]   "current_total_connections": 8,
[INFO] [stdout]   "projected_total_connections": null,
[INFO] [stdout]   "effective_database_capacity": 85,
[INFO] [stdout]   "telemetry_quality": {
[INFO] [stdout]     "status": "valid",
[INFO] [stdout]     "arrival_model": "open-loop",
[INFO] [stdout]     "observed_rate_ratio": 1.0,
[INFO] [stdout]     "coordinated_omission_risk": "Low",
[INFO] [stdout]     "findings": [],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "NO_SCALE_UP_REQUESTED",
[INFO] [stdout]       "risk": "Low",
[INFO] [stdout]       "message": "the recommendation keeps or reduces the current pool size",
[INFO] [stdout]       "remediation": "apply the existing recommendation workflow; this gate only blocks unsafe increases"
[INFO] [stdout] test prometheus::tests::http_client_queries_local_server ...     ok}
[INFO] [stdout]   ],
[INFO] [stdout] 
[INFO] [stdout] test tests::exit_code_helpers_map_expected_levels ... ok
[INFO] [stdout] test render::table::tests::table_renderers_execute_for_all_output_types ... ok
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "database-contention",
[INFO] [stdout]   "dominant_cause": "lock-contention",
[INFO] [stdout]   "suppress_pool_increase": true,
[INFO] [stdout]   "evidence_categories": 5,
[INFO] [stdout]   "confidence": "high",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "POOL_WAIT_ELEVATED",
[INFO] [stdout]       "risk": "High",
[INFO] [stdout]       "message": "application requests are waiting materially for a pool connection",
[INFO] [stdout]       "remediation": "compare database-side evidence before increasing the pool; pool wait can be downstream of database contention"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "code": "LOCK_WAITING_SESSIONS",
[INFO] [stdout]       "risk": "High",
[INFO] [stdout]       "message": "one or more database sessions are waiting for locks",
[INFO] [stdout]       "remediation": "inspect blocking sessions, lock order, transaction duration, and query plans before increasing the application pool"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "code": "DATABASE_LATENCY_ELEVATED",
[INFO] [stdout]       "risk": "Medium",
[INFO] [stdout]       "message": "database service latency is above the configured threshold",
[INFO] [stdout]       "remediation": "inspect query latency and database waits; do not assume a larger application pool will reduce service time"
[INFO] [stdout]     }
[INFO] [stdout]   ]
[INFO] [stdout] }{
[INFO] [stdout]   "pool_size": 6,
[INFO] [stdout]   "utilisation_rho": 0.84,
[INFO] [stdout]   "mean_queue_wait_ms": 6.0,
[INFO] [stdout]   "p99_queue_wait_ms": 30.0,
[INFO] [stdout]   "saturation": "Warning",
[INFO] [stdout]   "warnings": []
[INFO] [stdout] }pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,saturation
[INFO] [stdout] 6,0.84,6,30,Warning
[INFO] [stdout] [
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 6,
[INFO] [stdout]     "utilisation_rho": 0.84,
[INFO] [stdout]     "mean_queue_wait_ms": 6.0,
[INFO] [stdout]     "p99_queue_wait_ms": 30.0,
[INFO] [stdout]     "risk": "Medium"
[INFO] [stdout]   }
[INFO] [stdout] ]pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,risk
[INFO] [stdout] 6,0.84,6,30,Medium
[INFO] [stdout] [
[INFO] [stdout]   {
[INFO] [stdout]     "optimal_pool_size": 6,
[INFO] [stdout]     "confidence_interval": [
[INFO] [stdout]       5,
[INFO] [stdout]       7
[INFO] [stdout]     ],
[INFO] [stdout]     "cold_start_min_pool_size": 5,
[INFO] [stdout]     "utilisation_rho": 0.84,
[INFO] [stdout]     "mean_queue_wait_ms": 6.0,
[INFO] [stdout]     "p99_queue_wait_ms": 30.0,
[INFO] [stdout]     "saturation": "Warning",
[INFO] [stdout]     "sensitivity": [
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 6,
[INFO] [stdout]         "utilisation_rho": 0.84,
[INFO] [stdout]         "mean_queue_wait_ms": 6.0,
[INFO] [stdout]         "p99_queue_wait_ms": 30.0,
[INFO] [stdout]         "risk": "Medium"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "step_load_analysis": [
[INFO] [stdout]       {
[INFO] [stdout]         "time_s": 0,
[INFO] [stdout]         "requests_per_second": 210.0,
[INFO] [stdout]         "utilisation_rho": 0.83,
[INFO] [stdout]         "p99_queue_wait_ms": 28.0,
[INFO] [stdout]         "saturation": "Warning"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "warnings": []
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "optimal_pool_size": 6,
[INFO] [stdout]     "confidence_interval": [
[INFO] [stdout]       5,
[INFO] [stdout]       7
[INFO] [stdout]     ],
[INFO] [stdout]     "cold_start_min_pool_size": 5,
[INFO] [stdout]     "utilisation_rho": 0.84,
[INFO] [stdout]     "mean_queue_wait_ms": 6.0,
[INFO] [stdout]     "p99_queue_wait_ms": 30.0,
[INFO] [stdout]     "saturation": "Warning",
[INFO] [stdout]     "sensitivity": [
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 6,
[INFO] [stdout]         "utilisation_rho": 0.84,
[INFO] [stdout]         "mean_queue_wait_ms": 6.0,
[INFO] [stdout]         "p99_queue_wait_ms": 30.0,
[INFO] [stdout]         "risk": "Medium"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     [
[INFO] [stdout]   {
[INFO] [stdout]     "optimal_pool_size": 4,
[INFO] [stdout]     "confidence_interval": [
[INFO] [stdout]       4,
[INFO] [stdout]       4
[INFO] [stdout]     ],
[INFO] [stdout]     "cold_start_min_pool_size": 4,
[INFO] [stdout]     "utilisation_rho": 0.9308330109796704,
[INFO] [stdout]     "mean_queue_wait_ms": 30.69664710364185,
[INFO] [stdout]     "p99_queue_wait_ms": 169.35321012274417,
[INFO] [stdout]     "saturation": "Warning",
[INFO] [stdout]     "sensitivity": [
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 4,
[INFO] [stdout]         "utilisation_rho": 0.9308330109796704,
[INFO] [stdout]         "mean_queue_wait_ms": 44.05254272274938,
[INFO] [stdout]         "p99_queue_wait_ms": 230.0202787653733,
[INFO] [stdout]         "risk": "Critical"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "step_load_analysis": [],
[INFO] [stdout]     "warnings": [
[INFO] [stdout]       "iterations increased to 10000 for full simulation fidelity",
[INFO] [stdout]       "No candidate pool size met target constraints; using max_pool_size fallback",
[INFO] [stdout]       "System utilisation is high at the recommended size (rho=0.931)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] ]"step_load_analysis": [
[INFO] [stdout]       {
[INFO] [stdout]         "time_s": 0,
[INFO] [stdout]         "requests_per_second": 210.0,
[INFO] [stdout]         "utilisation_rho": 0.83,
[INFO] [stdout]         "p99_queue_wait_ms": 28.0,
[INFO] [stdout]         "saturation": "Warning"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "warnings": []
[INFO] [stdout]   }
[INFO] [stdout] ]request_index,optimal_pool_size,utilisation_rho,mean_queue_wait_ms,p99_queue_wait_ms,saturation
[INFO] [stdout] 0,6,0.84,6,30,Warning
[INFO] [stdout] 1,6,0.84,6,30,Warning
[INFO] [stdout] {
[INFO] [stdout]   "status": "warning",
[INFO] [stdout]   "platform": "aws-lambda",
[INFO] [stdout]   "effective_concurrency": 10,
[INFO] [stdout]   "worst_case_app_pool_connections": 20,
[INFO] [stdout]   "direct_database_backend_upper_bound": null,
[INFO] [stdout]   "database_backend_limit": 100,
[INFO] [stdout]   "uses_external_pooler": true,
[INFO] [stdout]   "external_pooler": "rds-proxy",
[INFO] [stdout]   "connection_churn_risk": "Low",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "SERVERLESS_EXTERNAL_POOLER_REVIEW",
[INFO] [stdout]       "risk": "Medium",
[INFO] [stdout]       "message": "traffic uses an external pooler or proxy, so app-side connections are not the same as backend database connections",
[INFO] [stdout]       "remediation": "verify pooler mode, backend connection cap, pinning behavior, and live backend connection telemetry before increasing app-side pool size"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "medium"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "complete",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "nodes": [
[INFO] [stdout]     {
[INFO] [stdout]       "id": "application-runtime",
[INFO] [stdout]       "label": "Application runtime units",
[INFO] [stdout]       "layer_kind": "application-runtime",
[INFO] [stdout]       "owner": "application/platform",
[INFO] [stdout]       "max_connections": 2,
[INFO] [stdout]       "consumes_database_connections": false,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "replicas, workers, processes, or execution environments that can own pools"
[INFO] [stdout]       ]
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "id": "application-pool",
[INFO] [stdout]       "label": "Application-side pool",
[INFO] [stdout]       "layer_kind": "application-pool",
[INFO] [stdout]       "owner": "driver/framework",
[INFO] [stdout]       "max_connections": 4,
[INFO] [stdout]       "consumes_database_connections": true,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "configured driver or framework pool multiplied by runtime units"
[INFO] [stdout]       ]
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "id": "database-backend",
[INFO] [stdout]       "label": "Database backend",
[INFO] [stdout]       "layer_kind": "database-backend",
[INFO] [stdout]       "owner": "database",
[INFO] [stdout]       "max_connections": 100,
[INFO] [stdout]       "consumes_database_connections": true,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "real database sessions, processes, threads, or backend connection slots"
[INFO] [stdout]       ]
[INFO] [stdout]     scenario,baseline,requests_per_second,optimal_pool_size,pool_size_delta,p99_queue_wait_ms,p99_queue_wait_delta_ms,mean_queue_wait_ms,mean_queue_wait_delta_ms,utilisation_rho,utilisation_rho_delta,saturation
[INFO] [stdout] normal,true,180,4,0,28.560169907240972,0,2.518908571858756,0,0.6146844627283502,0,Ok
[INFO] [stdout] peak,false,260,5,1,42.366784882080125,13.806614974839153,3.5291548439414,1.010246272082644,0.7103020458194268,0.0956175830910766,Ok
[INFO] [stdout] field,value
[INFO] [stdout] status,Warning
[INFO] [stdout] max_connections,120
[INFO] [stdout] reserved_connections,20
[INFO] [stdout] safety_margin_connections,10
[INFO] [stdout] available_connections,90
[INFO] [stdout] current_total_connections,72
[INFO] [stdout] requested_total_connections,92
[INFO] [stdout] min_required_connections,36
[INFO] [stdout] allocated_total_connections,88
[INFO] [stdout] unused_connections,2
[INFO] [stdout] over_budget_connections,2
[INFO] [stdout] ,
[INFO] [stdout] service,replicas,priority,current_pool_size,min_pool_size,max_pool_size,recommended_pool_size,desired_pool_size,allocated_pool_size,current_total_connections,requested_total_connections,allocated_total_connections,pool_size_delta_from_current,reduction_from_recommended,capped_by_service_max,meets_minimum
[INFO] [stdout] checkout-api,6,5,8,4,12,10,10,10,48,60,60,2,0,false,true
[INFO] [stdout] billing-api,4,3,6,3,10,8,8,7,24,32,28,1,1,false,true
[INFO] [stdout] warning,requested service pools need 92 connections but only 90 are available
[INFO] [stdout] field,value
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] current_pool_size,6
[INFO] [stdout] recommended_pool_size,8
[INFO] [stdout] pool_size_delta,2
[INFO] [stdout] change,Increase
[INFO] [stdout] additional_connections_required,2
[INFO] [stdout] removable_connections,0
[INFO] [stdout] connection_change_percent,33.333
[INFO] [stdout] current_saturation,Ok
[INFO] [stdout] recommended_saturation,Warning
[INFO] [stdout] field,value
[INFO] [stdout] status,Pass
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] worst_saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] check,passed,severity,observed,threshold,message
[INFO] [stdout] max_saturation,true,Warning,Warning,Warning,worst saturation Warning is within Warning
[INFO] [stdout] field,value
[INFO] [stdout] status,Pass
[INFO] [stdout] deployment_safe,true
[INFO] [stdout] exit_code,0
[INFO] [stdout] reason,deployment is within pool safety policy
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] worst_saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] check,passed,severity,observed,threshold,message
[INFO] [stdout] max_saturation,true,Warning,Warning,Warning,worst saturation Warning is within Warning
[INFO] [stdout] field,value
[INFO] [stdout] status,TooSmall
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] current_pool_size,6
[INFO] [stdout] recommended_pool_size,8
[INFO] [stdout] pool_size_delta,2
[INFO] [stdout] current_rho,0.75
[INFO] [stdout] current_p99_queue_wait_ms,18
[INFO] [stdout] current_saturation,Ok
[INFO] [stdout] recommended_saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] finding,severity,message,action
[INFO] [stdout] current_pool,Warning,current pool size 6 is below the recommended size 8,raise the pool toward 8 and verify the database connection budget first
[INFO] [stdout] recommendation_diff,Warning,current pool size is 6; recommended pool size is 8 (+2),increase the configured pool by 2 connection(s)
[INFO] [stdout] field,value
[INFO] [stdout] framework,node-pg
[INFO] [stdout] source,simulate
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] recommended_pool_size,8
[INFO] [stdout] min_idle,3
[INFO] [stdout] connection_timeout_ms,30000
[INFO] [stdout] idle_timeout_ms,600000
[INFO] [stdout] database_url_env,DATABASE_URL
[INFO] [stdout] pool_name,checkout-pool
[INFO] [stdout] max_server_connections,100
[INFO] [stdout] utilisation_rho,0.72
[INFO] [stdout] mean_queue_wait_ms,3
[INFO] [stdout] p99_queue_wait_ms,12
[INFO] [stdout] snippet,"import { Pool } from ""pg"";
[INFO] [stdout] 
[INFO] [stdout] export const pool = new Pool({
[INFO] [stdout]   connectionString: process.env.DATABASE_URL,
[INFO] [stdout]   max: 8,
[INFO] [stdout]   min: 3,
[INFO] [stdout]   connectionTimeoutMillis: 30000,
[INFO] [stdout]   idleTimeoutMillis: 600000,
[INFO] [stdout] });"
[INFO] [stdout] note,Recommended pool size 8 must be multiplied by service replica count before comparing with the database max_connections budget.
[INFO] [stdout] note,Keep all application pools plus administrative connections within the database limit of 100 connections.
[INFO] [stdout] note,"Re-run poolsim after traffic, latency, replica count, database limits, or query behavior changes."
[INFO] [stdout] reference,node-postgres Pool API: https://node-postgres.com/apis/pool
[INFO] [stdout] {
[INFO] [stdout]   "optimal_pool_size": 5,
[INFO] [stdout]   "confidence_interval": [
[INFO] [stdout]     4,
[INFO] [stdout]     6
[INFO] [stdout]   ],
[INFO] [stdout]   "cold_start_min_pool_size": 5,
[INFO] [stdout]   "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]   "mean_queue_wait_ms": 2.3175328514107956,
[INFO] [stdout]   "p99_queue_wait_ms": 30.808049265529824,
[INFO] [stdout]   "saturation": "Ok",
[INFO] [stdout]   "sensitivity": [
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 3,
[INFO] [stdout]       "utilisation_rho": 1.0501705764898845,
[INFO] [stdout]       "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]       "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]       "risk": "Critical"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 4,
[INFO] [stdout]       "utilisation_rho": 0.7876279323674135,
[INFO] [stdout]       "mean_queue_wait_ms": 9.682188518462448,
[INFO] [stdout]       "p99_queue_wait_ms": 68.28497420551827,
[INFO] [stdout]       "risk": "Medium"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 5,
[INFO] [stdout]       "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]       "mean_queue_wait_ms": 2.129730270548012,
[INFO] [stdout]       "p99_queue_wait_ms": 25.66311592447191,
[INFO] [stdout]       "risk": "Medium"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 6,
[INFO] [stdout]       "utilisation_rho": 0.5250852882449423,
[INFO] [stdout]       "mean_queue_wait_ms": 0.6019456613698486,
[INFO] [stdout]       "p99_queue_wait_ms": 12.478814179014833,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 7,
[INFO] [stdout]       "utilisation_rho": 0.45007310420995056,
[INFO] [stdout]       "mean_queue_wait_ms": 0.1760633195250171,
[INFO] [stdout]       "p99_queue_wait_ms": 5.782929249423791,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 8,
[INFO] [stdout]       "utilisation_rho": 0.39381396618370673,
[INFO] [stdout]       "mean_queue_wait_ms": 0.05015080549182577,
[INFO] [stdout]       "p99_queue_wait_ms": 1.5639941371284711,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 9,
[INFO] [stdout]       "utilisation_rho": 0.3500568588299615,
[INFO] [stdout]       "mean_queue_wait_ms": 0.013590078010550094,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 10,
[INFO] [stdout]       "utilisation_rho": 0.31505117294696533,
[INFO] [stdout]       "mean_queue_wait_ms": 0.003470589631466181,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 11,
[INFO] [stdout]       "utilisation_rho": 0.28641015722451396,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0008326200503900432,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]   test render::csv::tests::csv_renderers_execute_for_all_output_types ...     "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 12,
[INFO] [stdout]       "utilisation_rho": 0.26254264412247114,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0001876238611913576,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 13,
[INFO] [stdout]       "utilisation_rho": 0.2423470561130503,
[INFO] [stdout]       "mean_queue_wait_ms": 0.00003976474918440386,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 14,
[INFO] [stdout]       "utilisation_rho": 0.22503655210497528,
[INFO] [stdout]       "mean_queue_wait_ms": 7.94227804320797e-6,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 15,
[INFO] [stdout]       "utilisation_rho": 0.2100341152979769,
[INFO] [stdout]       "mean_queue_wait_ms": 1.4983646554834264e-6,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 16,
[INFO] [stdout]       "utilisation_rho": 0.19690698309185337,
[INFO] [stdout]       "mean_queue_wait_ms": 2.676300633375451e-7,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 17,
[INFO] [stdout]       "utilisation_rho": 0.18532421938056787,
[INFO] [stdout]       "mean_queue_wait_ms": 4.5362839080073716e-8,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout] {    {
[INFO] [stdout] 
[INFO] [stdout]       "pool_size": 18,
[INFO] [stdout]       "utilisation_rho": 0.17502842941498076,
[INFO] [stdout]       "mean_queue_wait_ms": 7.312685324639542e-9,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 19,
[INFO] [stdout]       "utilisation_rho": 0.1658164068141923,
[INFO] [stdout]       "mean_queue_wait_ms": 1.1235126509268129e-9,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 20,
[INFO] [stdout]       "utilisation_rho": 0.15752558647348266,
[INFO] [stdout]       "mean_queue_wait_ms": 1.648399694144671e-10,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 21,
[INFO] [stdout]       "utilisation_rho": 0.1500243680699835,
[INFO] [stdout]       "mean_queue_wait_ms": 2.3138517081894904e-11,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 22,
[INFO] [stdout]       "utilisation_rho": 0.14320507861225698,
[INFO] [stdout]       "mean_queue_wait_ms": 3.112789400843748e-12,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 23,
[INFO] [stdout]       "utilisation_rho": 0.13697877084650667,
[INFO] [stdout]       "mean_queue_wait_ms": 4.019838987338054e-13,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 24,
[INFO] [stdout]       "utilisation_rho": 0.13127132206123557,
[INFO] [stdout]       "mean_queue_wait_ms": 4.9907952423283155e-14,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "step_load_analysis": [
[INFO] [stdout]     {
[INFO] [stdout]       "time_s": 0,
[INFO] [stdout]       "requests_per_second": 180.0,
[INFO] [stdout]       "utilisation_rho": 0.4435382830041251,
[INFO] [stdout]       "p99_queue_wait_ms": 13.380916358931461,
[INFO] [stdout]       "saturation": "Ok"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "time_s": 30,
[INFO] [stdout]       "requests_per_second": 260.0,
[INFO] [stdout]       "utilisation_rho": 0.6406664087837363,
[INFO] [stdout]       "p99_queue_wait_ms": 49.619734046461886,
[INFO] [stdout]       "saturation": "Ok"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "warnings": [
[INFO] [stdout]     "iterations increased to 10000 for full simulation fidelity",
[INFO] [stdout]     "step-load analysis used 2500 iterations per step for responsiveness"
[INFO] [stdout]   ]
[INFO] [stdout] }[
[INFO] [stdout]   {
[INFO] [stdout]     "optimal_pool_size": 2,
[INFO] [stdout]     "confidence_interval": [
[INFO] [stdout]       2,
[INFO] [stdout]       2
[INFO] [stdout]     ],
[INFO] [stdout]     "cold_start_min_pool_size": 2,
[INFO] [stdout]     "utilisation_rho": 14.320507861225698,
[INFO] [stdout]     "mean_queue_wait_ms": 2019.798448176814,
[INFO] [stdout]     "p99_queue_wait_ms": 4234.460874119175,
[INFO] [stdout]     "saturation": "Critical",
[INFO] [stdout]     "sensitivity": [
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 2,
[INFO] [stdout]         "utilisation_rho": 14.320507861225698,
[INFO] [stdout]         "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]         "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]         "risk": "Critical"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "step_load_analysis": [],
[INFO] [stdout]     "warnings": [
[INFO] [stdout]       "iterations increased to 10000 for full simulation fidelity",
[INFO] [stdout]       "No candidate pool size met target constraints; using max_pool_size fallback",
[INFO] [stdout]       "System utilisation is high at the recommended size (rho=14.321)"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] ]{
[INFO] [stdout]   "baseline": "normal",
[INFO] [stdout]   "worst_saturation": "Ok",
[INFO] [stdout]   "rows": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "normal",
[INFO] [stdout]       "is_baseline": true,
[INFO] [stdout]       "requests_per_second": 180.0,
[INFO] [stdout]       "optimal_pool_size": 4,
[INFO] [stdout]       "pool_size_delta": 0,
[INFO] [stdout]       "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]       "p99_queue_wait_delta_ms": 0.0,
[INFO] [stdout]       "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]       "mean_queue_wait_delta_ms": 0.0,
[INFO] [stdout]       "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]       "utilisation_rho_delta": 0.0,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "report": {
[INFO] [stdout]         "optimal_pool_size": 4,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           3,
[INFO] [stdout]           5
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 4,
[INFO] [stdout]         "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]         "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]         "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 2,
[INFO] [stdout]             "utilisation_rho": 1.2293689254567004,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "risk": "Critical"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 3,
[INFO] [stdout]             "utilisation_rho": 0.8195792836378002,
[INFO] [stdout]             "mean_queue_wait_ms": 17.14409699454182,
[INFO] [stdout]             "p99_queue_wait_ms": 106.4615516038692,
[INFO] [stdout]             "risk": "High"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 4,
[INFO] [stdout]             "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]             "mean_queue_wait_ms": 2.7128815359673863,
[INFO] [stdout]             "p99_queue_wait_ms": 30.322081906500603,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 5,
[INFO] [stdout]             "utilisation_rho": 0.49174757018268006,
[INFO] [stdout]             "mean_queue_wait_ms": 0.6624380154446748,
[INFO] [stdout]             "p99_queue_wait_ms": 13.49998085324488,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.4097896418189001,
[INFO] [stdout]             "mean_queue_wait_ms": 0.17067381102961182,
[INFO] [stdout]             "p99_queue_wait_ms": 5.73657524206179,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 7,
[INFO] [stdout]             "utilisation_rho": 0.3512482644162001,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0427000479391632,
[INFO] [stdout]             "p99_queue_wait_ms": 1.0538874124702204,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 8,
[INFO] [stdout]             "utilisation_rho": 0.3073422313641751,
[INFO] [stdout]             "mean_queue_wait_ms": 0.010082524324133127,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 9,
[INFO] [stdout]             "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]             "mean_queue_wait_ms": 0.002224176622023264,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 10,
[INFO] [stdout]             "utilisation_rho": 0.24587378509134003,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00045718374358659264,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 11,
[INFO] [stdout]             "utilisation_rho": 0.22352162281030916,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00008762945991350249,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 12,
[INFO] [stdout]             "utilisation_rho": 0.20489482090945005,
[INFO] [stdout]             "mean_queue_wait_ms": 0.000015696494800407234,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 13,
[INFO] [stdout]             "utilisation_rho": 0.18913368083949234,
[INFO] [stdout]             "mean_queue_wait_ms": 2.6348760082980723e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 14,
[INFO] [stdout]             "utilisation_rho": 0.17562413220810005,
[INFO] [stdout]             "mean_queue_wait_ms": 4.157264803795762e-7,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 15,
[INFO] [stdout]             "utilisation_rho": 0.16391585672756004,
[INFO] [stdout]             "mean_queue_wait_ms": 6.183238543326167e-8,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 16,
[INFO] [stdout]             "utilisation_rho": 0.15367111568208755,
[INFO] [stdout]             "mean_queue_wait_ms": 8.693630347180534e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 17,
[INFO] [stdout]             "utilisation_rho": 0.14463163828902356,
[INFO] [stdout]             "mean_queue_wait_ms": 1.158530570522501e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 18,
[INFO] [stdout]             "utilisation_rho": 0.1365965472729667,
[INFO] [stdout]             "mean_queue_wait_ms": 1.4669065215480163e-10,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 19,
[INFO] [stdout]             "utilisation_rho": 0.1294072553112316,
[INFO] [stdout]             "mean_queue_wait_ms": 1.768794766599782e-11,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 20,
[INFO] [stdout]             "utilisation_rho": 0.12293689254567002,
[INFO] [stdout]             "mean_queue_wait_ms": 2.035408958243995e-12,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [],
[INFO] [stdout]         "warnings": [
[INFO] [stdout]           "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]         ]
[INFO] [stdout]       }
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "peak",
[INFO] [stdout]       "is_baseline": false,
[INFO] [stdout]       "requests_per_second": 260.0,
[INFO] [stdout]       "optimal_pool_size": 5,
[INFO] [stdout]       "pool_size_delta": 1,
[INFO] [stdout]       "p99_queue_wait_ms": 37.8280941788387,
[INFO] [stdout]       "p99_queue_wait_delta_ms": 8.133960924650903,
[INFO] [stdout]       "mean_queue_wait_ms": 3.6895383187247854,
[INFO] [stdout]       "mean_queue_wait_delta_ms": 1.078959487362538,
[INFO] [stdout]       "utilisation_rho": 0.7103020458194268,
[INFO] [stdout]       "utilisation_rho_delta": 0.0956175830910766,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "report": {
[INFO] [stdout]         "optimal_pool_size": 5,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           4,
[INFO] [stdout]           6
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 5,
[INFO] [stdout]         "utilisation_rho": 0.7103020458194268,
[INFO] [stdout]         "mean_queue_wait_ms": 3.6895383187247854,
[INFO] [stdout]         "p99_queue_wait_ms": 37.8280941788387,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 2,
[INFO] [stdout]             "utilisation_rho": 1.775755114548567,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "risk": "Critical"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 3,
[INFO] [stdout]             "utilisation_rho": 1.183836743032378,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "risk": "Critical"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 4,
[INFO] [stdout]             "utilisation_rho": 0.8878775572742835,
[INFO] [stdout]             "mean_queue_wait_ms": 23.25072344402422,
[INFO] [stdout]             "p99_queue_wait_ms": 132.03691271289637,
[INFO] [stdout]             "risk": "High"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 5,
[INFO] [stdout]             "utilisation_rho": 0.7103020458194268,
[INFO] [stdout]             "mean_queue_wait_ms": 3.7196348985019605,
[INFO] [stdout]             "p99_queue_wait_ms": 34.655034924932686,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.591918371516189,
[INFO] [stdout]             "mean_queue_wait_ms": 1.0441245145231164,
[INFO] [stdout]             "p99_queue_wait_ms": 16.342414318968398,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 7,
[INFO] [stdout]             "utilisation_rho": 0.5073586041567335,
[INFO] [stdout]             "mean_queue_wait_ms": 0.32190932958242197,
[INFO] [stdout]             "p99_queue_wait_ms": 8.299100199330175,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 8,
[INFO] [stdout]             "utilisation_rho": 0.44393877863714176,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0990661900908212,
[INFO] [stdout]             "p99_queue_wait_ms": 3.59669102259851,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 9,
[INFO] [stdout]             "utilisation_rho": 0.39461224767745934,
[INFO] [stdout]             "mean_queue_wait_ms": 0.029394400084182773,
[INFO] [stdout]             "p99_queue_wait_ms": 0.39889971174530714,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 10,
[INFO] [stdout]             "utilisation_rho": 0.3551510229097134,
[INFO] [stdout]             "mean_queue_wait_ms": 0.008286728741284551,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 11,
[INFO] [stdout]             "utilisation_rho": 0.3228645662815577,
[INFO] [stdout]             "mean_queue_wait_ms": 0.002206260491315137,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 12,
[INFO] [stdout]             "utilisation_rho": 0.2959591857580945,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0005537011508615142,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 13,
[INFO] [stdout]             "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00013102231828280333,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 14,
[INFO] [stdout]             "utilisation_rho": 0.25367930207836675,
[INFO] [stdout]             "mean_queue_wait_ms": 0.000029270745042482023,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 15,
[INFO] [stdout]             "utilisation_rho": 0.2367673486064756,
[INFO] [stdout]             "mean_queue_wait_ms": 6.184857094671044e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 16,
[INFO] [stdout]             "utilisation_rho": 0.22196938931857088,
[INFO] [stdout]             "mean_queue_wait_ms": 1.2385529850913808e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 17,
[INFO] [stdout]             "utilisation_rho": 0.20891236641747848,
[INFO] [stdout]             "mean_queue_wait_ms": 2.3555589930834516e-7,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 18,
[INFO] [stdout]             "utilisation_rho": 0.19730612383872967,
[INFO] [stdout]             "mean_queue_wait_ms": 4.263441021665883e-8,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 19,
[INFO] [stdout]             "utilisation_rho": 0.18692159100511233,
[INFO] [stdout]             "mean_queue_wait_ms": 7.3582353580506166e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 20,
[INFO] [stdout]             "utilisation_rho": 0.1775755114548567,
[INFO] [stdout]             "mean_queue_wait_ms": 1.2132579478572908e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [],
[INFO] [stdout]         "warnings": [
[INFO] [stdout]           "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]         ]
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   ]
[INFO] [stdout] }scenario,baseline,requests_per_second,optimal_pool_size,pool_size_delta,p99_queue_wait_ms,p99_queue_wait_delta_ms,mean_queue_wait_ms,mean_queue_wait_delta_ms,utilisation_rho,utilisation_rho_delta,saturation
[INFO] [stdout] normal,true,180,4,0,29.694133254187793,0,2.6105788313622473,0,0.6146844627283502,0,Ok
[INFO] [stdout] peak,false,260,5,1,37.8280941788387,8.133960924650903,3.6895383187247854,1.078959487362538,0.7103020458194268,0.0956175830910766,Ok
[INFO] [stdout] {
[INFO] [stdout]   "status": "Warning",
[INFO] [stdout]   "max_connections": 120,
[INFO] [stdout]   "reserved_connections": 20,
[INFO] [stdout]   "safety_margin_connections": 10,
[INFO] [stdout]   "available_connections": 90,
[INFO] [stdout]   "current_total_connections": 72,
[INFO] [stdout]   "requested_total_connections": 92,
[INFO] [stdout]   "min_required_connections": 36,
[INFO] [stdout]   "allocated_total_connections": 88,
[INFO] [stdout]   "unused_connections": 2,
[INFO] [stdout]   "over_budget_connections": 2,
[INFO] [stdout]   "services": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "checkout-api",
[INFO] [stdout]       "replicas": 6,
[INFO] [stdout]       "priority": 5,
[INFO] [stdout]       "current_pool_size": 8,
[INFO] [stdout]       "min_pool_size": 4,
[INFO] [stdout]       "max_pool_size": 12,
[INFO] [stdout]       "recommended_pool_size": 10,
[INFO] [stdout]       "desired_pool_size": 10,
[INFO] [stdout]       "allocated_pool_size": 10,
[INFO] [stdout]       "current_total_connections": 48,
[INFO] [stdout]       "requested_total_connections": 60,
[INFO] [stdout]       "allocated_total_connections": 60,
[INFO] [stdout]       "pool_size_delta_from_current": 2,
[INFO] [stdout]       "reduction_from_recommended": 0,
[INFO] [stdout]       "capped_by_service_max": false,
[INFO] [stdout]       "meets_minimum": true
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "billing-api",
[INFO] [stdout]       "replicas": 4,
[INFO] [stdout]       "priority": 3,
[INFO] [stdout]       "current_pool_size": 6,
[INFO] [stdout]       "min_pool_size": 3,
[INFO] [stdout]       "max_pool_size": 10,
[INFO] [stdout]       "recommended_pool_size": 8,
[INFO] [stdout]       "desired_pool_size": 8,
[INFO] [stdout]       "allocated_pool_size": 7,
[INFO] [stdout]       "current_total_connections": 24,
[INFO] [stdout]       "requested_total_connections": 32,
[INFO] [stdout]       "allocated_total_connections": 28,
[INFO] [stdout]       "pool_size_delta_from_current": 1,
[INFO] [stdout]       "reduction_from_recommended": 1,
[INFO] [stdout]       "capped_by_service_max": false,
[INFO] [stdout]       "meets_minimum": true
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "warnings": [
[INFO] [stdout]     "requested service pools need 92 connections but only 90 are available"
[INFO] [stdout]   ]
[INFO] [stdout] }field,value
[INFO] [stdout] status,Warning
[INFO] [stdout] max_connections,120
[INFO] [stdout] reserved_connections,20
[INFO] [stdout] safety_margin_connections,10
[INFO] [stdout] available_connections,90
[INFO] [stdout] current_total_connections,72
[INFO] [stdout] requested_total_connections,92
[INFO] [stdout] min_required_connections,36
[INFO] [stdout] allocated_total_connections,88
[INFO] [stdout] unused_connections,2
[INFO] [stdout] over_budget_connections,2
[INFO] [stdout] ,
[INFO] [stdout] service,replicas,priority,current_pool_size,min_pool_size,max_pool_size,recommended_pool_size,desired_pool_size,allocated_pool_size,current_total_connections,requested_total_connections,allocated_total_connections,pool_size_delta_from_current,reduction_from_recommended,capped_by_service_max,meets_minimum
[INFO] [stdout] checkout-api,6,5,8,4,12,10,10,10,48,60,60,2,0,false,true
[INFO] [stdout] billing-api,4,3,6,3,10,8,8,7,24,32,28,1,1,false,true
[INFO] [stdout] warning,requested service pools need 92 connections but only 90 are available
[INFO] [stdout] {
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "diff": {
[INFO] [stdout]     "current_pool_size": 8,
[INFO] [stdout]     "recommended_pool_size": 6,
[INFO] [stdout]     "pool_size_delta": -2,
[INFO] [stdout]     "change": "Decrease",
[INFO] [stdout]     "additional_connections_required": 0,
[INFO] [stdout]     "removable_connections": 2,
[INFO] [stdout]     "connection_change_percent": -25.0,
[INFO] [stdout]     "current_evaluation": {
[INFO] [stdout]       "pool_size": 6,
[INFO] [stdout]       "utilisation_rho": 0.84,
[INFO] [stdout]       "mean_queue_wait_ms": 6.0,
[INFO] [stdout]       "p99_queue_wait_ms": 30.0,
[INFO] [stdout]       "saturation": "Warning",
[INFO] [stdout]       "warnings": []
[INFO] [stdout]     },
[INFO] [stdout]     "recommended_report": {
[INFO] [stdout]       "optimal_pool_size": 6,
[INFO] [stdout]       "confidence_interval": [
[INFO] [stdout]         5,
[INFO] [stdout]         7
[INFO] [stdout]       ],
[INFO] [stdout]       "cold_start_min_pool_size": 5,
[INFO] [stdout]       "utilisation_rho": 0.84,
[INFO] [stdout]       "mean_queue_wait_ms": 6.0,
[INFO] [stdout]       "p99_queue_wait_ms": 30.0,
[INFO] [stdout]       "saturation": "Warning",
[INFO] [stdout]       "sensitivity": [
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 6,
[INFO] [stdout]           "utilisation_rho": 0.84,
[INFO] [stdout]           "mean_queue_wait_ms": 6.0,
[INFO] [stdout]           "p99_queue_wait_ms": 30.0,
[INFO] [stdout]           "risk": "Medium"
[INFO] [stdout]         }
[INFO] [stdout]       ],
[INFO] [stdout]       "step_load_analysis": [
[INFO] [stdout]         {
[INFO] [stdout]           "time_s": 0,
[INFO] [stdout]           "requests_per_second": 210.0,
[INFO] [stdout]           "utilisation_rho": 0.83,
[INFO] [stdout]           "p99_queue_wait_ms": 28.0,
[INFO] [stdout]           "saturation": "Warning"
[INFO] [stdout]         }
[INFO] [stdout]       ],
[INFO] [stdout]       "warnings": []
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }field,value
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] current_pool_size,8
[INFO] [stdout] recommended_pool_size,6
[INFO] [stdout] pool_size_delta,-2
[INFO] [stdout] change,Decrease
[INFO] [stdout] additional_connections_required,0
[INFO] [stdout] removable_connections,2
[INFO] [stdout] connection_change_percent,-25
[INFO] [stdout] current_saturation,Warning
[INFO] [stdout] recommended_saturation,Warning
[INFO] [stdout] {
[INFO] [stdout]   "status": "Pass",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "worst_saturation": "Warning",
[INFO] [stdout]   "checks": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_saturation",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Warning",
[INFO] [stdout]       "observed": "Warning",
[INFO] [stdout]       "threshold": "Warning",
[INFO] [stdout]       "message": "worst saturation Warning is within Warning"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "recommendation": {
[INFO] [stdout]     "service_name": "checkout-api",
[INFO] [stdout]     "window": "1h",
[INFO] [stdout]     "observed_at": null,
[INFO] [stdout]     "diff": {
[INFO] [stdout]       "current_pool_size": 8,
[INFO] [stdout]       "recommended_pool_size": 6,
[INFO] [stdout]       "pool_size_delta": -2,
[INFO] [stdout]       "change": "Decrease",
[INFO] [stdout]       "additional_connections_required": 0,
[INFO] [stdout]       "removable_connections": 2,
[INFO] [stdout]       "connection_change_percent": -25.0,
[INFO] [stdout]       "current_evaluation": {
[INFO] [stdout]         "pool_size": 6,
[INFO] [stdout]         "utilisation_rho": 0.84,
[INFO] [stdout]         "mean_queue_wait_ms": 6.0,
[INFO] [stdout]         "p99_queue_wait_ms": 30.0,
[INFO] [stdout]         "saturation": "Warning",
[INFO] [stdout]         "warnings": []
[INFO] [stdout]       },
[INFO] [stdout]       "recommended_report": {
[INFO] [stdout]         "optimal_pool_size": 6,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           5,
[INFO] [stdout]           7
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 5,
[INFO] [stdout]         "utilisation_rho": 0.84,
[INFO] [stdout]         "mean_queue_wait_ms": 6.0,
[INFO] [stdout]         "p99_queue_wait_ms": 30.0,
[INFO] [stdout]         "saturation": "Warning",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.84,
[INFO] [stdout]             "mean_queue_wait_ms": 6.0,
[INFO] [stdout]             "p99_queue_wait_ms": 30.0,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [
[INFO] [stdout]           {
[INFO] [stdout]             "time_s": 0,
[INFO] [stdout]             "requests_per_second": 210.0,
[INFO] [stdout]             "utilisation_rho": 0.83,
[INFO] [stdout]             "p99_queue_wait_ms": 28.0,
[INFO] [stdout]             "saturation": "Warning"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "warnings": []
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }field,value
[INFO] [stdout] status,Pass
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] worst_saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] check,passed,severity,observed,threshold,message
[INFO] [stdout] max_saturation,true,Warning,Warning,Warning,worst saturation Warning is within Warning
[INFO] [stdout] {
[INFO] [stdout]   "status": "Pass",
[INFO] [stdout]   "deployment_safe": true,
[INFO] [stdout]   "exit_code": 0,
[INFO] [stdout]   "reason": "deployment is within pool safety policy",
[INFO] [stdout]   "gate": {
[INFO] [stdout]     "status": "Pass",
[INFO] [stdout]     "service_name": "checkout-api",
[INFO] [stdout]     "window": "1h",
[INFO] [stdout]     "observed_at": null,
[INFO] [stdout]     "worst_saturation": "Warning",
[INFO] [stdout]     "checks": [
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_saturation",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Warning",
[INFO] [stdout]         "observed": "Warning",
[INFO] [stdout]         "threshold": "Warning",
[INFO] [stdout]         "message": "worst saturation Warning is within Warning"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "recommendation": {
[INFO] [stdout]       "service_name": "checkout-api",
[INFO] [stdout]       "window": "1h",
[INFO] [stdout] }  
[INFO] [stdout]     ],
[INFO] [stdout]     ""edgesobserved_at": null,
[INFO] [stdout] "  : [
[INFO] [stdout]       {
[INFO] [stdout]     "  diff":   "from{"
[INFO] [stdout] :   "  application-runtime  "  ",
[INFO] [stdout]     current_pool_size  ": 8,
[INFO] [stdout] "        to"": recommended_pool_size"": 6,
[INFO] [stdout] application-pool",
[INFO] [stdout]           "pool_size_delta  "  "relationship": "owns": ,
[INFO] [stdout]       "worst_case_connections-2",
[INFO] [stdout] :         4",
[INFO] [stdout] change  ": "  Decrease",
[INFO] [stdout]   "    consumes_backend_capacity": false  ,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "each runtime unit can create or retain its own application pool"
[INFO] [stdout]       ]
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "from": "application-pool",
[INFO] [stdout]       "to": "database-backend",
[INFO] [stdout]       "relationship": "consumes-backend-capacity",
[INFO] [stdout]       "worst_case_connections": 4,
[INFO] [stdout]       "consumes_backend_capacity": true,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "direct application pool connections consume database capacity"
[INFO] [stdout]       ]
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "app_connection_upper_bound": 4,
[INFO] [stdout]   "database_backend_upper_bound": 4,
[INFO] [stdout]   "database_backend_limit": 100,
[INFO] [stdout]   "bottleneck_layer": null,
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "endpoint_kind": "direct-database",
[INFO] [stdout]   "provider": "aws-rds",
[INFO] [stdout]   "workflow_compatible": true,
[INFO] [stdout]   "redacted_endpoint": "postgres://db.example.com/app",
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "compatible": "compatible",
[INFO] [stdout]   "incompatible_features": [],
[INFO] [stdout]   "migration_direct_connection_required": false,
[INFO] [stdout]   "long_running_direct_connection_required": false,
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }  "additional_connections_required": 0,
[INFO] [stdout]         "removable_connections": 2,
[INFO] [stdout]         "connection_change_percent": -25.0,
[INFO] [stdout]         "current_evaluation": {
[INFO] [stdout]           "pool_size": 6,
[INFO] [stdout]           "utilisation_rho": 0.84,
[INFO] [stdout]           "mean_queue_wait_ms": 6.0,
[INFO] [stdout]           "p99_queue_wait_ms": 30.0,
[INFO] [stdout]           "saturation": "Warning",
[INFO] [stdout]           "warnings": []
[INFO] [stdout]         },
[INFO] [stdout]         "recommended_report": {
[INFO] [stdout]           "optimal_pool_size": 6,
[INFO] [stdout]           "confidence_interval": [
[INFO] [stdout]             5,
[INFO] [stdout]             7
[INFO] [stdout]           ],
[INFO] [stdout]           "cold_start_min_pool_size": 5,
[INFO] [stdout]           "utilisation_rho": 0.84,
[INFO] [stdout]           "mean_queue_wait_ms": 6.0,
[INFO] [stdout]           "p99_queue_wait_ms": 30.0,
[INFO] [stdout]           "saturation": "Warning",
[INFO] [stdout]           "sensitivity": [
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 6,
[INFO] [stdout]               "utilisation_rho": 0.84,
[INFO] [stdout]               "mean_queue_wait_ms": 6.0,
[INFO] [stdout]               "p99_queue_wait_ms": 30.0,
[INFO] [stdout]               "risk": "Medium"
[INFO] [stdout]             }
[INFO] [stdout]           ],
[INFO] [stdout]           "step_load_analysis": [
[INFO] [stdout]             {
[INFO] [stdout]               "time_s": 0,
[INFO] [stdout]               "requests_per_second": 210.0,
[INFO] [stdout]               "utilisation_rho": 0.83,
[INFO] [stdout]               "p99_queue_wait_ms": 28.0,
[INFO] [stdout]               "saturation": "Warning"
[INFO] [stdout]             }
[INFO] [stdout]           ],
[INFO] [stdout]           "warnings": []
[INFO] [stdout]         }
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }field,value
[INFO] [stdout] status,Pass
[INFO] [stdout] deployment_safe,true
[INFO] [stdout] exit_code,0
[INFO] [stdout] reason,deployment is within pool safety policy
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] worst_saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] check,passed,severity,observed,threshold,message
[INFO] [stdout] max_saturation,true,Warning,Warning,Warning,worst saturation Warning is within Warning
[INFO] [stdout] {
[INFO] [stdout]   "status": "CloseToSaturation",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "current_pool_size": 8,
[INFO] [stdout]   "recommended_pool_size": 6,
[INFO] [stdout]   "pool_size_delta": -2,
[INFO] [stdout]   "current_rho": 0.84,
[INFO] [stdout]   "current_p99_queue_wait_ms": 30.0,
[INFO] [stdout]   "current_saturation": "Warning",
[INFO] [stdout]   "recommended_saturation": "Warning",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "current_pool",
[INFO] [stdout]       "severity": "Warning",
[INFO] [stdout]       "message": "current pool size 8 is close to saturation (rho=0.840)",
[INFO] [stdout]       "action": "treat the pool as fragile; compare peak and incident scenarios before deployment"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "recommendation_diff",
[INFO] [stdout]       "severity": "Info",
[INFO] [stdout]       "message": "current pool size is 8; recommended pool size is 6 (-2)",
[INFO] [stdout]       "action": "consider removing 2 idle connection slot(s) after validating peak traffic"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "recommendation": {
[INFO] [stdout]     "service_name": "checkout-api",
[INFO] [stdout]     "window": "1h",
[INFO] [stdout]     "observed_at": null,
[INFO] [stdout]     "diff": {
[INFO] [stdout]       "current_pool_size": 8,
[INFO] [stdout]       "recommended_pool_size": 6,
[INFO] [stdout]       "pool_size_delta": -2,
[INFO] [stdout]       "change": "Decrease",
[INFO] [stdout]       "additional_connections_required": 0,
[INFO] [stdout]       "removable_connections": 2,
[INFO] [stdout]       "connection_change_percent": -25.0,
[INFO] [stdout]       "current_evaluation": {
[INFO] [stdout]         "pool_size": 6,
[INFO] [stdout]         "utilisation_rho": 0.84,
[INFO] [stdout]         "mean_queue_wait_ms": 6.0,
[INFO] [stdout]         "p99_queue_wait_ms": 30.0,
[INFO] [stdout]         "saturation": "Warning",
[INFO] [stdout]         "warnings": []
[INFO] [stdout]       },
[INFO] [stdout]       "recommended_report": {
[INFO] [stdout]         "optimal_pool_size": 6,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           5,
[INFO] [stdout]           7
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 5,
[INFO] [stdout]         "utilisation_rho": 0.84,
[INFO] [stdout]         "mean_queue_wait_ms": 6.0,
[INFO] [stdout]         "p99_queue_wait_ms": 30.0,
[INFO] [stdout]         "saturation": "Warning",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.84,
[INFO] [stdout]             "mean_queue_wait_ms": 6.0,
[INFO] [stdout]             "p99_queue_wait_ms": 30.0,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [
[INFO] [stdout]           {
[INFO] [stdout]             "time_s": 0,
[INFO] [stdout]             "requests_per_second": 210.0,
[INFO] [stdout]             "utilisation_rho": 0.83,
[INFO] [stdout]             "p99_queue_wait_ms": 28.0,
[INFO] [stdout]             "saturation": "Warning"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "warnings": []
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }field,value
[INFO] [stdout] status,CloseToSaturation
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] current_pool_size,8
[INFO] [stdout] recommended_pool_size,6
[INFO] [stdout] pool_size_delta,-2
[INFO] [stdout] current_rho,0.84
[INFO] [stdout] current_p99_queue_wait_ms,30
[INFO] [stdout] current_saturation,Warning
[INFO] [stdout] recommended_saturation,Warning
[INFO] [stdout] ,
[INFO] [stdout] finding,severity,message,action
[INFO] [stdout] current_pool,Warning,current pool size 8 is close to saturation (rho=0.840),treat the pool as fragile; compare peak and incident scenarios before deployment
[INFO] [stdout] recommendation_diff,Info,current pool size is 8; recommended pool size is 6 (-2),consider removing 2 idle connection slot(s) after validating peak traffic
[INFO] [stdout] {
[INFO] [stdout]   "framework": "sqlx",
[INFO] [stdout]   "database": "postgres",
[INFO] [stdout]   "config_path": "poolsim.json",
[INFO] [stdout]   "policy_path": "poolsim-gate-policy.toml",
[INFO] [stdout]   "expected_rps": 180.0,
[INFO] [stdout]   "max_server_connections": 100,
[INFO] [stdout]   "min_pool_size": 2,
[INFO] [stdout]   "max_pool_size": 20,
[INFO] [stdout]   "files_written": [
[INFO] [stdout]     "poolsim.json",
[INFO] [stdout]     "poolsim-gate-policy.toml"
[INFO] [stdout]   ]
[INFO] [stdout] }{
[INFO] [stdout]   "framework": "sqlalchemy",
[INFO] [stdout]   "source": "simulate",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "recommended_pool_size": 8,
[INFO] [stdout]   "min_idle": 2,
[INFO] [stdout]   "connection_timeout_ms": 30000,
[INFO] [stdout]   "idle_timeout_ms": 600000,
[INFO] [stdout]   "database_url_env": "DATABASE_URL",
[INFO] [stdout]   "pool_name": "checkout-pool",
[INFO] [stdout]   "max_server_connections": 100,
[INFO] [stdout]   "utilisation_rho": 0.72,
[INFO] [stdout]   "mean_queue_wait_ms": 3.0,
[INFO] [stdout]   "p99_queue_wait_ms": 12.0,
[INFO] [stdout]   "snippet": "import os\nfrom sqlalchemy import create_engine\n\nengine = create_engine(\n    os.environ[\"DATABASE_URL\"],\n    pool_size=8,\n    max_overflow=0,\n    pool_timeout=30,\n    pool_pre_ping=True,\n)",
[INFO] [stdout]   "notes": [
[INFO] [stdout]     "Recommended pool size 8 must be multiplied by service replica count before comparing with the database max_connections budget.",
[INFO] [stdout]     "Keep all application pools plus administrative connections within the database limit of 100 connections.",
[INFO] [stdout]     "Re-run poolsim after traffic, latency, replica count, database limits, or query behavior changes."
[INFO] [stdout]   ],
[INFO] [stdout]   "references": [
[INFO] [stdout]     {
[INFO] [stdout]       "title": "SQLAlchemy pooling and engine configuration",
[INFO] [stdout]       "url": "https://docs.sqlalchemy.org/en/latest/core/pooling.html"
[INFO] [stdout]     }
[INFO] [stdout]   ]
[INFO] [stdout] }field,value
[INFO] [stdout] framework,sqlalchemy
[INFO] [stdout] source,simulate
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,1h
[INFO] [stdout] observed_at,-
[INFO] [stdout] recommended_pool_size,8
[INFO] [stdout] min_idle,2
[INFO] [stdout] connection_timeout_ms,30000
[INFO] [stdout] idle_timeout_ms,600000
[INFO] [stdout] database_url_env,DATABASE_URL
[INFO] [stdout] pool_name,checkout-pool
[INFO] [stdout] max_server_connections,100
[INFO] [stdout] utilisation_rho,0.72
[INFO] [stdout] mean_queue_wait_ms,3
[INFO] [stdout] p99_queue_wait_ms,12
[INFO] [stdout] snippet,"import os
[INFO] [stdout] from sqlalchemy import create_engine
[INFO] [stdout] 
[INFO] [stdout] engine = create_engine(
[INFO] [stdout]     os.environ[""DATABASE_URL""],
[INFO] [stdout]     pool_size=8,
[INFO] [stdout]     max_overflow=0,
[INFO] [stdout]     pool_timeout=30,
[INFO] [stdout]     pool_pre_ping=True,
[INFO] [stdout] )"
[INFO] [stdout] note,Recommended pool size 8 must be multiplied by service replica count before comparing with the database max_connections budget.
[INFO] [stdout] note,Keep all application pools plus administrative connections within the database limit of 100 connections.
[INFO] [stdout] note,"Re-run poolsim after traffic, latency, replica count, database limits, or query behavior changes."
[INFO] [stdout] reference,SQLAlchemy pooling and engine configuration: https://docs.sqlalchemy.org/en/latest/core/pooling.html
[INFO] [stdout]   "status": "pass",
[INFO] [stdout]   "platform": "aws-lambda",
[INFO] [stdout]   "effective_concurrency": 10,
[INFO] [stdout]   "worst_case_app_pool_connections": 20,
[INFO] [stdout]   "direct_database_backend_upper_bound": 20,
[INFO] [stdout]   "database_backend_limit": 100,
[INFO] [stdout]   "uses_external_pooler": false,
[INFO] [stdout]   "external_pooler": null,
[INFO] [stdout]   "connection_churn_risk": "Medium",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "SERVERLESS_WARM_REUSE_UNKNOWN",
[INFO] [stdout]       "risk": "Medium",
[INFO] [stdout]       "message": "warm execution-environment reuse is unknown",
[INFO] [stdout]       "remediation": "measure cold starts and environment reuse; do not reduce worst-case capacity using warm reuse assumptions"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "medium"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "complete",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "nodes": [
[INFO] [stdout]     {
[INFO] [stdout]       "id": "application-runtime",
[INFO] [stdout]       "label": "Application runtime units",
[INFO] [stdout]       "layer_kind": "application-runtime",
[INFO] [stdout]       "owner": "application/platform",
[INFO] [stdout]       "max_connections": 2,
[INFO] [stdout]       "consumes_database_connections": false,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "replicas, workers, processes, or execution environments that can own pools"
[INFO] [stdout]       ]
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "id": "application-pool",
[INFO] [stdout]       "label": "Application-side pool",
[INFO] [stdout]       "layer_kind": "application-pool",
[INFO] [stdout]       "owner": "driver/framework",
[INFO] [stdout]       "max_connections": 4,
[INFO] [stdout]       "consumes_database_connections": true,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "configured driver or framework pool multiplied by runtime units"
[INFO] [stdout]       ]
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "id": "database-backend",
[INFO] [stdout]       "label": "Database backend",
[INFO] [stdout]       "layer_kind": "database-backend",
[INFO] [stdout]       "owner": "database",
[INFO] [stdout]       "max_connections": 100,
[INFO] [stdout]       "consumes_database_connections": true,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "real database sessions, processes, threads, or backend connection slots"
[INFO] [stdout]       ]
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "edges": [
[INFO] [stdout]     {
[INFO] [stdout]       "from": "application-runtime",
[INFO] [stdout]       "to": "application-pool",
[INFO] [stdout]       "relationship": "owns",
[INFO] [stdout]       "worst_case_connections": 4,
[INFO] [stdout]       "consumes_backend_capacity": false,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "each runtime unit can create or retain its own application pool"
[INFO] [stdout]       ]
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "from": "application-pool",
[INFO] [stdout]       "to": "database-backend",
[INFO] [stdout]       "relationship": "consumes-backend-capacity",
[INFO] [stdout]       "worst_case_connections": 4,
[INFO] [stdout]       "consumes_backend_capacity": true,
[INFO] [stdout]       "notes": [
[INFO] [stdout]         "direct application pool connections consume database capacity"
[INFO] [stdout]       ]
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "app_connection_upper_bound": 4,
[INFO] [stdout]   "database_backend_upper_bound": 4,
[INFO] [stdout]   "database_backend_limit": 100,
[INFO] [stdout]   "bottleneck_layer": null,
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "endpoint_kind": "unknown",
[INFO] [stdout]   "provider": "unknown",
[INFO] [stdout]   "workflow_compatible": null,
[INFO] [stdout]   "redacted_endpoint": "postgres://db.example.com/app",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "ENDPOINT_KIND_UNKNOWN",
[INFO] [stdout]       "risk": "Medium",
[INFO] [stdout]       "message": "poolsim could not classify this endpoint from known provider patterns",
[INFO] [stdout]       "remediation": "pass an explicit provider hint or verify whether this is direct, pooled, proxied, or edge-managed"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "low"
[INFO] [stdout] }{
[INFO] [stdout]   "compatible": "compatible",
[INFO] [stdout]   "incompatible_features": [],
[INFO] [stdout]   "migration_direct_connection_required": false,
[INFO] [stdout]   "long_running_direct_connection_required": false,
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "compatible": "compatible",
[INFO] [stdout]   "client": "generic-postgres",
[INFO] [stdout]   "pooler": "pg-bouncer",
[INFO] [stdout]   "mode": "session",
[INFO] [stdout]   "effective_features": [],
[INFO] [stdout]   "pooler_report": {
[INFO] [stdout]     "compatible": "compatible",
[INFO] [stdout]     "incompatible_features": [],
[INFO] [stdout]     "migration_direct_connection_required": false,
[INFO] [stdout]     "long_running_direct_connection_required": false,
[INFO] [stdout]     "findings": [],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "client_guidance": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "healthy",
[INFO] [stdout]   "pooler": "pg-bouncer",
[INFO] [stdout]   "mode": "transaction",
[INFO] [stdout]   "label": null,
[INFO] [stdout]   "observed_client_connections": 2,
[INFO] [stdout]   "observed_backend_connections": 10,
[INFO] [stdout]   "client_waiting": 0,
[INFO] [stdout]   "backend_utilization": 0.5,
[INFO] [stdout]   "client_utilization": 0.1,
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "valid",
[INFO] [stdout]   "arrival_model": "open-loop",
[INFO] [stdout]   "observed_rate_ratio": 1.0,
[INFO] [stdout]   "coordinated_omission_risk": "Low",
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "healthy",
[INFO] [stdout]   "application_utilization": 0.2,
[INFO] [stdout]   "application_waiting": null,
[INFO] [stdout]   "pooler": {
[INFO] [stdout]     "status": "healthy",
[INFO] [stdout]     "pooler": "pg-bouncer",
[INFO] [stdout]     "mode": "transaction",
[INFO] [stdout]     "label": null,
[INFO] [stdout]     "observed_client_connections": 2,
[INFO] [stdout]     "observed_backend_connections": 10,
[INFO] [stdout]     "client_waiting": 0,
[INFO] [stdout]     "backend_utilization": 0.5,
[INFO] [stdout]     "client_utilization": 0.1,
[INFO] [stdout]     "findings": [],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "previous_timestamp_seconds": 1.0,
[INFO] [stdout]   "current_timestamp_seconds": 2.0,
[INFO] [stdout]   "interval_seconds": 1.0,
[INFO] [stdout]   "query_rate_per_second": 1.0,
[INFO] [stdout]   "wait_time_rate_us_per_second": 1.0,
[INFO] [stdout]   "average_wait_ms_per_query": 0.001,
[INFO] [stdout]   "current_maxwait_seconds": 0.0,
[INFO] [stdout]   "maxwait_delta_seconds": 0.0,
[INFO] [stdout]   "current_client_waiting": 0,
[INFO] [stdout]   "counter_resets": [],
[INFO] [stdout]   "status": "healthy",
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }ok
[INFO] [stdout] test prometheus::tests::query_set_requires_all_queries ... ok
[INFO] [stdout] test prometheus::tests::query_values_uses_all_queries ... ok
[INFO] [stdout] test tests::batch_command_exit_codes_cover_warning_and_critical_paths ... ok
[INFO] [stdout] test doctor::tests::doctor_classifies_critical_saturation_and_queue_wait_improvement ... ok
[INFO] [stdout] test config_gen::tests::helper_edge_cases_are_stable ... ok
[INFO] [stdout] test init::tests::init_writes_config_and_policy_files ... ok
[INFO] [stdout] test prometheus::tests::parses_vector_and_scalar_prometheus_values ... ok
[INFO] [stdout] test tests::render_wrappers_execute_for_all_formats ... ok
[INFO] [stdout] test tests::render_additional_report_wrappers_execute_for_all_formats ... ok
[INFO] [stdout] {
[INFO] [stdout]   "optimal_pool_size": 5,
[INFO] [stdout]   "confidence_interval": [
[INFO] [stdout]     4,
[INFO] [stdout]     6
[INFO] [stdout]   ],
[INFO] [stdout]   "cold_start_min_pool_size": 5,
[INFO] [stdout]   "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]   "mean_queue_wait_ms": 2.3175328514107956,
[INFO] [stdout]   "p99_queue_wait_ms": 30.808049265529824,
[INFO] [stdout]   "saturation": "Ok",
[INFO] [stdout]   "sensitivity": [
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 3,
[INFO] [stdout]       "utilisation_rho": 1.0501705764898845,
[INFO] [stdout]       "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]       "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]       "risk": "Critical"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 4,
[INFO] [stdout]       "utilisation_rho": 0.7876279323674135,
[INFO] [stdout]       "mean_queue_wait_ms": 9.682188518462448,
[INFO] [stdout]       "p99_queue_wait_ms": 68.28497420551827,
[INFO] [stdout]       "risk": "Medium"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 5,
[INFO] [stdout]       "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]       "mean_queue_wait_ms": 2.129730270548012,
[INFO] [stdout]       "p99_queue_wait_ms": 25.66311592447191,
[INFO] [stdout]       "risk": "Medium"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 6,
[INFO] [stdout]       "utilisation_rho": 0.5250852882449423,
[INFO] [stdout]       "mean_queue_wait_ms": 0.6019456613698486,
[INFO] [stdout]       "p99_queue_wait_ms": 12.478814179014833,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 7,
[INFO] [stdout]       "utilisation_rho": 0.45007310420995056,
[INFO] [stdout]       "mean_queue_wait_ms": 0.1760633195250171,
[INFO] [stdout]       "p99_queue_wait_ms": 5.782929249423791,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 8,
[INFO] [stdout]       "utilisation_rho": 0.39381396618370673,
[INFO] [stdout]       "mean_queue_wait_ms": 0.05015080549182577,
[INFO] [stdout]       "p99_queue_wait_ms": 1.5639941371284711,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 9,
[INFO] [stdout]       "utilisation_rho": 0.3500568588299615,
[INFO] [stdout]       "mean_queue_wait_ms": 0.013590078010550094,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 10,
[INFO] [stdout]       "utilisation_rho": 0.31505117294696533,
[INFO] [stdout]       "mean_queue_wait_ms": 0.003470589631466181,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 11,
[INFO] [stdout]       "utilisation_rho": 0.28641015722451396,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0008326200503900432,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 12,
[INFO] [stdout]       "utilisation_rho": 0.26254264412247114,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0001876238611913576,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 13,
[INFO] [stdout]       "utilisation_rho": 0.2423470561130503,
[INFO] [stdout]       "mean_queue_wait_ms": 0.00003976474918440386,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 14,
[INFO] [stdout]       "utilisation_rho": 0.22503655210497528,
[INFO] [stdout]       "mean_queue_wait_ms": 7.94227804320797e-6,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 15,
[INFO] [stdout]       "utilisation_rho": 0.2100341152979769,
[INFO] [stdout]       "mean_queue_wait_ms": 1.4983646554834264e-6,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 16,
[INFO] [stdout]       "utilisation_rho": 0.19690698309185337,
[INFO] [stdout]       "mean_queue_wait_ms": 2.676300633375451e-7,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 17,
[INFO] [stdout]       "utilisation_rho": 0.18532421938056787,
[INFO] [stdout]       "mean_queue_wait_ms": 4.5362839080073716e-8,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 18,
[INFO] [stdout]       "utilisation_rho": 0.17502842941498076,
[INFO] [stdout]       "mean_queue_wait_ms": 7.312685324639542e-9,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 19,
[INFO] [stdout]       "utilisation_rho": 0.1658164068141923,
[INFO] [stdout]       "mean_queue_wait_ms": 1.1235126509268129e-9,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 20,
[INFO] [stdout]       "utilisation_rho": 0.15752558647348266,
[INFO] [stdout]       "mean_queue_wait_ms": 1.648399694144671e-10,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 21,
[INFO] [stdout]       "utilisation_rho": 0.1500243680699835,
[INFO] [stdout]       "mean_queue_wait_ms": 2.3138517081894904e-11,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 22,
[INFO] [stdout]       "utilisation_rho": 0.14320507861225698,
[INFO] [stdout]       "mean_queue_wait_ms": 3.112789400843748e-12,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 23,
[INFO] [stdout]       "utilisation_rho": 0.13697877084650667,
[INFO] [stdout]       "mean_queue_wait_ms": 4.019838987338054e-13,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 24,
[INFO] [stdout]       "utilisation_rho": 0.13127132206123557,
[INFO] [stdout]       "mean_queue_wait_ms": 4.9907952423283155e-14,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "step_load_analysis": [
[INFO] [stdout]     {
[INFO] [stdout]       "time_s": 0,
[INFO] [stdout]       "requests_per_second": 180.0,
[INFO] [stdout]       "utilisation_rho": 0.4435382830041251,
[INFO] [stdout]       "p99_queue_wait_ms": 13.380916358931461,
[INFO] [stdout]       "saturation": "Ok"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "time_s": 30,
[INFO] [stdout]       "requests_per_second": 260.0,
[INFO] [stdout]       "utilisation_rho": 0.6406664087837363,
[INFO] [stdout]       "p99_queue_wait_ms": 49.619734046461886,
[INFO] [stdout]       "saturation": "Ok"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "warnings": [
[INFO] [stdout]     "iterations increased to 10000 for full simulation fidelity",
[INFO] [stdout]     "step-load analysis used 2500 iterations per step for responsiveness"
[INFO] [stdout]   ]
[INFO] [stdout] }test tests::entrypoint_helpers_cover_parse_and_main_error_paths ... ok
[INFO] [stdout] {
[INFO] [stdout]   "status": "allowed",
[INFO] [stdout]   "scale_up_requested": false,
[INFO] [stdout]   "current_pool_size": 9,
[INFO] [stdout]   "recommended_pool_size": 4,
[INFO] [stdout]   "additional_connections_per_replica": 0,
[INFO] [stdout]   "additional_connections_total": 0,
[INFO] [stdout]   "replica_count": 2,
[INFO] [stdout]   "current_total_connections": 4,
[INFO] [stdout]   "projected_total_connections": null,
[INFO] [stdout]   "effective_database_capacity": 85,
[INFO] [stdout]   "database_contention": {
[INFO] [stdout]     "status": "database-contention",
[INFO] [stdout]     "dominant_cause": "lock-contention",
[INFO] [stdout]     "suppress_pool_increase": true,
[INFO] [stdout]     "evidence_categories": 4,
[INFO] [stdout]     "confidence": "high",
[INFO] [stdout]     "findings": [
[INFO] [stdout]       {
[INFO] [stdout]         "code": "POOL_WAIT_ELEVATED",
[INFO] [stdout]         "risk": "High",
[INFO] [stdout]         "message": "application requests are waiting materially for a pool connection",
[INFO] [stdout]         "remediation": "compare database-side evidence before increasing the pool; pool wait can be downstream of database contention"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "code": "LOCK_WAITING_SESSIONS",
[INFO] [stdout]         "risk": "High",
[INFO] [stdout]         "message": "one or more database sessions are waiting for locks",
[INFO] [stdout]         "remediation": "inspect blocking sessions, lock order, transaction duration, and query plans before increasing the application pool"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "code": "DATABASE_LATENCY_ELEVATED",
[INFO] [stdout]         "risk": "Medium",
[INFO] [stdout]         "message": "database service latency is above the configured threshold",
[INFO] [stdout]         "remediation": "inspect query latency and database waits; do not assume a larger application pool will reduce service time"
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "telemetry_quality": {
[INFO] [stdout]     "status": "valid",
[INFO] [stdout]     "arrival_model": "open-loop",
[INFO] [stdout]     "observed_rate_ratio": 1.0,
[INFO] [stdout]     "coordinated_omission_risk": "Low",
[INFO] [stdout]     "findings": [],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "NO_SCALE_UP_REQUESTED",
[INFO] [stdout]       "risk": "Low",
[INFO] [stdout]       "message": "the recommendation keeps or reduces the current pool size",
[INFO] [stdout]       "remediation": "apply the existing recommendation workflow; this gate only blocks unsafe increases"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }test config::tests::resolve_telemetry_input_supports_wrapped_and_direct_files ... ok
[INFO] [stdout] {
[INFO] [stdout]   "status": "allowed",
[INFO] [stdout]   "scale_up_requested": false,
[INFO] [stdout]   "current_pool_size": 9,
[INFO] [stdout]   "recommended_pool_size": 4,
[INFO] [stdout]   "additional_connections_per_replica": 0,
[INFO] [stdout]   "additional_connections_total": 0,
[INFO] [stdout]   "replica_count": 2,
[INFO] [stdout]   "current_total_connections": 4,
[INFO] [stdout]   "projected_total_connections": null,
[INFO] [stdout]   "effective_database_capacity": 85,
[INFO] [stdout]   "database_contention": {
[INFO] [stdout]     "status": "database-contention",
[INFO] [stdout]     "dominant_cause": "lock-contention",
[INFO] [stdout]     "suppress_pool_increase": true,
[INFO] [stdout]     "evidence_categories": 4,
[INFO] [stdout]     "confidence": "high",
[INFO] [stdout]     "findings": [
[INFO] [stdout]       {
[INFO] [stdout]         "code": "POOL_WAIT_ELEVATED",
[INFO] [stdout]         "risk": "High",
[INFO] [stdout]         "message": "application requests are waiting materially for a pool connection",
[INFO] [stdout]         "remediation": "compare database-side evidence before increasing the pool; pool wait can be downstream of database contention"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "code": "LOCK_WAITING_SESSIONS",
[INFO] [stdout]         "risk": "High",
[INFO] [stdout]         "message": "one or more database sessions are waiting for locks",
[INFO] [stdout]         "remediation": "inspect blocking sessions, lock order, transaction duration, and query plans before increasing the application pool"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "code": "DATABASE_LATENCY_ELEVATED",
[INFO] [stdout]         "risk": "Medium",
[INFO] [stdout]         "message": "database service latency is above the configured threshold",
[INFO] [stdout]         "remediation": "inspect query latency and database waits; do not assume a larger application pool will reduce service time"
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "telemetry_quality": {
[INFO] [stdout]     "status": "valid",
[INFO] [stdout]     "arrival_model": "open-loop",
[INFO] [stdout]     "observed_rate_ratio": 1.0,
[INFO] [stdout]     "coordinated_omission_risk": "Low",
[INFO] [stdout]     "findings": [],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "NO_SCALE_UP_REQUESTED",
[INFO] [stdout]       "risk": "Low",
[INFO] [stdout]       "message": "the recommendation keeps or reduces the current pool size",
[INFO] [stdout]       "remediation": "apply the existing recommendation workflow; this gate only blocks unsafe increases"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "compatible": "needs-review",
[INFO] [stdout]   "client": "sqlx",
[INFO] [stdout]   "pooler": "pg-bouncer",
[INFO] [stdout]   "mode": "transaction",
[INFO] [stdout]   "effective_features": [
[INFO] [stdout]     "prepared-statements"
[INFO] [stdout]   ],
[INFO] [stdout]   "pooler_report": {
[INFO] [stdout]     "compatible": "compatible",
[INFO] [stdout]     "incompatible_features": [],
[INFO] [stdout]     "migration_direct_connection_required": false,
[INFO] [stdout]     "long_running_direct_connection_required": false,
[INFO] [stdout]     "findings": [],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "client_guidance": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "CLIENT_SQLX_STATEMENT_CACHE",
[INFO] [stdout]       "risk": "High",
[INFO] [stdout]       "message": "sqlx prepares and caches PostgreSQL statements by default",
[INFO] [stdout]       "remediation": "set statement_cache_capacity to 0 for transaction poolers that cannot preserve prepared statements, or prove PgBouncer prepared-statement tracking is enabled",
[INFO] [stdout]       "source_url": "https://docs.rs/sqlx/latest/sqlx/postgres/struct.PgConnectOptions.html",
[INFO] [stdout]       "requires_change": false
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "medium"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "healthy",
[INFO] [stdout]   "pooler": "pg-bouncer",
[INFO] [stdout]   "mode": "transaction",
[INFO] [stdout]   "label": null,
[INFO] [stdout]   "observed_client_connections": 2,
[INFO] [stdout]   "observed_backend_connections": 10,
[INFO] [stdout]   "client_waiting": 0,
[INFO] [stdout]   "backend_utilization": 0.5,
[INFO] [stdout]   "client_utilization": 0.1,
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }test tests::run_with_cli_covers_remaining_dispatch_and_exit_helpers ... ok
[INFO] [stdout] {
[INFO] [stdout]   "optimal_pool_size": 5,
[INFO] [stdout]   "confidence_interval": [
[INFO] [stdout]     4,
[INFO] [stdout]     6
[INFO] [stdout]   ],
[INFO] [stdout]   "cold_start_min_pool_size": 5,
[INFO] [stdout]   "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]   "mean_queue_wait_ms": 2.3175328514107956,
[INFO] [stdout]   "p99_queue_wait_ms": 30.808049265529824,
[INFO] [stdout]   "saturation": "Ok",
[INFO] [stdout]   "sensitivity": [
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 3,
[INFO] [stdout]       "utilisation_rho": 1.0501705764898845,
[INFO] [stdout]       "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]       "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]       "risk": "Critical"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 4,
[INFO] [stdout]       "utilisation_rho": 0.7876279323674135,
[INFO] [stdout]       "mean_queue_wait_ms": 9.682188518462448,
[INFO] [stdout]       "p99_queue_wait_ms": 68.28497420551827,
[INFO] [stdout]       "risk": "Medium"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 5,
[INFO] [stdout]       "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]       "mean_queue_wait_ms": 2.129730270548012,
[INFO] [stdout]       "p99_queue_wait_ms": 25.66311592447191,
[INFO] [stdout]       "risk": "Medium"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 6,
[INFO] [stdout]       "utilisation_rho": 0.5250852882449423,
[INFO] [stdout]       "mean_queue_wait_ms": 0.6019456613698486,
[INFO] [stdout]       "p99_queue_wait_ms": 12.478814179014833,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 7,
[INFO] [stdout]       "utilisation_rho": 0.45007310420995056,
[INFO] [stdout]       "mean_queue_wait_ms": 0.1760633195250171,
[INFO] [stdout]       "p99_queue_wait_ms": 5.782929249423791,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 8,
[INFO] [stdout]       "utilisation_rho": 0.39381396618370673,
[INFO] [stdout]       "mean_queue_wait_ms": 0.05015080549182577,
[INFO] [stdout]       "p99_queue_wait_ms": 1.5639941371284711,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 9,
[INFO] [stdout]       "utilisation_rho": 0.3500568588299615,
[INFO] [stdout]       "mean_queue_wait_ms": 0.013590078010550094,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 10,
[INFO] [stdout]       "utilisation_rho": 0.31505117294696533,
[INFO] [stdout]       "mean_queue_wait_ms": 0.003470589631466181,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 11,
[INFO] [stdout]       "utilisation_rho": 0.28641015722451396,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0008326200503900432,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 12,
[INFO] [stdout]       "utilisation_rho": 0.26254264412247114,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0001876238611913576,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 13,
[INFO] [stdout]       "utilisation_rho": 0.2423470561130503,
[INFO] [stdout]       "mean_queue_wait_ms": 0.00003976474918440386,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 14,
[INFO] [stdout]       "utilisation_rho": 0.22503655210497528,
[INFO] [stdout]       "mean_queue_wait_ms": 7.94227804320797e-6,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 15,
[INFO] [stdout]       "utilisation_rho": 0.2100341152979769,
[INFO] [stdout]       "mean_queue_wait_ms": 1.4983646554834264e-6,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 16,
[INFO] [stdout]       "utilisation_rho": 0.19690698309185337,
[INFO] [stdout]       "mean_queue_wait_ms": 2.676300633375451e-7,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 17,
[INFO] [stdout]       "utilisation_rho": 0.18532421938056787,
[INFO] [stdout]       "mean_queue_wait_ms": 4.5362839080073716e-8,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 18,
[INFO] [stdout]       "utilisation_rho": 0.17502842941498076,
[INFO] [stdout]       "mean_queue_wait_ms": 7.312685324639542e-9,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 19,
[INFO] [stdout]       "utilisation_rho": 0.1658164068141923,
[INFO] [stdout]       "mean_queue_wait_ms": 1.1235126509268129e-9,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 20,
[INFO] [stdout]       "utilisation_rho": 0.15752558647348266,
[INFO] [stdout]       "mean_queue_wait_ms": 1.648399694144671e-10,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 21,
[INFO] [stdout]       "utilisation_rho": 0.1500243680699835,
[INFO] [stdout]       "mean_queue_wait_ms": 2.3138517081894904e-11,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 22,
[INFO] [stdout]       "utilisation_rho": 0.14320507861225698,
[INFO] [stdout]       "mean_queue_wait_ms": 3.112789400843748e-12,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 23,
[INFO] [stdout]       "utilisation_rho": 0.13697877084650667,
[INFO] [stdout]       "mean_queue_wait_ms": 4.019838987338054e-13,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "pool_size": 24,
[INFO] [stdout]       "utilisation_rho": 0.13127132206123557,
[INFO] [stdout]       "mean_queue_wait_ms": 4.9907952423283155e-14,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "risk": "Low"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "step_load_analysis": [
[INFO] [stdout]     {
[INFO] [stdout]       "time_s": 0,
[INFO] [stdout]       "requests_per_second": 180.0,
[INFO] [stdout]       "utilisation_rho": 0.4435382830041251,
[INFO] [stdout]       "p99_queue_wait_ms": 13.380916358931461,
[INFO] [stdout]       "saturation": "Ok"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "time_s": 30,
[INFO] [stdout]       "requests_per_second": 260.0,
[INFO] [stdout]       "utilisation_rho": 0.6406664087837363,
[INFO] [stdout]       "p99_queue_wait_ms": 49.619734046461886,
[INFO] [stdout]       "saturation": "Ok"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "warnings": [
[INFO] [stdout]     "iterations increased to 10000 for full simulation fidelity",
[INFO] [stdout]     "step-load analysis used 2500 iterations per step for responsiveness"
[INFO] [stdout]   ]
[INFO] [stdout] }{
[INFO] [stdout]   "pool_size": 8,
[INFO] [stdout]   "utilisation_rho": 0.3388139661837067,
[INFO] [stdout]   "mean_queue_wait_ms": 0.01692015025136081,
[INFO] [stdout]   "p99_queue_wait_ms": 1.1813250490506146,
[INFO] [stdout]   "saturation": "Ok",
[INFO] [stdout]   "warnings": []
[INFO] [stdout] }[
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 3,
[INFO] [stdout]     "utilisation_rho": 1.0501705764898845,
[INFO] [stdout]     "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]     "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]     "risk": "Critical"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 4,
[INFO] [stdout]     "utilisation_rho": 0.7876279323674135,
[INFO] [stdout]     "mean_queue_wait_ms": 9.682188518462448,
[INFO] [stdout]     "p99_queue_wait_ms": 68.28497420551827,
[INFO] [stdout]     "risk": "Medium"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 5,
[INFO] [stdout]     "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]     "mean_queue_wait_ms": 2.129730270548012,
[INFO] [stdout]     "p99_queue_wait_ms": 25.66311592447191,
[INFO] [stdout]     "risk": "Medium"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 6,
[INFO] [stdout]     "utilisation_rho": 0.5250852882449423,
[INFO] [stdout]     "mean_queue_wait_ms": 0.6019456613698486,
[INFO] [stdout]     "p99_queue_wait_ms": 12.478814179014833,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 7,
[INFO] [stdout]     "utilisation_rho": 0.45007310420995056,
[INFO] [stdout]     "mean_queue_wait_ms": 0.1760633195250171,
[INFO] [stdout]     "p99_queue_wait_ms": 5.782929249423791,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 8,
[INFO] [stdout]     "utilisation_rho": 0.39381396618370673,
[INFO] [stdout]     "mean_queue_wait_ms": 0.05015080549182577,
[INFO] [stdout]     "p99_queue_wait_ms": 1.5639941371284711,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 9,
[INFO] [stdout]     "utilisation_rho": 0.3500568588299615,
[INFO] [stdout]     "mean_queue_wait_ms": 0.013590078010550094,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 10,
[INFO] [stdout]     "utilisation_rho": 0.31505117294696533,
[INFO] [stdout]     "mean_queue_wait_ms": 0.003470589631466181,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 11,
[INFO] [stdout]     "utilisation_rho": 0.28641015722451396,
[INFO] [stdout]     "mean_queue_wait_ms": 0.0008326200503900432,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 12,
[INFO] [stdout]     "utilisation_rho": 0.26254264412247114,
[INFO] [stdout]     "mean_queue_wait_ms": 0.0001876238611913576,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 13,
[INFO] [stdout]     "utilisation_rho": 0.2423470561130503,
[INFO] [stdout]     "mean_queue_wait_ms": 0.00003976474918440386,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 14,
[INFO] [stdout]     "utilisation_rho": 0.22503655210497528,
[INFO] [stdout]     "mean_queue_wait_ms": 7.94227804320797e-6,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 15,
[INFO] [stdout]     "utilisation_rho": 0.2100341152979769,
[INFO] [stdout]     "mean_queue_wait_ms": 1.4983646554834264e-6,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 16,
[INFO] [stdout]     "utilisation_rho": 0.19690698309185337,
[INFO] [stdout]     "mean_queue_wait_ms": 2.676300633375451e-7,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 17,
[INFO] [stdout]     "utilisation_rho": 0.18532421938056787,
[INFO] [stdout]     "mean_queue_wait_ms": 4.5362839080073716e-8,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 18,
[INFO] [stdout]     "utilisation_rho": 0.17502842941498076,
[INFO] [stdout]     "mean_queue_wait_ms": 7.312685324639542e-9,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 19,
[INFO] [stdout]     "utilisation_rho": 0.1658164068141923,
[INFO] [stdout]     "mean_queue_wait_ms": 1.1235126509268129e-9,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 20,
[INFO] [stdout]     "utilisation_rho": 0.15752558647348266,
[INFO] [stdout]     "mean_queue_wait_ms": 1.648399694144671e-10,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 21,
[INFO] [stdout]     "utilisation_rho": 0.1500243680699835,
[INFO] [stdout]     "mean_queue_wait_ms": 2.3138517081894904e-11,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 22,
[INFO] [stdout]     "utilisation_rho": 0.14320507861225698,
[INFO] [stdout]     "mean_queue_wait_ms": 3.112789400843748e-12,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 23,
[INFO] [stdout]     "utilisation_rho": 0.13697877084650667,
[INFO] [stdout]     "mean_queue_wait_ms": 4.019838987338054e-13,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 24,
[INFO] [stdout]     "utilisation_rho": 0.13127132206123557,
[INFO] [stdout]     "mean_queue_wait_ms": 4.9907952423283155e-14,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   }
[INFO] [stdout] ]{
[INFO] [stdout]   "pool_size": 9,
[INFO] [stdout]   "utilisation_rho": 0.3011679699410726,
[INFO] [stdout]   "mean_queue_wait_ms": 0.004056319877018359,
[INFO] [stdout]   "p99_queue_wait_ms": 0.0,
[INFO] [stdout]   "saturation": "Ok",
[INFO] [stdout]   "warnings": []
[INFO] [stdout] }[
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 3,
[INFO] [stdout]     "utilisation_rho": 1.0501705764898845,
[INFO] [stdout]     "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]     "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]     "risk": "Critical"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 4,
[INFO] [stdout]     "utilisation_rho": 0.7876279323674135,
[INFO] [stdout]     "mean_queue_wait_ms": 9.682188518462448,
[INFO] [stdout]     "p99_queue_wait_ms": 68.28497420551827,
[INFO] [stdout]     "risk": "Medium"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 5,
[INFO] [stdout]     "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]     "mean_queue_wait_ms": 2.129730270548012,
[INFO] [stdout]     "p99_queue_wait_ms": 25.66311592447191,
[INFO] [stdout]     "risk": "Medium"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 6,
[INFO] [stdout]     "utilisation_rho": 0.5250852882449423,
[INFO] [stdout]     "mean_queue_wait_ms": 0.6019456613698486,
[INFO] [stdout]     "p99_queue_wait_ms": 12.478814179014833,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 7,
[INFO] [stdout]     "utilisation_rho": 0.45007310420995056,
[INFO] [stdout]     "mean_queue_wait_ms": 0.1760633195250171,
[INFO] [stdout]     "p99_queue_wait_ms": 5.782929249423791,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 8,
[INFO] [stdout]     "utilisation_rho": 0.39381396618370673,
[INFO] [stdout]     "mean_queue_wait_ms": 0.05015080549182577,
[INFO] [stdout]     "p99_queue_wait_ms": 1.5639941371284711,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 9,
[INFO] [stdout]     "utilisation_rho": 0.3500568588299615,
[INFO] [stdout]     "mean_queue_wait_ms": 0.013590078010550094,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 10,
[INFO] [stdout]     "utilisation_rho": 0.31505117294696533,
[INFO] [stdout]     "mean_queue_wait_ms": 0.003470589631466181,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 11,
[INFO] [stdout]     "utilisation_rho": 0.28641015722451396,
[INFO] [stdout]     "mean_queue_wait_ms": 0.0008326200503900432,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 12,
[INFO] [stdout]     "utilisation_rho": 0.26254264412247114,
[INFO] [stdout]     "mean_queue_wait_ms": 0.0001876238611913576,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 13,
[INFO] [stdout]     "utilisation_rho": 0.2423470561130503,
[INFO] [stdout]     "mean_queue_wait_ms": 0.00003976474918440386,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 14,
[INFO] [stdout]     "utilisation_rho": 0.22503655210497528,
[INFO] [stdout]     "mean_queue_wait_ms": 7.94227804320797e-6,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 15,
[INFO] [stdout]     "utilisation_rho": 0.2100341152979769,
[INFO] [stdout]     "mean_queue_wait_ms": 1.4983646554834264e-6,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 16,
[INFO] [stdout]     "utilisation_rho": 0.19690698309185337,
[INFO] [stdout]     "mean_queue_wait_ms": 2.676300633375451e-7,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 17,
[INFO] [stdout]     "utilisation_rho": 0.18532421938056787,
[INFO] [stdout]     "mean_queue_wait_ms": 4.5362839080073716e-8,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 18,
[INFO] [stdout]     "utilisation_rho": 0.17502842941498076,
[INFO] [stdout]     "mean_queue_wait_ms": 7.312685324639542e-9,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 19,
[INFO] [stdout]     "utilisation_rho": 0.1658164068141923,
[INFO] [stdout]     "mean_queue_wait_ms": 1.1235126509268129e-9,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 20,
[INFO] [stdout]     "utilisation_rho": 0.15752558647348266,
[INFO] [stdout]     "mean_queue_wait_ms": 1.648399694144671e-10,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 21,
[INFO] [stdout]     "utilisation_rho": 0.1500243680699835,
[INFO] [stdout]     "mean_queue_wait_ms": 2.3138517081894904e-11,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 22,
[INFO] [stdout]     "utilisation_rho": 0.14320507861225698,
[INFO] [stdout]     "mean_queue_wait_ms": 3.112789400843748e-12,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 23,
[INFO] [stdout]     "utilisation_rho": 0.13697877084650667,
[INFO] [stdout]     "mean_queue_wait_ms": 4.019838987338054e-13,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   },
[INFO] [stdout]   {
[INFO] [stdout]     "pool_size": 24,
[INFO] [stdout]     "utilisation_rho": 0.13127132206123557,
[INFO] [stdout]     "mean_queue_wait_ms": 4.9907952423283155e-14,
[INFO] [stdout]     "p99_queue_wait_ms": 0.0,
[INFO] [stdout]     "risk": "Low"
[INFO] [stdout]   }
[INFO] [stdout] ][
[INFO] [stdout]   {
[INFO] [stdout]     "optimal_pool_size": 5,
[INFO] [stdout]     "confidence_interval": [
[INFO] [stdout]       4,
[INFO] [stdout]       6
[INFO] [stdout]     ],
[INFO] [stdout]     "cold_start_min_pool_size": 5,
[INFO] [stdout]     "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]     "mean_queue_wait_ms": 2.3175328514107956,
[INFO] [stdout]     "p99_queue_wait_ms": 30.808049265529824,
[INFO] [stdout]     "saturation": "Ok",
[INFO] [stdout]     "sensitivity": [
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 3,
[INFO] [stdout]         "utilisation_rho": 1.0501705764898845,
[INFO] [stdout]         "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]         "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]         "risk": "Critical"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 4,
[INFO] [stdout]         "utilisation_rho": 0.7876279323674135,
[INFO] [stdout]         "mean_queue_wait_ms": 9.682188518462448,
[INFO] [stdout]         "p99_queue_wait_ms": 68.28497420551827,
[INFO] [stdout]         "risk": "Medium"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 5,
[INFO] [stdout]         "utilisation_rho": 0.6301023458939307,
[INFO] [stdout]         "mean_queue_wait_ms": 2.129730270548012,
[INFO] [stdout]         "p99_queue_wait_ms": 25.66311592447191,
[INFO] [stdout]         "risk": "Medium"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 6,
[INFO] [stdout]         "utilisation_rho": 0.5250852882449423,
[INFO] [stdout]         "mean_queue_wait_ms": 0.6019456613698486,
[INFO] [stdout]         "p99_queue_wait_ms": 12.478814179014833,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 7,
[INFO] [stdout]         "utilisation_rho": 0.45007310420995056,
[INFO] [stdout]         "mean_queue_wait_ms": 0.1760633195250171,
[INFO] [stdout]         "p99_queue_wait_ms": 5.782929249423791,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 8,
[INFO] [stdout]         "utilisation_rho": 0.39381396618370673,
[INFO] [stdout]         "mean_queue_wait_ms": 0.05015080549182577,
[INFO] [stdout]         "p99_queue_wait_ms": 1.5639941371284711,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 9,
[INFO] [stdout]         "utilisation_rho": 0.3500568588299615,
[INFO] [stdout]         "mean_queue_wait_ms": 0.013590078010550094,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 10,
[INFO] [stdout]         "utilisation_rho": 0.31505117294696533,
[INFO] [stdout]         "mean_queue_wait_ms": 0.003470589631466181,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 11,
[INFO] [stdout]         "utilisation_rho": 0.28641015722451396,
[INFO] [stdout]         "mean_queue_wait_ms": 0.0008326200503900432,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 12,
[INFO] [stdout]         "utilisation_rho": 0.26254264412247114,
[INFO] [stdout]         "mean_queue_wait_ms": 0.0001876238611913576,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 13,
[INFO] [stdout]         "utilisation_rho": 0.2423470561130503,
[INFO] [stdout]         "mean_queue_wait_ms": 0.00003976474918440386,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 14,
[INFO] [stdout]         "utilisation_rho": 0.22503655210497528,
[INFO] [stdout]         "mean_queue_wait_ms": 7.94227804320797e-6,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 15,
[INFO] [stdout]         "utilisation_rho": 0.2100341152979769,
[INFO] [stdout]         "mean_queue_wait_ms": 1.4983646554834264e-6,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 16,
[INFO] [stdout]         "utilisation_rho": 0.19690698309185337,
[INFO] [stdout]         "mean_queue_wait_ms": 2.676300633375451e-7,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 17,
[INFO] [stdout]         "utilisation_rho": 0.18532421938056787,
[INFO] [stdout]         "mean_queue_wait_ms": 4.5362839080073716e-8,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 18,
[INFO] [stdout]         "utilisation_rho": 0.17502842941498076,
[INFO] [stdout]         "mean_queue_wait_ms": 7.312685324639542e-9,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 19,
[INFO] [stdout]         "utilisation_rho": 0.1658164068141923,
[INFO] [stdout]         "mean_queue_wait_ms": 1.1235126509268129e-9,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 20,
[INFO] [stdout]         "utilisation_rho": 0.15752558647348266,
[INFO] [stdout]         "mean_queue_wait_ms": 1.648399694144671e-10,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 21,
[INFO] [stdout]         "utilisation_rho": 0.1500243680699835,
[INFO] [stdout]         "mean_queue_wait_ms": 2.3138517081894904e-11,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 22,
[INFO] [stdout]         "utilisation_rho": 0.14320507861225698,
[INFO] [stdout]         "mean_queue_wait_ms": 3.112789400843748e-12,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 23,
[INFO] [stdout]         "utilisation_rho": 0.13697877084650667,
[INFO] [stdout]         "mean_queue_wait_ms": 4.019838987338054e-13,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "pool_size": 24,
[INFO] [stdout]         "utilisation_rho": 0.13127132206123557,
[INFO] [stdout]         "mean_queue_wait_ms": 4.9907952423283155e-14,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "risk": "Low"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "step_load_analysis": [
[INFO] [stdout]       {
[INFO] [stdout]         "time_s": 0,
[INFO] [stdout]         "requests_per_second": 180.0,
[INFO] [stdout]         "utilisation_rho": 0.4435382830041251,
[INFO] [stdout]         "p99_queue_wait_ms": 13.380916358931461,
[INFO] [stdout]         "saturation": "Ok"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "time_s": 30,
[INFO] [stdout]         "requests_per_second": 260.0,
[INFO] [stdout]         "utilisation_rho": 0.6406664087837363,
[INFO] [stdout]         "p99_queue_wait_ms": 49.619734046461886,
[INFO] [stdout]         "saturation": "Ok"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "warnings": [
[INFO] [stdout]       "iterations increased to 10000 for full simulation fidelity",
[INFO] [stdout]       "step-load analysis used 2500 iterations per step for responsiveness"
[INFO] [stdout]     ]
[INFO] [stdout]   }
[INFO] [stdout] ]{
[INFO] [stdout]   "baseline": "normal",
[INFO] [stdout]   "worst_saturation": "Ok",
[INFO] [stdout]   "rows": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "normal",
[INFO] [stdout]       "is_baseline": true,
[INFO] [stdout]       "requests_per_second": 180.0,
[INFO] [stdout]       "optimal_pool_size": 4,
[INFO] [stdout]       "pool_size_delta": 0,
[INFO] [stdout]       "p99_queue_wait_ms": 15.975369280319285,
[INFO] [stdout]       "p99_queue_wait_delta_ms": 0.0,
[INFO] [stdout]       "mean_queue_wait_ms": 1.1705920165420984,
[INFO] [stdout]       "mean_queue_wait_delta_ms": 0.0,
[INFO] [stdout]       "utilisation_rho": 0.5415704823874502,
[INFO] [stdout]       "utilisation_rho_delta": 0.0,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "report": {
[INFO] [stdout]         "optimal_pool_size": 4,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           3,
[INFO] [stdout]           5
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 4,
[INFO] [stdout]         "utilisation_rho": 0.5415704823874502,
[INFO] [stdout]         "mean_queue_wait_ms": 1.1705920165420984,
[INFO] [stdout]         "p99_queue_wait_ms": 15.975369280319285,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 2,
[INFO] [stdout]             "utilisation_rho": 1.0831409647749004,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "risk": "Critical"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 3,
[INFO] [stdout]             "utilisation_rho": 0.7220939765166001,
[INFO] [stdout]             "mean_queue_wait_ms": 7.580709096605194,
[INFO] [stdout]             "p99_queue_wait_ms": 57.17941999996167,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 4,
[INFO] [stdout]             "utilisation_rho": 0.5415704823874502,
[INFO] [stdout]             "mean_queue_wait_ms": 1.4265710851586928,
[INFO] [stdout]             "p99_queue_wait_ms": 20.207687078600493,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 5,
[INFO] [stdout]             "utilisation_rho": 0.43325638590996013,
[INFO] [stdout]             "mean_queue_wait_ms": 0.3375413057110999,
[INFO] [stdout]             "p99_queue_wait_ms": 8.803601068722937,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.36104698825830006,
[INFO] [stdout]             "mean_queue_wait_ms": 0.08062379310756614,
[INFO] [stdout]             "p99_queue_wait_ms": 2.9610199159612494,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 7,
[INFO] [stdout]             "utilisation_rho": 0.30946884707854294,
[INFO] [stdout]             "mean_queue_wait_ms": 0.018345881529124315,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 8,
[INFO] [stdout]             "utilisation_rho": 0.2707852411937251,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0038993935847905525,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 9,
[INFO] [stdout]             "utilisation_rho": 0.2406979921722001,
[INFO] [stdout]             "mean_queue_wait_ms": 0.000769540267579432,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 10,
[INFO] [stdout]             "utilisation_rho": 0.21662819295498006,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0001409574027067856,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 11,
[INFO] [stdout]             "utilisation_rho": 0.19693472086816372,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00002401334436516876,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 12,
[INFO] [stdout]             "utilisation_rho": 0.18052349412915003,
[INFO] [stdout]             "mean_queue_wait_ms": 3.816160720847147e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 13,
[INFO] [stdout]             "utilisation_rho": 0.16663707150383084,
[INFO] [stdout]             "mean_queue_wait_ms": 5.675980012876045e-7,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 14,
[INFO] [stdout]             "utilisation_rho": 0.15473442353927147,
[INFO] [stdout]             "mean_queue_wait_ms": 7.927296603900458e-8,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 15,
[INFO] [stdout]             "utilisation_rho": 0.14441879530332005,
[INFO] [stdout]             "mean_queue_wait_ms": 1.0429164006884923e-8,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 16,
[INFO] [stdout]             "utilisation_rho": 0.13539262059686255,
[INFO] [stdout]             "mean_queue_wait_ms": 1.2962846043412583e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 17,
[INFO] [stdout]             "utilisation_rho": 0.1274283487970471,
[INFO] [stdout]             "mean_queue_wait_ms": 1.5264168706066238e-10,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 18,
[INFO] [stdout]             "utilisation_rho": 0.12034899608610004,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7071569031944096e-11,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 19,
[INFO] [stdout]             "utilisation_rho": 0.11401483839735792,
[INFO] [stdout]             "mean_queue_wait_ms": 1.8176975725241955e-12,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 20,
[INFO] [stdout]             "utilisation_rho": 0.10831409647749003,
[INFO] [stdout]             "mean_queue_wait_ms": 1.846542503467989e-13,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [],
[INFO] [stdout]         "warnings": [
[INFO] [stdout]           "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]         ]
[INFO] [stdout]       }
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "peak",
[INFO] [stdout]       "is_baseline": false,
[INFO] [stdout]       "requests_per_second": 260.0,
[INFO] [stdout]       "optimal_pool_size": 5,
[INFO] [stdout]       "pool_size_delta": 1,
[INFO] [stdout]       "p99_queue_wait_ms": 31.491170075695464,
[INFO] [stdout]       "p99_queue_wait_delta_ms": 15.51580079537618,
[INFO] [stdout]       "mean_queue_wait_ms": 3.393217193226541,
[INFO] [stdout]       "mean_queue_wait_delta_ms": 2.2226251766844425,
[INFO] [stdout]       "utilisation_rho": 0.7103020458194268,
[INFO] [stdout]       "utilisation_rho_delta": 0.1687315634319766,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "report": {
[INFO] [stdout]         "optimal_pool_size": 5,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           4,
[INFO] [stdout]           6
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 5,
[INFO] [stdout]         "utilisation_rho": 0.7103020458194268,
[INFO] [stdout]         "mean_queue_wait_ms": 3.393217193226541,
[INFO] [stdout]         "p99_queue_wait_ms": 31.491170075695464,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 3,
[INFO] [stdout]             "utilisation_rho": 1.183836743032378,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "risk": "Critical"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 4,
[INFO] [stdout]             "utilisation_rho": 0.8878775572742835,
[INFO] [stdout]             "mean_queue_wait_ms": 23.25072344402422,
[INFO] [stdout]             "p99_queue_wait_ms": 132.03691271289637,
[INFO] [stdout]             "risk": "High"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 5,
[INFO] [stdout]             "utilisation_rho": 0.7103020458194268,
[INFO] [stdout]             "mean_queue_wait_ms": 3.7196348985019605,
[INFO] [stdout]             "p99_queue_wait_ms": 34.655034924932686,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.591918371516189,
[INFO] [stdout]             "mean_queue_wait_ms": 1.0441245145231164,
[INFO] [stdout]             "p99_queue_wait_ms": 16.342414318968398,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 7,
[INFO] [stdout]             "utilisation_rho": 0.5073586041567335,
[INFO] [stdout]             "mean_queue_wait_ms": 0.32190932958242197,
[INFO] [stdout]             "p99_queue_wait_ms": 8.299100199330175,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 8,
[INFO] [stdout]             "utilisation_rho": 0.44393877863714176,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0990661900908212,
[INFO] [stdout]             "p99_queue_wait_ms": 3.59669102259851,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 9,
[INFO] [stdout]             "utilisation_rho": 0.39461224767745934,
[INFO] [stdout]             "mean_queue_wait_ms": 0.029394400084182773,
[INFO] [stdout]             "p99_queue_wait_ms": 0.39889971174530714,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 10,
[INFO] [stdout]             "utilisation_rho": 0.3551510229097134,
[INFO] [stdout]             "mean_queue_wait_ms": 0.008286728741284551,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 11,
[INFO] [stdout]             "utilisation_rho": 0.3228645662815577,
[INFO] [stdout]             "mean_queue_wait_ms": 0.002206260491315137,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 12,
[INFO] [stdout]             "utilisation_rho": 0.2959591857580945,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0005537011508615142,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 13,
[INFO] [stdout]             "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00013102231828280333,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 14,
[INFO] [stdout]             "utilisation_rho": 0.25367930207836675,
[INFO] [stdout]             "mean_queue_wait_ms": 0.000029270745042482023,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 15,
[INFO] [stdout]             "utilisation_rho": 0.2367673486064756,
[INFO] [stdout]             "mean_queue_wait_ms": 6.184857094671044e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 16,
[INFO] [stdout]             "utilisation_rho": 0.22196938931857088,
[INFO] [stdout]             "mean_queue_wait_ms": 1.2385529850913808e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 17,
[INFO] [stdout]             "utilisation_rho": 0.20891236641747848,
[INFO] [stdout]             "mean_queue_wait_ms": 2.3555589930834516e-7,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 18,
[INFO] [stdout]             "utilisation_rho": 0.19730612383872967,
[INFO] [stdout]             "mean_queue_wait_ms": 4.263441021665883e-8,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 19,
[INFO] [stdout]             "utilisation_rho": 0.18692159100511233,
[INFO] [stdout]             "mean_queue_wait_ms": 7.3582353580506166e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 20,
[INFO] [stdout]             "utilisation_rho": 0.1775755114548567,
[INFO] [stdout]             "mean_queue_wait_ms": 1.2132579478572908e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 21,
[INFO] [stdout]             "utilisation_rho": 0.16911953471891117,
[INFO] [stdout]             "mean_queue_wait_ms": 1.9145759137681917e-10,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 22,
[INFO] [stdout]             "utilisation_rho": 0.16143228314077884,
[INFO] [stdout]             "mean_queue_wait_ms": 2.8964124991866697e-11,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 23,
[INFO] [stdout]             "utilisation_rho": 0.15441348822161452,
[INFO] [stdout]             "mean_queue_wait_ms": 4.207272832059248e-12,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 24,
[INFO] [stdout]             "utilisation_rho": 0.14797959287904724,
[INFO] [stdout]             "mean_queue_wait_ms": 5.876722696188118e-13,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [],
[INFO] [stdout]         "warnings": [
[INFO] [stdout]           "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]         ]
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   ]
[INFO] [stdout] }{
[INFO] [stdout]   "status": "Warning",
[INFO] [stdout]   "max_connections": 120,
[INFO] [stdout]   "reserved_connections": 20,
[INFO] [stdout]   "safety_margin_connections": 10,
[INFO] [stdout]   "available_connections": 90,
[INFO] [stdout]   "current_total_connections": 80,
[INFO] [stdout]   "requested_total_connections": 102,
[INFO] [stdout]   "min_required_connections": 40,
[INFO] [stdout]   "allocated_total_connections": 90,
[INFO] [stdout]   "unused_connections": 0,
[INFO] [stdout]   "over_budget_connections": 12,
[INFO] [stdout]   "services": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "checkout-api",
[INFO] [stdout]       "replicas": 6,
[INFO] [stdout]       "priority": 5,
[INFO] [stdout]       "current_pool_size": 8,
[INFO] [stdout]       "min_pool_size": 4,
[INFO] [stdout]       "max_pool_size": 12,
[INFO] [stdout]       "recommended_pool_size": 10,
[INFO] [stdout]       "desired_pool_size": 10,
[INFO] [stdout]       "allocated_pool_size": 10,
[INFO] [stdout]       "current_total_connections": 48,
[INFO] [stdout]       "requested_total_connections": 60,
[INFO] [stdout]       "allocated_total_connections": 60,
[INFO] [stdout]       "pool_size_delta_from_current": 2,
[INFO] [stdout]       "reduction_from_recommended": 0,
[INFO] [stdout]       "capped_by_service_max": false,
[INFO] [stdout]       "meets_minimum": true
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "billing-api",
[INFO] [stdout]       "replicas": 4,
[INFO] [stdout]       "priority": 3,
[INFO] [stdout]       "current_pool_size": 6,
[INFO] [stdout]       "min_pool_size": 3,
[INFO] [stdout]       "max_pool_size": 10,
[INFO] [stdout]       "recommended_pool_size": 8,
[INFO] [stdout]       "desired_pool_size": 8,
[INFO] [stdout]       "allocated_pool_size": 6,
[INFO] [stdout]       "current_total_connections": 24,
[INFO] [stdout]       "requested_total_connections": 32,
[INFO] [stdout]       "allocated_total_connections": 24,
[INFO] [stdout]       "pool_size_delta_from_current": 0,
[INFO] [stdout]       "reduction_from_recommended": 2,
[INFO] [stdout]       "capped_by_service_max": false,
[INFO] [stdout]       "meets_minimum": true
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "admin-api",
[INFO] [stdout]       "replicas": 2,
[INFO] [stdout]       "priority": 1,
[INFO] [stdout]       "current_pool_size": 4,
[INFO] [stdout]       "min_pool_size": 2,
[INFO] [stdout]       "max_pool_size": 6,
[INFO] [stdout]       "recommended_pool_size": 5,
[INFO] [stdout]       "desired_pool_size": 5,
[INFO] [stdout]       "allocated_pool_size": 3,
[INFO] [stdout]       "current_total_connections": 8,
[INFO] [stdout]       "requested_total_connections": 10,
[INFO] [stdout]       "allocated_total_connections": 6,
[INFO] [stdout]       "pool_size_delta_from_current": -1,
[INFO] [stdout]       "reduction_from_recommended": 2,
[INFO] [stdout]       "capped_by_service_max": false,
[INFO] [stdout]       "meets_minimum": true
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "warnings": [
[INFO] [stdout]     "requested service pools need 102 connections but only 90 are available"
[INFO] [stdout]   ]
[INFO] [stdout] }{
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "diff": {
[INFO] [stdout]     "current_pool_size": 9,
[INFO] [stdout]     "recommended_pool_size": 4,
[INFO] [stdout]     "pool_size_delta": -5,
[INFO] [stdout]     "change": "Decrease",
[INFO] [stdout]     "additional_connections_required": 0,
[INFO] [stdout]     "removable_connections": 5,
[INFO] [stdout]     "connection_change_percent": -55.55555555555556,
[INFO] [stdout]     "current_evaluation": {
[INFO] [stdout]       "pool_size": 9,
[INFO] [stdout]       "utilisation_rho": 0.2331930945459334,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0005881069195295649,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "warnings": []
[INFO] [stdout]     },
[INFO] [stdout]     "recommended_report": {
[INFO] [stdout]       "optimal_pool_size": 4,
[INFO] [stdout]       "confidence_interval": [
[INFO] [stdout]         3,
[INFO] [stdout]         5
[INFO] [stdout]       ],
[INFO] [stdout]       "cold_start_min_pool_size": 4,
[INFO] [stdout]       "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]       "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]       "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "sensitivity": [
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 2,
[INFO] [stdout]           "utilisation_rho": 1.2293689254567004,
[INFO] [stdout]           "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]           "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]           "risk": "Critical"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 3,
[INFO] [stdout]           "utilisation_rho": 0.8195792836378002,
[INFO] [stdout]           "mean_queue_wait_ms": 17.14409699454182,
[INFO] [stdout]           "p99_queue_wait_ms": 106.4615516038692,
[INFO] [stdout]           "risk": "High"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 4,
[INFO] [stdout]           "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]           "mean_queue_wait_ms": 2.7128815359673863,
[INFO] [stdout]           "p99_queue_wait_ms": 30.322081906500603,
[INFO] [stdout]           "risk": "Medium"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 5,
[INFO] [stdout]           "utilisation_rho": 0.49174757018268006,
[INFO] [stdout]           "mean_queue_wait_ms": 0.6624380154446748,
[INFO] [stdout]           "p99_queue_wait_ms": 13.49998085324488,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 6,
[INFO] [stdout]           "utilisation_rho": 0.4097896418189001,
[INFO] [stdout]           "mean_queue_wait_ms": 0.17067381102961182,
[INFO] [stdout]           "p99_queue_wait_ms": 5.73657524206179,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 7,
[INFO] [stdout]           "utilisation_rho": 0.3512482644162001,
[INFO] [stdout]           "mean_queue_wait_ms": 0.0427000479391632,
[INFO] [stdout]           "p99_queue_wait_ms": 1.0538874124702204,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 8,
[INFO] [stdout]           "utilisation_rho": 0.3073422313641751,
[INFO] [stdout]           "mean_queue_wait_ms": 0.010082524324133127,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 9,
[INFO] [stdout]           "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]           "mean_queue_wait_ms": 0.002224176622023264,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 10,
[INFO] [stdout]           "utilisation_rho": 0.24587378509134003,
[INFO] [stdout]           "mean_queue_wait_ms": 0.00045718374358659264,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 11,
[INFO] [stdout]           "utilisation_rho": 0.22352162281030916,
[INFO] [stdout]           "mean_queue_wait_ms": 0.00008762945991350249,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 12,
[INFO] [stdout]           "utilisation_rho": 0.20489482090945005,
[INFO] [stdout]           "mean_queue_wait_ms": 0.000015696494800407234,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 13,
[INFO] [stdout]           "utilisation_rho": 0.18913368083949234,
[INFO] [stdout]           "mean_queue_wait_ms": 2.6348760082980723e-6,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 14,
[INFO] [stdout]           "utilisation_rho": 0.17562413220810005,
[INFO] [stdout]           "mean_queue_wait_ms": 4.157264803795762e-7,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 15,
[INFO] [stdout]           "utilisation_rho": 0.16391585672756004,
[INFO] [stdout]           "mean_queue_wait_ms": 6.183238543326167e-8,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 16,
[INFO] [stdout]           "utilisation_rho": 0.15367111568208755,
[INFO] [stdout]           "mean_queue_wait_ms": 8.693630347180534e-9,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 17,
[INFO] [stdout]           "utilisation_rho": 0.14463163828902356,
[INFO] [stdout]           "mean_queue_wait_ms": 1.158530570522501e-9,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 18,
[INFO] [stdout]           "utilisation_rho": 0.1365965472729667,
[INFO] [stdout]           "mean_queue_wait_ms": 1.4669065215480163e-10,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 19,
[INFO] [stdout]           "utilisation_rho": 0.1294072553112316,
[INFO] [stdout]           "mean_queue_wait_ms": 1.768794766599782e-11,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 20,
[INFO] [stdout]           "utilisation_rho": 0.12293689254567002,
[INFO] [stdout]           "mean_queue_wait_ms": 2.035408958243995e-12,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         }
[INFO] [stdout]       ],
[INFO] [stdout]       "step_load_analysis": [],
[INFO] [stdout]       "warnings": [
[INFO] [stdout]         "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]       ]
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }{
[INFO] [stdout]   "status": "valid",
[INFO] [stdout]   "arrival_model": "open-loop",
[INFO] [stdout]   "observed_rate_ratio": 1.0,
[INFO] [stdout]   "coordinated_omission_risk": "Low",
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "database-contention",
[INFO] [stdout]   "dominant_cause": "lock-contention",
[INFO] [stdout]   "suppress_pool_increase": true,
[INFO] [stdout]   "evidence_categories": 8,
[INFO] [stdout]   "confidence": "high",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "POOL_WAIT_ELEVATED",
[INFO] [stdout]       "risk": "High",
[INFO] [stdout]       "message": "application requests are waiting materially for a pool connection",
[INFO] [stdout]       "remediation": "compare database-side evidence before increasing the pool; pool wait can be downstream of database contention"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "code": "LOCK_WAITING_SESSIONS",
[INFO] [stdout]       "risk": "High",
[INFO] [stdout]       "message": "one or more database sessions are waiting for locks",
[INFO] [stdout]       "remediation": "inspect blocking sessions, lock order, transaction duration, and query plans before increasing the application pool"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "code": "DATABASE_LATENCY_ELEVATED",
[INFO] [stdout]       "risk": "Medium",
[INFO] [stdout]       "message": "database service latency is above the configured threshold",
[INFO] [stdout]       "remediation": "inspect query latency and database waits; do not assume a larger application pool will reduce service time"
[INFO] [stdout]     }
[INFO] [stdout]   ]
[INFO] [stdout] }{
[INFO] [stdout]   "status": "blocked",
[INFO] [stdout]   "scale_up_requested": true,
[INFO] [stdout]   "current_pool_size": 2,
[INFO] [stdout]   "recommended_pool_size": 4,
[INFO] [stdout]   "additional_connections_per_replica": 2,
[INFO] [stdout]   "additional_connections_total": 6,
[INFO] [stdout]   "replica_count": 3,
[INFO] [stdout]   "current_total_connections": 6,
[INFO] [stdout]   "projected_total_connections": 12,
[INFO] [stdout]   "effective_database_capacity": 85,
[INFO] [stdout]   "database_contention": {
[INFO] [stdout]     "status": "database-contention",
[INFO] [stdout]     "dominant_cause": "lock-contention",
[INFO] [stdout]     "suppress_pool_increase": true,
[INFO] [stdout]     "evidence_categories": 8,
[INFO] [stdout]     "confidence": "high",
[INFO] [stdout]     "findings": [
[INFO] [stdout]       {
[INFO] [stdout]         "code": "POOL_WAIT_ELEVATED",
[INFO] [stdout]         "risk": "High",
[INFO] [stdout]         "message": "application requests are waiting materially for a pool connection",
[INFO] [stdout]         "remediation": "compare database-side evidence before increasing the pool; pool wait can be downstream of database contention"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "code": "LOCK_WAITING_SESSIONS",
[INFO] [stdout]         "risk": "High",
[INFO] [stdout]         "message": "one or more database sessions are waiting for locks",
[INFO] [stdout]         "remediation": "inspect blocking sessions, lock order, transaction duration, and query plans before increasing the application pool"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "code": "DATABASE_LATENCY_ELEVATED",
[INFO] [stdout]         "risk": "Medium",
[INFO] [stdout]         "message": "database service latency is above the configured threshold",
[INFO] [stdout]         "remediation": "inspect query latency and database waits; do not assume a larger application pool will reduce service time"
[INFO] [stdout]       }
[INFO] [stdout]     ]
[INFO] [stdout]   },
[INFO] [stdout]   "telemetry_quality": {
[INFO] [stdout]     "status": "valid",
[INFO] [stdout]     "arrival_model": "open-loop",
[INFO] [stdout]     "observed_rate_ratio": 1.0,
[INFO] [stdout]     "coordinated_omission_risk": "Low",
[INFO] [stdout]     "findings": [],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "DATABASE_CONTENTION_DETECTED",
[INFO] [stdout]       "risk": "Critical",
[INFO] [stdout]       "message": "database contention evidence indicates that increasing the application pool is unsafe",
[INFO] [stdout]       "remediation": "resolve lock waits, idle transactions, deadlocks, or backend saturation before increasing pool size"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "5m",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "diff": {
[INFO] [stdout]     "current_pool_size": 9,
[INFO] [stdout]     "recommended_pool_size": 4,
[INFO] [stdout]     "pool_size_delta": -5,
[INFO] [stdout]     "change": "Decrease",
[INFO] [stdout]     "additional_connections_required": 0,
[INFO] [stdout]     "removable_connections": 5,
[INFO] [stdout]     "connection_change_percent": -55.55555555555556,
[INFO] [stdout]     "current_evaluation": {
[INFO] [stdout]       "pool_size": 9,
[INFO] [stdout]       "utilisation_rho": 0.2331930945459334,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0005881069195295649,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "warnings": []
[INFO] [stdout]     },
[INFO] [stdout]     "recommended_report": {
[INFO] [stdout]       "optimal_pool_size": 4,
[INFO] [stdout]       "confidence_interval": [
[INFO] [stdout]         3,
[INFO] [stdout]         5
[INFO] [stdout]       ],
[INFO] [stdout]       "cold_start_min_pool_size": 4,
[INFO] [stdout]       "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]       "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]       "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "sensitivity": [
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 2,
[INFO] [stdout]           "utilisation_rho": 1.2293689254567004,
[INFO] [stdout]           "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]           "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]           "risk": "Critical"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 3,
[INFO] [stdout]           "utilisation_rho": 0.8195792836378002,
[INFO] [stdout]           "mean_queue_wait_ms": 17.14409699454182,
[INFO] [stdout]           "p99_queue_wait_ms": 106.4615516038692,
[INFO] [stdout]           "risk": "High"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 4,
[INFO] [stdout]           "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]           "mean_queue_wait_ms": 2.7128815359673863,
[INFO] [stdout]           "p99_queue_wait_ms": 30.322081906500603,
[INFO] [stdout]           "risk": "Medium"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 5,
[INFO] [stdout]           "utilisation_rho": 0.49174757018268006,
[INFO] [stdout]           "mean_queue_wait_ms": 0.6624380154446748,
[INFO] [stdout]           "p99_queue_wait_ms": 13.49998085324488,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 6,
[INFO] [stdout]           "utilisation_rho": 0.4097896418189001,
[INFO] [stdout]           "mean_queue_wait_ms": 0.17067381102961182,
[INFO] [stdout]           "p99_queue_wait_ms": 5.73657524206179,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 7,
[INFO] [stdout]           "utilisation_rho": 0.3512482644162001,
[INFO] [stdout]           "mean_queue_wait_ms": 0.0427000479391632,
[INFO] [stdout]           "p99_queue_wait_ms": 1.0538874124702204,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 8,
[INFO] [stdout]           "utilisation_rho": 0.3073422313641751,
[INFO] [stdout]           "mean_queue_wait_ms": 0.010082524324133127,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 9,
[INFO] [stdout]           "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]           "mean_queue_wait_ms": 0.002224176622023264,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 10,
[INFO] [stdout]           "utilisation_rho": 0.24587378509134003,
[INFO] [stdout]           "mean_queue_wait_ms": 0.00045718374358659264,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 11,
[INFO] [stdout]           "utilisation_rho": 0.22352162281030916,
[INFO] [stdout]           "mean_queue_wait_ms": 0.00008762945991350249,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 12,
[INFO] [stdout]           "utilisation_rho": 0.20489482090945005,
[INFO] [stdout]           "mean_queue_wait_ms": 0.000015696494800407234,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 13,
[INFO] [stdout]           "utilisation_rho": 0.18913368083949234,
[INFO] [stdout]           "mean_queue_wait_ms": 2.6348760082980723e-6,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 14,
[INFO] [stdout]           "utilisation_rho": 0.17562413220810005,
[INFO] [stdout]           "mean_queue_wait_ms": 4.157264803795762e-7,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 15,
[INFO] [stdout]           "utilisation_rho": 0.16391585672756004,
[INFO] [stdout]           "mean_queue_wait_ms": 6.183238543326167e-8,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stderr]      Running tests/cli_integration.rs (/opt/rustwide/target/release/build/poolsim-cli/fca4b5e7e3511963/out/cli_integration-fca4b5e7e3511963)
[INFO] [stdout]           "pool_size": 16,
[INFO] [stdout]           "utilisation_rho": 0.15367111568208755,
[INFO] [stdout]           "mean_queue_wait_ms": 8.693630347180534e-9,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 17,
[INFO] [stdout]           "utilisation_rho": 0.14463163828902356,
[INFO] [stdout]           "mean_queue_wait_ms": 1.158530570522501e-9,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 18,
[INFO] [stdout]           "utilisation_rho": 0.1365965472729667,
[INFO] [stdout]           "mean_queue_wait_ms": 1.4669065215480163e-10,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 19,
[INFO] [stdout]           "utilisation_rho": 0.1294072553112316,
[INFO] [stdout]           "mean_queue_wait_ms": 1.768794766599782e-11,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 20,
[INFO] [stdout]           "utilisation_rho": 0.12293689254567002,
[INFO] [stdout]           "mean_queue_wait_ms": 2.035408958243995e-12,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         }
[INFO] [stdout]       ],
[INFO] [stdout]       "step_load_analysis": [],
[INFO] [stdout]       "warnings": [
[INFO] [stdout]         "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]       ]
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }{
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "5m",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "diff": {
[INFO] [stdout]     "current_pool_size": 9,
[INFO] [stdout]     "recommended_pool_size": 4,
[INFO] [stdout]     "pool_size_delta": -5,
[INFO] [stdout]     "change": "Decrease",
[INFO] [stdout]     "additional_connections_required": 0,
[INFO] [stdout]     "removable_connections": 5,
[INFO] [stdout]     "connection_change_percent": -55.55555555555556,
[INFO] [stdout]     "current_evaluation": {
[INFO] [stdout]       "pool_size": 9,
[INFO] [stdout]       "utilisation_rho": 0.2331930945459334,
[INFO] [stdout]       "mean_queue_wait_ms": 0.0005881069195295649,
[INFO] [stdout]       "p99_queue_wait_ms": 0.0,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "warnings": []
[INFO] [stdout]     },
[INFO] [stdout]     "recommended_report": {
[INFO] [stdout]       "optimal_pool_size": 4,
[INFO] [stdout]       "confidence_interval": [
[INFO] [stdout]         3,
[INFO] [stdout]         5
[INFO] [stdout]       ],
[INFO] [stdout]       "cold_start_min_pool_size": 4,
[INFO] [stdout]       "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]       "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]       "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]       "saturation": "Ok",
[INFO] [stdout]       "sensitivity": [
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 2,
[INFO] [stdout]           "utilisation_rho": 1.2293689254567004,
[INFO] [stdout]           "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]           "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]           "risk": "Critical"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 3,
[INFO] [stdout]           "utilisation_rho": 0.8195792836378002,
[INFO] [stdout]           "mean_queue_wait_ms": 17.14409699454182,
[INFO] [stdout]           "p99_queue_wait_ms": 106.4615516038692,
[INFO] [stdout]           "risk": "High"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 4,
[INFO] [stdout]           "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]           "mean_queue_wait_ms": 2.7128815359673863,
[INFO] [stdout]           "p99_queue_wait_ms": 30.322081906500603,
[INFO] [stdout]           "risk": "Medium"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 5,
[INFO] [stdout]           "utilisation_rho": 0.49174757018268006,
[INFO] [stdout]           "mean_queue_wait_ms": 0.6624380154446748,
[INFO] [stdout]           "p99_queue_wait_ms": 13.49998085324488,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 6,
[INFO] [stdout]           "utilisation_rho": 0.4097896418189001,
[INFO] [stdout]           "mean_queue_wait_ms": 0.17067381102961182,
[INFO] [stdout]           "p99_queue_wait_ms": 5.73657524206179,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 7,
[INFO] [stdout]           "utilisation_rho": 0.3512482644162001,
[INFO] [stdout]           "mean_queue_wait_ms": 0.0427000479391632,
[INFO] [stdout]           "p99_queue_wait_ms": 1.0538874124702204,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 8,
[INFO] [stdout]           "utilisation_rho": 0.3073422313641751,
[INFO] [stdout]           "mean_queue_wait_ms": 0.010082524324133127,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 9,
[INFO] [stdout]           "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]           "mean_queue_wait_ms": 0.002224176622023264,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 10,
[INFO] [stdout]           "utilisation_rho": 0.24587378509134003,
[INFO] [stdout]           "mean_queue_wait_ms": 0.00045718374358659264,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 11,
[INFO] [stdout]           "utilisation_rho": 0.22352162281030916,
[INFO] [stdout]           "mean_queue_wait_ms": 0.00008762945991350249,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 12,
[INFO] [stdout]           "utilisation_rho": 0.20489482090945005,
[INFO] [stdout]           "mean_queue_wait_ms": 0.000015696494800407234,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 13,
[INFO] [stdout]           "utilisation_rho": 0.18913368083949234,
[INFO] [stdout]           "mean_queue_wait_ms": 2.6348760082980723e-6,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 14,
[INFO] [stdout]           "utilisation_rho": 0.17562413220810005,
[INFO] [stdout]           "mean_queue_wait_ms": 4.157264803795762e-7,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 15,
[INFO] [stdout]           "utilisation_rho": 0.16391585672756004,
[INFO] [stdout]           "mean_queue_wait_ms": 6.183238543326167e-8,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 16,
[INFO] [stdout]           "utilisation_rho": 0.15367111568208755,
[INFO] [stdout]           "mean_queue_wait_ms": 8.693630347180534e-9,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 17,
[INFO] [stdout]           "utilisation_rho": 0.14463163828902356,
[INFO] [stdout]           "mean_queue_wait_ms": 1.158530570522501e-9,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 18,
[INFO] [stdout]           "utilisation_rho": 0.1365965472729667,
[INFO] [stdout]           "mean_queue_wait_ms": 1.4669065215480163e-10,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 19,
[INFO] [stdout]           "utilisation_rho": 0.1294072553112316,
[INFO] [stdout]           "mean_queue_wait_ms": 1.768794766599782e-11,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         },
[INFO] [stdout]         {
[INFO] [stdout]           "pool_size": 20,
[INFO] [stdout]           "utilisation_rho": 0.12293689254567002,
[INFO] [stdout]           "mean_queue_wait_ms": 2.035408958243995e-12,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "risk": "Low"
[INFO] [stdout]         }
[INFO] [stdout]       ],
[INFO] [stdout]       "step_load_analysis": [],
[INFO] [stdout]       "warnings": [
[INFO] [stdout]         "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]       ]
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }{
[INFO] [stdout]   "status": "healthy",
[INFO] [stdout]   "pooler": "pg-bouncer",
[INFO] [stdout]   "mode": "transaction",
[INFO] [stdout]   "label": "checkout-pgbouncer",
[INFO] [stdout]   "observed_client_connections": 42,
[INFO] [stdout]   "observed_backend_connections": 15,
[INFO] [stdout]   "client_waiting": 0,
[INFO] [stdout]   "backend_utilization": 0.5,
[INFO] [stdout]   "client_utilization": 0.084,
[INFO] [stdout]   "findings": [],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "previous_timestamp_seconds": 100.0,
[INFO] [stdout]   "current_timestamp_seconds": 110.0,
[INFO] [stdout]   "interval_seconds": 10.0,
[INFO] [stdout]   "query_rate_per_second": 20.0,
[INFO] [stdout]   "wait_time_rate_us_per_second": 5000.0,
[INFO] [stdout]   "average_wait_ms_per_query": 0.25,
[INFO] [stdout]   "current_maxwait_seconds": 0.8,
[INFO] [stdout]   "maxwait_delta_seconds": 0.7000000000000001,
[INFO] [stdout]   "current_client_waiting": 4,
[INFO] [stdout]   "counter_resets": [],
[INFO] [stdout]   "status": "queue-growing",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "PGBOUNCER_QUEUE_GROWING",
[INFO] [stdout]       "risk": "High",
[INFO] [stdout]       "message": "PgBouncer queue pressure increased during the observation interval",
[INFO] [stdout]       "remediation": "inspect backend service time, pooler capacity, database headroom, and long-running transactions"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "status": "Pass",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "worst_saturation": "Ok",
[INFO] [stdout]   "checks": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_saturation",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Warning",
[INFO] [stdout]       "observed": "Ok",
[INFO] [stdout]       "threshold": "Warning",
[INFO] [stdout]       "message": "worst saturation Ok is within Warning"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_pool_increase_percent",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "0.000%",
[INFO] [stdout]       "threshold": "100.000%",
[INFO] [stdout]       "message": "max_pool_increase_percent is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_additional_connections",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "0",
[INFO] [stdout]       "threshold": "10",
[INFO] [stdout]       "message": "max_additional_connections is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_recommended_pool_size",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "4",
[INFO] [stdout]       "threshold": "20",
[INFO] [stdout]       "message": "max_recommended_pool_size is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_recommended_p99_queue_wait_ms",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "29.694ms",
[INFO] [stdout]       "threshold": "100.000ms",
[INFO] [stdout]       "message": "max_recommended_p99_queue_wait_ms is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_recommended_mean_queue_wait_ms",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "2.611ms",
[INFO] [stdout]       "threshold": "20.000ms",
[INFO] [stdout]       "message": "max_recommended_mean_queue_wait_ms is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_recommended_rho",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "0.615",
[INFO] [stdout]       "threshold": "1.000",
[INFO] [stdout]       "message": "max_recommended_rho is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_current_p99_queue_wait_ms",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "0.000ms",
[INFO] [stdout]       "threshold": "100.000ms",
[INFO] [stdout]       "message": "max_current_p99_queue_wait_ms is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_current_mean_queue_wait_ms",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "0.001ms",
[INFO] [stdout]       "threshold": "20.000ms",
[INFO] [stdout]       "message": "max_current_mean_queue_wait_ms is within policy"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "max_current_rho",
[INFO] [stdout]       "passed": true,
[INFO] [stdout]       "severity": "Critical",
[INFO] [stdout]       "observed": "0.233",
[INFO] [stdout]       "threshold": "1.000",
[INFO] [stdout]       "message": "max_current_rho is within policy"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "recommendation": {
[INFO] [stdout]     "service_name": "checkout-api",
[INFO] [stdout]     "window": "1h",
[INFO] [stdout]     "observed_at": null,
[INFO] [stdout]     "diff": {
[INFO] [stdout]       "current_pool_size": 9,
[INFO] [stdout]       "recommended_pool_size": 4,
[INFO] [stdout]       "pool_size_delta": -5,
[INFO] [stdout]       "change": "Decrease",
[INFO] [stdout]       "additional_connections_required": 0,
[INFO] [stdout]       "removable_connections": 5,
[INFO] [stdout]       "connection_change_percent": -55.55555555555556,
[INFO] [stdout]       "current_evaluation": {
[INFO] [stdout]         "pool_size": 9,
[INFO] [stdout]         "utilisation_rho": 0.2331930945459334,
[INFO] [stdout]         "mean_queue_wait_ms": 0.0005881069195295649,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "warnings": []
[INFO] [stdout]       },
[INFO] [stdout]       "recommended_report": {
[INFO] [stdout]         "optimal_pool_size": 4,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           3,
[INFO] [stdout]           5
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 4,
[INFO] [stdout]         "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]         "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]         "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 2,
[INFO] [stdout]             "utilisation_rho": 1.2293689254567004,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "risk": "Critical"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 3,
[INFO] [stdout]             "utilisation_rho": 0.8195792836378002,
[INFO] [stdout]             "mean_queue_wait_ms": 17.14409699454182,
[INFO] [stdout]             "p99_queue_wait_ms": 106.4615516038692,
[INFO] [stdout]             "risk": "High"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 4,
[INFO] [stdout]             "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]             "mean_queue_wait_ms": 2.7128815359673863,
[INFO] [stdout]             "p99_queue_wait_ms": 30.322081906500603,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 5,
[INFO] [stdout]             "utilisation_rho": 0.49174757018268006,
[INFO] [stdout]             "mean_queue_wait_ms": 0.6624380154446748,
[INFO] [stdout]             "p99_queue_wait_ms": 13.49998085324488,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.4097896418189001,
[INFO] [stdout]             "mean_queue_wait_ms": 0.17067381102961182,
[INFO] [stdout]             "p99_queue_wait_ms": 5.73657524206179,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 7,
[INFO] [stdout]             "utilisation_rho": 0.3512482644162001,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0427000479391632,
[INFO] [stdout]             "p99_queue_wait_ms": 1.0538874124702204,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 8,
[INFO] [stdout]             "utilisation_rho": 0.3073422313641751,
[INFO] [stdout]             "mean_queue_wait_ms": 0.010082524324133127,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 9,
[INFO] [stdout]             "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]             "mean_queue_wait_ms": 0.002224176622023264,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 10,
[INFO] [stdout]             "utilisation_rho": 0.24587378509134003,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00045718374358659264,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 11,
[INFO] [stdout]             "utilisation_rho": 0.22352162281030916,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00008762945991350249,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 12,
[INFO] [stdout]             "utilisation_rho": 0.20489482090945005,
[INFO] [stdout]             "mean_queue_wait_ms": 0.000015696494800407234,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 13,
[INFO] [stdout]             "utilisation_rho": 0.18913368083949234,
[INFO] [stdout]             "mean_queue_wait_ms": 2.6348760082980723e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 14,
[INFO] [stdout]             "utilisation_rho": 0.17562413220810005,
[INFO] [stdout]             "mean_queue_wait_ms": 4.157264803795762e-7,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 15,
[INFO] [stdout]             "utilisation_rho": 0.16391585672756004,
[INFO] [stdout]             "mean_queue_wait_ms": 6.183238543326167e-8,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 16,
[INFO] [stdout]             "utilisation_rho": 0.15367111568208755,
[INFO] [stdout]             "mean_queue_wait_ms": 8.693630347180534e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 17,
[INFO] [stdout]             "utilisation_rho": 0.14463163828902356,
[INFO] [stdout]             "mean_queue_wait_ms": 1.158530570522501e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 18,
[INFO] [stdout]             "utilisation_rho": 0.1365965472729667,
[INFO] [stdout]             "mean_queue_wait_ms": 1.4669065215480163e-10,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 19,
[INFO] [stdout]             "utilisation_rho": 0.1294072553112316,
[INFO] [stdout]             "mean_queue_wait_ms": 1.768794766599782e-11,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 20,
[INFO] [stdout]             "utilisation_rho": 0.12293689254567002,
[INFO] [stdout]             "mean_queue_wait_ms": 2.035408958243995e-12,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [],
[INFO] [stdout]         "warnings": [
[INFO] [stdout]           "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]         ]
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }field,value
[INFO] [stdout] status,Pass
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,5m
[INFO] [stdout] observed_at,-
[INFO] [stdout] worst_saturation,Ok
[INFO] [stdout] ,
[INFO] [stdout] check,passed,severity,observed,threshold,message
[INFO] [stdout] max_saturation,true,Warning,Ok,Warning,worst saturation Ok is within Warning
[INFO] [stdout] max_pool_increase_percent,true,Critical,0.000%,100.000%,max_pool_increase_percent is within policy
[INFO] [stdout] max_additional_connections,true,Critical,0,10,max_additional_connections is within policy
[INFO] [stdout] max_recommended_pool_size,true,Critical,4,20,max_recommended_pool_size is within policy
[INFO] [stdout] max_recommended_p99_queue_wait_ms,true,Critical,29.694ms,100.000ms,max_recommended_p99_queue_wait_ms is within policy
[INFO] [stdout] max_recommended_mean_queue_wait_ms,true,Critical,2.611ms,20.000ms,max_recommended_mean_queue_wait_ms is within policy
[INFO] [stdout] max_recommended_rho,true,Critical,0.615,1.000,max_recommended_rho is within policy
[INFO] [stdout] max_current_p99_queue_wait_ms,true,Critical,0.000ms,100.000ms,max_current_p99_queue_wait_ms is within policy
[INFO] [stdout] max_current_mean_queue_wait_ms,true,Critical,0.001ms,20.000ms,max_current_mean_queue_wait_ms is within policy
[INFO] [stdout] max_current_rho,true,Critical,0.233,1.000,max_current_rho is within policy
[INFO] [stdout] {
[INFO] [stdout]   "status": "Pass",
[INFO] [stdout]   "deployment_safe": true,
[INFO] [stdout]   "exit_code": 0,
[INFO] [stdout]   "reason": "deployment is within pool safety policy",
[INFO] [stdout]   "gate": {
[INFO] [stdout]     "status": "Pass",
[INFO] [stdout]     "service_name": "checkout-api",
[INFO] [stdout]     "window": "1h",
[INFO] [stdout]     "observed_at": null,
[INFO] [stdout]     "worst_saturation": "Ok",
[INFO] [stdout]     "checks": [
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_saturation",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Warning",
[INFO] [stdout]         "observed": "Ok",
[INFO] [stdout]         "threshold": "Warning",
[INFO] [stdout]         "message": "worst saturation Ok is within Warning"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_pool_increase_percent",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "0.000%",
[INFO] [stdout]         "threshold": "100.000%",
[INFO] [stdout]         "message": "max_pool_increase_percent is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_additional_connections",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "0",
[INFO] [stdout]         "threshold": "10",
[INFO] [stdout]         "message": "max_additional_connections is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_recommended_pool_size",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "4",
[INFO] [stdout]         "threshold": "20",
[INFO] [stdout]         "message": "max_recommended_pool_size is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_recommended_p99_queue_wait_ms",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "29.694ms",
[INFO] [stdout]         "threshold": "100.000ms",
[INFO] [stdout]         "message": "max_recommended_p99_queue_wait_ms is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_recommended_mean_queue_wait_ms",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "2.611ms",
[INFO] [stdout]         "threshold": "20.000ms",
[INFO] [stdout]         "message": "max_recommended_mean_queue_wait_ms is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_recommended_rho",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "0.615",
[INFO] [stdout]         "threshold": "1.000",
[INFO] [stdout]         "message": "max_recommended_rho is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_current_p99_queue_wait_ms",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "0.000ms",
[INFO] [stdout]         "threshold": "100.000ms",
[INFO] [stdout]         "message": "max_current_p99_queue_wait_ms is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_current_mean_queue_wait_ms",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "0.001ms",
[INFO] [stdout]         "threshold": "20.000ms",
[INFO] [stdout]         "message": "max_current_mean_queue_wait_ms is within policy"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "name": "max_current_rho",
[INFO] [stdout]         "passed": true,
[INFO] [stdout]         "severity": "Critical",
[INFO] [stdout]         "observed": "0.233",
[INFO] [stdout]         "threshold": "1.000",
[INFO] [stdout]         "message": "max_current_rho is within policy"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "recommendation": {
[INFO] [stdout]       "service_name": "checkout-api",
[INFO] [stdout]       "window": "1h",
[INFO] [stdout]       "observed_at": null,
[INFO] [stdout]       "diff": {
[INFO] [stdout]         "current_pool_size": 9,
[INFO] [stdout]         "recommended_pool_size": 4,
[INFO] [stdout]         "pool_size_delta": -5,
[INFO] [stdout]         "change": "Decrease",
[INFO] [stdout]         "additional_connections_required": 0,
[INFO] [stdout]         "removable_connections": 5,
[INFO] [stdout]         "connection_change_percent": -55.55555555555556,
[INFO] [stdout]         "current_evaluation": {
[INFO] [stdout]           "pool_size": 9,
[INFO] [stdout]           "utilisation_rho": 0.2331930945459334,
[INFO] [stdout]           "mean_queue_wait_ms": 0.0005881069195295649,
[INFO] [stdout]           "p99_queue_wait_ms": 0.0,
[INFO] [stdout]           "saturation": "Ok",
[INFO] [stdout]           "warnings": []
[INFO] [stdout]         },
[INFO] [stdout]         "recommended_report": {
[INFO] [stdout]           "optimal_pool_size": 4,
[INFO] [stdout]           "confidence_interval": [
[INFO] [stdout]             3,
[INFO] [stdout]             5
[INFO] [stdout]           ],
[INFO] [stdout]           "cold_start_min_pool_size": 4,
[INFO] [stdout]           "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]           "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]           "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]           "saturation": "Ok",
[INFO] [stdout]           "sensitivity": [
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 2,
[INFO] [stdout]               "utilisation_rho": 1.2293689254567004,
[INFO] [stdout]               "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]               "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]               "risk": "Critical"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 3,
[INFO] [stdout]               "utilisation_rho": 0.8195792836378002,
[INFO] [stdout]               "mean_queue_wait_ms": 17.14409699454182,
[INFO] [stdout]               "p99_queue_wait_ms": 106.4615516038692,
[INFO] [stdout]               "risk": "High"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 4,
[INFO] [stdout]               "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]               "mean_queue_wait_ms": 2.7128815359673863,
[INFO] [stdout]               "p99_queue_wait_ms": 30.322081906500603,
[INFO] [stdout]               "risk": "Medium"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 5,
[INFO] [stdout]               "utilisation_rho": 0.49174757018268006,
[INFO] [stdout]               "mean_queue_wait_ms": 0.6624380154446748,
[INFO] [stdout]               "p99_queue_wait_ms": 13.49998085324488,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 6,
[INFO] [stdout]               "utilisation_rho": 0.4097896418189001,
[INFO] [stdout]               "mean_queue_wait_ms": 0.17067381102961182,
[INFO] [stdout]               "p99_queue_wait_ms": 5.73657524206179,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 7,
[INFO] [stdout]               "utilisation_rho": 0.3512482644162001,
[INFO] [stdout]               "mean_queue_wait_ms": 0.0427000479391632,
[INFO] [stdout]               "p99_queue_wait_ms": 1.0538874124702204,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 8,
[INFO] [stdout]               "utilisation_rho": 0.3073422313641751,
[INFO] [stdout]               "mean_queue_wait_ms": 0.010082524324133127,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 9,
[INFO] [stdout]               "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]               "mean_queue_wait_ms": 0.002224176622023264,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 10,
[INFO] [stdout]               "utilisation_rho": 0.24587378509134003,
[INFO] [stdout]               "mean_queue_wait_ms": 0.00045718374358659264,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 11,
[INFO] [stdout]               "utilisation_rho": 0.22352162281030916,
[INFO] [stdout]               "mean_queue_wait_ms": 0.00008762945991350249,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 12,
[INFO] [stdout]               "utilisation_rho": 0.20489482090945005,
[INFO] [stdout]               "mean_queue_wait_ms": 0.000015696494800407234,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 13,
[INFO] [stdout]               "utilisation_rho": 0.18913368083949234,
[INFO] [stdout]               "mean_queue_wait_ms": 2.6348760082980723e-6,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 14,
[INFO] [stdout]               "utilisation_rho": 0.17562413220810005,
[INFO] [stdout]               "mean_queue_wait_ms": 4.157264803795762e-7,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 15,
[INFO] [stdout]               "utilisation_rho": 0.16391585672756004,
[INFO] [stdout]               "mean_queue_wait_ms": 6.183238543326167e-8,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 16,
[INFO] [stdout]               "utilisation_rho": 0.15367111568208755,
[INFO] [stdout]               "mean_queue_wait_ms": 8.693630347180534e-9,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 17,
[INFO] [stdout]               "utilisation_rho": 0.14463163828902356,
[INFO] [stdout]               "mean_queue_wait_ms": 1.158530570522501e-9,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 18,
[INFO] [stdout]               "utilisation_rho": 0.1365965472729667,
[INFO] [stdout]               "mean_queue_wait_ms": 1.4669065215480163e-10,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 19,
[INFO] [stdout]               "utilisation_rho": 0.1294072553112316,
[INFO] [stdout]               "mean_queue_wait_ms": 1.768794766599782e-11,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             },
[INFO] [stdout]             {
[INFO] [stdout]               "pool_size": 20,
[INFO] [stdout]               "utilisation_rho": 0.12293689254567002,
[INFO] [stdout]               "mean_queue_wait_ms": 2.035408958243995e-12,
[INFO] [stdout]               "p99_queue_wait_ms": 0.0,
[INFO] [stdout]               "risk": "Low"
[INFO] [stdout]             }
[INFO] [stdout]           ],
[INFO] [stdout]           "step_load_analysis": [],
[INFO] [stdout]           "warnings": [
[INFO] [stdout]             "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]           ]
[INFO] [stdout]         }
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }field,value
[INFO] [stdout] status,Pass
[INFO] [stdout] deployment_safe,true
[INFO] [stdout] exit_code,0
[INFO] [stdout] reason,deployment is within pool safety policy
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,5m
[INFO] [stdout] observed_at,-
[INFO] [stdout] worst_saturation,Ok
[INFO] [stdout] ,
[INFO] [stdout] check,passed,severity,observed,threshold,message
[INFO] [stdout] max_saturation,true,Warning,Ok,Warning,worst saturation Ok is within Warning
[INFO] [stdout] max_pool_increase_percent,true,Critical,0.000%,100.000%,max_pool_increase_percent is within policy
[INFO] [stdout] max_additional_connections,true,Critical,0,10,max_additional_connections is within policy
[INFO] [stdout] max_recommended_pool_size,true,Critical,4,20,max_recommended_pool_size is within policy
[INFO] [stdout] max_recommended_p99_queue_wait_ms,true,Critical,29.694ms,100.000ms,max_recommended_p99_queue_wait_ms is within policy
[INFO] [stdout] max_recommended_mean_queue_wait_ms,true,Critical,2.611ms,20.000ms,max_recommended_mean_queue_wait_ms is within policy
[INFO] [stdout] max_recommended_rho,true,Critical,0.615,1.000,max_recommended_rho is within policy
[INFO] [stdout] max_current_p99_queue_wait_ms,true,Critical,0.000ms,100.000ms,max_current_p99_queue_wait_ms is within policy
[INFO] [stdout] max_current_mean_queue_wait_ms,true,Critical,0.001ms,20.000ms,max_current_mean_queue_wait_ms is within policy
[INFO] [stdout] max_current_rho,true,Critical,0.233,1.000,max_current_rho is within policy
[INFO] [stdout] {
[INFO] [stdout]   "status": "TooLarge",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "current_pool_size": 9,
[INFO] [stdout]   "recommended_pool_size": 4,
[INFO] [stdout]   "pool_size_delta": -5,
[INFO] [stdout]   "current_rho": 0.2331930945459334,
[INFO] [stdout]   "current_p99_queue_wait_ms": 0.0,
[INFO] [stdout]   "current_saturation": "Ok",
[INFO] [stdout]   "recommended_saturation": "Ok",
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "name": "current_pool",
[INFO] [stdout]       "severity": "Info",
[INFO] [stdout]       "message": "current pool size 9 is above the recommended size 4",
[INFO] [stdout]       "action": "lower the pool toward 4 if peak and incident traffic are represented"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "name": "recommendation_diff",
[INFO] [stdout]       "severity": "Info",
[INFO] [stdout]       "message": "current pool size is 9; recommended pool size is 4 (-5)",
[INFO] [stdout]       "action": "consider removing 5 idle connection slot(s) after validating peak traffic"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "recommendation": {
[INFO] [stdout]     "service_name": "checkout-api",
[INFO] [stdout]     "window": "1h",
[INFO] [stdout]     "observed_at": null,
[INFO] [stdout]     "diff": {
[INFO] [stdout]       "current_pool_size": 9,
[INFO] [stdout]       "recommended_pool_size": 4,
[INFO] [stdout]       "pool_size_delta": -5,
[INFO] [stdout]       "change": "Decrease",
[INFO] [stdout]       "additional_connections_required": 0,
[INFO] [stdout]       "removable_connections": 5,
[INFO] [stdout]       "connection_change_percent": -55.55555555555556,
[INFO] [stdout]       "current_evaluation": {
[INFO] [stdout]         "pool_size": 9,
[INFO] [stdout]         "utilisation_rho": 0.2331930945459334,
[INFO] [stdout]         "mean_queue_wait_ms": 0.0005881069195295649,
[INFO] [stdout]         "p99_queue_wait_ms": 0.0,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "warnings": []
[INFO] [stdout]       },
[INFO] [stdout]       "recommended_report": {
[INFO] [stdout]         "optimal_pool_size": 4,
[INFO] [stdout]         "confidence_interval": [
[INFO] [stdout]           3,
[INFO] [stdout]           5
[INFO] [stdout]         ],
[INFO] [stdout]         "cold_start_min_pool_size": 4,
[INFO] [stdout]         "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]         "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]         "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]         "saturation": "Ok",
[INFO] [stdout]         "sensitivity": [
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 2,
[INFO] [stdout]             "utilisation_rho": 1.2293689254567004,
[INFO] [stdout]             "mean_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "p99_queue_wait_ms": 1.7976931348623157e+308,
[INFO] [stdout]             "risk": "Critical"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 3,
[INFO] [stdout]             "utilisation_rho": 0.8195792836378002,
[INFO] [stdout]             "mean_queue_wait_ms": 17.14409699454182,
[INFO] [stdout]             "p99_queue_wait_ms": 106.4615516038692,
[INFO] [stdout]             "risk": "High"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 4,
[INFO] [stdout]             "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]             "mean_queue_wait_ms": 2.7128815359673863,
[INFO] [stdout]             "p99_queue_wait_ms": 30.322081906500603,
[INFO] [stdout]             "risk": "Medium"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 5,
[INFO] [stdout]             "utilisation_rho": 0.49174757018268006,
[INFO] [stdout]             "mean_queue_wait_ms": 0.6624380154446748,
[INFO] [stdout]             "p99_queue_wait_ms": 13.49998085324488,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 6,
[INFO] [stdout]             "utilisation_rho": 0.4097896418189001,
[INFO] [stdout]             "mean_queue_wait_ms": 0.17067381102961182,
[INFO] [stdout]             "p99_queue_wait_ms": 5.73657524206179,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 7,
[INFO] [stdout]             "utilisation_rho": 0.3512482644162001,
[INFO] [stdout]             "mean_queue_wait_ms": 0.0427000479391632,
[INFO] [stdout]             "p99_queue_wait_ms": 1.0538874124702204,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 8,
[INFO] [stdout]             "utilisation_rho": 0.3073422313641751,
[INFO] [stdout]             "mean_queue_wait_ms": 0.010082524324133127,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 9,
[INFO] [stdout]             "utilisation_rho": 0.2731930945459334,
[INFO] [stdout]             "mean_queue_wait_ms": 0.002224176622023264,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 10,
[INFO] [stdout]             "utilisation_rho": 0.24587378509134003,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00045718374358659264,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 11,
[INFO] [stdout]             "utilisation_rho": 0.22352162281030916,
[INFO] [stdout]             "mean_queue_wait_ms": 0.00008762945991350249,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 12,
[INFO] [stdout]             "utilisation_rho": 0.20489482090945005,
[INFO] [stdout]             "mean_queue_wait_ms": 0.000015696494800407234,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 13,
[INFO] [stdout]             "utilisation_rho": 0.18913368083949234,
[INFO] [stdout]             "mean_queue_wait_ms": 2.6348760082980723e-6,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 14,
[INFO] [stdout]             "utilisation_rho": 0.17562413220810005,
[INFO] [stdout]             "mean_queue_wait_ms": 4.157264803795762e-7,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 15,
[INFO] [stdout]             "utilisation_rho": 0.16391585672756004,
[INFO] [stdout]             "mean_queue_wait_ms": 6.183238543326167e-8,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 16,
[INFO] [stdout]             "utilisation_rho": 0.15367111568208755,
[INFO] [stdout]             "mean_queue_wait_ms": 8.693630347180534e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 17,
[INFO] [stdout]             "utilisation_rho": 0.14463163828902356,
[INFO] [stdout]             "mean_queue_wait_ms": 1.158530570522501e-9,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 18,
[INFO] [stdout]             "utilisation_rho": 0.1365965472729667,
[INFO] [stdout]             "mean_queue_wait_ms": 1.4669065215480163e-10,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 19,
[INFO] [stdout]             "utilisation_rho": 0.1294072553112316,
[INFO] [stdout]             "mean_queue_wait_ms": 1.768794766599782e-11,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           },
[INFO] [stdout]           {
[INFO] [stdout]             "pool_size": 20,
[INFO] [stdout]             "utilisation_rho": 0.12293689254567002,
[INFO] [stdout]             "mean_queue_wait_ms": 2.035408958243995e-12,
[INFO] [stdout]             "p99_queue_wait_ms": 0.0,
[INFO] [stdout]             "risk": "Low"
[INFO] [stdout]           }
[INFO] [stdout]         ],
[INFO] [stdout]         "step_load_analysis": [],
[INFO] [stdout]         "warnings": [
[INFO] [stdout]           "iterations increased to 10000 for full simulation fidelity"
[INFO] [stdout]         ]
[INFO] [stdout]       }
[INFO] [stdout]     }
[INFO] [stdout]   }
[INFO] [stdout] }field,value
[INFO] [stdout] status,TooLarge
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,5m
[INFO] [stdout] observed_at,-
[INFO] [stdout] current_pool_size,9
[INFO] [stdout] recommended_pool_size,4
[INFO] [stdout] pool_size_delta,-5
[INFO] [stdout] current_rho,0.2331930945459334
[INFO] [stdout] current_p99_queue_wait_ms,0
[INFO] [stdout] current_saturation,Ok
[INFO] [stdout] recommended_saturation,Ok
[INFO] [stdout] ,
[INFO] [stdout] finding,severity,message,action
[INFO] [stdout] current_pool,Info,current pool size 9 is above the recommended size 4,lower the pool toward 4 if peak and incident traffic are represented
[INFO] [stdout] recommendation_diff,Info,current pool size is 9; recommended pool size is 4 (-5),consider removing 5 idle connection slot(s) after validating peak traffic
[INFO] [stdout] {
[INFO] [stdout]   "status": "downstream-pooler-saturated",
[INFO] [stdout]   "application_utilization": 0.25,
[INFO] [stdout]   "application_waiting": 0,
[INFO] [stdout]   "pooler": {
[INFO] [stdout]     "status": "backend-saturated",
[INFO] [stdout]     "pooler": "pg-bouncer",
[INFO] [stdout]     "mode": "transaction",
[INFO] [stdout]     "label": "checkout-prod",
[INFO] [stdout]     "observed_client_connections": 44,
[INFO] [stdout]     "observed_backend_connections": 30,
[INFO] [stdout]     "client_waiting": 4,
[INFO] [stdout]     "backend_utilization": 1.0,
[INFO] [stdout]     "client_utilization": null,
[INFO] [stdout]     "findings": [
[INFO] [stdout]       {
[INFO] [stdout]         "code": "POOLER_CLIENTS_WAITING",
[INFO] [stdout]         "risk": "High",
[INFO] [stdout]         "message": "clients are waiting for backend/server pooler capacity",
[INFO] [stdout]         "remediation": "inspect long transactions, query latency, backend pool limits, and session pinning before increasing application pool size"
[INFO] [stdout]       },
[INFO] [stdout]       {
[INFO] [stdout]         "code": "POOLER_BACKEND_SATURATED",
[INFO] [stdout]         "risk": "Critical",
[INFO] [stdout]         "message": "observed backend/server connections are at or above the supplied backend limit",
[INFO] [stdout]         "remediation": "reduce client pressure, increase backend pool capacity only within the database budget, or split traffic by workload"
[INFO] [stdout]       }
[INFO] [stdout]     ],
[INFO] [stdout]     "confidence": "high"
[INFO] [stdout]   },
[INFO] [stdout]   "findings": [
[INFO] [stdout]     {
[INFO] [stdout]       "code": "DOWNSTREAM_POOLER_BACKEND_SATURATED",
[INFO] [stdout]       "risk": "Critical",
[INFO] [stdout]       "message": "the downstream pooler's backend/server connections reached the supplied limit",
[INFO] [stdout]       "remediation": "increase downstream capacity only within the database connection budget, or reduce and split workload pressure"
[INFO] [stdout]     },
[INFO] [stdout]     {
[INFO] [stdout]       "code": "DOWNSTREAM_POOLER_CLIENTS_WAITING",
[INFO] [stdout]       "risk": "High",
[INFO] [stdout]       "message": "clients are waiting in the downstream pooler for a backend/server connection",
[INFO] [stdout]       "remediation": "inspect backend latency, long transactions, pooler limits, and database headroom before increasing the application pool"
[INFO] [stdout]     }
[INFO] [stdout]   ],
[INFO] [stdout]   "confidence": "high"
[INFO] [stdout] }{
[INFO] [stdout]   "framework": "sqlx",
[INFO] [stdout]   "source": "telemetry",
[INFO] [stdout]   "service_name": "checkout-api",
[INFO] [stdout]   "window": "1h",
[INFO] [stdout]   "observed_at": null,
[INFO] [stdout]   "recommended_pool_size": 4,
[INFO] [stdout]   "min_idle": 3,
[INFO] [stdout]   "connection_timeout_ms": 30000,
[INFO] [stdout]   "idle_timeout_ms": 600000,
[INFO] [stdout]   "database_url_env": "DATABASE_URL",
[INFO] [stdout]   "pool_name": "checkout-pool",
[INFO] [stdout]   "max_server_connections": 100,
[INFO] [stdout]   "utilisation_rho": 0.6146844627283502,
[INFO] [stdout]   "mean_queue_wait_ms": 2.6105788313622473,
[INFO] [stdout]   "p99_queue_wait_ms": 29.694133254187793,
[INFO] [stdout]   "snippet": "use std::{env, time::Duration};\nuse sqlx::postgres::PgPoolOptions;\n\nlet database_url = env::var(\"DATABASE_URL\")?;\nlet pool = PgPoolOptions::new()\n    .max_connections(4)\n    .min_connections(3)\n    .acquire_timeout(Duration::from_millis(30000))\n    .idle_timeout(Duration::from_millis(600000))\n    .connect(&database_url)\n    .await?;",
[INFO] [stdout]   "notes": [
[INFO] [stdout]     "Recommended pool size 4 must be multiplied by service replica count before comparing with the database max_connections budget.",
[INFO] [stdout]     "Keep all application pools plus administrative connections within the database limit of 100 connections.",
[INFO] [stdout]     "Re-run poolsim after traffic, latency, replica count, database limits, or query behavior changes."
[INFO] [stdout]   ],
[INFO] [stdout]   "references": [
[INFO] [stdout]     {
[INFO] [stdout]       "title": "sqlx PoolOptions",
[INFO] [stdout]       "url": "https://docs.rs/sqlx/latest/sqlx/pool/struct.PoolOptions.html"
[INFO] [stdout]     }
[INFO] [stdout]   ]
[INFO] [stdout] }field,value
[INFO] [stdout] framework,spring-boot
[INFO] [stdout] source,prometheus
[INFO] [stdout] service_name,checkout-api
[INFO] [stdout] window,5m
[INFO] [stdout] observed_at,-
[INFO] [stdout] recommended_pool_size,4
[INFO] [stdout] min_idle,4
[INFO] [stdout] connection_timeout_ms,30000
[INFO] [stdout] idle_timeout_ms,600000
[INFO] [stdout] database_url_env,DATABASE_URL
[INFO] [stdout] pool_name,checkout-pool
[INFO] [stdout] max_server_connections,100
[INFO] [stdout] utilisation_rho,0.6146844627283502
[INFO] [stdout] mean_queue_wait_ms,2.6105788313622473
[INFO] [stdout] p99_queue_wait_ms,29.694133254187793
[INFO] [stdout] snippet,"spring:
[INFO] [stdout]   datasource:
[INFO] [stdout]     hikari:
[INFO] [stdout]       pool-name: ""checkout-pool""
[INFO] [stdout]       maximum-pool-size: 4
[INFO] [stdout]       minimum-idle: 4
[INFO] [stdout]       connection-timeout: 30000
[INFO] [stdout]       idle-timeout: 600000"
[INFO] [stdout] note,Recommended pool size 4 must be multiplied by service replica count before comparing with the database max_connections budget.
[INFO] [stdout] note,Keep all application pools plus administrative connections within the database limit of 100 connections.
[INFO] [stdout] note,"Re-run poolsim after traffic, latency, replica count, database limits, or query behavior changes."
[INFO] [stdout] reference,Spring Boot data access and Hikari settings: https://docs.spring.io/spring-boot/how-to/data-access.html
[INFO] [stdout] test tests::run_with_cli_covers_command_paths ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 104 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test simulate_json_contains_cold_start_and_step_load_analysis ... ok
[INFO] [stdout] test classify_endpoint_and_check_pooler_emit_json ... ok
[INFO] [stdout] test simulate_sweep_flag_outputs_sensitivity_rows ... ok
[INFO] [stderr]      Running tests/default_parse_path.rs (/opt/rustwide/target/release/build/poolsim-cli/88794375eb7d7d28/out/default_parse_path-88794375eb7d7d28)
[INFO] [stdout] test batch_and_evaluate_commands_emit_json ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test binary_exec_uses_default_process_args_parse_path ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/docs_fixtures.rs (/opt/rustwide/target/release/build/poolsim-cli/2e2393f7ab751315/out/docs_fixtures-2e2393f7ab751315)
[INFO] [stdout] 
[INFO] [stdout] running 29 tests
[INFO] [stdout] test docs_ci_integration_assets_are_wired_to_existing_commands ... FAILED
[INFO] [stdout] test assert_success_failure_message_is_covered - should panic ... ok
[INFO] [stdout] test docs_batch_examples_work_for_json_and_toml_inputs ... FAILED
[INFO] [stdout] test docs_database_contention_example_blocks_pool_increase ... FAILED
[INFO] [stdout] test docs_connection_ownership_examples_work ... ok
[INFO] [stdout] test docs_json_schemas_are_valid_json_and_match_fixture_shapes ... FAILED
[INFO] [stdout] test docs_html_output_examples_work_for_major_commands ... FAILED
[INFO] [stdout] test docs_import_prometheus_example_works ... FAILED
[INFO] [stdout] test docs_import_otlp_example_works ... FAILED
[INFO] [stdout] test docs_import_telemetry_example_works ... FAILED
[INFO] [stdout] test docs_budget_examples_work_for_json_csv_and_toml_inputs ... FAILED
[INFO] [stdout] test docs_compare_examples_work_for_json_csv_and_toml_inputs ... FAILED
[INFO] [stdout] test docs_evaluate_and_sweep_examples_work ... FAILED
[INFO] [stdout] test docs_doctor_examples_work ... FAILED
[INFO] [stdout] test docs_pooler_evidence_examples_work ... FAILED
[INFO] [stdout] test docs_explain_examples_keep_machine_stdout_parseable ... FAILED
[INFO] [stdout] test docs_pool_scale_safety_example_reports_an_allowed_scale_up ... FAILED
[INFO] [stdout] test docs_generate_config_examples_work ... FAILED
[INFO] [stdout] test docs_simulate_examples_work_for_json_table_and_samples_file_paths ... FAILED
[INFO] [stdout] test docs_pgbouncer_show_pools_examples_work ... FAILED
[INFO] [stdout] test docs_gate_examples_work ... FAILED
[INFO] [stdout] test docs_init_example_generates_runnable_config_and_policy ... ok
[INFO] [stdout] test docs_warn_exit_example_is_stable ... FAILED
[INFO] [stdout] test docs_telemetry_quality_example_accepts_complete_open_loop_evidence ... FAILED
[INFO] [stdout] test docs_guard_examples_work ... FAILED
[INFO] [stdout] test docs_pgbouncer_time_series_example_reports_queue_growth ... FAILED
[INFO] [stdout] test docs_connection_profile_examples_work_and_keep_explicit_overhead_precedence ... ok
[INFO] [stdout] test docs_serverless_plan_examples_work ... ok
[INFO] [stdout] test docs_endpoint_and_pooler_examples_work ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- docs_ci_integration_assets_are_wired_to_existing_commands stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_ci_integration_assets_are_wired_to_existing_commands' (1275) panicked at tests/docs_fixtures.rs:1587:10:
[INFO] [stdout] GitHub action metadata should be readable: Os { code: 2, kind: NotFound, message: "No such file or directory" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829bc6b62 - core[a373ad73a504971]::result::unwrap_failed
[INFO] [stdout]   12:     0x5d4829afa225 - <docs_fixtures[3c2420389a8c2985]::docs_ci_integration_assets_are_wired_to_existing_commands::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_batch_examples_work_for_json_and_toml_inputs stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_batch_examples_work_for_json_and_toml_inputs' (1273) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] batch JSON docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stderr] error: test failed, to rerun pass `--test docs_fixtures`
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read batch config file /opt/docs/fixtures/batch.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af60d7 - <docs_fixtures[3c2420389a8c2985]::docs_batch_examples_work_for_json_and_toml_inputs::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_database_contention_example_blocks_pool_increase stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_database_contention_example_blocks_pool_increase' (1279) panicked at tests/docs_fixtures.rs:1767:5:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: Some(1)
[INFO] [stdout]  right: Some(2)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829bc6ca3 - core[a373ad73a504971]::panicking::assert_failed_inner
[INFO] [stdout]   12:     0x5d4829aff210 - core[a373ad73a504971]::panicking::assert_failed::<core[a373ad73a504971]::option::Option<i32>, core[a373ad73a504971]::option::Option<i32>>
[INFO] [stdout]   13:     0x5d4829af74a3 - <docs_fixtures[3c2420389a8c2985]::docs_database_contention_example_blocks_pool_increase::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   15:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   16:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   18:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   20:     0x717d88dc53d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_json_schemas_are_valid_json_and_match_fixture_shapes stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_json_schemas_are_valid_json_and_match_fixture_shapes' (1324) panicked at tests/docs_fixtures.rs:831:35:
[INFO] [stdout] docs/schemas/poolsim-config.schema.json should be readable: No such file or directory (os error 2)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae3caa - docs_fixtures[3c2420389a8c2985]::docs_json_schemas_are_valid_json_and_match_fixture_shapes::{closure#0}
[INFO] [stdout]   12:     0x5d4829aeb430 - docs_fixtures[3c2420389a8c2985]::docs_json_schemas_are_valid_json_and_match_fixture_shapes
[INFO] [stdout]   13:     0x5d4829afa559 - <docs_fixtures[3c2420389a8c2985]::docs_json_schemas_are_valid_json_and_match_fixture_shapes::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   15:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   16:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   18:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   20:     0x717d88dc53d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_html_output_examples_work_for_major_commands stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_html_output_examples_work_for_major_commands' (1287) panicked at tests/docs_fixtures.rs:1435:9:
[INFO] [stdout] HTML command produced an unexpected exit code 1
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read config file /opt/docs/fixtures/cli-config.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae720f - docs_fixtures[3c2420389a8c2985]::docs_html_output_examples_work_for_major_commands
[INFO] [stdout]   12:     0x5d4829af64d9 - <docs_fixtures[3c2420389a8c2985]::docs_html_output_examples_work_for_major_commands::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_import_prometheus_example_works stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_import_prometheus_example_works' (1294) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] prometheus import docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read Prometheus response file /opt/docs/fixtures/prometheus-responses.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af3853 - <docs_fixtures[3c2420389a8c2985]::docs_import_prometheus_example_works::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_import_otlp_example_works stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_import_otlp_example_works' (1293) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] OTLP import docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read OTLP file /opt/docs/fixtures/otlp-metrics.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af0543 - <docs_fixtures[3c2420389a8c2985]::docs_import_otlp_example_works::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_import_telemetry_example_works stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_import_telemetry_example_works' (1296) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] telemetry import docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read telemetry config file /opt/docs/fixtures/telemetry.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af30b1 - <docs_fixtures[3c2420389a8c2985]::docs_import_telemetry_example_works::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_budget_examples_work_for_json_csv_and_toml_inputs stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_budget_examples_work_for_json_csv_and_toml_inputs' (1274) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] budget JSON docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read budget plan file /opt/docs/fixtures/budget.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af763a - <docs_fixtures[3c2420389a8c2985]::docs_budget_examples_work_for_json_csv_and_toml_inputs::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_compare_examples_work_for_json_csv_and_toml_inputs stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_compare_examples_work_for_json_csv_and_toml_inputs' (1276) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] compare JSON docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read scenario comparison file /opt/docs/fixtures/scenarios.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af90a0 - <docs_fixtures[3c2420389a8c2985]::docs_compare_examples_work_for_json_csv_and_toml_inputs::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_evaluate_and_sweep_examples_work stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_evaluate_and_sweep_examples_work' (1282) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] evaluate docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read config file /opt/docs/fixtures/cli-config.toml
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af3c4c - <docs_fixtures[3c2420389a8c2985]::docs_evaluate_and_sweep_examples_work::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_doctor_examples_work stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_doctor_examples_work' (1280) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] doctor telemetry docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read telemetry config file /opt/docs/fixtures/telemetry.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829aef097 - <docs_fixtures[3c2420389a8c2985]::docs_doctor_examples_work::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_pooler_evidence_examples_work stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_pooler_evidence_examples_work' (1333) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] pooler evidence import failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read pooler evidence config /opt/docs/fixtures/pooler-evidence.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af1d7e - <docs_fixtures[3c2420389a8c2985]::docs_pooler_evidence_examples_work::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_explain_examples_keep_machine_stdout_parseable stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_explain_examples_keep_machine_stdout_parseable' (1283) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] simulate explain docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read config file /opt/docs/fixtures/cli-config.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af65fc - <docs_fixtures[3c2420389a8c2985]::docs_explain_examples_keep_machine_stdout_parseable::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_pool_scale_safety_example_reports_an_allowed_scale_up stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_pool_scale_safety_example_reports_an_allowed_scale_up' (1332) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] pool scale safety docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read telemetry quality config /opt/docs/fixtures/telemetry-quality-open-loop.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829afa82f - <docs_fixtures[3c2420389a8c2985]::docs_pool_scale_safety_example_reports_an_allowed_scale_up::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_generate_config_examples_work stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_generate_config_examples_work' (1285) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] generate-config telemetry docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read telemetry config file /opt/docs/fixtures/telemetry.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af0be5 - <docs_fixtures[3c2420389a8c2985]::docs_generate_config_examples_work::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_simulate_examples_work_for_json_table_and_samples_file_paths stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_simulate_examples_work_for_json_table_and_samples_file_paths' (1335) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] JSON simulate docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read config file /opt/docs/fixtures/cli-config.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829afacbc - <docs_fixtures[3c2420389a8c2985]::docs_simulate_examples_work_for_json_table_and_samples_file_paths::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_pgbouncer_show_pools_examples_work stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_pgbouncer_show_pools_examples_work' (1326) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] PgBouncer SHOW POOLS import failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read PgBouncer SHOW POOLS file /opt/docs/fixtures/pgbouncer-show-pools.csv
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829af59c2 - <docs_fixtures[3c2420389a8c2985]::docs_pgbouncer_show_pools_examples_work::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_gate_examples_work stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_gate_examples_work' (1284) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] gate telemetry docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read gate policy file /opt/docs/fixtures/gate-policy.toml
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829aeca2e - <docs_fixtures[3c2420389a8c2985]::docs_gate_examples_work::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_warn_exit_example_is_stable stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_warn_exit_example_is_stable' (1361) panicked at tests/docs_fixtures.rs:804:5:
[INFO] [stdout] warn-exit example should produce a non-zero advisory or critical exit
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read config file /opt/docs/fixtures/cli-config.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829af09d8 - <docs_fixtures[3c2420389a8c2985]::docs_warn_exit_example_is_stable::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   12:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   13:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   14:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   15:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   16:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   17:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   18:     0x717d88dc53d4 - clone
[INFO] [stdout]   19:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_telemetry_quality_example_accepts_complete_open_loop_evidence stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_telemetry_quality_example_accepts_complete_open_loop_evidence' (1360) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] telemetry quality docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read telemetry quality config /opt/docs/fixtures/telemetry-quality-open-loop.json
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829afb550 - <docs_fixtures[3c2420389a8c2985]::docs_telemetry_quality_example_accepts_complete_open_loop_evidence::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_guard_examples_work stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_guard_examples_work' (1286) panicked at tests/docs_fixtures.rs:35:5:
[INFO] [stdout] guard telemetry docs example failed
[INFO] [stdout] status: Some(1)
[INFO] [stdout] stdout:
[INFO] [stdout] 
[INFO] [stdout] stderr:
[INFO] [stdout] error: failed to read gate policy file /opt/docs/fixtures/gate-policy.toml
[INFO] [stdout] 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829ae4040 - docs_fixtures[3c2420389a8c2985]::assert_success
[INFO] [stdout]   12:     0x5d4829aedd04 - <docs_fixtures[3c2420389a8c2985]::docs_guard_examples_work::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   13:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   14:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   15:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   16:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   17:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   18:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   19:     0x717d88dc53d4 - clone
[INFO] [stdout]   20:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- docs_pgbouncer_time_series_example_reports_queue_growth stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'docs_pgbouncer_time_series_example_reports_queue_growth' (1331) panicked at tests/docs_fixtures.rs:1686:5:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: Some(1)
[INFO] [stdout]  right: Some(2)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5d4829bb0a51 - <<std[617be2ca0a6fd877]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a373ad73a504971]::fmt::Display>::fmt
[INFO] [stdout]    1:     0x5d4829bc665a - core[a373ad73a504971]::fmt::write
[INFO] [stdout]    2:     0x5d4829bb4c8c - <alloc[2e1b2a31b91974c5]::vec::Vec<u8> as core[a373ad73a504971]::io::write::Write>::write_fmt
[INFO] [stdout]    3:     0x5d4829b8c376 - std[617be2ca0a6fd877]::panicking::default_hook::{closure#0}
[INFO] [stdout]    4:     0x5d4829ba8a29 - std[617be2ca0a6fd877]::panicking::default_hook
[INFO] [stdout]    5:     0x5d4829b3f870 - test[aada8e7e76ba119b]::test_main_inner::{closure#0}
[INFO] [stdout]    6:     0x5d4829ba8be2 - std[617be2ca0a6fd877]::panicking::panic_with_hook
[INFO] [stdout]    7:     0x5d4829b8c422 - std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}
[INFO] [stdout]    8:     0x5d4829b84ef9 - std[617be2ca0a6fd877]::sys::backtrace::__rust_end_short_backtrace::<std[617be2ca0a6fd877]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]    9:     0x5d4829b8d02d - __rustc[ea4f61d10b84890b]::rust_begin_unwind
[INFO] [stdout]   10:     0x5d4829bc6d8c - core[a373ad73a504971]::panicking::panic_fmt
[INFO] [stdout]   11:     0x5d4829bc6ca3 - core[a373ad73a504971]::panicking::assert_failed_inner
[INFO] [stdout]   12:     0x5d4829aff210 - core[a373ad73a504971]::panicking::assert_failed::<core[a373ad73a504971]::option::Option<i32>, core[a373ad73a504971]::option::Option<i32>>
[INFO] [stdout]   13:     0x5d4829af9d4d - <docs_fixtures[3c2420389a8c2985]::docs_pgbouncer_time_series_example_reports_queue_growth::{closure#0} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]   14:     0x5d4829b32cbb - test[aada8e7e76ba119b]::__rust_begin_short_backtrace::<core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>, fn() -> core[a373ad73a504971]::result::Result<(), alloc[2e1b2a31b91974c5]::string::String>>
[INFO] [stdout]   15:     0x5d4829b3fe95 - test[aada8e7e76ba119b]::run_test::{closure#0}
[INFO] [stdout]   16:     0x5d4829b39784 - std[617be2ca0a6fd877]::sys::backtrace::__rust_begin_short_backtrace::<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>
[INFO] [stdout]   17:     0x5d4829b42f22 - <std[617be2ca0a6fd877]::thread::lifecycle::spawn_unchecked<test[aada8e7e76ba119b]::run_test::{closure#1}, ()>::{closure#1} as core[a373ad73a504971]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]   18:     0x5d4829bafd6f - <std[617be2ca0a6fd877]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]   19:     0x717d88d31dfa - <unknown>
[INFO] [stdout]   20:     0x717d88dc53d4 - clone
[INFO] [stdout]   21:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     docs_batch_examples_work_for_json_and_toml_inputs
[INFO] [stdout]     docs_budget_examples_work_for_json_csv_and_toml_inputs
[INFO] [stdout]     docs_ci_integration_assets_are_wired_to_existing_commands
[INFO] [stdout]     docs_compare_examples_work_for_json_csv_and_toml_inputs
[INFO] [stdout]     docs_database_contention_example_blocks_pool_increase
[INFO] [stdout]     docs_doctor_examples_work
[INFO] [stdout]     docs_evaluate_and_sweep_examples_work
[INFO] [stdout]     docs_explain_examples_keep_machine_stdout_parseable
[INFO] [stdout]     docs_gate_examples_work
[INFO] [stdout]     docs_generate_config_examples_work
[INFO] [stdout]     docs_guard_examples_work
[INFO] [stdout]     docs_html_output_examples_work_for_major_commands
[INFO] [stdout]     docs_import_otlp_example_works
[INFO] [stdout]     docs_import_prometheus_example_works
[INFO] [stdout]     docs_import_telemetry_example_works
[INFO] [stdout]     docs_json_schemas_are_valid_json_and_match_fixture_shapes
[INFO] [stdout]     docs_pgbouncer_show_pools_examples_work
[INFO] [stdout]     docs_pgbouncer_time_series_example_reports_queue_growth
[INFO] [stdout]     docs_pool_scale_safety_example_reports_an_allowed_scale_up
[INFO] [stdout]     docs_pooler_evidence_examples_work
[INFO] [stdout]     docs_simulate_examples_work_for_json_table_and_samples_file_paths
[INFO] [stdout]     docs_telemetry_quality_example_accepts_complete_open_loop_evidence
[INFO] [stdout]     docs_warn_exit_example_is_stable
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 6 passed; 23 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929", kill_on_drop: false }`
[INFO] [stdout] 0bb652fab0204ac68253f1b10e6c58222d86404f4c47f0df428fd15219c1c929
