[INFO] fetching crate edict-cli 0.20.2...
[INFO] testing edict-cli-0.20.2 against try#33835004928d3bf65db4d4712e1330766263b0bd for pr-155739
[INFO] extracting crate edict-cli 0.20.2 into /workspace/builds/worker-2-tc2/source
[INFO] started tweaking crates.io crate edict-cli 0.20.2
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate edict-cli 0.20.2
[INFO] tweaked toml for crates.io crate edict-cli 0.20.2 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate edict-cli 0.20.2 on toolchain 33835004928d3bf65db4d4712e1330766263b0bd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate edict-cli 0.20.2 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" "+33835004928d3bf65db4d4712e1330766263b0bd" "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/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 091da17d55117c327bc5ce84b8b504872c7405c6d78fbe8a8f54e0b44b43350e
[INFO] running `Command { std: "docker" "start" "-a" "091da17d55117c327bc5ce84b8b504872c7405c6d78fbe8a8f54e0b44b43350e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "091da17d55117c327bc5ce84b8b504872c7405c6d78fbe8a8f54e0b44b43350e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "091da17d55117c327bc5ce84b8b504872c7405c6d78fbe8a8f54e0b44b43350e", kill_on_drop: false }`
[INFO] [stdout] 091da17d55117c327bc5ce84b8b504872c7405c6d78fbe8a8f54e0b44b43350e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f3f6c6cb599ac6f42bad37a9794ed21e3c5427fb5a734f19d50196492c35dece
[INFO] running `Command { std: "docker" "start" "-a" "f3f6c6cb599ac6f42bad37a9794ed21e3c5427fb5a734f19d50196492c35dece", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling zerocopy v0.8.40
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling opentelemetry v0.31.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling pin-project v1.1.11
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling prost-derive v0.14.3
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling nix v0.31.2
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling prost v0.14.3
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling tonic v0.14.5
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling strict v0.2.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling crokey-proc_macros v1.4.0
[INFO] [stderr]    Compiling opentelemetry_sdk v0.31.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling tonic-prost v0.14.5
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.6.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling clap_lex v1.0.0
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling opentelemetry-http v0.31.0
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling opentelemetry-proto v0.31.0
[INFO] [stderr]    Compiling lazy-regex v3.6.0
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling crokey v1.4.0
[INFO] [stderr]    Compiling coolor v1.1.0
[INFO] [stderr]    Compiling webpki-roots v1.0.6
[INFO] [stderr]    Compiling ureq-proto v0.5.3
[INFO] [stderr]    Compiling minimad v0.14.0
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling dialoguer v0.11.0
[INFO] [stderr]    Compiling termimad v0.34.1
[INFO] [stderr]    Compiling ctrlc v3.5.2
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling opentelemetry-otlp v0.31.0
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling opentelemetry-appender-tracing v0.31.1
[INFO] [stderr]    Compiling tracing-opentelemetry v0.32.1
[INFO] [stderr]    Compiling minijinja v2.17.1
[INFO] [stderr]    Compiling ureq v3.2.0
[INFO] [stderr]    Compiling edict-cli v0.20.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `config_dir`
[INFO] [stdout]   --> src/commands/dev_loop/mod.rs:36:18
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let (config, config_dir) = load_config(&project_root)?;
[INFO] [stdout]    |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HookEntry` and `HookEvent`
[INFO] [stdout]  --> src/hooks/mod.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use registry::{HookEntry, HookEvent, HookRegistry};
[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 variable: `config_dir`
[INFO] [stdout]   --> src/commands/dev_loop/mod.rs:36:18
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let (config, config_dir) = load_config(&project_root)?;
[INFO] [stdout]    |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `active` and `expires_at` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Claim {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub active: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub expires_at: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Claim` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bone_ids` and `workspace_names` are never used
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Claim {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 33 |     /// Extract bone IDs from `bone://project/bd-xxx` patterns.
[INFO] [stdout] 34 |     pub fn bone_ids(&self) -> Vec<&str> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn workspace_names(&self) -> Vec<&str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `advice` is never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct WorkspacesResponse {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub advice: Vec<WorkspaceAdvice>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkspacesResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_current`, `change_id`, `commit_id`, and `description` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct Workspace {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub is_current: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 74 |     #[serde(default)]
[INFO] [stdout] 75 |     pub change_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 76 |     #[serde(default)]
[INFO] [stdout] 77 |     pub commit_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 78 |     #[serde(default)]
[INFO] [stdout] 79 |     pub description: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Workspace` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `level`, `message`, and `details` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct WorkspaceAdvice {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 84 |     #[serde(default)]
[INFO] [stdout] 85 |     pub level: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 86 |     #[serde(default)]
[INFO] [stdout] 87 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 88 |     #[serde(default)]
[INFO] [stdout] 89 |     pub details: Option<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkspaceAdvice` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `assignees`, `labels`, `kind`, and `urgency` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:99:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct BoneInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout]  99 |     pub id: String,
[INFO] [stdout]     |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub assignees: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     #[serde(default)]
[INFO] [stdout] 107 |     pub labels: Vec<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 108 |     #[serde(rename = "kind", default)]
[INFO] [stdout] 109 |     pub kind: Option<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 110 |     #[serde(default)]
[INFO] [stdout] 111 |     pub urgency: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BoneInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `title`, `change_id`, and `author` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct ReviewSummary {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub title: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub change_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 141 |     #[serde(default)]
[INFO] [stdout] 142 |     pub author: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewSummary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `threads` is never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct ReviewDetailResponse {
[INFO] [stdout]     |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub threads: Vec<ReviewThread>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewDetailResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `title` and `change_id` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:157:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct ReviewDetail {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub title: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub change_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewDetail` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `thread_id`, `file`, `line`, `resolved`, and `comments` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub struct ReviewThread {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 188 |     pub thread_id: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 189 |     #[serde(default)]
[INFO] [stdout] 190 |     pub file: Option<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 191 |     #[serde(default)]
[INFO] [stdout] 192 |     pub line: Option<u32>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 193 |     #[serde(default)]
[INFO] [stdout] 194 |     pub resolved: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 195 |     #[serde(default)]
[INFO] [stdout] 196 |     pub comments: Vec<ReviewComment>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewThread` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `author`, `body`, and `created_at` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub struct ReviewComment {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 201 |     #[serde(default)]
[INFO] [stdout] 202 |     pub author: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 203 |     #[serde(default)]
[INFO] [stdout] 204 |     pub body: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 205 |     #[serde(default)]
[INFO] [stdout] 206 |     pub created_at: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewComment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotFound` is never constructed
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub enum AdapterError {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 213 |     ParseFailed { tool: &'static str, detail: String },
[INFO] [stdout] 214 |     NotFound { tool: &'static str, detail: String },
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdapterError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_review_detail` is never used
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:259:8
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub fn parse_review_detail(json: &str) -> Result<ReviewDetailResponse, AdapterError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `OutputCaptureFailed` is never constructed
[INFO] [stdout]   --> src/commands/protocol/executor.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum ExecutionError {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     OutputCaptureFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 19s
[INFO] running `Command { std: "docker" "inspect" "f3f6c6cb599ac6f42bad37a9794ed21e3c5427fb5a734f19d50196492c35dece", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f3f6c6cb599ac6f42bad37a9794ed21e3c5427fb5a734f19d50196492c35dece", kill_on_drop: false }`
[INFO] [stdout] f3f6c6cb599ac6f42bad37a9794ed21e3c5427fb5a734f19d50196492c35dece
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 14f94e08b8392a0d35ad1898dfac147aa5d5aec1b45b7e42fafdfbc375512dc6
[INFO] running `Command { std: "docker" "start" "-a" "14f94e08b8392a0d35ad1898dfac147aa5d5aec1b45b7e42fafdfbc375512dc6", kill_on_drop: false }`
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stdout] warning: unused variable: `config_dir`
[INFO] [stdout]   --> src/commands/dev_loop/mod.rs:36:18
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let (config, config_dir) = load_config(&project_root)?;
[INFO] [stdout]    |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HookEntry` and `HookEvent`
[INFO] [stdout]  --> src/hooks/mod.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use registry::{HookEntry, HookEvent, HookRegistry};
[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 variable: `config_dir`
[INFO] [stdout]   --> src/commands/dev_loop/mod.rs:36:18
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let (config, config_dir) = load_config(&project_root)?;
[INFO] [stdout]    |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `active` and `expires_at` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Claim {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub active: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub expires_at: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Claim` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bone_ids` and `workspace_names` are never used
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Claim {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 33 |     /// Extract bone IDs from `bone://project/bd-xxx` patterns.
[INFO] [stdout] 34 |     pub fn bone_ids(&self) -> Vec<&str> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn workspace_names(&self) -> Vec<&str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `advice` is never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct WorkspacesResponse {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub advice: Vec<WorkspaceAdvice>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkspacesResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_current`, `change_id`, `commit_id`, and `description` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct Workspace {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub is_current: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 74 |     #[serde(default)]
[INFO] [stdout] 75 |     pub change_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 76 |     #[serde(default)]
[INFO] [stdout] 77 |     pub commit_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 78 |     #[serde(default)]
[INFO] [stdout] 79 |     pub description: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Workspace` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `level`, `message`, and `details` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct WorkspaceAdvice {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 84 |     #[serde(default)]
[INFO] [stdout] 85 |     pub level: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 86 |     #[serde(default)]
[INFO] [stdout] 87 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 88 |     #[serde(default)]
[INFO] [stdout] 89 |     pub details: Option<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkspaceAdvice` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `assignees`, `labels`, `kind`, and `urgency` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:99:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct BoneInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout]  99 |     pub id: String,
[INFO] [stdout]     |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub assignees: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 106 |     #[serde(default)]
[INFO] [stdout] 107 |     pub labels: Vec<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 108 |     #[serde(rename = "kind", default)]
[INFO] [stdout] 109 |     pub kind: Option<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 110 |     #[serde(default)]
[INFO] [stdout] 111 |     pub urgency: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BoneInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `title`, `change_id`, and `author` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct ReviewSummary {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub title: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub change_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 141 |     #[serde(default)]
[INFO] [stdout] 142 |     pub author: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewSummary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `threads` is never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct ReviewDetailResponse {
[INFO] [stdout]     |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub threads: Vec<ReviewThread>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewDetailResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `title` and `change_id` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:157:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct ReviewDetail {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub title: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub change_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewDetail` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `thread_id`, `file`, `line`, `resolved`, and `comments` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub struct ReviewThread {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 188 |     pub thread_id: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 189 |     #[serde(default)]
[INFO] [stdout] 190 |     pub file: Option<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 191 |     #[serde(default)]
[INFO] [stdout] 192 |     pub line: Option<u32>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 193 |     #[serde(default)]
[INFO] [stdout] 194 |     pub resolved: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 195 |     #[serde(default)]
[INFO] [stdout] 196 |     pub comments: Vec<ReviewComment>,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewThread` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `author`, `body`, and `created_at` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub struct ReviewComment {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 201 |     #[serde(default)]
[INFO] [stdout] 202 |     pub author: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 203 |     #[serde(default)]
[INFO] [stdout] 204 |     pub body: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 205 |     #[serde(default)]
[INFO] [stdout] 206 |     pub created_at: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewComment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotFound` is never constructed
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub enum AdapterError {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 213 |     ParseFailed { tool: &'static str, detail: String },
[INFO] [stdout] 214 |     NotFound { tool: &'static str, detail: String },
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdapterError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_review_detail` is never used
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:259:8
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub fn parse_review_detail(json: &str) -> Result<ReviewDetailResponse, AdapterError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `OutputCaptureFailed` is never constructed
[INFO] [stdout]   --> src/commands/protocol/executor.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum ExecutionError {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     OutputCaptureFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling predicates v3.1.4
[INFO] [stderr]    Compiling predicates-tree v1.0.13
[INFO] [stderr]    Compiling edict-cli v0.20.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]  --> tests/run_agent_integration.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]   |                            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/run_agent_integration.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/run_agent_integration.rs:32:28
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/run_agent_integration.rs:51:28
[INFO] [stdout]    |
[INFO] [stdout] 51 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]   --> tests/run_agent_integration.rs:97:28
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]    |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/run_agent_integration.rs:151:28
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/run_agent_integration.rs:223:28
[INFO] [stdout]     |
[INFO] [stdout] 223 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stdout]    --> tests/run_agent_integration.rs:266:28
[INFO] [stdout]     |
[INFO] [stdout] 266 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HookEntry` and `HookEvent`
[INFO] [stdout]  --> src/hooks/mod.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use registry::{HookEntry, HookEvent, HookRegistry};
[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 variable: `config_dir`
[INFO] [stdout]   --> src/commands/dev_loop/mod.rs:36:18
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let (config, config_dir) = load_config(&project_root)?;
[INFO] [stdout]    |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_dir`
[INFO] [stdout]   --> src/commands/dev_loop/mod.rs:36:18
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let (config, config_dir) = load_config(&project_root)?;
[INFO] [stdout]    |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_current`, `change_id`, `commit_id`, and `description` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct Workspace {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub is_current: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 74 |     #[serde(default)]
[INFO] [stdout] 75 |     pub change_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 76 |     #[serde(default)]
[INFO] [stdout] 77 |     pub commit_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 78 |     #[serde(default)]
[INFO] [stdout] 79 |     pub description: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Workspace` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `level` and `details` are never read
[INFO] [stdout]   --> src/commands/protocol/adapters.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct WorkspaceAdvice {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 84 |     #[serde(default)]
[INFO] [stdout] 85 |     pub level: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub details: Option<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkspaceAdvice` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind` and `urgency` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct BoneInfo {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub kind: Option<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 110 |     #[serde(default)]
[INFO] [stdout] 111 |     pub urgency: Option<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BoneInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `title`, `change_id`, and `author` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct ReviewSummary {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub title: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub change_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 141 |     #[serde(default)]
[INFO] [stdout] 142 |     pub author: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewSummary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `title` and `change_id` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:157:9
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub struct ReviewDetail {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub title: Option<String>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub change_id: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewDetail` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `thread_id`, `file`, `line`, and `resolved` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub struct ReviewThread {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 188 |     pub thread_id: String,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 189 |     #[serde(default)]
[INFO] [stdout] 190 |     pub file: Option<String>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 191 |     #[serde(default)]
[INFO] [stdout] 192 |     pub line: Option<u32>,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 193 |     #[serde(default)]
[INFO] [stdout] 194 |     pub resolved: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewThread` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `author`, `body`, and `created_at` are never read
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub struct ReviewComment {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 201 |     #[serde(default)]
[INFO] [stdout] 202 |     pub author: String,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 203 |     #[serde(default)]
[INFO] [stdout] 204 |     pub body: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 205 |     #[serde(default)]
[INFO] [stdout] 206 |     pub created_at: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ReviewComment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotFound` is never constructed
[INFO] [stdout]    --> src/commands/protocol/adapters.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub enum AdapterError {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 213 |     ParseFailed { tool: &'static str, detail: String },
[INFO] [stdout] 214 |     NotFound { tool: &'static str, detail: String },
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AdapterError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `OutputCaptureFailed` is never constructed
[INFO] [stdout]   --> src/commands/protocol/executor.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum ExecutionError {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     OutputCaptureFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExecutionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 24.72s
[INFO] running `Command { std: "docker" "inspect" "14f94e08b8392a0d35ad1898dfac147aa5d5aec1b45b7e42fafdfbc375512dc6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "14f94e08b8392a0d35ad1898dfac147aa5d5aec1b45b7e42fafdfbc375512dc6", kill_on_drop: false }`
[INFO] [stdout] 14f94e08b8392a0d35ad1898dfac147aa5d5aec1b45b7e42fafdfbc375512dc6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] e75ec122145b4ea59765cf1f19c7e63aa25cf42f5ecaeb5bb6ca2ee9c5cfa5c1
[INFO] running `Command { std: "docker" "start" "-a" "e75ec122145b4ea59765cf1f19c7e63aa25cf42f5ecaeb5bb6ca2ee9c5cfa5c1", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `config_dir`
[INFO] [stderr]   --> src/commands/dev_loop/mod.rs:36:18
[INFO] [stderr]    |
[INFO] [stderr] 36 |     let (config, config_dir) = load_config(&project_root)?;
[INFO] [stderr]    |                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_dir`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `edict-cli` (lib) generated 1 warning (run `cargo fix --lib -p edict-cli` to apply 1 suggestion)
[INFO] [stderr] warning: unused imports: `HookEntry` and `HookEvent`
[INFO] [stderr]  --> src/hooks/mod.rs:4:20
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub use registry::{HookEntry, HookEvent, HookRegistry};
[INFO] [stderr]   |                    ^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `active` and `expires_at` are never read
[INFO] [stderr]   --> src/commands/protocol/adapters.rs:25:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct Claim {
[INFO] [stderr]    |            ----- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub active: bool,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub expires_at: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Claim` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: methods `bone_ids` and `workspace_names` are never used
[INFO] [stderr]   --> src/commands/protocol/adapters.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 32 | impl Claim {
[INFO] [stderr]    | ---------- methods in this implementation
[INFO] [stderr] 33 |     /// Extract bone IDs from `bone://project/bd-xxx` patterns.
[INFO] [stderr] 34 |     pub fn bone_ids(&self) -> Vec<&str> {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub fn workspace_names(&self) -> Vec<&str> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `advice` is never read
[INFO] [stderr]   --> src/commands/protocol/adapters.rs:64:9
[INFO] [stderr]    |
[INFO] [stderr] 60 | pub struct WorkspacesResponse {
[INFO] [stderr]    |            ------------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 64 |     pub advice: Vec<WorkspaceAdvice>,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `WorkspacesResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `is_current`, `change_id`, `commit_id`, and `description` are never read
[INFO] [stderr]   --> src/commands/protocol/adapters.rs:73:9
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub struct Workspace {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 73 |     pub is_current: bool,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 74 |     #[serde(default)]
[INFO] [stderr] 75 |     pub change_id: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 76 |     #[serde(default)]
[INFO] [stderr] 77 |     pub commit_id: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 78 |     #[serde(default)]
[INFO] [stderr] 79 |     pub description: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Workspace` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `level`, `message`, and `details` are never read
[INFO] [stderr]   --> src/commands/protocol/adapters.rs:85:9
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub struct WorkspaceAdvice {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] 84 |     #[serde(default)]
[INFO] [stderr] 85 |     pub level: String,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 86 |     #[serde(default)]
[INFO] [stderr] 87 |     pub message: String,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 88 |     #[serde(default)]
[INFO] [stderr] 89 |     pub details: Option<serde_json::Value>,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `WorkspaceAdvice` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `id`, `assignees`, `labels`, `kind`, and `urgency` are never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:99:9
[INFO] [stderr]     |
[INFO] [stderr]  98 | pub struct BoneInfo {
[INFO] [stderr]     |            -------- fields in this struct
[INFO] [stderr]  99 |     pub id: String,
[INFO] [stderr]     |         ^^
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub assignees: Vec<String>,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 106 |     #[serde(default)]
[INFO] [stderr] 107 |     pub labels: Vec<String>,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] 108 |     #[serde(rename = "kind", default)]
[INFO] [stderr] 109 |     pub kind: Option<String>,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 110 |     #[serde(default)]
[INFO] [stderr] 111 |     pub urgency: Option<String>,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `BoneInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `title`, `change_id`, and `author` are never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 133 | pub struct ReviewSummary {
[INFO] [stderr]     |            ------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 136 |     pub title: Option<String>,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 140 |     pub change_id: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 141 |     #[serde(default)]
[INFO] [stderr] 142 |     pub author: Option<String>,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ReviewSummary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `threads` is never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:150:9
[INFO] [stderr]     |
[INFO] [stderr] 147 | pub struct ReviewDetailResponse {
[INFO] [stderr]     |            -------------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 150 |     pub threads: Vec<ReviewThread>,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ReviewDetailResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `title` and `change_id` are never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:157:9
[INFO] [stderr]     |
[INFO] [stderr] 154 | pub struct ReviewDetail {
[INFO] [stderr]     |            ------------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 157 |     pub title: Option<String>,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 161 |     pub change_id: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ReviewDetail` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `thread_id`, `file`, `line`, `resolved`, and `comments` are never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:188:9
[INFO] [stderr]     |
[INFO] [stderr] 187 | pub struct ReviewThread {
[INFO] [stderr]     |            ------------ fields in this struct
[INFO] [stderr] 188 |     pub thread_id: String,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 189 |     #[serde(default)]
[INFO] [stderr] 190 |     pub file: Option<String>,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 191 |     #[serde(default)]
[INFO] [stderr] 192 |     pub line: Option<u32>,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 193 |     #[serde(default)]
[INFO] [stderr] 194 |     pub resolved: bool,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 195 |     #[serde(default)]
[INFO] [stderr] 196 |     pub comments: Vec<ReviewComment>,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ReviewThread` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `author`, `body`, and `created_at` are never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:202:9
[INFO] [stderr]     |
[INFO] [stderr] 200 | pub struct ReviewComment {
[INFO] [stderr]     |            ------------- fields in this struct
[INFO] [stderr] 201 |     #[serde(default)]
[INFO] [stderr] 202 |     pub author: String,
[INFO] [stderr]     |         ^^^^^^
[INFO] [stderr] 203 |     #[serde(default)]
[INFO] [stderr] 204 |     pub body: String,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 205 |     #[serde(default)]
[INFO] [stderr] 206 |     pub created_at: Option<String>,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ReviewComment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `NotFound` is never constructed
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:214:5
[INFO] [stderr]     |
[INFO] [stderr] 212 | pub enum AdapterError {
[INFO] [stderr]     |          ------------ variant in this enum
[INFO] [stderr] 213 |     ParseFailed { tool: &'static str, detail: String },
[INFO] [stderr] 214 |     NotFound { tool: &'static str, detail: String },
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `AdapterError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_review_detail` is never used
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:259:8
[INFO] [stderr]     |
[INFO] [stderr] 259 | pub fn parse_review_detail(json: &str) -> Result<ReviewDetailResponse, AdapterError> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `OutputCaptureFailed` is never constructed
[INFO] [stderr]   --> src/commands/protocol/executor.rs:40:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub enum ExecutionError {
[INFO] [stderr]    |          -------------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 40 |     OutputCaptureFailed(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ExecutionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `edict-cli` (bin "edict") generated 16 warnings (1 duplicate) (run `cargo fix --bin "edict" -p edict-cli` to apply 1 suggestion)
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]  --> tests/run_agent_integration.rs:8:28
[INFO] [stderr]   |
[INFO] [stderr] 8 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]   |                            ^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]   --> tests/run_agent_integration.rs:17:28
[INFO] [stderr]    |
[INFO] [stderr] 17 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]    |                            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]   --> tests/run_agent_integration.rs:32:28
[INFO] [stderr]    |
[INFO] [stderr] 32 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]    |                            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]   --> tests/run_agent_integration.rs:51:28
[INFO] [stderr]    |
[INFO] [stderr] 51 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]    |                            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]   --> tests/run_agent_integration.rs:97:28
[INFO] [stderr]    |
[INFO] [stderr] 97 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]    |                            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]    --> tests/run_agent_integration.rs:151:28
[INFO] [stderr]     |
[INFO] [stderr] 151 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]     |                            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]    --> tests/run_agent_integration.rs:223:28
[INFO] [stderr]     |
[INFO] [stderr] 223 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]     |                            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `assert_cmd::Command::cargo_bin`: incompatible with a custom cargo build-dir, see instead `cargo::cargo_bin_cmd!`
[INFO] [stderr]    --> tests/run_agent_integration.rs:266:28
[INFO] [stderr]     |
[INFO] [stderr] 266 |     let mut cmd = Command::cargo_bin("edict").unwrap();
[INFO] [stderr]     |                            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `is_current`, `change_id`, `commit_id`, and `description` are never read
[INFO] [stderr]   --> src/commands/protocol/adapters.rs:73:9
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub struct Workspace {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 73 |     pub is_current: bool,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 74 |     #[serde(default)]
[INFO] [stderr] 75 |     pub change_id: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 76 |     #[serde(default)]
[INFO] [stderr] 77 |     pub commit_id: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 78 |     #[serde(default)]
[INFO] [stderr] 79 |     pub description: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Workspace` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `level` and `details` are never read
[INFO] [stderr]   --> src/commands/protocol/adapters.rs:85:9
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub struct WorkspaceAdvice {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] 84 |     #[serde(default)]
[INFO] [stderr] 85 |     pub level: String,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 89 |     pub details: Option<serde_json::Value>,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `WorkspaceAdvice` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `kind` and `urgency` are never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:109:9
[INFO] [stderr]     |
[INFO] [stderr]  98 | pub struct BoneInfo {
[INFO] [stderr]     |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 109 |     pub kind: Option<String>,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 110 |     #[serde(default)]
[INFO] [stderr] 111 |     pub urgency: Option<String>,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `BoneInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `thread_id`, `file`, `line`, and `resolved` are never read
[INFO] [stderr]    --> src/commands/protocol/adapters.rs:188:9
[INFO] [stderr]     |
[INFO] [stderr] 187 | pub struct ReviewThread {
[INFO] [stderr]     |            ------------ fields in this struct
[INFO] [stderr] 188 |     pub thread_id: String,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 189 |     #[serde(default)]
[INFO] [stderr] 190 |     pub file: Option<String>,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 191 |     #[serde(default)]
[INFO] [stderr] 192 |     pub line: Option<u32>,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 193 |     #[serde(default)]
[INFO] [stderr] 194 |     pub resolved: bool,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ReviewThread` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `edict-cli` (test "run_agent_integration") generated 8 warnings
[INFO] [stderr] warning: `edict-cli` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `edict-cli` (bin "edict" test) generated 11 warnings (7 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.34s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/edict-896826fdce95994c)
[INFO] [stdout] 
[INFO] [stdout] running 352 tests
[INFO] [stdout] test commands::dev_loop::tests::parse_inbox_count_bare_number ... ok
[INFO] [stdout] test commands::dev_loop::prompt::tests::prompt_contains_all_protocol_commands ... ok
[INFO] [stdout] test commands::dev_loop::prompt::tests::prompt_contains_protocol_fallback_wording ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_inbox_count_total_unread ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_edict_string_command ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_legacy_botbox_array_command ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_assignments_envelope ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_assignments_multiple ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_empty ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_legacy_botbox_string_command ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_old_format ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_edict_array_command ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_preserves_non_botbox ... ok
[INFO] [stdout] test commands::hooks::tests::validate_name_accepts_valid ... ok
[INFO] [stdout] test commands::hooks::tests::validate_name_rejects_invalid ... ok
[INFO] [stdout] test commands::init::tests::test_build_config ... ok
[INFO] [stdout] test commands::init::tests::test_build_config_no_env_for_non_rust ... ok
[INFO] [stdout] test commands::init::tests::test_config_version_matches ... ok
[INFO] [stdout] test commands::init::tests::test_detect_from_agents_md ... ok
[INFO] [stdout] test commands::init::tests::test_detect_from_empty_agents_md ... ok
[INFO] [stdout] test commands::init::tests::test_fetch_gitignore_validates_languages ... ok
[INFO] [stdout] test commands::init::tests::test_validate_values_ok ... ok
[INFO] [stdout] test commands::init::tests::test_validate_values_invalid ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::claim_no_matching_patterns ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::claim_bone_id_extraction ... ok
[INFO] [stdout] test commands::init::tests::test_validate_name_valid ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_extra_fields ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_basic ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_invalid_json ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_minimal ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_empty ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_extra_fields_tolerated ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_invalid_json ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_extra_fields ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_minimal ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_with_votes ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_basic ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_empty ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_missing_optional_fields ... ok
[INFO] [stdout] test commands::init::tests::test_validate_name_invalid ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_basic ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_clean ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_missing_advice ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_with_advice ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_empty_claims ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims_other_agent ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_workspace_claims ... ok
[INFO] [stdout] test commands::protocol::executor::tests::execute_steps_real_subprocess ... ignored
[INFO] [stdout] test commands::protocol::executor::tests::execute_steps_stops_on_failure ... ignored
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone_skips_default ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone_fallback_no_memo ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_empty ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_from_plain_output ... ok
[INFO] [stdout] test commands::protocol::executor::tests::empty_steps_list ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_from_quoted_output ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_multiline_finds_first ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_rejects_spaces_in_quoted ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_with_whitespace ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_rejects_shell_metacharacters ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_json_valid_structure ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_no_match ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_json_with_failure ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_failure_is_red ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_has_colors ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_success_is_green ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_report_delegates_to_format ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_empty_report ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_single_failure ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_single_success ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_workspace_creation ... ok
[INFO] [stdout] test commands::protocol::executor::tests::ws_substitution_mock ... ok
[INFO] [stdout] test commands::protocol::executor::tests::ws_substitution_no_workspace_created ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::blocked_status_still_exits_zero ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::exit_code_to_std_exit_code ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::needs_review_status_still_exits_zero ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::all_statuses_map_to_success ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::has_resources_status_still_exits_zero ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::exit_code_values ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_exit_error_operational ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_exit_error_to_exit_error ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_basic ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_result_operational_error ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_find_workspace ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_warning_for_active_bones ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::stderr_diagnostic_format ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_shell_safety ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_no_merge ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::operational_error_exit_code_is_one ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_result_success ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_with_merge ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_no_push ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_extra_fields_tolerated ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_parsing_conflicts ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_announce_includes_bone ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_parsing_ready ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_basic ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_parsing_stale ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_blocked_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_compatibility_additive_only ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_cleanup_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_full_guidance_json ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_schema_version_is_stable ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_guidance_json_structure ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_status_variants_are_complete ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_minimal_guidance_json ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_add_multiple_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_start_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_add_step ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_review_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_set_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_json_roundtrip ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_text_render_includes_all_fields ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_new_start ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_blocked ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_default_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_advice ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_stale_window_logic ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_bone_and_workspace ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_has_work ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_fresh ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_execution_report_with_remaining_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_review ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_resumable ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_includes_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_valid ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_with_execution_report ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_blocked_status_is_red ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_executed_true_skips_steps_section ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_with_execution_report ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_has_colors ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_ready_status_is_green ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_execution_report_with_failure ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_includes_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_fresh ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_has_work ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_advice ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_resumable ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_diagnostics ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_bead_and_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_without_execution_report_shows_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_execution_report_success ... ok
[INFO] [stdout] test commands::protocol::render::tests::snapshot_at_is_rfc3339 ... ok
[INFO] [stdout] test commands::protocol::render::tests::status_serialization ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_valid ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_invalid_bead_id ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_no_workspace ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_invalid_workspace_name ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_continue_working ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_no_workspace ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_blocked ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_approved ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_multiple_bones_have_separators ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_empty_config ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_from_config ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_pending ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_fresh_guidance ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_override ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_override_trims_whitespace ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_rejects_invalid_names ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_approved_all_reviewers_lgtm ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_blocked_one_reviewer_blocks ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_approved_empty_required_reviewers ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_blocked_then_lgtm_latest_is_lgtm ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_needs_review_missing_approvals ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_needs_review_no_votes ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_lgtm_then_block_latest_is_block ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_reviewer_not_in_required_list_ignored ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_multiple_reviewers_mixed ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_comment_with_escaping ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_do_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_done_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_done_no_reason ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bus_send_no_label ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bus_send_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bus_send_with_quotes_in_message ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_release_all ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_release_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::command_builders_are_deterministic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::crit_create_with_escaping ... ok
[INFO] [stdout] test commands::protocol::shell::tests::crit_request_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::crit_show_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_all_metacharacters ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_stake_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_double_quotes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_stake_no_memo ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_dollar_variables ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_multiple_single_quotes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_newlines ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_variable_expansion ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_command_injection ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_single_quotes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_unicode ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_with_spaces ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_no_hyphen ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_special_chars ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_identifier_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_no_prefix ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_special_chars ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_simple ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_minimal ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_special_chars ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_too_long ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_backticks ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_passes_clean_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_escapes_unsafe_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_backslashes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_identifiers ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_review_id ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_bone_id ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_workspace_names ... ok
[INFO] [stdout] test commands::protocol::shell::tests::workspace_exactly_64_chars ... ok
[INFO] [stdout] test commands::responder::tests::days_to_ymd_known_date ... ok
[INFO] [stdout] test commands::responder::tests::extract_bone_id_from_output ... ok
[INFO] [stdout] test commands::responder::tests::extract_escalation_empty ... ok
[INFO] [stdout] test commands::responder::tests::extract_escalation_missing ... ok
[INFO] [stdout] test commands::responder::tests::extract_escalation_tag ... ok
[INFO] [stdout] test commands::responder::tests::route_bone ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_identifier_shell_metacharacters ... ok
[INFO] [stdout] test commands::responder::tests::route_dev ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_starts_with_dash ... ok
[INFO] [stdout] test commands::responder::tests::route_devloop_not_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_dev_no_body ... ok
[INFO] [stdout] test commands::responder::tests::route_explicit_model_before_q ... ok
[INFO] [stdout] test commands::responder::tests::route_leads_maps_to_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_leads_no_body ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_bead ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_big_q_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_explicit_model_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_qq_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_q_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_qq_not_q ... ok
[INFO] [stdout] test commands::responder::tests::route_oneshot ... ok
[INFO] [stdout] test commands::responder::tests::route_mission ... ok
[INFO] [stdout] test commands::responder::tests::route_question_explicit_model ... ok
[INFO] [stdout] test commands::responder::tests::route_question_q ... ok
[INFO] [stdout] test commands::responder::tests::route_question_bigq ... ok
[INFO] [stdout] test commands::protocol::shell::tests::ws_merge_with_message ... ok
[INFO] [stdout] test commands::responder::tests::days_to_ymd_epoch ... ok
[INFO] [stdout] test commands::responder::tests::route_triage_bare_message ... ok
[INFO] [stdout] test commands::responder::tests::route_whitespace_only ... ok
[INFO] [stdout] test commands::responder::tests::route_question_qq ... ok
[INFO] [stdout] test commands::responder::tests::skip_project_agent_messages ... ok
[INFO] [stdout] test commands::responder::tests::transcript_empty_format ... ok
[INFO] [stdout] test commands::responder::tests::strip_prefix_ci_basic ... ok
[INFO] [stdout] test commands::responder::tests::transcript_with_entries ... ok
[INFO] [stdout] test commands::run_agent::tests::claude_text_event_is_not_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::detect_api_errors ... ok
[INFO] [stdout] test commands::run_agent::tests::detect_format_explicit ... ok
[INFO] [stdout] test commands::run_agent::tests::detect_format_via_term_env ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_agent_end_is_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_session_event_is_not_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_tool_execution_end_parsed ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_tool_execution_error_parsed ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_toolcall_end_event_parsed ... ok
[INFO] [stdout] test commands::run_agent::tests::unsupported_runner_error ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_derive_role_no_match ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_derive_role_security ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_get_reviewer_prompt_name ... ok
[INFO] [stdout] test commands::status::tests::advice_command_is_optional ... ok
[INFO] [stdout] test commands::status::tests::advice_structure_is_serializable ... ok
[INFO] [stdout] test commands::status::tests::status_report_with_advice ... ok
[INFO] [stdout] test commands::status::tests::status_report_with_empty_advice ... ok
[INFO] [stdout] test commands::sync::tests::test_design_docs_embedded ... ok
[INFO] [stdout] test commands::sync::tests::test_find_jj_root_direct ... ok
[INFO] [stdout] test commands::sync::tests::test_find_jj_root_missing ... ok
[INFO] [stdout] test commands::sync::tests::test_find_jj_root_ancestor ... ok
[INFO] [stdout] test commands::sync::tests::test_reviewer_prompts_embedded ... ok
[INFO] [stdout] test commands::sync::tests::test_workflow_docs_embedded ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_env_diagnostic_with_empty_config ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_env_diagnostic_does_not_panic ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_agent_identity ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_all_protocol_commands ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_dispatched_fast_path ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_protocol_fallback_wording ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_blocked ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_review_disabled ... ok
[INFO] [stdout] test commands::responder::tests::route_dev_case_insensitive ... ok
[INFO] [stdout] test commands::run_agent::tests::claude_result_event_is_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_text_delta_is_not_completion ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_complete ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_missing ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_error ... ok
[INFO] [stdout] test config::tests::expand_env_value_dollar_var ... ok
[INFO] [stdout] test config::tests::expand_env_value_no_vars ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_output ... ok
[INFO] [stdout] test config::tests::expand_env_value_unset_var_preserved ... ok
[INFO] [stdout] test config::tests::default_model_tiers ... ok
[INFO] [stdout] test commands::sync::tests::test_version_hashes ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_legacy_toml ... ok
[INFO] [stdout] test config::tests::find_config_in_project_missing ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_json ... ok
[INFO] [stdout] test config::tests::find_config_in_project_legacy_toml_accepted ... ok
[INFO] [stdout] test config::tests::find_config_in_project_root_json_fallback ... ok
[INFO] [stdout] test config::tests::find_config_returns_none_when_missing ... ok
[INFO] [stdout] test config::tests::find_config_in_project_root_toml_preferred ... ok
[INFO] [stdout] test config::tests::find_config_in_project_ws_json_fallback ... ok
[INFO] [stdout] test config::tests::find_config_in_project_ws_toml_beats_root_json ... ok
[INFO] [stdout] test config::tests::find_config_prefers_edict_toml ... ok
[INFO] [stdout] test config::tests::parse_malformed_json ... ok
[INFO] [stdout] test config::tests::parse_malformed_toml ... ok
[INFO] [stdout] test config::tests::parse_minimal_toml_config ... ok
[INFO] [stdout] test config::tests::parse_full_json_config_with_camel_case ... ok
[INFO] [stdout] test config::tests::parse_missing_optional_fields ... ok
[INFO] [stdout] test config::tests::parse_missing_required_fields ... ok
[INFO] [stdout] test config::tests::parse_full_toml_config ... ok
[INFO] [stdout] test config::tests::json_to_toml_conversion ... ok
[INFO] [stdout] test config::tests::parse_toml_with_env_section ... ok
[INFO] [stdout] test config::tests::parse_toml_without_env_section ... ok
[INFO] [stdout] test commands::run_agent::tests::format_markdown_text_mode ... ok
[INFO] [stdout] test config::tests::resolve_model_custom_tiers ... ok
[INFO] [stdout] test commands::run_agent::tests::format_markdown_pretty_mode ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_explicit_model ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_legacy_names ... ok
[INFO] [stdout] test config::tests::resolve_model_passthrough ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_tiers ... ok
[INFO] [stdout] test config::tests::resolve_model_tier_names ... ok
[INFO] [stdout] test config::tests::resolved_env_expands_values ... ok
[INFO] [stdout] test hooks::registry::tests::all_hooks_registered ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_not_found ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_direct ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_empty ... ok
[INFO] [stdout] test config::tests::roundtrip_toml ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_edict_toml_preferred ... ok
[INFO] [stdout] test config::tests::to_toml_includes_comments ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_not_found ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_legacy_toml_accepted ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_truncation ... ok
[INFO] [stdout] test hooks::run::tests::validate_agent_name_accepts_valid ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_ws_default ... ok
[INFO] [stdout] test subprocess::tests::invalid_workspace_names ... ok
[INFO] [stdout] test hooks::run::tests::validate_agent_name_rejects_invalid ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_with_messages ... ok
[INFO] [stdout] test subprocess::tests::maw_exec_wrapper ... ok
[INFO] [stdout] test subprocess::tests::parse_json_output ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_ws_default ... ok
[INFO] [stdout] test template::tests::test_render_agents_md ... ok
[INFO] [stdout] test subprocess::tests::run_not_found ... ok
[INFO] [stdout] test template::tests::test_update_managed_section_migrates_legacy_markers ... ok
[INFO] [stdout] test template::tests::test_update_managed_section ... ok
[INFO] [stdout] test subprocess::tests::run_with_timeout_succeeds ... ok
[INFO] [stdout] test subprocess::tests::run_false_fails ... ok
[INFO] [stdout] test subprocess::tests::run_echo ... ok
[INFO] [stdout] test subprocess::tests::run_ok_returns_error_on_failure ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 350 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/edict-8c0ebbee520dad5e)
[INFO] [stdout] 
[INFO] [stdout] running 352 tests
[INFO] [stdout] test commands::dev_loop::prompt::tests::prompt_contains_protocol_fallback_wording ... ok
[INFO] [stdout] test commands::dev_loop::prompt::tests::prompt_contains_all_protocol_commands ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_inbox_count_total_unread ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_assignments_multiple ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_edict_array_command ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_inbox_count_bare_number ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_empty ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_assignments_envelope ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_edict_string_command ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_legacy_botbox_array_command ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_legacy_botbox_string_command ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_old_format ... ok
[INFO] [stdout] test commands::hooks::tests::validate_name_accepts_valid ... ok
[INFO] [stdout] test commands::init::tests::test_build_config ... ok
[INFO] [stdout] test commands::hooks::tests::validate_name_rejects_invalid ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_preserves_non_botbox ... ok
[INFO] [stdout] test commands::init::tests::test_fetch_gitignore_validates_languages ... ok
[INFO] [stdout] test commands::init::tests::test_config_version_matches ... ok
[INFO] [stdout] test commands::init::tests::test_detect_from_agents_md ... ok
[INFO] [stdout] test commands::init::tests::test_detect_from_empty_agents_md ... ok
[INFO] [stdout] test commands::init::tests::test_validate_values_invalid ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::claim_bone_id_extraction ... ok
[INFO] [stdout] test commands::init::tests::test_validate_values_ok ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::claim_no_matching_patterns ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_invalid_json ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_minimal ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_basic ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_basic ... ok
[INFO] [stdout] test commands::init::tests::test_validate_name_invalid ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_empty ... ok
[INFO] [stdout] test commands::init::tests::test_validate_name_valid ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_extra_fields ... ok
[INFO] [stdout] test commands::init::tests::test_build_config_no_env_for_non_rust ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_invalid_json ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_extra_fields_tolerated ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_missing_optional_fields ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_extra_fields ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_minimal ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_basic ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_missing_advice ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_basic ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_clean ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_warning_for_active_bones ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_with_advice ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_empty ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_with_votes ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_empty_claims ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_find_workspace ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims_other_agent ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone ... ok
[INFO] [stdout] test commands::protocol::executor::tests::execute_steps_real_subprocess ... ignored
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone_fallback_no_memo ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_workspace_claims ... ok
[INFO] [stdout] test commands::protocol::executor::tests::empty_steps_list ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone_skips_default ... ok
[INFO] [stdout] test commands::protocol::executor::tests::execute_steps_stops_on_failure ... ignored
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_empty ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_from_plain_output ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_from_quoted_output ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_no_match ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_rejects_spaces_in_quoted ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_rejects_shell_metacharacters ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_with_whitespace ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_failure_is_red ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_json_valid_structure ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_has_colors ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_empty_report ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_json_with_failure ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_single_failure ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_workspace_creation ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_success_is_green ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_report_delegates_to_format ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_text_single_success ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_multiline_finds_first ... ok
[INFO] [stdout] test commands::protocol::executor::tests::ws_substitution_mock ... ok
[INFO] [stdout] test commands::protocol::executor::tests::ws_substitution_no_workspace_created ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::all_statuses_map_to_success ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::blocked_status_still_exits_zero ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::exit_code_values ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::has_resources_status_still_exits_zero ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::needs_review_status_still_exits_zero ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_exit_error_operational ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::operational_error_exit_code_is_one ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_exit_error_to_exit_error ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_result_success ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_result_operational_error ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::stderr_diagnostic_format ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::exit_code_to_std_exit_code ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_shell_safety ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_no_merge ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_with_merge ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_extra_fields_tolerated ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_basic ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_parsing_conflicts ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_announce_includes_bone ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_no_push ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_parsing_ready ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_merge_check_result_parsing_stale ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_compatibility_additive_only ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_cleanup_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_full_guidance_json ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_blocked_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_minimal_guidance_json ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_guidance_json_structure ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_schema_version_is_stable ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_start_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_add_multiple_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_text_render_includes_all_fields ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_review_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_status_variants_are_complete ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_add_step ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_blocked ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_default_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_json_roundtrip ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_advice ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_new_start ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_stale_window_logic ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_bone_and_workspace ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_review ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_includes_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_execution_report_with_remaining_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_has_work ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_fresh ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_blocked_status_is_red ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_resumable ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_valid ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_set_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_with_execution_report ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_executed_true_skips_steps_section ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_has_colors ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_with_execution_report ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_execution_report_with_failure ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_fresh ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_includes_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_minimal ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_has_work ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_resumable ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_advice ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_ready_status_is_green ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_bead_and_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_execution_report_success ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_diagnostics ... ok
[INFO] [stdout] test commands::protocol::render::tests::snapshot_at_is_rfc3339 ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_without_execution_report_shows_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::status_serialization ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_invalid_bead_id ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_invalid_workspace_name ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_valid ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_continue_working ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_no_workspace ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_approved ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_blocked ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_no_workspace ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_pending ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_fresh_guidance ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_multiple_bones_have_separators ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_empty_config ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_from_config ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_rejects_invalid_names ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_blocked_then_lgtm_latest_is_lgtm ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_override ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_approved_all_reviewers_lgtm ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_override_trims_whitespace ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_approved_empty_required_reviewers ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_blocked_one_reviewer_blocks ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_multiple_reviewers_mixed ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_lgtm_then_block_latest_is_block ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_needs_review_missing_approvals ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_needs_review_no_votes ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_reviewer_not_in_required_list_ignored ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_comment_with_escaping ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_do_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_done_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_done_no_reason ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bus_send_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_release_all ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bus_send_no_label ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_release_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_stake_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_stake_no_memo ... ok
[INFO] [stdout] test commands::protocol::shell::tests::command_builders_are_deterministic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::crit_create_with_escaping ... ok
[INFO] [stdout] test commands::protocol::shell::tests::crit_show_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bus_send_with_quotes_in_message ... ok
[INFO] [stdout] test commands::protocol::shell::tests::crit_request_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_backticks ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_dollar_variables ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_multiple_single_quotes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_simple ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_command_injection ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_newlines ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_variable_expansion ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_unicode ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_with_spaces ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_special_chars ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_no_hyphen ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_identifier_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_identifier_shell_metacharacters ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_no_prefix ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_special_chars ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_special_chars ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_too_long ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_starts_with_dash ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_passes_clean_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_escapes_unsafe_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_bone_id ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_review_id ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_identifiers ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_workspace_names ... ok
[INFO] [stdout] test commands::protocol::shell::tests::workspace_exactly_64_chars ... ok
[INFO] [stdout] test commands::responder::tests::days_to_ymd_epoch ... ok
[INFO] [stdout] test commands::protocol::shell::tests::ws_merge_with_message ... ok
[INFO] [stdout] test commands::responder::tests::days_to_ymd_known_date ... ok
[INFO] [stdout] test commands::responder::tests::extract_bone_id_from_output ... ok
[INFO] [stdout] test commands::responder::tests::extract_escalation_missing ... ok
[INFO] [stdout] test commands::responder::tests::extract_escalation_tag ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_all_metacharacters ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_backslashes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_double_quotes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_single_quotes ... ok
[INFO] [stdout] test commands::responder::tests::route_bone ... ok
[INFO] [stdout] test commands::responder::tests::route_dev_no_body ... ok
[INFO] [stdout] test commands::responder::tests::route_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_dev_case_insensitive ... ok
[INFO] [stdout] test commands::responder::tests::route_leads_maps_to_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_explicit_model_before_q ... ok
[INFO] [stdout] test commands::responder::tests::route_leads_no_body ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_bead ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_big_q_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_mission ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_q_colon ... ok
[INFO] [stdout] test commands::responder::tests::extract_escalation_empty ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_explicit_model_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_qq_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_devloop_not_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_qq_not_q ... ok
[INFO] [stdout] test commands::responder::tests::route_question_qq ... ok
[INFO] [stdout] test commands::responder::tests::route_oneshot ... ok
[INFO] [stdout] test commands::responder::tests::route_question_explicit_model ... ok
[INFO] [stdout] test commands::responder::tests::route_question_bigq ... ok
[INFO] [stdout] test commands::responder::tests::route_triage_bare_message ... ok
[INFO] [stdout] test commands::responder::tests::route_whitespace_only ... ok
[INFO] [stdout] test commands::responder::tests::route_question_q ... ok
[INFO] [stdout] test commands::responder::tests::skip_project_agent_messages ... ok
[INFO] [stdout] test commands::responder::tests::strip_prefix_ci_basic ... ok
[INFO] [stdout] test commands::responder::tests::transcript_empty_format ... ok
[INFO] [stdout] test commands::responder::tests::transcript_with_entries ... ok
[INFO] [stdout] test commands::run_agent::tests::claude_text_event_is_not_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::claude_result_event_is_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::detect_format_explicit ... ok
[INFO] [stdout] test commands::run_agent::tests::detect_api_errors ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_agent_end_is_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::detect_format_via_term_env ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_session_event_is_not_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_text_delta_is_not_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_tool_execution_end_parsed ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_tool_execution_error_parsed ... ok
[INFO] [stdout] test commands::run_agent::tests::pi_toolcall_end_event_parsed ... ok
[INFO] [stdout] test commands::run_agent::tests::unsupported_runner_error ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_derive_role_security ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_get_reviewer_prompt_name ... ok
[INFO] [stdout] test commands::status::tests::advice_command_is_optional ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_derive_role_no_match ... ok
[INFO] [stdout] test commands::status::tests::advice_structure_is_serializable ... ok
[INFO] [stdout] test commands::sync::tests::test_design_docs_embedded ... ok
[INFO] [stdout] test commands::status::tests::status_report_with_empty_advice ... ok
[INFO] [stdout] test commands::status::tests::status_report_with_advice ... ok
[INFO] [stdout] test commands::sync::tests::test_find_jj_root_missing ... ok
[INFO] [stdout] test commands::sync::tests::test_find_jj_root_ancestor ... ok
[INFO] [stdout] test commands::sync::tests::test_find_jj_root_direct ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_env_diagnostic_does_not_panic ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_env_diagnostic_with_empty_config ... ok
[INFO] [stdout] test commands::sync::tests::test_reviewer_prompts_embedded ... ok
[INFO] [stdout] test commands::sync::tests::test_workflow_docs_embedded ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_agent_identity ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_dispatched_fast_path ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_blocked ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_complete ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_all_protocol_commands ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_review_disabled ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_missing ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_error ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_protocol_fallback_wording ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_output ... ok
[INFO] [stdout] test config::tests::expand_env_value_dollar_var ... ok
[INFO] [stdout] test config::tests::expand_env_value_unset_var_preserved ... ok
[INFO] [stdout] test config::tests::expand_env_value_no_vars ... ok
[INFO] [stdout] test config::tests::default_model_tiers ... ok
[INFO] [stdout] test config::tests::find_config_in_project_legacy_toml_accepted ... ok
[INFO] [stdout] test config::tests::find_config_in_project_missing ... ok
[INFO] [stdout] test config::tests::find_config_in_project_root_toml_preferred ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_legacy_toml ... ok
[INFO] [stdout] test config::tests::find_config_in_project_ws_toml_beats_root_json ... ok
[INFO] [stdout] test config::tests::find_config_in_project_root_json_fallback ... ok
[INFO] [stdout] test commands::sync::tests::test_version_hashes ... ok
[INFO] [stdout] test config::tests::parse_full_json_config_with_camel_case ... ok
[INFO] [stdout] test config::tests::find_config_prefers_edict_toml ... ok
[INFO] [stdout] test config::tests::find_config_in_project_ws_json_fallback ... ok
[INFO] [stdout] test config::tests::find_config_returns_none_when_missing ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_json ... ok
[INFO] [stdout] test config::tests::json_to_toml_conversion ... ok
[INFO] [stdout] test config::tests::parse_missing_required_fields ... ok
[INFO] [stdout] test config::tests::parse_minimal_toml_config ... ok
[INFO] [stdout] test config::tests::parse_missing_optional_fields ... ok
[INFO] [stdout] test config::tests::parse_toml_with_env_section ... ok
[INFO] [stdout] test config::tests::parse_toml_without_env_section ... ok
[INFO] [stdout] test config::tests::parse_full_toml_config ... ok
[INFO] [stdout] test config::tests::parse_malformed_json ... ok
[INFO] [stdout] test config::tests::parse_malformed_toml ... ok
[INFO] [stdout] test config::tests::resolve_model_passthrough ... ok
[INFO] [stdout] test config::tests::resolve_model_custom_tiers ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_explicit_model ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_legacy_names ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_tiers ... ok
[INFO] [stdout] test config::tests::resolve_model_tier_names ... ok
[INFO] [stdout] test config::tests::resolved_env_expands_values ... ok
[INFO] [stdout] test hooks::registry::tests::all_hooks_registered ... ok
[INFO] [stdout] test config::tests::to_toml_includes_comments ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_direct ... ok
[INFO] [stdout] test config::tests::roundtrip_toml ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_not_found ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_edict_toml_preferred ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_legacy_toml_accepted ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_empty ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_ws_default ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_not_found ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_ws_default ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_truncation ... ok
[INFO] [stdout] test hooks::run::tests::validate_agent_name_accepts_valid ... ok
[INFO] [stdout] test hooks::run::tests::validate_agent_name_rejects_invalid ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_with_messages ... ok
[INFO] [stdout] test subprocess::tests::invalid_workspace_names ... ok
[INFO] [stdout] test subprocess::tests::maw_exec_wrapper ... ok
[INFO] [stdout] test subprocess::tests::parse_json_output ... ok
[INFO] [stdout] test subprocess::tests::run_not_found ... ok
[INFO] [stdout] test subprocess::tests::run_false_fails ... ok
[INFO] [stdout] test subprocess::tests::run_echo ... ok
[INFO] [stdout] test template::tests::test_render_agents_md ... ok
[INFO] [stdout] test subprocess::tests::run_ok_returns_error_on_failure ... ok
[INFO] [stdout] test template::tests::test_update_managed_section ... ok
[INFO] [stdout] test commands::run_agent::tests::format_markdown_pretty_mode ... ok
[INFO] [stdout] test template::tests::test_update_managed_section_migrates_legacy_markers ... ok
[INFO] [stdout] test commands::run_agent::tests::format_markdown_text_mode ... ok
[INFO] [stdout] test subprocess::tests::run_with_timeout_succeeds ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 350 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/run_agent_integration.rs (/opt/rustwide/target/debug/deps/run_agent_integration-b4f36bc38d13037e)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test run_agent_rejects_unknown_runner ... ok
[INFO] [stdout] test run_agent_defaults_to_pi_runner ... ok
[INFO] [stdout] test run_agent_requires_prompt ... ok
[INFO] [stdout] test run_agent_handles_claude_not_found ... ok
[INFO] [stdout] test run_agent_pi_simulation_text_output ... ok
[INFO] [stdout] test run_agent_pi_simulation_tool_error ... ok
[INFO] [stdout] test run_agent_pi_simulation_error_exit ... ok
[INFO] [stdout] test run_agent_pi_simulation_tool_use ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- run_agent_pi_simulation_tool_use stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'run_agent_pi_simulation_tool_use' (737) panicked at tests/run_agent_integration.rs:172:5:
[INFO] [stdout] should show tool name 'read', got: 
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5bdfe6d5219a - std[ec419fa8110287d5]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5bdfe6d5219a - std[ec419fa8110287d5]::backtrace_rs::backtrace::trace_unsynchronized::<std[ec419fa8110287d5]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5bdfe6d5219a - std[ec419fa8110287d5]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5bdfe6d5219a - <<std[ec419fa8110287d5]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[35159d6ffb30e017]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5bdfe6d688aa - <core[35159d6ffb30e017]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5bdfe6d688aa - core[35159d6ffb30e017]::fmt::write
[INFO] [stdout]    6:     0x5bdfe6d57eb2 - std[ec419fa8110287d5]::io::default_write_fmt::<alloc[a8a7aba520129d98]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x5bdfe6d57eb2 - <alloc[a8a7aba520129d98]::vec::Vec<u8> as std[ec419fa8110287d5]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x5bdfe6d2f25f - <std[ec419fa8110287d5]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5bdfe6d2f25f - std[ec419fa8110287d5]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5bdfe6d49cc9 - std[ec419fa8110287d5]::panicking::default_hook
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5bdfe6ca332c - <alloc[a8a7aba520129d98]::boxed::Box<dyn for<'a, 'b> core[35159d6ffb30e017]::ops::function::Fn<(&'a std[ec419fa8110287d5]::panic::PanicHookInfo<'b>,), Output = ()> + core[35159d6ffb30e017]::marker::Sync + core[35159d6ffb30e017]::marker::Send> as core[35159d6ffb30e017]::ops::function::Fn<(&std[ec419fa8110287d5]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x5bdfe6ca332c - test[a8007afcd3effadc]::test_main_inner::<test[a8007afcd3effadc]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x5bdfe6d49e82 - <alloc[a8a7aba520129d98]::boxed::Box<dyn for<'a, 'b> core[35159d6ffb30e017]::ops::function::Fn<(&'a std[ec419fa8110287d5]::panic::PanicHookInfo<'b>,), Output = ()> + core[35159d6ffb30e017]::marker::Sync + core[35159d6ffb30e017]::marker::Send> as core[35159d6ffb30e017]::ops::function::Fn<(&std[ec419fa8110287d5]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x5bdfe6d49e82 - std[ec419fa8110287d5]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5bdfe6d2f318 - std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5bdfe6d26bd9 - std[ec419fa8110287d5]::sys::backtrace::__rust_end_short_backtrace::<std[ec419fa8110287d5]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5bdfe6d300bd - __rustc[cfb3622dd870db93]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5bdfe6d690bc - core[35159d6ffb30e017]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5bdfe6c87a50 - run_agent_integration[fd93b77df9d0b3d0]::run_agent_pi_simulation_tool_use
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/run_agent_integration.rs:172:5
[INFO] [stdout]   20:     0x5bdfe6c86787 - run_agent_integration[fd93b77df9d0b3d0]::run_agent_pi_simulation_tool_use::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/tests/run_agent_integration.rs:121:38
[INFO] [stdout]   21:     0x5bdfe6c8c386 - <run_agent_integration[fd93b77df9d0b3d0]::run_agent_pi_simulation_tool_use::{closure#0} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x5bdfe6c9660b - <fn() -> core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5bdfe6c9660b - test[a8007afcd3effadc]::__rust_begin_short_backtrace::<core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>, fn() -> core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x5bdfe6ca3dfb - test[a8007afcd3effadc]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x5bdfe6ca3dfb - <core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x5bdfe6ca3dfb - std[ec419fa8110287d5]::panicking::catch_unwind::do_call::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}>, core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x5bdfe6ca3dfb - std[ec419fa8110287d5]::panicking::catch_unwind::<core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>, core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x5bdfe6ca3dfb - std[ec419fa8110287d5]::panic::catch_unwind::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<test[a8007afcd3effadc]::run_test_in_process::{closure#0}>, core[35159d6ffb30e017]::result::Result<(), alloc[a8a7aba520129d98]::string::String>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x5bdfe6ca3dfb - test[a8007afcd3effadc]::run_test_in_process
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x5bdfe6ca3dfb - test[a8007afcd3effadc]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x5bdfe6c9e7d4 - test[a8007afcd3effadc]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x5bdfe6c9e7d4 - std[ec419fa8110287d5]::sys::backtrace::__rust_begin_short_backtrace::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x5bdfe6ca6a02 - std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x5bdfe6ca6a02 - <core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x5bdfe6ca6a02 - std[ec419fa8110287d5]::panicking::catch_unwind::do_call::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x5bdfe6ca6a02 - std[ec419fa8110287d5]::panicking::catch_unwind::<(), core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x5bdfe6ca6a02 - std[ec419fa8110287d5]::panic::catch_unwind::<core[35159d6ffb30e017]::panic::unwind_safe::AssertUnwindSafe<std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x5bdfe6ca6a02 - std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked::<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x5bdfe6ca6a02 - <std[ec419fa8110287d5]::thread::lifecycle::spawn_unchecked<test[a8007afcd3effadc]::run_test::{closure#1}, ()>::{closure#1} as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x5bdfe6d5185f - <alloc[a8a7aba520129d98]::boxed::Box<dyn core[35159d6ffb30e017]::ops::function::FnOnce<(), Output = ()> + core[35159d6ffb30e017]::marker::Send> as core[35159d6ffb30e017]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   41:     0x5bdfe6d5185f - <std[ec419fa8110287d5]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/33835004928d3bf65db4d4712e1330766263b0bd/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x79d884abaaa4 - <unknown>
[INFO] [stdout]   43:     0x79d884b47a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     run_agent_pi_simulation_tool_use
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 7 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--test run_agent_integration`
[INFO] running `Command { std: "docker" "inspect" "e75ec122145b4ea59765cf1f19c7e63aa25cf42f5ecaeb5bb6ca2ee9c5cfa5c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e75ec122145b4ea59765cf1f19c7e63aa25cf42f5ecaeb5bb6ca2ee9c5cfa5c1", kill_on_drop: false }`
[INFO] [stdout] e75ec122145b4ea59765cf1f19c7e63aa25cf42f5ecaeb5bb6ca2ee9c5cfa5c1
