[INFO] fetching crate api_xai 0.6.1...
[INFO] documenting api_xai-0.6.1 against da3f5c31e5535b3dc210067de660a45784ae1e9c for pr-162169
[INFO] extracting crate api_xai 0.6.1 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate api_xai 0.6.1
[INFO] removed 0 missing examples
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate api_xai 0.6.1
[INFO] tweaked toml for crates.io crate api_xai 0.6.1 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate api_xai 0.6.1 on toolchain da3f5c31e5535b3dc210067de660a45784ae1e9c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate api_xai 0.6.1 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" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `lints.rust.unsafe-code` is deprecated in favor of `lints.rust.unsafe_code` and will not work in a future edition
[INFO] [stderr] warning: `api_xai` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4
[INFO] running `Command { std: "docker" "start" "5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4", 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" "5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4", 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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `lints.rust.unsafe-code` is deprecated in favor of `lints.rust.unsafe_code` and will not work in a future edition
[INFO] [stderr] warning: `api_xai` (manifest) generated 1 warning
[INFO] [stderr]    Compiling cc v1.2.64
[INFO] [stderr]    Compiling convert_case v0.6.0
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]    Compiling konst_macro_rules v0.2.19
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]    Compiling component_model_types v0.56.0
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]    Compiling const_format_proc_macros v0.2.34
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking http v1.4.2
[INFO] [stderr]    Compiling clone_dyn_types v0.50.0
[INFO] [stderr]    Compiling interval_adapter v0.44.0
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling derive_tools v0.68.0
[INFO] [stderr]    Compiling konst v0.2.20
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling collection_tools v0.67.0
[INFO] [stderr]     Checking rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling camino v1.2.2
[INFO] [stderr]    Compiling protobuf v3.7.2
[INFO] [stderr]    Compiling former_types v2.40.0
[INFO] [stderr]    Compiling derive_more-impl v1.0.0
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking protobuf-support v3.7.2
[INFO] [stderr]     Checking semver v1.0.28
[INFO] [stderr]     Checking toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking cargo-platform v0.1.9
[INFO] [stderr]    Compiling const_format v0.2.36
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]    Compiling prometheus v0.14.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking error_tools v0.40.0
[INFO] [stderr]     Checking lru v0.18.0
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking secrecy v0.10.3
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling derive_more v1.0.0
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]     Checking cargo_metadata v0.18.1
[INFO] [stderr]     Checking toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling macro_tools v0.87.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking workspace_tools v0.14.0
[INFO] [stderr]    Compiling derive_tools_meta v0.65.0
[INFO] [stderr]    Compiling former_meta v2.45.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking regex v1.12.4
[INFO] [stderr]     Checking bstr v1.12.1
[INFO] [stderr]     Checking fancy-regex v0.17.0
[INFO] [stderr]     Checking eventsource-stream v0.2.3
[INFO] [stderr]    Compiling mod_interface_meta v0.62.0
[INFO] [stderr]     Checking tiktoken-rs v0.12.0
[INFO] [stderr]     Checking former v2.48.0
[INFO] [stderr]     Checking mod_interface v0.64.0
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stderr]     Checking api_openai_compatible v0.5.1
[INFO] [stderr]  Documenting api_xai v0.6.1 (/opt/rustwide/workdir)
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/components/common.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / //! Common wire types shared across `api_xai` components.
[INFO] [stdout]  2 | | //!
[INFO] [stdout]  3 | | //! Re-exported from `api_openai_compatible` to eliminate duplication.
[INFO] [stdout] ...  |
[INFO] [stdout] 16 | |   };
[INFO] [stdout] 17 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Common types shared across API components.`
[INFO] [stdout]    = help: ends near `Common wire types shared across `api_xai` components.`
[INFO] [stdout]    = note: `#[deny(rustdoc::unportable_markdown)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/components/chat.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / //! Chat completion wire types for the `api_xai` crate.
[INFO] [stdout]  2 | | //!
[INFO] [stdout]  3 | | //! Re-exported from `api_openai_compatible` to eliminate wire-type duplication.
[INFO] [stdout]  4 | | //! Streaming types (`ChatCompletionChunk`, `ChunkChoice`, `Delta`) are available
[INFO] [stdout] ...  |
[INFO] [stdout] 45 | |   };
[INFO] [stdout] 46 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Chat completion types (requests, responses, messages).`
[INFO] [stdout]    = help: ends near `Chat completion wire types for the `api_xai` crate.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/components/models.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / mod private
[INFO] [stdout]  2 | | {
[INFO] [stdout]  3 | |   use serde::{ Serialize, Deserialize };
[INFO] [stdout] ...  |
[INFO] [stdout] 71 | |   };
[INFO] [stdout] 72 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Model information types (model details, listings).`
[INFO] [stdout]    = help: ends near `Model information types (model details, listings).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/components/models.rs:18:3
[INFO] [stdout]    |
[INFO] [stdout] 18 | /   pub struct Model
[INFO] [stdout] 19 | |   {
[INFO] [stdout] 20 | |     /// Unique model identifier (e.g., "grok-2-1212", "grok-4").
[INFO] [stdout] 21 | |     pub id : String,
[INFO] [stdout] ...  |
[INFO] [stdout] 30 | |     pub owned_by : String,
[INFO] [stdout] 31 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Model information types (model details, listings).`
[INFO] [stdout]    = help: ends near `Information about a specific model.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/components/models.rs:55:3
[INFO] [stdout]    |
[INFO] [stdout] 55 | /   pub struct ListModelsResponse
[INFO] [stdout] 56 | |   {
[INFO] [stdout] 57 | |     /// Object type (always "list").
[INFO] [stdout] 58 | |     pub object : String,
[INFO] [stdout] ...  |
[INFO] [stdout] 61 | |     pub data : Vec< Model >,
[INFO] [stdout] 62 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Model information types (model details, listings).`
[INFO] [stdout]    = help: ends near `Response from listing all available models.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/error.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use error_tools::dependency::thiserror;
[INFO] [stdout] ...   |
[INFO] [stdout] 193 | |   };
[INFO] [stdout] 194 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Error types and result handling for XAI API operations.`
[INFO] [stdout]     = help: ends near `Error types and result handling for XAI API operations.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/secret.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use crate::error::{ XaiError, Result };
[INFO] [stdout]   4 | |   use secrecy::{ SecretString, ExposeSecret };
[INFO] [stdout] ...   |
[INFO] [stdout] 292 | |   };
[INFO] [stdout] 293 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Secret management for API keys using `workspace_tools`.`
[INFO] [stdout]     = help: ends near `Secret management for API keys using `workspace_tools`.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/environment.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use crate::error::{ XaiError, Result };
[INFO] [stdout]   4 | |   use crate::secret::Secret;
[INFO] [stdout] ...   |
[INFO] [stdout] 234 | |   };
[INFO] [stdout] 235 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Environment configuration and HTTP client setup.`
[INFO] [stdout]     = help: ends near `Environment configuration and HTTP client setup.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/client.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use crate::error::{ XaiError, Result };
[INFO] [stdout]   4 | |   use crate::environment::XaiEnvironment;
[INFO] [stdout] ...   |
[INFO] [stdout] 464 | |   };
[INFO] [stdout] 465 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Core HTTP client for XAI API requests.`
[INFO] [stdout]     = help: ends near `Core HTTP client for XAI API requests.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/client_api_accessors.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / mod private
[INFO] [stdout]  2 | | {
[INFO] [stdout]  3 | |   use crate::environment::XaiEnvironment;
[INFO] [stdout]  4 | |   use crate::client::Client;
[INFO] [stdout] ...  |
[INFO] [stdout] 97 | |   };
[INFO] [stdout] 98 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Trait-based API accessors for chat and models endpoints.`
[INFO] [stdout]    = help: ends near `Trait-based API accessors for chat and models endpoints.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/chat.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use crate::error::Result;
[INFO] [stdout]   4 | |   use crate::environment::XaiEnvironment;
[INFO] [stdout] ...   |
[INFO] [stdout] 183 | |   };
[INFO] [stdout] 184 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Chat completion request and response types.`
[INFO] [stdout]     = help: ends near `Chat completion request and response types.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/models.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use crate::error::Result;
[INFO] [stdout]   4 | |   use crate::environment::XaiEnvironment;
[INFO] [stdout] ...   |
[INFO] [stdout] 122 | |   };
[INFO] [stdout] 123 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Model listing and details endpoints.`
[INFO] [stdout]     = help: ends near `Model listing and details endpoints.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/components/mod.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / mod private
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |   layer models;
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Shared component types (messages, tools, etc).`
[INFO] [stdout]    = help: ends near `Shared component types (messages, tools, etc).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/circuit_breaker.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use std::sync::{ Arc, Mutex };
[INFO] [stdout]   4 | |   use std::time::{ Duration, Instant };
[INFO] [stdout] ...   |
[INFO] [stdout] 443 | |   };
[INFO] [stdout] 444 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Circuit breaker pattern for failure management.`
[INFO] [stdout]     = help: ends near `Circuit breaker pattern for failure management.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/enhanced_retry.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use std::time::Duration;
[INFO] [stdout]   4 | |   use crate::error::{ XaiError, Result };
[INFO] [stdout] ...   |
[INFO] [stdout] 373 | |   };
[INFO] [stdout] 374 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Enhanced retry logic with exponential backoff.`
[INFO] [stdout]     = help: ends near `Enhanced retry logic with exponential backoff.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/rate_limiting.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   use std::sync::{ Arc, Mutex };
[INFO] [stdout]   4 | |   use std::time::{ Duration, Instant };
[INFO] [stdout] ...   |
[INFO] [stdout] 328 | |   };
[INFO] [stdout] 329 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Rate limiting with token bucket algorithm.`
[INFO] [stdout]     = help: ends near `Rate limiting with token bucket algorithm.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/failover.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Automatic failover support for multi-endpoint deployments.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 468 | |   };
[INFO] [stdout] 469 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Failover support with multi-endpoint rotation.`
[INFO] [stdout]     = help: ends near `Failover support with multi-endpoint rotation.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/enhanced_tools.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Enhanced function calling utilities for parallel and sequential tool execution.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 304 | |   };
[INFO] [stdout] 305 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Enhanced function calling with parallel execution.`
[INFO] [stdout]     = help: ends near `Enhanced function calling with parallel execution.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/health_checks.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Health check probes for production deployments.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 269 | |   };
[INFO] [stdout] 270 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Health check endpoints for production readiness.`
[INFO] [stdout]     = help: ends near `Health check endpoints for production readiness.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/structured_logging.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Structured logging support using the `tracing` crate.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 356 | |   };
[INFO] [stdout] 357 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Structured logging with tracing integration.`
[INFO] [stdout]     = help: ends near `Structured logging with tracing integration.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/count_tokens.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Token counting functionality using tiktoken.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 291 | |   };
[INFO] [stdout] 292 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Token counting using tiktoken library.`
[INFO] [stdout]     = help: ends near `Token counting using tiktoken library.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/caching.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Response caching functionality using LRU cache.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 380 | |   };
[INFO] [stdout] 381 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Response caching with LRU eviction policy.`
[INFO] [stdout]     = help: ends near `Response caching with LRU eviction policy.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Input validation for XAI API requests.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 460 | |   };
[INFO] [stdout] 461 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Request parameter validation and error detection.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/curl_diagnostics.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! CURL command generation for debugging XAI API requests.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 261 | |   };
[INFO] [stdout] 262 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `CURL command generation for debugging.`
[INFO] [stdout]     = help: ends near `CURL command generation for debugging.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/batch_operations.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Batch processing for multiple chat completion requests.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 402 | |   };
[INFO] [stdout] 403 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Parallel request orchestration for batch processing.`
[INFO] [stdout]     = help: ends near `Parallel request orchestration for batch processing.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/performance_metrics.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Performance metrics collection using Prometheus.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 450 | |   };
[INFO] [stdout] 451 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Prometheus metrics collection and export.`
[INFO] [stdout]     = help: ends near `Prometheus metrics collection and export.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/sync_api.rs:1:1
[INFO] [stdout]     |
[INFO] [stdout]   1 | / mod private
[INFO] [stdout]   2 | | {
[INFO] [stdout]   3 | |   //! Synchronous (blocking) API wrappers.
[INFO] [stdout]   4 | |   //!
[INFO] [stdout] ...   |
[INFO] [stdout] 607 | |   };
[INFO] [stdout] 608 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Synchronous blocking wrappers for async API.`
[INFO] [stdout]     = help: ends near `Synchronous blocking wrappers for async API.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/error.rs:23:3
[INFO] [stdout]     |
[INFO] [stdout]  23 | /   pub enum XaiError
[INFO] [stdout]  24 | |   {
[INFO] [stdout]  25 | |     /// API error returned by XAI service.
[INFO] [stdout]  26 | |     ///
[INFO] [stdout] ...   |
[INFO] [stdout] 119 | |     ApiError( String ),
[INFO] [stdout] 120 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Error types and result handling for XAI API operations.`
[INFO] [stdout]     = help: ends near `Error types for XAI API operations.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:153:7
[INFO] [stdout]     |
[INFO] [stdout] 153 |   /// Error types and result handling for XAI API operations.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Result type alias using `error_tools`.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/secret.rs:48:3
[INFO] [stdout]    |
[INFO] [stdout] 48 |   pub struct Secret( SecretString );
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Secret management for API keys using `workspace_tools`.`
[INFO] [stdout]    = help: ends near `Secure wrapper for XAI API key.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:159:7
[INFO] [stdout]     |
[INFO] [stdout] 159 |   /// Environment configuration and HTTP client setup.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Default base URL for XAI API.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:159:7
[INFO] [stdout]     |
[INFO] [stdout] 159 |   /// Environment configuration and HTTP client setup.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Default request timeout in seconds.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/environment.rs:36:3
[INFO] [stdout]    |
[INFO] [stdout] 36 | /   pub trait XaiEnvironment : Send + Sync + 'static
[INFO] [stdout] 37 | |   {
[INFO] [stdout] 38 | |     /// Returns the API authentication key.
[INFO] [stdout] 39 | |     fn api_key( &self ) -> &Secret;
[INFO] [stdout] ...  |
[INFO] [stdout] 77 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Environment configuration and HTTP client setup.`
[INFO] [stdout]    = help: ends near `Environment configuration trait for XAI API client.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/environment.rs:104:3
[INFO] [stdout]     |
[INFO] [stdout] 104 | /   pub struct XaiEnvironmentImpl
[INFO] [stdout] 105 | |   {
[INFO] [stdout] 106 | |     api_key : Secret,
[INFO] [stdout] 107 | |     base_url : Url,
[INFO] [stdout] 108 | |     timeout : Duration,
[INFO] [stdout] 109 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Environment configuration and HTTP client setup.`
[INFO] [stdout]     = help: ends near `Default implementation of XAI environment configuration.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/client.rs:37:3
[INFO] [stdout]    |
[INFO] [stdout] 37 | /   pub struct Client< E >
[INFO] [stdout] 38 | |   where
[INFO] [stdout] 39 | |     E : XaiEnvironment + Send + Sync + 'static,
[INFO] [stdout] ...  |
[INFO] [stdout] 57 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Core HTTP client for XAI API requests.`
[INFO] [stdout]    = help: ends near `XAI API client.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/client_api_accessors.rs:35:3
[INFO] [stdout]    |
[INFO] [stdout] 35 | /   pub trait ClientApiAccessors< E >
[INFO] [stdout] 36 | |   where
[INFO] [stdout] 37 | |     E : XaiEnvironment + Send + Sync + 'static,
[INFO] [stdout] ...  |
[INFO] [stdout] 73 | |     fn models( &self ) -> Models< '_, E >;
[INFO] [stdout] 74 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Trait-based API accessors for chat and models endpoints.`
[INFO] [stdout]    = help: ends near `Trait providing convenient API accessors for the client.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/chat.rs:40:3
[INFO] [stdout]    |
[INFO] [stdout] 40 | /   pub struct Chat< 'a, E >
[INFO] [stdout] 41 | |   where
[INFO] [stdout] 42 | |     E : XaiEnvironment + Send + Sync + 'static,
[INFO] [stdout] ...  |
[INFO] [stdout] 45 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Chat completion request and response types.`
[INFO] [stdout]    = help: ends near `Chat completions API accessor.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/models.rs:30:3
[INFO] [stdout]    |
[INFO] [stdout] 30 | /   pub struct Models< 'a, E >
[INFO] [stdout] 31 | |   where
[INFO] [stdout] 32 | |     E : XaiEnvironment + Send + Sync + 'static,
[INFO] [stdout] ...  |
[INFO] [stdout] 35 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Model listing and details endpoints.`
[INFO] [stdout]    = help: ends near `Models API accessor.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:174:7
[INFO] [stdout]     |
[INFO] [stdout] 174 |   /// Shared component types (messages, tools, etc).
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Information about a specific model.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/components/models.rs:55:3
[INFO] [stdout]    |
[INFO] [stdout] 55 | /   pub struct ListModelsResponse
[INFO] [stdout] 56 | |   {
[INFO] [stdout] 57 | |     /// Object type (always "list").
[INFO] [stdout] 58 | |     pub object : String,
[INFO] [stdout] ...  |
[INFO] [stdout] 61 | |     pub data : Vec< Model >,
[INFO] [stdout] 62 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Shared component types (messages, tools, etc).`
[INFO] [stdout]    = help: ends near `Response from listing all available models.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/circuit_breaker.rs:14:3
[INFO] [stdout]    |
[INFO] [stdout] 14 | /   pub enum CircuitState
[INFO] [stdout] 15 | |   {
[INFO] [stdout] 16 | |     /// Circuit is closed, requests pass through normally.
[INFO] [stdout] 17 | |     Closed,
[INFO] [stdout] ...  |
[INFO] [stdout] 23 | |     HalfOpen,
[INFO] [stdout] 24 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Circuit breaker pattern for failure management.`
[INFO] [stdout]    = help: ends near `Circuit breaker states.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/circuit_breaker.rs:42:3
[INFO] [stdout]    |
[INFO] [stdout] 42 | /   pub struct CircuitBreakerConfig
[INFO] [stdout] 43 | |   {
[INFO] [stdout] 44 | |     /// Number of consecutive failures before opening circuit.
[INFO] [stdout] 45 | |     pub failure_threshold : usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |     pub success_threshold : usize,
[INFO] [stdout] 52 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Circuit breaker pattern for failure management.`
[INFO] [stdout]    = help: ends near `Circuit breaker configuration.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/circuit_breaker.rs:139:3
[INFO] [stdout]     |
[INFO] [stdout] 139 | /   pub struct CircuitBreaker
[INFO] [stdout] 140 | |   {
[INFO] [stdout] 141 | |     config : CircuitBreakerConfig,
[INFO] [stdout] 142 | |     state : Arc< Mutex< CircuitBreakerState > >,
[INFO] [stdout] 143 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Circuit breaker pattern for failure management.`
[INFO] [stdout]     = help: ends near `Circuit breaker for protecting against cascading failures.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/enhanced_retry.rs:24:3
[INFO] [stdout]    |
[INFO] [stdout] 24 | /   pub struct EnhancedRetryConfig
[INFO] [stdout] 25 | |   {
[INFO] [stdout] 26 | |     /// Maximum number of retry attempts (including initial attempt).
[INFO] [stdout] 27 | |     pub max_attempts : usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 36 | |     pub use_jitter : bool,
[INFO] [stdout] 37 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Enhanced retry logic with exponential backoff.`
[INFO] [stdout]    = help: ends near `Enhanced retry configuration with exponential backoff.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/rate_limiting.rs:20:3
[INFO] [stdout]    |
[INFO] [stdout] 20 | /   pub struct RateLimiterConfig
[INFO] [stdout] 21 | |   {
[INFO] [stdout] 22 | |     /// Maximum number of tokens in the bucket.
[INFO] [stdout] 23 | |     pub capacity : usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 26 | |     pub refill_rate : f64,
[INFO] [stdout] 27 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Rate limiting with token bucket algorithm.`
[INFO] [stdout]    = help: ends near `Rate limiter configuration using token bucket algorithm.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/rate_limiting.rs:129:3
[INFO] [stdout]     |
[INFO] [stdout] 129 | /   pub struct RateLimiter
[INFO] [stdout] 130 | |   {
[INFO] [stdout] 131 | |     config : RateLimiterConfig,
[INFO] [stdout] 132 | |     state : Arc< Mutex< RateLimiterState > >,
[INFO] [stdout] 133 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Rate limiting with token bucket algorithm.`
[INFO] [stdout]     = help: ends near `Token bucket rate limiter.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:189:7
[INFO] [stdout]     |
[INFO] [stdout] 189 |   /// Failover support with multi-endpoint rotation.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Endpoint health status.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/failover.rs:99:3
[INFO] [stdout]     |
[INFO] [stdout]  99 | /   pub struct FailoverConfig
[INFO] [stdout] 100 | |   {
[INFO] [stdout] 101 | |     /// Maximum consecutive failures before marking endpoint unhealthy.
[INFO] [stdout] 102 | |     pub max_failures : usize,
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |     pub auto_rotate : bool,
[INFO] [stdout] 109 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Failover support with multi-endpoint rotation.`
[INFO] [stdout]     = help: ends near `Failover configuration.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/failover.rs:183:3
[INFO] [stdout]     |
[INFO] [stdout] 183 | /   pub struct FailoverManager
[INFO] [stdout] 184 | |   {
[INFO] [stdout] 185 | |     config : FailoverConfig,
[INFO] [stdout] 186 | |     state : Arc< Mutex< FailoverState > >,
[INFO] [stdout] 187 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Failover support with multi-endpoint rotation.`
[INFO] [stdout]     = help: ends near `Failover manager for multiple XAI endpoints.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:193:7
[INFO] [stdout]     |
[INFO] [stdout] 193 |   /// Enhanced function calling with parallel execution.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Result of executing a tool call.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/enhanced_tools.rs:203:3
[INFO] [stdout]     |
[INFO] [stdout] 203 | /   pub async fn execute_tool_calls_parallel< F, Exec >(
[INFO] [stdout] 204 | |     tool_calls : Vec< ToolCall >,
[INFO] [stdout] 205 | |     executor : Exec
[INFO] [stdout] 206 | |   ) -> Vec< Result< ToolResult, Box< dyn std::error::Error + Send + Sync > > >
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |     results
[INFO] [stdout] 233 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Enhanced function calling with parallel execution.`
[INFO] [stdout]     = help: ends near `Executes multiple tool calls in parallel.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/enhanced_tools.rs:277:3
[INFO] [stdout]     |
[INFO] [stdout] 277 | /   pub async fn execute_tool_calls_sequential< F, Exec >(
[INFO] [stdout] 278 | |     tool_calls : Vec< ToolCall >,
[INFO] [stdout] 279 | |     executor : Exec
[INFO] [stdout] 280 | |   ) -> Vec< Result< ToolResult, Box< dyn std::error::Error + Send + Sync > > >
[INFO] [stdout] ...   |
[INFO] [stdout] 293 | |     results
[INFO] [stdout] 294 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Enhanced function calling with parallel execution.`
[INFO] [stdout]     = help: ends near `Executes multiple tool calls sequentially.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/health_checks.rs:81:3
[INFO] [stdout]    |
[INFO] [stdout] 81 | /   pub enum HealthStatus
[INFO] [stdout] 82 | |   {
[INFO] [stdout] 83 | |     /// Endpoint is healthy and responding.
[INFO] [stdout] 84 | |     Healthy,
[INFO] [stdout] ...  |
[INFO] [stdout] 90 | |     Unhealthy,
[INFO] [stdout] 91 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Health check endpoints for production readiness.`
[INFO] [stdout]    = help: ends near `Health status of the API endpoint.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:197:7
[INFO] [stdout]     |
[INFO] [stdout] 197 |   /// Health check endpoints for production readiness.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Result of a health check.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/health_checks.rs:137:3
[INFO] [stdout]     |
[INFO] [stdout] 137 | /   pub async fn health_check< E >( client : &Client< E > ) -> HealthCheckResult
[INFO] [stdout] 138 | |   where
[INFO] [stdout] 139 | |     E : XaiEnvironment + Send + Sync + 'static,
[INFO] [stdout] ...   |
[INFO] [stdout] 183 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Health check endpoints for production readiness.`
[INFO] [stdout]     = help: ends near `Performs a health check on the XAI API endpoint.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:197:7
[INFO] [stdout]     |
[INFO] [stdout] 197 |   /// Health check endpoints for production readiness.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Performs a quick liveness check.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/lib.rs:197:7
[INFO] [stdout]     |
[INFO] [stdout] 197 |   /// Health check endpoints for production readiness.
[INFO] [stdout]     |       ^ starts here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: ends near `Performs a readiness check.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/structured_logging.rs:337:3
[INFO] [stdout]     |
[INFO] [stdout] 337 | /   pub fn create_operation_span(
[INFO] [stdout] 338 | |     name : &str,
[INFO] [stdout] 339 | |     model : Option< &str >
[INFO] [stdout] 340 | |   ) -> tracing::Span
[INFO] [stdout] ...   |
[INFO] [stdout] 347 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Structured logging with tracing integration.`
[INFO] [stdout]     = help: ends near `Creates a tracing span for tracking an API operation.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/count_tokens.rs:73:3
[INFO] [stdout]    |
[INFO] [stdout] 73 | /   pub fn count_tokens( text : &str, model : &str ) -> Result< usize >
[INFO] [stdout] 74 | |   {
[INFO] [stdout] 75 | |     let bpe = get_tokenizer_for_model( model )?;
[INFO] [stdout] 76 | |     Ok( bpe.encode_with_special_tokens( text ).len() )
[INFO] [stdout] 77 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Token counting using tiktoken library.`
[INFO] [stdout]    = help: ends near `Counts tokens in a text string for a specific model.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/count_tokens.rs:117:3
[INFO] [stdout]     |
[INFO] [stdout] 117 | /   pub fn count_tokens_for_request( request : &ChatCompletionRequest ) -> Result< usize >
[INFO] [stdout] 118 | |   {
[INFO] [stdout] 119 | |     let bpe = get_tokenizer_for_model( &request.model )?;
[INFO] [stdout] 120 | |     let mut total = 0;
[INFO] [stdout] ...   |
[INFO] [stdout] 143 | |     Ok( total )
[INFO] [stdout] 144 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Token counting using tiktoken library.`
[INFO] [stdout]     = help: ends near `Counts tokens in a chat completion request.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/count_tokens.rs:261:3
[INFO] [stdout]     |
[INFO] [stdout] 261 | /   pub fn validate_request_size( request : &ChatCompletionRequest, max_tokens : usize ) -> Result< () >
[INFO] [stdout] 262 | |   {
[INFO] [stdout] 263 | |     let token_count = count_tokens_for_request( request )?;
[INFO] [stdout] ...   |
[INFO] [stdout] 279 | |     Ok( () )
[INFO] [stdout] 280 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Token counting using tiktoken library.`
[INFO] [stdout]     = help: ends near `Validates that a request fits within the model's context window.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/caching.rs:108:3
[INFO] [stdout]     |
[INFO] [stdout] 108 | /   pub struct CachedClient< E >
[INFO] [stdout] 109 | |   where
[INFO] [stdout] 110 | |     E : XaiEnvironment,
[INFO] [stdout] ...   |
[INFO] [stdout] 113 | |     cache : Arc< Mutex< LruCache< String, ChatCompletionResponse > > >,
[INFO] [stdout] 114 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Response caching with LRU eviction policy.`
[INFO] [stdout]     = help: ends near `A client wrapper that caches chat completion responses.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:101:3
[INFO] [stdout]     |
[INFO] [stdout] 101 | /   pub fn validate_request( request : &ChatCompletionRequest ) -> Result< () >
[INFO] [stdout] 102 | |   {
[INFO] [stdout] 103 | |     validate_model( &request.model )?;
[INFO] [stdout] 104 | |     validate_messages( &request.messages )?;
[INFO] [stdout] ...   |
[INFO] [stdout] 116 | |     Ok( () )
[INFO] [stdout] 117 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates a chat completion request.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:135:3
[INFO] [stdout]     |
[INFO] [stdout] 135 | /   pub fn validate_model( model : &str ) -> Result< () >
[INFO] [stdout] 136 | |   {
[INFO] [stdout] 137 | |     const VALID_MODELS : &[ &str ] = &[ "grok-2-1212", "grok-2-1212", "grok-2" ];
[INFO] [stdout] ...   |
[INFO] [stdout] 155 | |     Ok( () )
[INFO] [stdout] 156 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates that the model name is supported.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:174:3
[INFO] [stdout]     |
[INFO] [stdout] 174 | /   pub fn validate_messages( messages : &[ Message ] ) -> Result< () >
[INFO] [stdout] 175 | |   {
[INFO] [stdout] 176 | |     if messages.is_empty()
[INFO] [stdout] ...   |
[INFO] [stdout] 204 | |     Ok( () )
[INFO] [stdout] 205 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates that messages array is non-empty with valid content.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:217:3
[INFO] [stdout]     |
[INFO] [stdout] 217 | /   pub fn validate_temperature( temperature : Option< f32 > ) -> Result< () >
[INFO] [stdout] 218 | |   {
[INFO] [stdout] 219 | |     if let Some( temp ) = temperature
[INFO] [stdout] ...   |
[INFO] [stdout] 236 | |     Ok( () )
[INFO] [stdout] 237 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates that temperature is within valid range [0.0, 2.0].`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:249:3
[INFO] [stdout]     |
[INFO] [stdout] 249 | /   pub fn validate_max_tokens( max_tokens : Option< u32 > ) -> Result< () >
[INFO] [stdout] 250 | |   {
[INFO] [stdout] 251 | |     if let Some( tokens ) = max_tokens
[INFO] [stdout] ...   |
[INFO] [stdout] 265 | |     Ok( () )
[INFO] [stdout] 266 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates that `max_tokens` is positive.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:278:3
[INFO] [stdout]     |
[INFO] [stdout] 278 | /   pub fn validate_top_p( top_p : Option< f32 > ) -> Result< () >
[INFO] [stdout] 279 | |   {
[INFO] [stdout] 280 | |     if let Some( p ) = top_p
[INFO] [stdout] ...   |
[INFO] [stdout] 297 | |     Ok( () )
[INFO] [stdout] 298 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates that `top_p` is within valid range [0.0, 1.0].`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:310:3
[INFO] [stdout]     |
[INFO] [stdout] 310 | /   pub fn validate_frequency_penalty( frequency_penalty : Option< f32 > ) -> Result< () >
[INFO] [stdout] 311 | |   {
[INFO] [stdout] 312 | |     if let Some( penalty ) = frequency_penalty
[INFO] [stdout] ...   |
[INFO] [stdout] 329 | |     Ok( () )
[INFO] [stdout] 330 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates that `frequency_penalty` is within valid range [-2.0, 2.0].`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:342:3
[INFO] [stdout]     |
[INFO] [stdout] 342 | /   pub fn validate_presence_penalty( presence_penalty : Option< f32 > ) -> Result< () >
[INFO] [stdout] 343 | |   {
[INFO] [stdout] 344 | |     if let Some( penalty ) = presence_penalty
[INFO] [stdout] ...   |
[INFO] [stdout] 361 | |     Ok( () )
[INFO] [stdout] 362 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates that `presence_penalty` is within valid range [-2.0, 2.0].`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/input_validation.rs:381:3
[INFO] [stdout]     |
[INFO] [stdout] 381 | /   pub fn validate_tools( tools : &[ Tool ] ) -> Result< () >
[INFO] [stdout] 382 | |   {
[INFO] [stdout] 383 | |     for ( idx, tool ) in tools.iter().enumerate()
[INFO] [stdout] ...   |
[INFO] [stdout] 388 | |     Ok( () )
[INFO] [stdout] 389 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Request parameter validation and error detection.`
[INFO] [stdout]     = help: ends near `Validates tool definitions (function calling schemas).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/curl_diagnostics.rs:85:3
[INFO] [stdout]    |
[INFO] [stdout] 85 | /   pub fn to_curl( request : &ChatCompletionRequest ) -> String
[INFO] [stdout] 86 | |   {
[INFO] [stdout] 87 | |     let json = serde_json::to_string_pretty( request )
[INFO] [stdout] 88 | |       .unwrap_or_else( | _ | "{}".to_string() );
[INFO] [stdout] ...  |
[INFO] [stdout] 97 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` CURL command generation for debugging.`
[INFO] [stdout]    = help: ends near `Converts a chat completion request to a CURL command.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/curl_diagnostics.rs:138:3
[INFO] [stdout]     |
[INFO] [stdout] 138 | /   pub fn to_curl_with_key( request : &ChatCompletionRequest, api_key : &str ) -> String
[INFO] [stdout] 139 | |   {
[INFO] [stdout] 140 | |     let json = serde_json::to_string_pretty( request )
[INFO] [stdout] 141 | |       .unwrap_or_else( | _ | "{}".to_string() );
[INFO] [stdout] ...   |
[INFO] [stdout] 150 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` CURL command generation for debugging.`
[INFO] [stdout]     = help: ends near `Converts a chat completion request to a CURL command with a custom API key.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/curl_diagnostics.rs:188:3
[INFO] [stdout]     |
[INFO] [stdout] 188 | /   pub fn to_curl_with_endpoint
[INFO] [stdout] 189 | |   (
[INFO] [stdout] 190 | |     request : &ChatCompletionRequest,
[INFO] [stdout] 191 | |     endpoint : &str
[INFO] [stdout] ...   |
[INFO] [stdout] 205 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` CURL command generation for debugging.`
[INFO] [stdout]     = help: ends near `Converts a chat completion request to a CURL command with custom endpoint.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/curl_diagnostics.rs:240:3
[INFO] [stdout]     |
[INFO] [stdout] 240 | /   pub fn to_curl_compact( request : &ChatCompletionRequest ) -> String
[INFO] [stdout] 241 | |   {
[INFO] [stdout] 242 | |     let json = serde_json::to_string( request )
[INFO] [stdout] 243 | |       .unwrap_or_else( | _ | "{}".to_string() );
[INFO] [stdout] ...   |
[INFO] [stdout] 249 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` CURL command generation for debugging.`
[INFO] [stdout]     = help: ends near `Converts a chat completion request to a compact CURL command (single line).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/batch_operations.rs:113:3
[INFO] [stdout]     |
[INFO] [stdout] 113 | /   pub struct BatchProcessor< E >
[INFO] [stdout] 114 | |   where
[INFO] [stdout] 115 | |     E : XaiEnvironment + Send + Sync + 'static,
[INFO] [stdout] ...   |
[INFO] [stdout] 118 | |     max_concurrent : usize,
[INFO] [stdout] 119 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Parallel request orchestration for batch processing.`
[INFO] [stdout]     = help: ends near `A client wrapper that supports batch processing of requests.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/performance_metrics.rs:93:3
[INFO] [stdout]     |
[INFO] [stdout]  93 | /   pub struct MetricsCollector
[INFO] [stdout]  94 | |   {
[INFO] [stdout]  95 | |     registry : Registry,
[INFO] [stdout]  96 | |     requests_total : Counter,
[INFO] [stdout] ...   |
[INFO] [stdout]  99 | |     errors_total : Counter,
[INFO] [stdout] 100 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Prometheus metrics collection and export.`
[INFO] [stdout]     = help: ends near `Metrics collector for XAI API operations.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/performance_metrics.rs:341:3
[INFO] [stdout]     |
[INFO] [stdout] 341 | /   pub struct MetricGuard
[INFO] [stdout] 342 | |   {
[INFO] [stdout] 343 | |     metrics : std::sync::Arc< MetricsCollector >,
[INFO] [stdout] 344 | |     start : Instant,
[INFO] [stdout] 345 | |     tokens : u32,
[INFO] [stdout] 346 | |     success : bool,
[INFO] [stdout] 347 | |   }
[INFO] [stdout]     | |___^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near ` Prometheus metrics collection and export.`
[INFO] [stdout]     = help: ends near `A wrapper that automatically records metrics for operations.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/sync_api.rs:85:3
[INFO] [stdout]    |
[INFO] [stdout] 85 | /   pub struct SyncClient< E >
[INFO] [stdout] 86 | |   where
[INFO] [stdout] 87 | |     E : XaiEnvironment,
[INFO] [stdout] ...  |
[INFO] [stdout] 90 | |     client : Client< E >,
[INFO] [stdout] 91 | |   }
[INFO] [stdout]    | |___^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near ` Synchronous blocking wrappers for async API.`
[INFO] [stdout]    = help: ends near `A synchronous (blocking) wrapper around the async XAI client.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] 
[INFO] [stderr] thread 'rustc' (1908) panicked at /rustc-dev/da3f5c31e5535b3dc210067de660a45784ae1e9c/compiler/rustc_resolve/src/rustdoc.rs:608:28:
[INFO] [stderr] end byte index 112 is not a char boundary; it is inside '⚠' (bytes 111..114 of string)
[INFO] [stderr] stack backtrace:
[INFO] [stderr]    0:     0x7c63ec044f16 - <<std[c2577c5add975170]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[45eb60b2de227a2c]::fmt::Display>::fmt
[INFO] [stderr]    1:     0x7c63ec60bb0f - core[45eb60b2de227a2c]::fmt::write
[INFO] [stderr]    2:     0x7c63ec05a00c - <std[c2577c5add975170]::sys::stdio::unix::Stderr as core[45eb60b2de227a2c]::io::write::Write>::write_fmt
[INFO] [stderr]    3:     0x7c63ec0177ea - std[c2577c5add975170]::panicking::default_hook::{closure#0}
[INFO] [stderr]    4:     0x7c63ec039243 - std[c2577c5add975170]::panicking::default_hook
[INFO] [stderr]    5:     0x7c63eafaf4cf - std[c2577c5add975170]::panicking::update_hook::<alloc[223e3de3f1abdb8b]::boxed::Box<rustc_driver_impl[4b73d46cdbe287a1]::install_ice_hook::{closure#1}>>::{closure#0}
[INFO] [stderr]    6:     0x7c63ec0396e2 - std[c2577c5add975170]::panicking::panic_with_hook
[INFO] [stderr]    7:     0x7c63ec0178a2 - std[c2577c5add975170]::panicking::panic_handler::{closure#0}
[INFO] [stderr]    8:     0x7c63ec00f4a9 - std[c2577c5add975170]::sys::backtrace::__rust_end_short_backtrace::<std[c2577c5add975170]::panicking::panic_handler::{closure#0}, !>
[INFO] [stderr]    9:     0x7c63ec01947d - __rustc[b1482ee701bb2aa]::rust_begin_unwind
[INFO] [stderr]   10:     0x7c63e8e211ec - core[45eb60b2de227a2c]::panicking::panic_fmt
[INFO] [stderr]   11:     0x7c63ea93a9c3 - core[45eb60b2de227a2c]::str::slice_error_fail_rt
[INFO] [stderr]   12:     0x7c63ea73845a - core[45eb60b2de227a2c]::str::slice_error_fail
[INFO] [stderr]   13:     0x7c63ebbbaf6c - rustc_resolve[9ed1b7cef59020b5]::rustdoc::source_span_for_markdown_range_inner
[INFO] [stderr]   14:     0x601b87679a0b - <rustdoc[33599144c5b96b58]::passes::lint::Linter as rustdoc[33599144c5b96b58]::visit::DocVisitor>::visit_item
[INFO] [stderr]   15:     0x601b876764f6 - <rustdoc[33599144c5b96b58]::passes::lint::Linter as rustdoc[33599144c5b96b58]::visit::DocVisitor>::visit_item
[INFO] [stderr]   16:     0x601b876764f6 - <rustdoc[33599144c5b96b58]::passes::lint::Linter as rustdoc[33599144c5b96b58]::visit::DocVisitor>::visit_item
[INFO] [stderr]   17:     0x601b8763172f - rustdoc[33599144c5b96b58]::core::run_global_ctxt
[INFO] [stderr]   18:     0x601b87712860 - rustdoc[33599144c5b96b58]::main_args::{closure#2}::{closure#0}
[INFO] [stderr]   19:     0x601b8772002d - rustc_interface[6115ffe46e65b891]::interface::run_compiler::<(), rustdoc[33599144c5b96b58]::main_args::{closure#2}>::{closure#2}
[INFO] [stderr]   20:     0x601b8771dbd3 - std[c2577c5add975170]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[6115ffe46e65b891]::util::run_in_thread_with_globals<rustc_interface[6115ffe46e65b891]::util::run_in_thread_pool_with_globals<rustc_interface[6115ffe46e65b891]::interface::run_compiler<(), rustdoc[33599144c5b96b58]::main_args::{closure#2}>::{closure#2}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
[INFO] [stderr]   21:     0x601b8771d93f - <std[c2577c5add975170]::thread::lifecycle::spawn_unchecked<rustc_interface[6115ffe46e65b891]::util::run_in_thread_with_globals<rustc_interface[6115ffe46e65b891]::util::run_in_thread_pool_with_globals<rustc_interface[6115ffe46e65b891]::interface::run_compiler<(), rustdoc[33599144c5b96b58]::main_args::{closure#2}>::{closure#2}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[45eb60b2de227a2c]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stderr]   22:     0x7c63eda58a87 - <std[c2577c5add975170]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stderr]   23:     0x7c63e6e8307a - <unknown>
[INFO] [stderr]   24:     0x7c63e6f16534 - clone
[INFO] [stderr]   25:                0x0 - <unknown>
[INFO] [stderr] 
[INFO] [stderr] error: the compiler unexpectedly panicked. This is a bug
[INFO] [stderr] 
[INFO] [stderr] note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-rustdoc&template=ice.md
[INFO] [stderr] 
[INFO] [stderr] note: please make sure that you have updated to the latest nightly
[INFO] [stderr] 
[INFO] [stderr] warning: the ICE couldn't be written to `/opt/rustwide/workdir/rustc-ice-2026-09-07T13_49_03-1907.txt`: Read-only file system (os error 30)
[INFO] [stderr] 
[INFO] [stderr] note: rustc 1.100.0-nightly (da3f5c31e 2026-09-02) running on x86_64-unknown-linux-gnu
[INFO] [stderr] 
[INFO] [stderr] note: compiler flags: --crate-type lib
[INFO] [stderr] 
[INFO] [stderr] note: some of the compiler flags provided by cargo are hidden
[INFO] [stderr] 
[INFO] [stderr] query stack during panic:
[INFO] [stderr] end of query stack
[INFO] [stderr] error: could not document `api_xai`
[INFO] running `Command { std: "docker" "inspect" "5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4", kill_on_drop: false }`
[INFO] [stdout] 5ba1552886479745ddc610713f203d78cebda58b8c9ca8689038c52bdaef8aa4
