[INFO] fetching crate edict-cli 0.20.2...
[INFO] testing edict-cli-0.20.2 against beta-2026-03-05 for beta-1.95-1
[INFO] extracting crate edict-cli 0.20.2 into /workspace/builds/worker-5-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-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate edict-cli 0.20.2 on toolchain beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "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" "+beta-2026-03-05" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+beta-2026-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f36caeb14560be02dbfabd50565b57144be1236b7fc354639557e747c84e0783
[INFO] running `Command { std: "docker" "start" "-a" "f36caeb14560be02dbfabd50565b57144be1236b7fc354639557e747c84e0783", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f36caeb14560be02dbfabd50565b57144be1236b7fc354639557e747c84e0783", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f36caeb14560be02dbfabd50565b57144be1236b7fc354639557e747c84e0783", kill_on_drop: false }`
[INFO] [stdout] f36caeb14560be02dbfabd50565b57144be1236b7fc354639557e747c84e0783
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9bb838f8ea689250d47e794bd26439616d812bfead8f7882b7854715eb2ad4aa
[INFO] running `Command { std: "docker" "start" "-a" "9bb838f8ea689250d47e794bd26439616d812bfead8f7882b7854715eb2ad4aa", kill_on_drop: false }`
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling zerocopy v0.8.40
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling nix v0.31.2
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]    Compiling strict v0.2.0
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling schemars v0.8.22
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling clap_builder v4.5.60
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling crossbeam v0.8.4
[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 unicode-width v0.1.14
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling shell-words v1.1.1
[INFO] [stderr]    Compiling ctrlc v3.5.2
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling tempfile v3.26.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]    Compiling prost-derive v0.14.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.6.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling rustls-webpki v0.103.9
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling schemars_derive v0.8.22
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling lazy-regex v3.6.0
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling dialoguer v0.11.0
[INFO] [stderr]    Compiling prost v0.14.3
[INFO] [stderr]    Compiling pin-project v1.1.11
[INFO] [stderr]    Compiling coolor v1.1.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling tonic v0.14.5
[INFO] [stderr]    Compiling opentelemetry v0.31.0
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling crokey-proc_macros v1.4.0
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tonic-prost v0.14.5
[INFO] [stderr]    Compiling clap v4.5.60
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling crokey v1.4.0
[INFO] [stderr]    Compiling minijinja v2.17.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling opentelemetry_sdk v0.31.0
[INFO] [stderr]    Compiling termimad v0.34.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling opentelemetry-appender-tracing v0.31.1
[INFO] [stderr]    Compiling tracing-opentelemetry v0.32.1
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling ureq v3.2.0
[INFO] [stderr]    Compiling opentelemetry-proto v0.31.0
[INFO] [stderr]    Compiling opentelemetry-http v0.31.0
[INFO] [stderr]    Compiling opentelemetry-otlp v0.31.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 1m 09s
[INFO] running `Command { std: "docker" "inspect" "9bb838f8ea689250d47e794bd26439616d812bfead8f7882b7854715eb2ad4aa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9bb838f8ea689250d47e794bd26439616d812bfead8f7882b7854715eb2ad4aa", kill_on_drop: false }`
[INFO] [stdout] 9bb838f8ea689250d47e794bd26439616d812bfead8f7882b7854715eb2ad4aa
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 35dd393ec7cb4353596bd5ac7826574ef37632ea71c524b8a83aac6f4e6d1552
[INFO] running `Command { std: "docker" "start" "-a" "35dd393ec7cb4353596bd5ac7826574ef37632ea71c524b8a83aac6f4e6d1552", kill_on_drop: false }`
[INFO] [stderr]    Compiling predicates-core v1.0.10
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling bstr v1.12.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-tree v1.0.13
[INFO] [stderr]    Compiling predicates v3.1.4
[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 10.78s
[INFO] running `Command { std: "docker" "inspect" "35dd393ec7cb4353596bd5ac7826574ef37632ea71c524b8a83aac6f4e6d1552", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "35dd393ec7cb4353596bd5ac7826574ef37632ea71c524b8a83aac6f4e6d1552", kill_on_drop: false }`
[INFO] [stdout] 35dd393ec7cb4353596bd5ac7826574ef37632ea71c524b8a83aac6f4e6d1552
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-03-05" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] bcce4e5981fda12fe55597db542f697611aab34768d730b464d23870d1d57e4d
[INFO] running `Command { std: "docker" "start" "-a" "bcce4e5981fda12fe55597db542f697611aab34768d730b464d23870d1d57e4d", 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` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr] warning: `edict-cli` (test "run_agent_integration") generated 8 warnings
[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-374119f33d04b594)
[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::tests::parse_inbox_count_total_unread ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_assignments_multiple ... 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_array_command ... 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_old_format ... 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_preserves_non_botbox ... ok
[INFO] [stdout] test commands::dev_loop::prompt::tests::prompt_contains_all_protocol_commands ... ok
[INFO] [stdout] test commands::dev_loop::tests::parse_ready_count_empty ... ok
[INFO] [stdout] test commands::dev_loop::prompt::tests::prompt_contains_protocol_fallback_wording ... ok
[INFO] [stdout] test commands::hooks::tests::is_botbox_hook_entry_detects_legacy_botbox_array_command ... ok
[INFO] [stdout] test commands::hooks::tests::validate_name_accepts_valid ... ok
[INFO] [stdout] test commands::init::tests::test_config_version_matches ... ok
[INFO] [stdout] test commands::init::tests::test_build_config_no_env_for_non_rust ... 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_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_name_valid ... ok
[INFO] [stdout] test commands::init::tests::test_validate_name_invalid ... 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::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_basic ... 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_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_review_detail_with_votes ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_empty ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_clean ... 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_skips_default ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_missing_advice ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_from_plain_output ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_find_workspace ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_basic ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims_other_agent ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_workspace_claims ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_with_advice ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_warning_for_active_bones ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_empty_claims ... 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_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_multiline_finds_first ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_json_with_failure ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_basic ... 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_json_valid_structure ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_failure_is_red ... ok
[INFO] [stdout] test commands::protocol::executor::tests::empty_steps_list ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_has_colors ... 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::extract_workspace_name_rejects_spaces_in_quoted ... ok
[INFO] [stdout] test commands::protocol::executor::tests::render_pretty_success_is_green ... 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_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_to_std_exit_code ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::exit_code_values ... ok
[INFO] [stdout] test commands::protocol::executor::tests::ws_substitution_mock ... 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::operational_error_exit_code_is_one ... 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::exit_policy::tests::protocol_result_success ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_no_merge ... 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::finish::tests::test_build_finish_steps_shell_safety ... 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_basic ... 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_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_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_blocked_workflow ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_no_push ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_cleanup_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_compatibility_additive_only ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_add_multiple_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_full_guidance_json ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_review_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_start_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_minimal_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_text_render_includes_all_fields ... 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_new_start ... 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::guidance_with_bone_and_workspace ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_advice ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_review ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_stale_window_logic ... 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_includes_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_fresh ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_has_work ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_status_resumable ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_blocked_status_is_red ... 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_json_valid ... 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_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_includes_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_minimal ... 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_json_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_resumable ... 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_advice ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_has_work ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_diagnostics ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_without_execution_report_shows_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::snapshot_at_is_rfc3339 ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_no_workspace ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_fresh_guidance ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_pending ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_invalid_bead_id ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_execution_report_success ... 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::render::tests::validate_guidance_invalid_workspace_name ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_override ... 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_review_approved ... 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_approved_all_reviewers_lgtm ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_blocked ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_blocked_one_reviewer_blocks ... ok
[INFO] [stdout] test commands::protocol::render::tests::status_serialization ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_lgtm_then_block_latest_is_block ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_no_workspace ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_override_trims_whitespace ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_multiple_reviewers_mixed ... 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_no_votes ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_needs_review_missing_approvals ... 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::bus_send_no_label ... 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::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_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::escape_backslashes ... 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_double_quotes ... 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_newlines ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_command_injection ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_variable_expansion ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_simple ... 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_identifier_shell_metacharacters ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_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::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_starts_with_dash ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_too_long ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_escapes_unsafe_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_passes_clean_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_bone_id ... 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_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::responder::tests::days_to_ymd_known_date ... ok
[INFO] [stdout] test commands::protocol::shell::tests::ws_merge_with_message ... 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::responder::tests::route_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_dev_case_insensitive ... ok
[INFO] [stdout] test commands::responder::tests::route_dev_no_body ... ok
[INFO] [stdout] test commands::responder::tests::route_devloop_not_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_leads_maps_to_dev ... 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_q_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_qq_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_mission ... ok
[INFO] [stdout] test commands::responder::tests::route_oneshot ... ok
[INFO] [stdout] test commands::responder::tests::route_qq_not_q ... ok
[INFO] [stdout] test commands::responder::tests::route_question_bigq ... 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_qq ... 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::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_result_event_is_completion ... 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_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_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_empty_advice ... ok
[INFO] [stdout] test commands::status::tests::status_report_with_advice ... ok
[INFO] [stdout] test commands::sync::tests::test_design_docs_embedded ... 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::parse_completion_signal_blocked ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_review_disabled ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_protocol_fallback_wording ... 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::parse_completion_signal_missing ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_complete ... ok
[INFO] [stdout] test config::tests::default_model_tiers ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_json ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_error ... ok
[INFO] [stdout] test config::tests::find_config_in_project_missing ... ok
[INFO] [stdout] test config::tests::find_config_in_project_legacy_toml_accepted ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_output ... ok
[INFO] [stdout] test commands::sync::tests::test_version_hashes ... ok
[INFO] [stdout] test config::tests::find_config_in_project_root_json_fallback ... 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::expand_env_value_dollar_var ... ok
[INFO] [stdout] test config::tests::expand_env_value_no_vars ... ok
[INFO] [stdout] test config::tests::expand_env_value_unset_var_preserved ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_legacy_toml ... ok
[INFO] [stdout] test config::tests::find_config_prefers_edict_toml ... ok
[INFO] [stdout] test config::tests::find_config_returns_none_when_missing ... ok
[INFO] [stdout] test config::tests::parse_full_json_config_with_camel_case ... ok
[INFO] [stdout] test config::tests::parse_malformed_toml ... ok
[INFO] [stdout] test config::tests::parse_malformed_json ... ok
[INFO] [stdout] test config::tests::parse_missing_optional_fields ... ok
[INFO] [stdout] test config::tests::parse_minimal_toml_config ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_tiers ... ok
[INFO] [stdout] test config::tests::resolve_model_passthrough ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_explicit_model ... ok
[INFO] [stdout] test config::tests::resolve_model_tier_names ... ok
[INFO] [stdout] test config::tests::resolve_model_custom_tiers ... ok
[INFO] [stdout] test config::tests::parse_missing_required_fields ... ok
[INFO] [stdout] test config::tests::parse_toml_without_env_section ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_legacy_names ... ok
[INFO] [stdout] test config::tests::json_to_toml_conversion ... ok
[INFO] [stdout] test config::tests::resolved_env_expands_values ... ok
[INFO] [stdout] test config::tests::parse_toml_with_env_section ... 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::registry::tests::all_hooks_registered ... ok
[INFO] [stdout] test config::tests::roundtrip_toml ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_not_found ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_empty ... 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 subprocess::tests::invalid_workspace_names ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_not_found ... ok
[INFO] [stdout] test subprocess::tests::maw_exec_wrapper ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_truncation ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_legacy_toml_accepted ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_with_messages ... ok
[INFO] [stdout] test subprocess::tests::parse_json_output ... ok
[INFO] [stdout] test config::tests::parse_full_toml_config ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_direct ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_ws_default ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_ws_default ... ok
[INFO] [stdout] test template::tests::test_update_managed_section ... ok
[INFO] [stdout] test template::tests::test_render_agents_md ... ok
[INFO] [stdout] test template::tests::test_update_managed_section_migrates_legacy_markers ... ok
[INFO] [stdout] test commands::run_agent::tests::format_markdown_pretty_mode ... ok
[INFO] [stdout] test commands::run_agent::tests::format_markdown_text_mode ... ok
[INFO] [stdout] test subprocess::tests::run_ok_returns_error_on_failure ... ok
[INFO] [stdout] test subprocess::tests::run_false_fails ... ok
[INFO] [stdout] test subprocess::tests::run_not_found ... ok
[INFO] [stdout] test subprocess::tests::run_echo ... 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.10s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/edict-a9b0d3c821015260)
[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::tests::parse_inbox_count_total_unread ... 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::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::hooks::tests::is_botbox_hook_entry_detects_edict_array_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::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::is_botbox_hook_entry_detects_edict_string_command ... ok
[INFO] [stdout] test commands::hooks::tests::validate_name_rejects_invalid ... ok
[INFO] [stdout] test commands::init::tests::test_build_config_no_env_for_non_rust ... ok
[INFO] [stdout] test commands::init::tests::test_detect_from_empty_agents_md ... ok
[INFO] [stdout] test commands::init::tests::test_detect_from_agents_md ... ok
[INFO] [stdout] test commands::init::tests::test_build_config ... ok
[INFO] [stdout] test commands::init::tests::test_validate_name_valid ... ok
[INFO] [stdout] test commands::init::tests::test_validate_name_invalid ... ok
[INFO] [stdout] test commands::init::tests::test_validate_values_invalid ... ok
[INFO] [stdout] test commands::init::tests::test_validate_values_ok ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::claim_bone_id_extraction ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::claim_no_matching_patterns ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_basic ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_extra_fields ... ok
[INFO] [stdout] test commands::init::tests::test_config_version_matches ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_minimal ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_bone_show_invalid_json ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_extra_fields_tolerated ... ok
[INFO] [stdout] test commands::init::tests::test_fetch_gitignore_validates_languages ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_missing_optional_fields ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_invalid_json ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_basic ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_minimal ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_extra_fields ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_claims_empty ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_basic ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_with_advice ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_clean ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_review_detail_with_votes ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_warning_for_active_bones ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_basic ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_reviews_list_empty ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_held_bone_claims_other_agent ... ok
[INFO] [stdout] test commands::protocol::cleanup::tests::test_cleanup_status_has_resources ... ok
[INFO] [stdout] test commands::protocol::adapters::tests::parse_workspaces_missing_advice ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_empty_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_held_workspace_claims ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_empty ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_find_workspace ... ok
[INFO] [stdout] test commands::protocol::executor::tests::extract_workspace_name_from_plain_output ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone_fallback_no_memo ... ok
[INFO] [stdout] test commands::protocol::context::tests::test_workspace_for_bone_skips_default ... 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_no_match ... 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_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::render_json_valid_structure ... 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::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_to_std_exit_code ... 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::operational_error_exit_code_is_one ... 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::exit_policy::tests::protocol_result_operational_error ... ok
[INFO] [stdout] test commands::protocol::exit_policy::tests::protocol_result_success ... 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_with_merge ... ok
[INFO] [stdout] test commands::protocol::merge::tests::test_build_merge_steps_announce_includes_bone ... ok
[INFO] [stdout] test commands::protocol::finish::tests::test_build_finish_steps_no_merge ... 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_extra_fields_tolerated ... 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_conflicts ... 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_blocked_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_cleanup_workflow ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_compatibility_additive_only ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_full_guidance_json ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_guidance_json_structure ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_minimal_guidance_json ... ok
[INFO] [stdout] test commands::protocol::render::tests::golden_review_workflow ... 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::golden_status_variants_are_complete ... 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::guidance_new_start ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_blocked ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_set_freshness ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_advice ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_json_roundtrip ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_with_review ... 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_add_step ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_json_includes_freshness ... 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::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_valid ... 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_json_status_resumable ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_ready_status_is_green ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_with_execution_report ... ok
[INFO] [stdout] test commands::protocol::render::tests::guidance_default_freshness ... 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_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_status_resumable ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_advice ... 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::render_text_without_execution_report_shows_steps ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_with_diagnostics ... ok
[INFO] [stdout] test commands::protocol::render::tests::validate_guidance_invalid_bead_id ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_pretty_blocked_status_is_red ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_status_fresh ... ok
[INFO] [stdout] test commands::protocol::render::tests::render_text_minimal ... 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::render::tests::render_text_with_bead_and_steps ... 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_pending ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_no_workspace ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_fresh_guidance ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_bone_resume_review_blocked ... 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::render::tests::status_serialization ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_blocked_one_reviewer_blocks ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_blocked_then_lgtm_latest_is_lgtm ... ok
[INFO] [stdout] test commands::protocol::resume::tests::test_multiple_bones_have_separators ... 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_multiple_reviewers_mixed ... 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::tests::resolve_reviewers_override_trims_whitespace ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_approved_all_reviewers_lgtm ... ok
[INFO] [stdout] test commands::protocol::review_gate::tests::test_approved_empty_required_reviewers ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_rejects_invalid_names ... ok
[INFO] [stdout] test commands::protocol::review::tests::resolve_reviewers_override ... ok
[INFO] [stdout] test commands::protocol::shell::tests::bn_comment_with_escaping ... 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_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::bus_send_no_label ... 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_stake_basic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::command_builders_are_deterministic ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_stake_no_memo ... ok
[INFO] [stdout] test commands::protocol::shell::tests::crit_request_basic ... 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::escape_all_metacharacters ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_backslashes ... 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_newlines ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_multiple_single_quotes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::claims_release_basic ... 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_double_quotes ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_command_injection ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_prevents_variable_expansion ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::escape_simple ... 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::escape_with_spaces ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_bone_id_no_hyphen ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_review_id_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::invalid_workspace_empty ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_special_chars ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_identifier_shell_metacharacters ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_starts_with_dash ... ok
[INFO] [stdout] test commands::protocol::shell::tests::invalid_workspace_too_long ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_escapes_unsafe_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::safe_ident_passes_clean_values ... ok
[INFO] [stdout] test commands::protocol::shell::tests::valid_bone_id ... 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_workspace_names ... ok
[INFO] [stdout] test commands::protocol::shell::tests::workspace_exactly_64_chars ... 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::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::responder::tests::route_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_devloop_not_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_leads_maps_to_dev ... ok
[INFO] [stdout] test commands::responder::tests::route_dev_case_insensitive ... ok
[INFO] [stdout] test commands::responder::tests::route_leads_no_body ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_big_q_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_qq_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_explicit_model_colon ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_q_colon ... 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_qq_not_q ... ok
[INFO] [stdout] test commands::responder::tests::route_question_bigq ... ok
[INFO] [stdout] test commands::responder::tests::route_question_explicit_model ... ok
[INFO] [stdout] test commands::responder::tests::route_question_qq ... ok
[INFO] [stdout] test commands::responder::tests::route_legacy_bead ... 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::route_triage_bare_message ... ok
[INFO] [stdout] test commands::responder::tests::transcript_with_entries ... ok
[INFO] [stdout] test commands::run_agent::tests::claude_result_event_is_completion ... 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::run_agent::tests::detect_format_via_term_env ... ok
[INFO] [stdout] test commands::responder::tests::route_whitespace_only ... 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::pi_session_event_is_not_completion ... ok
[INFO] [stdout] test commands::run_agent::tests::claude_text_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_agent::tests::detect_format_explicit ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_derive_role_no_match ... 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_empty_advice ... ok
[INFO] [stdout] test commands::run_reviewer_loop::tests::test_derive_role_security ... ok
[INFO] [stdout] test commands::status::tests::status_report_with_advice ... ok
[INFO] [stdout] test commands::sync::tests::test_design_docs_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_prompt_contains_agent_identity ... 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::sync::tests::test_reviewer_prompts_embedded ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_blocked ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_missing ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_dispatched_fast_path ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_all_protocol_commands ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_contains_protocol_fallback_wording ... ok
[INFO] [stdout] test commands::worker_loop::tests::build_prompt_review_disabled ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_output ... ok
[INFO] [stdout] test commands::worker_loop::tests::rate_limit_detection_error ... ok
[INFO] [stdout] test commands::worker_loop::tests::parse_completion_signal_complete ... ok
[INFO] [stdout] test config::tests::expand_env_value_no_vars ... ok
[INFO] [stdout] test config::tests::expand_env_value_dollar_var ... ok
[INFO] [stdout] test config::tests::default_model_tiers ... ok
[INFO] [stdout] test config::tests::expand_env_value_unset_var_preserved ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_json ... ok
[INFO] [stdout] test config::tests::find_config_falls_back_to_legacy_toml ... 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_json_fallback ... ok
[INFO] [stdout] test config::tests::find_config_in_project_root_toml_preferred ... ok
[INFO] [stdout] test config::tests::find_config_prefers_edict_toml ... ok
[INFO] [stdout] test config::tests::parse_malformed_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_ws_json_fallback ... ok
[INFO] [stdout] test config::tests::parse_minimal_toml_config ... ok
[INFO] [stdout] test config::tests::parse_malformed_json ... ok
[INFO] [stdout] test config::tests::parse_full_json_config_with_camel_case ... ok
[INFO] [stdout] test config::tests::find_config_returns_none_when_missing ... ok
[INFO] [stdout] test config::tests::parse_missing_required_fields ... ok
[INFO] [stdout] test config::tests::parse_missing_optional_fields ... ok
[INFO] [stdout] test config::tests::parse_full_toml_config ... ok
[INFO] [stdout] test config::tests::resolve_model_passthrough ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_explicit_model ... ok
[INFO] [stdout] test config::tests::json_to_toml_conversion ... ok
[INFO] [stdout] test hooks::registry::tests::all_hooks_registered ... ok
[INFO] [stdout] test commands::sync::tests::test_version_hashes ... ok
[INFO] [stdout] test config::tests::resolved_env_expands_values ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_legacy_names ... ok
[INFO] [stdout] test config::tests::parse_toml_without_env_section ... ok
[INFO] [stdout] test config::tests::resolve_model_tier_names ... ok
[INFO] [stdout] test config::tests::resolve_model_pool_tiers ... ok
[INFO] [stdout] test config::tests::resolve_model_custom_tiers ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_not_found ... 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 hooks::run::tests::find_ancestor_with_ws_default ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_not_found ... ok
[INFO] [stdout] test config::tests::parse_toml_with_env_section ... ok
[INFO] [stdout] test config::tests::to_toml_includes_comments ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_truncation ... ok
[INFO] [stdout] test hooks::run::tests::find_ancestor_with_direct ... ok
[INFO] [stdout] test hooks::run::tests::validate_agent_name_accepts_valid ... ok
[INFO] [stdout] test hooks::run::tests::find_edict_config_ws_default ... ok
[INFO] [stdout] test hooks::run::tests::parse_inbox_previews_with_messages ... ok
[INFO] [stdout] test hooks::run::tests::validate_agent_name_rejects_invalid ... 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 subprocess::tests::maw_exec_wrapper ... ok
[INFO] [stdout] test subprocess::tests::invalid_workspace_names ... 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_echo ... ok
[INFO] [stdout] test template::tests::test_render_agents_md ... ok
[INFO] [stdout] test subprocess::tests::run_false_fails ... ok
[INFO] [stdout] test template::tests::test_update_managed_section ... ok
[INFO] [stdout] test subprocess::tests::run_ok_returns_error_on_failure ... ok
[INFO] [stdout] test template::tests::test_update_managed_section_migrates_legacy_markers ... ok
[INFO] [stdout] test commands::run_agent::tests::format_markdown_pretty_mode ... 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-a59fd064f0d79d19)
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test run_agent_requires_prompt ... ok
[INFO] [stdout] test run_agent_rejects_unknown_runner ... ok
[INFO] [stdout] test run_agent_defaults_to_pi_runner ... ok
[INFO] [stdout] test run_agent_handles_claude_not_found ... ok
[INFO] [stdout] test run_agent_pi_simulation_error_exit ... 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_tool_use ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests edict
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "bcce4e5981fda12fe55597db542f697611aab34768d730b464d23870d1d57e4d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bcce4e5981fda12fe55597db542f697611aab34768d730b464d23870d1d57e4d", kill_on_drop: false }`
[INFO] [stdout] bcce4e5981fda12fe55597db542f697611aab34768d730b464d23870d1d57e4d
