[INFO] cloning repository https://github.com/fahimuntasin/kontrocode
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fahimuntasin/kontrocode" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffahimuntasin%2Fkontrocode", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffahimuntasin%2Fkontrocode'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 78acf403d24c1be348a21d2b806c8244da952906
[INFO] checking fahimuntasin/kontrocode against a621e2b446eafb53c7a8569f225e0b8cc2429a68 for pr-162600
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffahimuntasin%2Fkontrocode" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/fahimuntasin/kontrocode
[INFO] finished tweaking git repo https://github.com/fahimuntasin/kontrocode
[INFO] tweaked toml for git repo https://github.com/fahimuntasin/kontrocode written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/fahimuntasin/kontrocode on toolchain a621e2b446eafb53c7a8569f225e0b8cc2429a68
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a621e2b446eafb53c7a8569f225e0b8cc2429a68" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/fahimuntasin/kontrocode 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" "+a621e2b446eafb53c7a8569f225e0b8cc2429a68" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[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] 3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c
[INFO] running `Command { std: "docker" "start" "3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c", 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" "3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c" "/opt/rustwide/cargo-home/bin/cargo" "+a621e2b446eafb53c7a8569f225e0b8cc2429a68" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c", 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" "3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c" "/opt/rustwide/cargo-home/bin/cargo" "+a621e2b446eafb53c7a8569f225e0b8cc2429a68" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking itoa v1.0.18
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]     Checking litemap v0.8.2
[INFO] [stderr]     Checking writeable v0.6.3
[INFO] [stderr]     Checking utf8_iter v1.0.4
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking bitflags v2.12.1
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]     Checking fastrand v2.4.1
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking winnow v0.5.40
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]     Checking try-lock v0.2.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking http v1.4.1
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking iana-time-zone v0.1.65
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]     Checking want v0.3.1
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking ipnet v2.12.0
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking socket2 v0.6.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking webpki-roots v1.0.7
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking arc-swap v1.9.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking dyn-clone v1.0.20
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.13
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking piper v0.2.5
[INFO] [stderr]     Checking fixedbitset v0.5.7
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]    Compiling agent-client-protocol-derive v0.13.1
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking shell-words v1.1.1
[INFO] [stderr]     Checking rustc-hash v2.1.2
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking pin-project v1.1.13
[INFO] [stderr]     Checking futures-concurrency v7.7.1
[INFO] [stderr]     Checking uuid v1.23.2
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking strum v0.28.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking toml_datetime v0.6.3
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking toml_edit v0.20.2
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling serde_with_macros v3.21.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking jsonrpcmsg v0.1.2
[INFO] [stderr]     Checking schemars v1.2.1
[INFO] [stderr]     Checking serde_with v3.21.0
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking async-signal v0.2.14
[INFO] [stderr]     Checking async-process v2.5.0
[INFO] [stderr]     Checking toml v0.8.2
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking kontrocode-core v0.1.0 (/opt/rustwide/workdir/crates/kontrocode-core)
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-core/src/lib.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod embedding;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-core/src/lib.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]    --> crates/kontrocode-core/src/config/mod.rs:262:1
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub mod mcp;
[INFO] [stdout]     | ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct McpServerConfig {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub description: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub command: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub args: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub env: HashMap<String, String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct McpRegistry {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub servers: HashMap<String, McpServerConfig>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn load_bundled() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn get(&self, id: &str) -> Option<&McpServerConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn list(&self) -> Vec<&String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn resolve_env(&self, config: &McpServerConfig) -> HashMap<String, String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct TemplateConfig {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub stack: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub category: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub featured: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub command: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub args: Option<Vec<String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub env: HashMap<String, String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub mcp_required: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:69:1
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct TemplateRegistry {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub templates: HashMap<String, TemplateConfig>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn load_bundled() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn featured(&self) -> Vec<&TemplateConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn by_stack(&self, stack: &str) -> Vec<&TemplateConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn by_category(&self, category: &str) -> Vec<&TemplateConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Embedding {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub model: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub vector: Vec<f32>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub dimensions: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn cosine_similarity(&self, other: &Embedding) -> f64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn zero(dimensions: usize) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct EmbeddedFact {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fact_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub text: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub confidence: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub embedding: Embedding,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-core/src/lib.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod embedding;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-core/src/lib.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]    --> crates/kontrocode-core/src/config/mod.rs:262:1
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub mod mcp;
[INFO] [stdout]     | ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct McpServerConfig {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub description: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/config/mcp.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub command: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub args: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub env: HashMap<String, String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct McpRegistry {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub servers: HashMap<String, McpServerConfig>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn load_bundled() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn get(&self, id: &str) -> Option<&McpServerConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn list(&self) -> Vec<&String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn resolve_env(&self, config: &McpServerConfig) -> HashMap<String, String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct TemplateConfig {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub stack: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub category: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub featured: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub command: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub args: Option<Vec<String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub env: HashMap<String, String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub mcp_required: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:69:1
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct TemplateRegistry {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub templates: HashMap<String, TemplateConfig>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn load_bundled() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn featured(&self) -> Vec<&TemplateConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn by_stack(&self, stack: &str) -> Vec<&TemplateConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/config/mcp.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn by_category(&self, category: &str) -> Vec<&TemplateConfig> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Embedding {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub model: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub vector: Vec<f32>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-core/src/embedding.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub dimensions: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn cosine_similarity(&self, other: &Embedding) -> f64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn zero(dimensions: usize) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct EmbeddedFact {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fact_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub text: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub confidence: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-core/src/embedding.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub embedding: Embedding,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking agent-client-protocol-schema v0.13.5
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking kontrocode-router v0.1.0 (/opt/rustwide/workdir/crates/kontrocode-router)
[INFO] [stdout] warning: unused import: `std::sync::LazyLock`
[INFO] [stdout]  --> crates/kontrocode-router/src/providers/generic.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::LazyLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> crates/kontrocode-router/src/monitor.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         (lats.iter().sum::<u64>() / lats.len() as u64)
[INFO] [stdout]    |         ^                                            ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 60 -         (lats.iter().sum::<u64>() / lats.len() as u64)
[INFO] [stdout] 60 +         lats.iter().sum::<u64>() / lats.len() as u64
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::LazyLock`
[INFO] [stdout]  --> crates/kontrocode-router/src/providers/generic.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::LazyLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> crates/kontrocode-router/src/monitor.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         (lats.iter().sum::<u64>() / lats.len() as u64)
[INFO] [stdout]    |         ^                                            ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 60 -         (lats.iter().sum::<u64>() / lats.len() as u64)
[INFO] [stdout] 60 +         lats.iter().sum::<u64>() / lats.len() as u64
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `model`
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:155:28
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn estimate(&self, model: &str, estimated_tokens: u32) -> f64 {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ProviderConfig` is more private than the item `GenericProvider::new`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn new(config: ProviderConfig, api_key: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `GenericProvider::new` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ProviderConfig` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct ProviderConfig {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ProviderConfig` is more private than the item `GenericProvider::from_env`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn from_env(config: ProviderConfig) -> Option<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `GenericProvider::from_env` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ProviderConfig` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct ProviderConfig {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod embedding;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub mod providers;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub mod monitor;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub mod auto_connect;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-router/src/embedding.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct EmbeddingClient {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/embedding.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(api_key: String, model: &str) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/embedding.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn from_env() -> Option<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/embedding.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub async fn embed(&self, text: &str) -> Result<Embedding> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct GenericProvider {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn new(config: ProviderConfig, api_key: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn from_env(config: ProviderConfig) -> Option<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:153:1
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn openai_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn deepseek_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:226:1
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn groq_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn google_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:280:1
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn xai_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:307:1
[INFO] [stdout]     |
[INFO] [stdout] 307 | pub fn mistral_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:334:1
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub fn anthropic_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:372:1
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn create_openai() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:384:1
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_deepseek() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:396:1
[INFO] [stdout]     |
[INFO] [stdout] 396 | pub fn create_groq() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:408:1
[INFO] [stdout]     |
[INFO] [stdout] 408 | pub fn create_google() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:420:1
[INFO] [stdout]     |
[INFO] [stdout] 420 | pub fn create_xai() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:432:1
[INFO] [stdout]     |
[INFO] [stdout] 432 | pub fn create_mistral() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub fn create_anthropic() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:456:1
[INFO] [stdout]     |
[INFO] [stdout] 456 | pub fn together_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:464:1
[INFO] [stdout]     |
[INFO] [stdout] 464 | pub fn fireworks_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:472:1
[INFO] [stdout]     |
[INFO] [stdout] 472 | pub fn create_together() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:480:1
[INFO] [stdout]     |
[INFO] [stdout] 480 | pub fn create_fireworks() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:488:1
[INFO] [stdout]     |
[INFO] [stdout] 488 | pub fn sonic_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:495:1
[INFO] [stdout]     |
[INFO] [stdout] 495 | pub fn create_sonic() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-router/src/monitor.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct LatencyRecord {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/monitor.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub model: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub latency_ms: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub success: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub tokens_input: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub tokens_output: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct HealthMonitor {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn record(&self, record: LatencyRecord) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn p95_latency(&self, model: &str) -> u64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn avg_latency(&self, model: &str) -> u64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn is_healthy(&self, model: &str) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn total_cost(&self) -> f64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn set_budget_cap(&self, cap: Option<f64>) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn is_over_budget(&self) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn export_csv(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:98:5
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn dashboard(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:131:1
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum RoutingMode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 132 |     CostOptimized,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 133 |     SpeedOptimized,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 |     QualityOptimized,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 |     Balanced,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:138:1
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct CostTracker {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:148:5
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub fn add_usage(&mut self, model: &str, input_tokens: u32, output_tokens: u32) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn estimate(&self, model: &str, estimated_tokens: u32) -> f64 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub fn cheapest_model(&self) -> Option<&str> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 165 |     pub fn to_csv(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct DetectedTool {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub provider_id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub status: ToolStatus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub endpoint: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub models: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub one_click: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:34
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    |                                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:48
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    |                                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct AutoConnector {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub tools: Vec<DetectedTool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn scan() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/auto_connect.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub fn connected_count(&self) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/auto_connect.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub fn render_dashboard(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/auto_connect.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn render_one_click(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `model`
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:155:28
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn estimate(&self, model: &str, estimated_tokens: u32) -> f64 {
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_model`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ProviderConfig` is more private than the item `GenericProvider::new`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn new(config: ProviderConfig, api_key: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `GenericProvider::new` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ProviderConfig` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct ProviderConfig {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ProviderConfig` is more private than the item `GenericProvider::from_env`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn from_env(config: ProviderConfig) -> Option<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `GenericProvider::from_env` is reachable at visibility `pub`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `ProviderConfig` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct ProviderConfig {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod embedding;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub mod providers;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub mod monitor;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-router/src/lib.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub mod auto_connect;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-router/src/embedding.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct EmbeddingClient {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/embedding.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(api_key: String, model: &str) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/embedding.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn from_env() -> Option<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/embedding.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub async fn embed(&self, text: &str) -> Result<Embedding> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct GenericProvider {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn new(config: ProviderConfig, api_key: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/providers/generic.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn from_env(config: ProviderConfig) -> Option<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:153:1
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn openai_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn deepseek_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:226:1
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn groq_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub fn google_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:280:1
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn xai_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:307:1
[INFO] [stdout]     |
[INFO] [stdout] 307 | pub fn mistral_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:334:1
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub fn anthropic_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:372:1
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn create_openai() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:384:1
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn create_deepseek() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:396:1
[INFO] [stdout]     |
[INFO] [stdout] 396 | pub fn create_groq() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:408:1
[INFO] [stdout]     |
[INFO] [stdout] 408 | pub fn create_google() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:420:1
[INFO] [stdout]     |
[INFO] [stdout] 420 | pub fn create_xai() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:432:1
[INFO] [stdout]     |
[INFO] [stdout] 432 | pub fn create_mistral() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:444:1
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub fn create_anthropic() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:456:1
[INFO] [stdout]     |
[INFO] [stdout] 456 | pub fn together_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:464:1
[INFO] [stdout]     |
[INFO] [stdout] 464 | pub fn fireworks_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:472:1
[INFO] [stdout]     |
[INFO] [stdout] 472 | pub fn create_together() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:480:1
[INFO] [stdout]     |
[INFO] [stdout] 480 | pub fn create_fireworks() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:488:1
[INFO] [stdout]     |
[INFO] [stdout] 488 | pub fn sonic_models() -> Vec<ModelSpec> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-router/src/providers/generic.rs:495:1
[INFO] [stdout]     |
[INFO] [stdout] 495 | pub fn create_sonic() -> Option<GenericProvider> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-router/src/monitor.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct LatencyRecord {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/monitor.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub model: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub latency_ms: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub success: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub tokens_input: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub tokens_output: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct HealthMonitor {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn record(&self, record: LatencyRecord) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn p95_latency(&self, model: &str) -> u64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn avg_latency(&self, model: &str) -> u64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn is_healthy(&self, model: &str) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn total_cost(&self) -> f64 {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn set_budget_cap(&self, cap: Option<f64>) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn is_over_budget(&self) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn export_csv(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-router/src/monitor.rs:98:5
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn dashboard(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:131:1
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum RoutingMode {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 132 |     CostOptimized,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 133 |     SpeedOptimized,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 |     QualityOptimized,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 |     Balanced,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:138:1
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct CostTracker {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:148:5
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub fn add_usage(&mut self, model: &str, input_tokens: u32, output_tokens: u32) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub fn estimate(&self, model: &str, estimated_tokens: u32) -> f64 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub fn cheapest_model(&self) -> Option<&str> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/monitor.rs:165:5
[INFO] [stdout]     |
[INFO] [stdout] 165 |     pub fn to_csv(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct DetectedTool {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub provider_id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub status: ToolStatus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-router/src/auto_connect.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub endpoint: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub models: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub one_click: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    |                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:34
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    |                                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:15:48
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ToolStatus { Connected, NotInstalled, Error(String) }
[INFO] [stdout]    |                                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct AutoConnector {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub tools: Vec<DetectedTool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-router/src/auto_connect.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn scan() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/auto_connect.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub fn connected_count(&self) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/auto_connect.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub fn render_dashboard(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-router/src/auto_connect.rs:127:5
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn render_one_click(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking redis v0.27.6
[INFO] [stderr]     Checking agent-client-protocol v0.13.1
[INFO] [stderr]     Checking kontrocode-research v0.1.0 (/opt/rustwide/workdir/crates/kontrocode-research)
[INFO] [stderr]     Checking kontrocode-memory v0.1.0 (/opt/rustwide/workdir/crates/kontrocode-memory)
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> crates/kontrocode-memory/src/redis_store.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> crates/kontrocode-memory/src/collector.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> crates/kontrocode-memory/src/enhanced.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserialize`
[INFO] [stdout]  --> crates/kontrocode-research/src/sources/docs.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde::Deserialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hidden lifetime parameters in types are deprecated
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
[INFO] [stdout]    |                           -----^^^^^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           expected lifetime parameter
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | #![warn(rust_2018_idioms)]
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(elided_lifetimes_in_paths)]` implied by `#[warn(rust_2018_idioms)]`
[INFO] [stdout] help: indicate the anonymous lifetime
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
[INFO] [stdout]    |                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserialize`
[INFO] [stdout]  --> crates/kontrocode-research/src/sources/docs.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde::Deserialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hidden lifetime parameters in types are deprecated
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
[INFO] [stdout]    |                           -----^^^^^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           expected lifetime parameter
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | #![warn(rust_2018_idioms)]
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(elided_lifetimes_in_paths)]` implied by `#[warn(rust_2018_idioms)]`
[INFO] [stdout] help: indicate the anonymous lifetime
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
[INFO] [stdout]    |                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> crates/kontrocode-memory/src/redis_store.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::json`
[INFO] [stdout]  --> crates/kontrocode-memory/src/collector.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde_json::json;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> crates/kontrocode-memory/src/enhanced.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FACTS_HASH` is never used
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const FACTS_HASH: &str = "kontrocode:facts";
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `base_path` is never read
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub struct ProfileVersioner {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 151 |     history: Vec<ProfileVersion>,
[INFO] [stdout] 152 |     base_path: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub mod redis_store;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub mod collector;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub mod enhanced;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct RedisMemoryStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub async fn connect(redis_url: &str) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn from_env() -> Option<String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SignalCollector {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(redis_url: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn from_env() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn record(&mut self, signal: Signal) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn flush(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:77:1
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn extract_fact_from_signal(signal: &Signal) -> Option<Fact> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-memory/src/enhanced.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct InterestNode {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub topic: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub score: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub related: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub last_updated: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub hit_count: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn decay(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct InterestGraph {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub nodes: HashMap<String, InterestNode>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub edges: Vec<(String, String, f64)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn from_profile(profile: &Profile) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn boost(&mut self, topic: &str, delta: f64) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn connect(&mut self, from: &str, to: &str, weight: f64) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn top_topics(&self, n: usize) -> Vec<&InterestNode> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn to_profile_summary(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct ContradictionResolver;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn resolve(new_fact: &Fact, existing: &[Fact]) -> Fact {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:143:1
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub struct ProfileVersion {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     pub version: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 145 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub snapshot: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub change_type: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:150:1
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub struct ProfileVersioner {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn new(base_path: &str) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:160:5
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub fn save_version(&mut self, profile: &Profile, change_type: &str) -> u64 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:178:5
[INFO] [stdout]     |
[INFO] [stdout] 178 |     pub fn audit_trail(&self, last_n: usize) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:188:1
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct ColdStartHandler;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub fn is_cold(profile: &Profile) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub fn bootstrap(profile: &mut Profile, stack_name: &str, language: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:207:5
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn is_usable(profile: &Profile) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub fn onboarding_message(profile: &Profile) -> Option<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub struct PinnedContext {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:223:5
[INFO] [stdout]     |
[INFO] [stdout] 223 |     pub facts: Vec<Fact>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub max_pins: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:228:5
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 |     pub fn pin(&mut self, fact: Fact) -> Result<(), String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:241:5
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub fn unpin(&mut self, id: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:245:5
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn list(&self) -> &[Fact] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub fn to_prompt_injection(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub struct CompileFeedback;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn record_success(interests: &mut InterestGraph, stack_name: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:266:5
[INFO] [stdout]     |
[INFO] [stdout] 266 |     pub fn record_failure(interests: &mut InterestGraph, error: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:280:1
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn memory_panel_render(profile: &Profile, pins: &PinnedContext, versioner: &ProfileVersioner) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FACTS_HASH` is never used
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const FACTS_HASH: &str = "kontrocode:facts";
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `base_path` is never read
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub struct ProfileVersioner {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 151 |     history: Vec<ProfileVersion>,
[INFO] [stdout] 152 |     base_path: String,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub mod redis_store;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub mod collector;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-memory/src/lib.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub mod enhanced;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct RedisMemoryStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub async fn connect(redis_url: &str) -> Result<Self> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/redis_store.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn from_env() -> Option<String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SignalCollector {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(redis_url: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn from_env() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn record(&mut self, signal: Signal) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub fn flush(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-memory/src/collector.rs:77:1
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn extract_fact_from_signal(signal: &Signal) -> Option<Fact> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-memory/src/enhanced.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct InterestNode {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub topic: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub score: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub related: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub last_updated: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub hit_count: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn decay(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct InterestGraph {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub nodes: HashMap<String, InterestNode>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub edges: Vec<(String, String, f64)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn from_profile(profile: &Profile) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn boost(&mut self, topic: &str, delta: f64) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn connect(&mut self, from: &str, to: &str, weight: f64) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub fn top_topics(&self, n: usize) -> Vec<&InterestNode> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn to_profile_summary(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct ContradictionResolver;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-memory/src/enhanced.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn resolve(new_fact: &Fact, existing: &[Fact]) -> Fact {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:143:1
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub struct ProfileVersion {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     pub version: u64,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 145 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub snapshot: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:147:5
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub change_type: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:150:1
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub struct ProfileVersioner {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn new(base_path: &str) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:160:5
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub fn save_version(&mut self, profile: &Profile, change_type: &str) -> u64 {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:178:5
[INFO] [stdout]     |
[INFO] [stdout] 178 |     pub fn audit_trail(&self, last_n: usize) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:188:1
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct ColdStartHandler;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub fn is_cold(profile: &Profile) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub fn bootstrap(profile: &mut Profile, stack_name: &str, language: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:207:5
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn is_usable(profile: &Profile) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub fn onboarding_message(profile: &Profile) -> Option<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub struct PinnedContext {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:223:5
[INFO] [stdout]     |
[INFO] [stdout] 223 |     pub facts: Vec<Fact>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub max_pins: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:228:5
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 |     pub fn pin(&mut self, fact: Fact) -> Result<(), String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:241:5
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub fn unpin(&mut self, id: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:245:5
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn list(&self) -> &[Fact] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub fn to_prompt_injection(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:258:1
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub struct CompileFeedback;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 261 |     pub fn record_success(interests: &mut InterestGraph, stack_name: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:266:5
[INFO] [stdout]     |
[INFO] [stdout] 266 |     pub fn record_failure(interests: &mut InterestGraph, error: &str) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-memory/src/enhanced.rs:280:1
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn memory_panel_render(profile: &Profile, pins: &PinnedContext, versioner: &ProfileVersioner) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:91:39
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 ResearchStatus::Error(e) => parts.push(format!("{}:✗", event.source)),
[INFO] [stdout]    |                                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cache_ttl` is never read
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct CachedSource<S: ResearchSource> {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     cache_ttl: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLUTTER_API` is never used
[INFO] [stdout]  --> crates/kontrocode-research/src/sources/docs.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const FLUTTER_API: &str = "https://api.flutter.dev/flutter";
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOCS_RS` is never used
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const DOCS_RS: &str = "https://docs.rs";
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NODEJS_DOCS` is never used
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NODEJS_DOCS: &str = "https://nodejs.org/api";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DocsScraper` is never constructed
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DocsScraper {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `scrape_flutter`, `scrape_docs_rs`, and `scrape_nodejs` are never used
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl DocsScraper {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     async fn scrape_flutter(&self, topic: &str) -> Result<Vec<ResearchCandidate>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     async fn scrape_docs_rs(&self, topic: &str) -> Result<Vec<ResearchCandidate>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     async fn scrape_nodejs(&self, topic: &str) -> Result<Vec<ResearchCandidate>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub mod cache;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod sources;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub mod version_resolver;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub mod feed;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct RedisResearchCache {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub async fn connect(redis_url: &str, ttl_seconds: u64) -> Result<Self, kontrocode_core::Error> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub async fn default_connect() -> Result<Self, kontrocode_core::Error> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn full_key(&self, source: &str, stack: &str, topic: &str) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | /     pub async fn get_cached(
[INFO] [stdout] 46 | |         &self,
[INFO] [stdout] 47 | |         source: &str,
[INFO] [stdout] 48 | |         stack: &str,
[INFO] [stdout] 49 | |         topic: &str,
[INFO] [stdout] 50 | |     ) -> Option<Vec<ResearchCandidate>> {
[INFO] [stdout]    | |_______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | /     pub async fn set_cached(
[INFO] [stdout] 58 | |         &self,
[INFO] [stdout] 59 | |         source: &str,
[INFO] [stdout] 60 | |         stack: &str,
[INFO] [stdout] 61 | |         topic: &str,
[INFO] [stdout] 62 | |         candidates: &[ResearchCandidate],
[INFO] [stdout] 63 | |     ) -> Result<(), kontrocode_core::Error> {
[INFO] [stdout]    | |___________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:79:1
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct CachedSource<S: ResearchSource> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn new(source: S, cache: RedisResearchCache) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct PubDevSource {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:64:1
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct NpmSource {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn new() -> Self { Self { client: Client::new() } }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-research/src/sources/real.rs:121:1
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct CratesIoSource {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-research/src/sources/real.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn new() -> Self { Self { client: Client::new() } }
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct DepInfo {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub version: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub source: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub is_direct: bool,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ConflictReport {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub conflicts: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub warnings: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub suggestions: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct VersionResolver;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn check_conflicts(deps: &[DepInfo]) -> ConflictReport {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn parse_cargo_toml(path: &Path) -> Option<Vec<DepInfo>> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn parse_package_json(path: &Path) -> Option<Vec<DepInfo>> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-research/src/version_resolver.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn parse_pubspec(path: &Path) -> Option<Vec<DepInfo>> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ResearchEvent {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub source: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub status: ResearchStatus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub message: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub timestamp: Instant,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum ResearchStatus {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     Started,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Fetching,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     CacheHit,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     CacheMiss,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Done(usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Error(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct ResearchFeed {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn push(&mut self, source: &str, status: ResearchStatus, message: &str) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn render(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn render_compact(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:98:5
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn accordion_json(&self) -> serde_json::Value {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking kontrocode-agent v0.1.0 (/opt/rustwide/workdir/crates/kontrocode-agent)
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:91:39
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 ResearchStatus::Error(e) => parts.push(format!("{}:✗", event.source)),
[INFO] [stdout]    |                                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cache_ttl` is never read
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct CachedSource<S: ResearchSource> {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     cache_ttl: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLUTTER_API` is never used
[INFO] [stdout]  --> crates/kontrocode-research/src/sources/docs.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const FLUTTER_API: &str = "https://api.flutter.dev/flutter";
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOCS_RS` is never used
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const DOCS_RS: &str = "https://docs.rs";
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NODEJS_DOCS` is never used
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const NODEJS_DOCS: &str = "https://nodejs.org/api";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DocsScraper` is never constructed
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DocsScraper {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `scrape_flutter`, `scrape_docs_rs`, and `scrape_nodejs` are never used
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/docs.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl DocsScraper {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     async fn scrape_flutter(&self, topic: &str) -> Result<Vec<ResearchCandidate>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     async fn scrape_docs_rs(&self, topic: &str) -> Result<Vec<ResearchCandidate>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     async fn scrape_nodejs(&self, topic: &str) -> Result<Vec<ResearchCandidate>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub mod cache;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod sources;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub mod version_resolver;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-research/src/lib.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub mod feed;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct RedisResearchCache {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub async fn connect(redis_url: &str, ttl_seconds: u64) -> Result<Self, kontrocode_core::Error> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub async fn default_connect() -> Result<Self, kontrocode_core::Error> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn full_key(&self, source: &str, stack: &str, topic: &str) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | /     pub async fn get_cached(
[INFO] [stdout] 46 | |         &self,
[INFO] [stdout] 47 | |         source: &str,
[INFO] [stdout] 48 | |         stack: &str,
[INFO] [stdout] 49 | |         topic: &str,
[INFO] [stdout] 50 | |     ) -> Option<Vec<ResearchCandidate>> {
[INFO] [stdout]    | |_______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | /     pub async fn set_cached(
[INFO] [stdout] 58 | |         &self,
[INFO] [stdout] 59 | |         source: &str,
[INFO] [stdout] 60 | |         stack: &str,
[INFO] [stdout] 61 | |         topic: &str,
[INFO] [stdout] 62 | |         candidates: &[ResearchCandidate],
[INFO] [stdout] 63 | |     ) -> Result<(), kontrocode_core::Error> {
[INFO] [stdout]    | |___________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:79:1
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct CachedSource<S: ResearchSource> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/cache/redis.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn new(source: S, cache: RedisResearchCache) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct PubDevSource {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:64:1
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct NpmSource {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/sources/real.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn new() -> Self { Self { client: Client::new() } }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-research/src/sources/real.rs:121:1
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct CratesIoSource {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-research/src/sources/real.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn new() -> Self { Self { client: Client::new() } }
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct DepInfo {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub version: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub source: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/version_resolver.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub is_direct: bool,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ConflictReport {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub conflicts: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub warnings: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub suggestions: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct VersionResolver;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub fn check_conflicts(deps: &[DepInfo]) -> ConflictReport {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn parse_cargo_toml(path: &Path) -> Option<Vec<DepInfo>> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/version_resolver.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn parse_package_json(path: &Path) -> Option<Vec<DepInfo>> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-research/src/version_resolver.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn parse_pubspec(path: &Path) -> Option<Vec<DepInfo>> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ResearchEvent {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub source: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub status: ResearchStatus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub message: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-research/src/feed.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub timestamp: Instant,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum ResearchStatus {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     Started,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Fetching,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     CacheHit,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     CacheMiss,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Done(usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Error(String),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct ResearchFeed {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn push(&mut self, source: &str, status: ResearchStatus, message: &str) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn render(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn render_compact(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-research/src/feed.rs:98:5
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn accordion_json(&self) -> serde_json::Value {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> crates/kontrocode-agent/src/mcp_runtime.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hidden lifetime parameters in types are deprecated
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:24:32
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
[INFO] [stdout]    |                           -----^^^^^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           expected lifetime parameter
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | #![warn(rust_2018_idioms)]
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(elided_lifetimes_in_paths)]` implied by `#[warn(rust_2018_idioms)]`
[INFO] [stdout] help: indicate the anonymous lifetime
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
[INFO] [stdout]    |                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> crates/kontrocode-agent/src/mcp_runtime.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hidden lifetime parameters in types are deprecated
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:24:32
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
[INFO] [stdout]    |                           -----^^^^^^^^^
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           expected lifetime parameter
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | #![warn(rust_2018_idioms)]
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(elided_lifetimes_in_paths)]` implied by `#[warn(rust_2018_idioms)]`
[INFO] [stdout] help: indicate the anonymous lifetime
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
[INFO] [stdout]    |                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]   --> crates/kontrocode-agent/src/acp.rs:33:29
[INFO] [stdout]    |
[INFO] [stdout] 33 |                 async move |req: NewSessionRequest, responder, _cx| {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `req`
[INFO] [stdout]   --> crates/kontrocode-agent/src/acp.rs:33:29
[INFO] [stdout]    |
[INFO] [stdout] 33 |                 async move |req: NewSessionRequest, responder, _cx| {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_req`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 |     for (i, line) in lines.iter().enumerate() {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `language`
[INFO] [stdout]    --> crates/kontrocode-agent/src/completion.rs:128:31
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn common_patterns(&self, language: &str, file_path: &str) -> Option<String> {
[INFO] [stdout]     |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_language`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:199:43
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn generate_rust_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:206:45
[INFO] [stdout]     |
[INFO] [stdout] 206 |     fn generate_python_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:213:41
[INFO] [stdout]     |
[INFO] [stdout] 213 |     fn generate_js_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:220:41
[INFO] [stdout]     |
[INFO] [stdout] 220 |     fn generate_go_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:227:27
[INFO] [stdout]     |
[INFO] [stdout] 227 |     fn generate_dart_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:227:43
[INFO] [stdout]     |
[INFO] [stdout] 227 |     fn generate_dart_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod acp;
[INFO] [stdout]    | ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod decide;
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub mod hooks;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub mod rules;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub mod mcp_runtime;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub mod bugbot;
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub mod diff;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub mod completion;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub mod multi_agent;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub mod capabilities;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:34:1
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub mod mission_control;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub mod codegen;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub mod platform;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/acp.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_acp_agent(_agent: KontrocodeAgent) -> agent_client_protocol::Result<()> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Decision {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     pub winner: ResearchCandidate,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub confidence: f64,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub alternatives: Vec<ResearchCandidate>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub reasoning: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/decide.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn decide(mut candidates: Vec<ResearchCandidate>) -> Option<Decision> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/decide.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn validate_deprecation(candidates: &[ResearchCandidate]) -> Vec<String> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/decide.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | / pub fn validate_version_conflict(
[INFO] [stdout] 42 | |     deps: &[(String, String)],
[INFO] [stdout] 43 | | ) -> Vec<String> {
[INFO] [stdout]    | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct HookResult {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub passed: bool,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub stdout: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub stderr: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct HookRunner {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new(project_root: &Path) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn is_blocked(&self, tool: &str) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn pre_tool(&self, tool: &str, args: &str) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn post_tool(&self, tool: &str, args: &str) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn pre_generate(&self) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn post_generate(&self) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub fn pre_research(&self) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/hooks.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn post_research(&self) -> Option<HookResult> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/hooks.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn pre_shell(&self, command: &str) -> Option<HookResult> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/hooks.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub fn init(project_root: &Path) -> std::io::Result<()> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Rule {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub path: PathBuf,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub content: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub rule_type: RuleType,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum RuleType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Always,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     AgentRequested,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Manual,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn from_path(path: &Path) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn load_rules(project_root: &Path) -> Vec<Rule> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:68:1
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn build_rules_prompt(rules: &[Rule]) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-agent/src/rules.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn init_rules(project_root: &Path) -> std::io::Result<()> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/mcp_runtime.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct McpManager {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn servers(&self) -> Vec<(&String, &McpServerConfig)> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub async fn connect(&mut self, server_id: &str) -> Result<(), String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub async fn connect_all(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub async fn disconnect(&mut self, server_id: &str) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub async fn shutdown(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn active_count(&self) -> usize {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:95:1
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn list_available_mcps() -> Vec<String> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ReviewComment {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub file: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub line: Option<u32>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub text: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub severity: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ReviewResult {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub comments: Vec<ReviewComment>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn review_diff(diff_content: &str) -> anyhow::Result<ReviewResult> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct DiffHunk {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub file_path: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub old_start: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub new_start: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub header: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub lines: Vec<DiffLine>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum DiffLine {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     Context(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Addition(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     Deletion(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn to_unified(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn compute_diff(old: &str, new: &str) -> Vec<DiffHunk> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn apply_diff(original: &str, hunks: &[DiffHunk]) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-agent/src/diff.rs:105:1
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn unified_diff(hunks: &[DiffHunk]) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CompletionRequest {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub file_path: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub file_content: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub cursor_line: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub cursor_col: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub language: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub max_tokens: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct CompletionResponse {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub text: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub confidence: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub range_start_line: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub range_end_line: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CompletionEngine;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn complete(&self, req: &CompletionRequest) -> Vec<CompletionResponse> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Subtask {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub description: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub file_path: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub task_type: SubtaskType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub dependencies: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub status: SubtaskStatus,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum SubtaskType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Research,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     CodeGeneration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     FileWrite,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     ShellRun,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Validation,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Merge,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum SubtaskStatus {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Pending,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     InProgress,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Completed,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Failed(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct SubtaskResult {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub subtask_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub output: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub success: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct MultiAgentPlan {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub request: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub subtasks: Vec<Subtask>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 |     for (i, line) in lines.iter().enumerate() {
[INFO] [stdout]    |          ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub estimated_steps: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct TaskPlanner;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn plan(request: &str) -> MultiAgentPlan {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn execution_order(plan: &MultiAgentPlan) -> Vec<Vec<usize>> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:160:1
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct MultiAgentRunner {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 166 |     pub fn new(request: &str) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 |     pub fn subtask_count(&self) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:183:5
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn plan_summary(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:200:5
[INFO] [stdout]     |
[INFO] [stdout] 200 | /     pub async fn run_parallel<F, Fut>(&mut self, executor: F) -> Vec<SubtaskResult>
[INFO] [stdout] 201 | |     where
[INFO] [stdout] 202 | |         F: Fn(&Subtask) -> Fut,
[INFO] [stdout] 203 | |         Fut: std::future::Future<Output = SubtaskResult>,
[INFO] [stdout]     | |_________________________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/capabilities.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct SelfCorrector {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn attempts_left(&self) -> usize {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn should_retry(&self) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn record_attempt(&mut self, error: &str) -> Option<String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn run_compile_check(project_root: &PathBuf) -> Result<String, (String, usize)> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn extract_error_location(stderr: &str) -> Option<(String, usize)> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:79:1
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub enum ApprovalMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     Normal,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     Yolo,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     Background,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct AgentMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub approval: ApprovalMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub max_parallel_tasks: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn normal() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn yolo() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub fn background() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn should_prompt_for_approval(&self) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:108:1
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct ContextCompactor {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub fn new(max_tokens: usize) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub fn compact(&mut self, messages: &[String], system_prompt: &str) -> Vec<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:171:5
[INFO] [stdout]     |
[INFO] [stdout] 171 |     pub fn estimate_tokens(text: &str) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:175:5
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub fn needs_compaction(&self, messages: &[String]) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn compact_count(&self) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:185:1
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct TestGenerator;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub fn generate_test_for(filename: &str, code: &str, language: &str) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:234:1
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ScoutSubagent {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:239:5
[INFO] [stdout]     |
[INFO] [stdout] 239 |     pub fn new(project_root: PathBuf) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:243:5
[INFO] [stdout]     |
[INFO] [stdout] 243 |     pub fn explore(&self) -> Vec<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct AgentCell {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub task: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub status: CellStatus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub progress: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub tokens_used: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub file: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum CellStatus {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Queued,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Running,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Completed,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Failed,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct MissionControl {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn add_agent(&mut self, cell: AgentCell) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn update_agent(&mut self, id: &str, new_status: CellStatus, progress: f64) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub fn render(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn render_compact(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn total_agents(&self) -> usize { self.grid.len() }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/codegen.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct FileChange {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/codegen.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub path: PathBuf,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/codegen.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub original: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub modified: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub diff: Vec<DiffHunk>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub change_type: ChangeType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:32
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:42
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    |                                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct MultiFileOutput {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub files: Vec<FileChange>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub test_file: Option<FileChange>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub imports_added: Vec<(PathBuf, String)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub docs_generated: Vec<(PathBuf, String)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub self_corrections: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub errors_fixed: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct CodeGenerator {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn new(project_root: PathBuf) -> Self { Self { project_root } }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub fn generate_multi_file(&mut self, files: Vec<(PathBuf, String)>, language: &str) -> MultiFileOutput {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:80:1
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct Proposer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn generate_merge_pr(files: &[FileChange], title: &str, description: &str) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/codegen.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn official_pattern_enforce(code: &str, language: &str) -> Vec<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/platform.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SessionRecord {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/platform.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub messages: Vec<SessionMessage>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub stack: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub files_touched: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub duration_secs: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SessionMessage {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub role: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub content: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct SessionHistory {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn new(storage_path: PathBuf) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn add(&mut self, s: SessionRecord) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn search(&self, q: &str) -> Vec<&SessionRecord> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub fn len(&self) -> usize { self.sessions.len() }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:38
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:48
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn translate(&self, key: &str) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct Onboarding;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn flow(lang: ResponseLanguage, count: usize) -> Vec<String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct OfflineMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub local_model: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub fn can_work(&self) -> bool { self.local_model }
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:103:1
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct JiraClient {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub configured: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn from_env() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `language`
[INFO] [stdout]    --> crates/kontrocode-agent/src/completion.rs:128:31
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn common_patterns(&self, language: &str, file_path: &str) -> Option<String> {
[INFO] [stdout]     |                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_language`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:199:43
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn generate_rust_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:206:45
[INFO] [stdout]     |
[INFO] [stdout] 206 |     fn generate_python_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:213:41
[INFO] [stdout]     |
[INFO] [stdout] 213 |     fn generate_js_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:220:41
[INFO] [stdout]     |
[INFO] [stdout] 220 |     fn generate_go_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:227:27
[INFO] [stdout]     |
[INFO] [stdout] 227 |     fn generate_dart_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:227:43
[INFO] [stdout]     |
[INFO] [stdout] 227 |     fn generate_dart_test(filename: &str, code: &str) -> String {
[INFO] [stdout]     |                                           ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod acp;
[INFO] [stdout]    | ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the lint level is defined here
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | #![warn(missing_docs)]
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub mod decide;
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub mod hooks;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub mod rules;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub mod mcp_runtime;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub mod bugbot;
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub mod diff;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub mod completion;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub mod multi_agent;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub mod capabilities;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:34:1
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub mod mission_control;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub mod codegen;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> crates/kontrocode-agent/src/lib.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub mod platform;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/acp.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub async fn run_acp_agent(_agent: KontrocodeAgent) -> agent_client_protocol::Result<()> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Decision {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     pub winner: ResearchCandidate,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub confidence: f64,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub alternatives: Vec<ResearchCandidate>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/decide.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub reasoning: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/decide.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn decide(mut candidates: Vec<ResearchCandidate>) -> Option<Decision> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/decide.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn validate_deprecation(candidates: &[ResearchCandidate]) -> Vec<String> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/decide.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | / pub fn validate_version_conflict(
[INFO] [stdout] 42 | |     deps: &[(String, String)],
[INFO] [stdout] 43 | | ) -> Vec<String> {
[INFO] [stdout]    | |________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct HookResult {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub passed: bool,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub stdout: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/hooks.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub stderr: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct HookRunner {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new(project_root: &Path) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn is_blocked(&self, tool: &str) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn pre_tool(&self, tool: &str, args: &str) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn post_tool(&self, tool: &str, args: &str) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn pre_generate(&self) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn post_generate(&self) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/hooks.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub fn pre_research(&self) -> Option<HookResult> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/hooks.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn post_research(&self) -> Option<HookResult> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/hooks.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn pre_shell(&self, command: &str) -> Option<HookResult> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/hooks.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub fn init(project_root: &Path) -> std::io::Result<()> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Rule {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub path: PathBuf,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub content: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/rules.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub rule_type: RuleType,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum RuleType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Always,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     AgentRequested,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Manual,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn from_path(path: &Path) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn load_rules(project_root: &Path) -> Vec<Rule> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/rules.rs:68:1
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn build_rules_prompt(rules: &[Rule]) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-agent/src/rules.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn init_rules(project_root: &Path) -> std::io::Result<()> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/mcp_runtime.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct McpManager {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn servers(&self) -> Vec<(&String, &McpServerConfig)> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub async fn connect(&mut self, server_id: &str) -> Result<(), String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub async fn connect_all(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub async fn disconnect(&mut self, server_id: &str) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub async fn shutdown(&mut self) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn active_count(&self) -> usize {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/mcp_runtime.rs:95:1
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn list_available_mcps() -> Vec<String> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ReviewComment {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub file: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub line: Option<u32>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub text: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/bugbot.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub severity: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ReviewResult {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub comments: Vec<ReviewComment>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/bugbot.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn review_diff(diff_content: &str) -> anyhow::Result<ReviewResult> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct DiffHunk {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     pub file_path: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub old_start: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub new_start: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub header: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/diff.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub lines: Vec<DiffLine>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum DiffLine {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     Context(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Addition(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     Deletion(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn to_unified(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn compute_diff(old: &str, new: &str) -> Vec<DiffHunk> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]   --> crates/kontrocode-agent/src/diff.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn apply_diff(original: &str, hunks: &[DiffHunk]) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a function
[INFO] [stdout]    --> crates/kontrocode-agent/src/diff.rs:105:1
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn unified_diff(hunks: &[DiffHunk]) -> String {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct CompletionRequest {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub file_path: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub file_content: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub cursor_line: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/completion.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub cursor_col: usize,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub language: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub max_tokens: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct CompletionResponse {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub text: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub confidence: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub range_start_line: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub range_end_line: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:22:1
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CompletionEngine;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/completion.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn complete(&self, req: &CompletionRequest) -> Vec<CompletionResponse> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Subtask {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/multi_agent.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub description: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub file_path: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub task_type: SubtaskType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub dependencies: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub status: SubtaskStatus,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum SubtaskType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Research,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     CodeGeneration,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     FileWrite,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     ShellRun,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Validation,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     Merge,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum SubtaskStatus {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Pending,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     InProgress,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Completed,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Failed(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct SubtaskResult {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub subtask_id: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub output: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub success: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct MultiAgentPlan {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub request: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub subtasks: Vec<Subtask>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub estimated_steps: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct TaskPlanner;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/multi_agent.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn plan(request: &str) -> MultiAgentPlan {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn execution_order(plan: &MultiAgentPlan) -> Vec<Vec<usize>> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:160:1
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub struct MultiAgentRunner {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 166 |     pub fn new(request: &str) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 |     pub fn subtask_count(&self) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:183:5
[INFO] [stdout]     |
[INFO] [stdout] 183 |     pub fn plan_summary(&self) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/multi_agent.rs:200:5
[INFO] [stdout]     |
[INFO] [stdout] 200 | /     pub async fn run_parallel<F, Fut>(&mut self, executor: F) -> Vec<SubtaskResult>
[INFO] [stdout] 201 | |     where
[INFO] [stdout] 202 | |         F: Fn(&Subtask) -> Fut,
[INFO] [stdout] 203 | |         Fut: std::future::Future<Output = SubtaskResult>,
[INFO] [stdout]     | |_________________________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/capabilities.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct SelfCorrector {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn attempts_left(&self) -> usize {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn should_retry(&self) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn record_attempt(&mut self, error: &str) -> Option<String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn run_compile_check(project_root: &PathBuf) -> Result<String, (String, usize)> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn extract_error_location(stderr: &str) -> Option<(String, usize)> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:79:1
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub enum ApprovalMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     Normal,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     Yolo,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     Background,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct AgentMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub approval: ApprovalMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub max_parallel_tasks: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn normal() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn yolo() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/capabilities.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub fn background() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:103:5
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn should_prompt_for_approval(&self) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:108:1
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct ContextCompactor {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub fn new(max_tokens: usize) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub fn compact(&mut self, messages: &[String], system_prompt: &str) -> Vec<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:171:5
[INFO] [stdout]     |
[INFO] [stdout] 171 |     pub fn estimate_tokens(text: &str) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:175:5
[INFO] [stdout]     |
[INFO] [stdout] 175 |     pub fn needs_compaction(&self, messages: &[String]) -> bool {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 180 |     pub fn compact_count(&self) -> usize {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:185:1
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct TestGenerator;
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub fn generate_test_for(filename: &str, code: &str, language: &str) -> String {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:234:1
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ScoutSubagent {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:239:5
[INFO] [stdout]     |
[INFO] [stdout] 239 |     pub fn new(project_root: PathBuf) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/capabilities.rs:243:5
[INFO] [stdout]     |
[INFO] [stdout] 243 |     pub fn explore(&self) -> Vec<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct AgentCell {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     pub id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub name: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub task: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/mission_control.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub status: CellStatus,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub progress: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub tokens_used: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub file: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum CellStatus {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     Queued,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     Running,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     Completed,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Failed,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct MissionControl {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn add_agent(&mut self, cell: AgentCell) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn update_agent(&mut self, id: &str, new_status: CellStatus, progress: f64) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub fn render(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn render_compact(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/mission_control.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn total_agents(&self) -> usize { self.grid.len() }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/codegen.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct FileChange {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/codegen.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub path: PathBuf,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/codegen.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub original: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub modified: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub diff: Vec<DiffHunk>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub change_type: ChangeType,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:32
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:16:42
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ChangeType { NewFile, Modified, Deleted }
[INFO] [stdout]    |                                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct MultiFileOutput {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub files: Vec<FileChange>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub test_file: Option<FileChange>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     pub imports_added: Vec<(PathBuf, String)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub docs_generated: Vec<(PathBuf, String)>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub self_corrections: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub errors_fixed: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct CodeGenerator {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn new(project_root: PathBuf) -> Self { Self { project_root } }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub fn generate_multi_file(&mut self, files: Vec<(PathBuf, String)>, language: &str) -> MultiFileOutput {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:80:1
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct Proposer;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/codegen.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn generate_merge_pr(files: &[FileChange], title: &str, description: &str) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/codegen.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn official_pattern_enforce(code: &str, language: &str) -> Vec<String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> crates/kontrocode-agent/src/platform.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SessionRecord {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]  --> crates/kontrocode-agent/src/platform.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub id: String,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub messages: Vec<SessionMessage>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     pub stack: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub files_touched: Vec<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub duration_secs: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SessionMessage {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub role: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub content: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct SessionHistory {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn new(storage_path: PathBuf) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn add(&mut self, s: SessionRecord) {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn search(&self, q: &str) -> Vec<&SessionRecord> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub fn len(&self) -> usize { self.sessions.len() }
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:29
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:38
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:70:48
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub enum ResponseLanguage { English, Banglish, Bengali }
[INFO] [stdout]    |                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn translate(&self, key: &str) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct Onboarding;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn flow(lang: ResponseLanguage, count: usize) -> Vec<String> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct OfflineMode {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub local_model: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> crates/kontrocode-agent/src/platform.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub fn can_work(&self) -> bool { self.local_model }
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:103:1
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub struct JiraClient {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub configured: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> crates/kontrocode-agent/src/platform.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn from_env() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.92s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.27.6
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c", kill_on_drop: false }`
[INFO] [stdout] 3124761cca2b8becdce070f6b518c98b7ff38e49f66068f2f299f0e036c72c5c
