[INFO] fetching crate mdx-rust-analysis 1.0.0...
[INFO] documenting mdx-rust-analysis-1.0.0 against da3f5c31e5535b3dc210067de660a45784ae1e9c for pr-162169
[INFO] extracting crate mdx-rust-analysis 1.0.0 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate mdx-rust-analysis 1.0.0
[INFO] finished tweaking crates.io crate mdx-rust-analysis 1.0.0
[INFO] tweaked toml for crates.io crate mdx-rust-analysis 1.0.0 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate mdx-rust-analysis 1.0.0 on toolchain da3f5c31e5535b3dc210067de660a45784ae1e9c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate mdx-rust-analysis 1.0.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c
[INFO] running `Command { std: "docker" "start" "743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c", 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" "743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c", 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" "743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling tree-sitter-rust v0.24.2
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking streaming-iterator v0.1.9
[INFO] [stderr]     Checking syn v2.0.117
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking schemars v0.8.22
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking globset v0.4.18
[INFO] [stderr]     Checking ignore v0.4.25
[INFO] [stderr]    Compiling tree-sitter v0.26.9
[INFO] [stderr]  Documenting mdx-rust-analysis v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/bundler.rs:74:1
[INFO] [stdout]     |
[INFO] [stdout]  74 | / pub fn analyze_agent(root: &Path, custom_ignore: Option<&Path>) -> anyhow::Result<AgentBundle> {
[INFO] [stdout]  75 | |     let scope = build_bundle_scope(root, custom_ignore)?;
[INFO] [stdout]  76 | |     let mut bundle = AgentBundle {
[INFO] [stdout]  77 | |         scope,
[INFO] [stdout] ...   |
[INFO] [stdout] 119 | |     Ok(bundle)
[INFO] [stdout] 120 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Analyze an agent crate and return the source scope mdx-rust may inspect.`
[INFO] [stdout]     = help: ends near `Full analysis: walks the agent, extracts prompts/tools, identifies Rig usage.`
[INFO] [stdout]     = note: `#[deny(rustdoc::unportable_markdown)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/bundler.rs:74:1
[INFO] [stdout]     |
[INFO] [stdout]  74 | / pub fn analyze_agent(root: &Path, custom_ignore: Option<&Path>) -> anyhow::Result<AgentBundle> {
[INFO] [stdout]  75 | |     let scope = build_bundle_scope(root, custom_ignore)?;
[INFO] [stdout]  76 | |     let mut bundle = AgentBundle {
[INFO] [stdout]  77 | |         scope,
[INFO] [stdout] ...   |
[INFO] [stdout] 119 | |     Ok(bundle)
[INFO] [stdout] 120 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Full analysis: walks the agent, extracts prompts/tools, identifies Rig usage.`
[INFO] [stdout]     = help: ends near `Full analysis: walks the agent, extracts prompts/tools, identifies Rig usage.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/bundler.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | / pub fn build_bundle_scope(
[INFO] [stdout] 34 | |     root: &Path,
[INFO] [stdout] 35 | |     custom_ignore_file: Option<&Path>,
[INFO] [stdout] 36 | | ) -> anyhow::Result<BundleScope> {
[INFO] [stdout] ...  |
[INFO] [stdout] 70 | |     })
[INFO] [stdout] 71 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Analyze an agent crate and return the source scope mdx-rust may inspect.`
[INFO] [stdout]    = help: ends near `Builds the set of files we care about + runs finders on them.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/bundler.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | / pub fn build_bundle_scope(
[INFO] [stdout] 34 | |     root: &Path,
[INFO] [stdout] 35 | |     custom_ignore_file: Option<&Path>,
[INFO] [stdout] 36 | | ) -> anyhow::Result<BundleScope> {
[INFO] [stdout] ...  |
[INFO] [stdout] 70 | |     })
[INFO] [stdout] 71 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Builds the set of files we care about + runs finders on them.`
[INFO] [stdout]    = help: ends near `Builds the set of files we care about + runs finders on them.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/bundler.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | / pub struct AgentBundle {
[INFO] [stdout] 25 | |     pub scope: BundleScope,
[INFO] [stdout] 26 | |     pub preambles: Vec<ExtractedPrompt>,
[INFO] [stdout] 27 | |     pub tools: Vec<ExtractedTool>,
[INFO] [stdout] 28 | |     pub is_rig_agent: bool,
[INFO] [stdout] 29 | |     pub key_files: Vec<PathBuf>, // top files worth showing in full to the LLM
[INFO] [stdout] 30 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Analyze an agent crate and return the source scope mdx-rust may inspect.`
[INFO] [stdout]    = help: ends near `This is what gets summarized and sent to the LLM for high-quality diagnosis.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/bundler.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | / pub struct AgentBundle {
[INFO] [stdout] 25 | |     pub scope: BundleScope,
[INFO] [stdout] 26 | |     pub preambles: Vec<ExtractedPrompt>,
[INFO] [stdout] 27 | |     pub tools: Vec<ExtractedTool>,
[INFO] [stdout] 28 | |     pub is_rig_agent: bool,
[INFO] [stdout] 29 | |     pub key_files: Vec<PathBuf>, // top files worth showing in full to the LLM
[INFO] [stdout] 30 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Rich analysis result for an agent.`
[INFO] [stdout]    = help: ends near `Rich analysis result for an agent.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/bundler.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | / pub struct BundleScope {
[INFO] [stdout] 17 | |     pub optimizable_paths: Vec<PathBuf>,
[INFO] [stdout] 18 | |     pub read_only_paths: Vec<PathBuf>,
[INFO] [stdout] 19 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Analyze an agent crate and return the source scope mdx-rust may inspect.`
[INFO] [stdout]    = help: ends near `Basic file-level scope (what to send / edit).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/bundler.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | / pub struct BundleScope {
[INFO] [stdout] 17 | |     pub optimizable_paths: Vec<PathBuf>,
[INFO] [stdout] 18 | |     pub read_only_paths: Vec<PathBuf>,
[INFO] [stdout] 19 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Basic file-level scope (what to send / edit).`
[INFO] [stdout]    = help: ends near `Basic file-level scope (what to send / edit).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/finders.rs:67:1
[INFO] [stdout]     |
[INFO] [stdout]  67 | / pub fn find_preambles(source: &str, file_path: &Path) -> Vec<ExtractedPrompt> {
[INFO] [stdout]  68 | |     let mut prompts = vec![];
[INFO] [stdout] ...   |
[INFO] [stdout] 131 | |     prompts
[INFO] [stdout] 132 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Rust source finders used to identify prompts, tools, and entrypoints.`
[INFO] [stdout]     = help: ends near `Uses simple but effective tree-sitter + string heuristics for now.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/finders.rs:67:1
[INFO] [stdout]     |
[INFO] [stdout]  67 | / pub fn find_preambles(source: &str, file_path: &Path) -> Vec<ExtractedPrompt> {
[INFO] [stdout]  68 | |     let mut prompts = vec![];
[INFO] [stdout] ...   |
[INFO] [stdout] 131 | |     prompts
[INFO] [stdout] 132 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Extract preamble strings from Rig-style `.preamble("...")` calls.`
[INFO] [stdout]     = help: ends near `Extract preamble strings from Rig-style `.preamble("...")` calls.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/finders.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | / pub fn find_run_agent_functions(source: &str) -> Vec<AgentEntrypoint> {
[INFO] [stdout] 40 | |     let Some(tree) = parse_rust_source(source) else {
[INFO] [stdout] 41 | |         return vec![];
[INFO] [stdout] 42 | |     };
[INFO] [stdout] ...  |
[INFO] [stdout] 62 | |     entries
[INFO] [stdout] 63 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Rust source finders used to identify prompts, tools, and entrypoints.`
[INFO] [stdout]    = help: ends near `Find functions that look like agent entrypoints (run_agent, run, main agent fn).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/finders.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | / pub fn find_run_agent_functions(source: &str) -> Vec<AgentEntrypoint> {
[INFO] [stdout] 40 | |     let Some(tree) = parse_rust_source(source) else {
[INFO] [stdout] 41 | |         return vec![];
[INFO] [stdout] 42 | |     };
[INFO] [stdout] ...  |
[INFO] [stdout] 62 | |     entries
[INFO] [stdout] 63 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Find functions that look like agent entrypoints (run_agent, run, main agent fn).`
[INFO] [stdout]    = help: ends near `Find functions that look like agent entrypoints (run_agent, run, main agent fn).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/finders.rs:135:1
[INFO] [stdout]     |
[INFO] [stdout] 135 | / pub fn find_tools(source: &str, file_path: &Path) -> Vec<ExtractedTool> {
[INFO] [stdout] 136 | |     let mut tools = vec![];
[INFO] [stdout] 137 | |
[INFO] [stdout] 138 | |     for line in source.lines() {
[INFO] [stdout] ...   |
[INFO] [stdout] 159 | |     tools
[INFO] [stdout] 160 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Rust source finders used to identify prompts, tools, and entrypoints.`
[INFO] [stdout]     = help: ends near `Very rough tool extraction (looks for .tool( or tool definitions).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/finders.rs:135:1
[INFO] [stdout]     |
[INFO] [stdout] 135 | / pub fn find_tools(source: &str, file_path: &Path) -> Vec<ExtractedTool> {
[INFO] [stdout] 136 | |     let mut tools = vec![];
[INFO] [stdout] 137 | |
[INFO] [stdout] 138 | |     for line in source.lines() {
[INFO] [stdout] ...   |
[INFO] [stdout] 159 | |     tools
[INFO] [stdout] 160 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Very rough tool extraction (looks for .tool( or tool definitions).`
[INFO] [stdout]     = help: ends near `Very rough tool extraction (looks for .tool( or tool definitions).`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/finders.rs:163:1
[INFO] [stdout]     |
[INFO] [stdout] 163 | / pub fn looks_like_rig_agent(source: &str) -> bool {
[INFO] [stdout] 164 | |     source.contains("rig::") || source.contains(".agent(") || source.contains("preamble(")
[INFO] [stdout] 165 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Rust source finders used to identify prompts, tools, and entrypoints.`
[INFO] [stdout]     = help: ends near `Heuristic: does this source contain a Rig agent?`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/finders.rs:163:1
[INFO] [stdout]     |
[INFO] [stdout] 163 | / pub fn looks_like_rig_agent(source: &str) -> bool {
[INFO] [stdout] 164 | |     source.contains("rig::") || source.contains(".agent(") || source.contains("preamble(")
[INFO] [stdout] 165 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Heuristic: does this source contain a Rig agent?`
[INFO] [stdout]     = help: ends near `Heuristic: does this source contain a Rig agent?`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not document `mdx-rust-analysis`
[INFO] running `Command { std: "docker" "inspect" "743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c", kill_on_drop: false }`
[INFO] [stdout] 743aa519d2d29c174850fddd65f935b024405f165cf13eba3f4c4163a9a82d0c
