[INFO] cloning repository https://github.com/hydai/hammurabi [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hydai/hammurabi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhydai%2Fhammurabi", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhydai%2Fhammurabi'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cf30664b25886bf6c2e89d418fed4e377d8aaf03 [INFO] testing hydai/hammurabi against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhydai%2Fhammurabi" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/hydai/hammurabi [INFO] finished tweaking git repo https://github.com/hydai/hammurabi [INFO] tweaked toml for git repo https://github.com/hydai/hammurabi written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/hydai/hammurabi on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/hydai/hammurabi 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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a [INFO] running `Command { std: "docker" "start" "-a" "ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a", kill_on_drop: false }` [INFO] [stdout] ebec0919378c355c1260e027c4aedab3d4ec1273d225729351f087af5325034a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778 [INFO] running `Command { std: "docker" "start" "-a" "19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling libc v0.2.186 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling cc v1.2.60 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling writeable v0.6.3 [INFO] [stderr] Compiling litemap v0.8.2 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling utf8_iter v1.0.4 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling rustls v0.23.39 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling time-core v0.1.8 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling compression-core v0.4.31 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling num-conv v0.2.1 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling time-macros v0.2.27 [INFO] [stderr] Compiling compression-codecs v0.4.37 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling openssl-probe v0.2.1 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling bitflags v2.11.1 [INFO] [stderr] Compiling pkg-config v0.3.33 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling rustls-native-certs v0.8.3 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling libsqlite3-sys v0.28.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling webpki-roots v1.0.7 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling iri-string v0.7.12 [INFO] [stderr] Compiling hashbrown v0.17.0 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling pem v3.0.6 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling tokio v1.52.1 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling simple_asn1 v0.6.4 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling pin-project-internal v1.1.11 [INFO] [stderr] Compiling snafu-derive v0.8.9 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling pin-project v1.1.11 [INFO] [stderr] Compiling jsonwebtoken v9.3.1 [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling async-compression v0.4.41 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling snafu v0.8.9 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling arc-swap v1.9.1 [INFO] [stderr] Compiling clap_derive v4.6.1 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling secrecy v0.10.3 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling hyper-rustls v0.27.9 [INFO] [stderr] Compiling hyper-timeout v0.5.2 [INFO] [stderr] Compiling octocrab v0.41.2 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling clap v4.6.1 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling hammurabi v0.1.3 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 16s [INFO] running `Command { std: "docker" "inspect" "19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778", kill_on_drop: false }` [INFO] [stdout] 19299faf0c7944ea55c35c72b7070c542c368c22fbd1a31dc9596dbda91dc778 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae [INFO] running `Command { std: "docker" "start" "-a" "aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae", kill_on_drop: false }` [INFO] [stderr] Compiling hammurabi v0.1.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `claude_cli::ClaudeCliAgent` [INFO] [stdout] --> tests/../src/agents/mod.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | pub use claude_cli::ClaudeCliAgent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `registry::AgentRegistry` [INFO] [stdout] --> tests/../src/agents/mod.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub use registry::AgentRegistry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `claude_cli::ClaudeCliAgent` [INFO] [stdout] --> tests/../src/agents/mod.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | pub use claude_cli::ClaudeCliAgent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `claude_cli::ClaudeCliAgent` [INFO] [stdout] --> tests/../src/agents/mod.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | pub use claude_cli::ClaudeCliAgent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reader_alive` is never used [INFO] [stdout] --> tests/../src/acp/session.rs:323:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl Session { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn reader_alive(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `with_registry` is never used [INFO] [stdout] --> tests/../src/agents/acp.rs:69:12 [INFO] [stdout] | [INFO] [stdout] 56 | impl AcpAgent { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn with_registry(mut self, registry: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct ClaudeCliAgent; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl ClaudeCliAgent { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/registry.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl AgentRegistry { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 18 | pub fn new(agents: HashMap>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Database`, `GitHub`, and `Worktree` are never constructed [INFO] [stdout] --> tests/../src/error.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum HammurabiError { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 9 | Database(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 12 | GitHub(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | Worktree(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HammurabiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reader_alive` is never used [INFO] [stdout] --> tests/../src/acp/session.rs:323:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl Session { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn reader_alive(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_acp` is never used [INFO] [stdout] --> tests/../src/agents/mod.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl AgentKind { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 49 | /// Is this kind served by the ACP adapter? [INFO] [stdout] 50 | pub fn is_acp(self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `with_registry` are never used [INFO] [stdout] --> tests/../src/agents/acp.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 56 | impl AcpAgent { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 57 | pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn with_registry(mut self, registry: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct ClaudeCliAgent; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl ClaudeCliAgent { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/registry.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl AgentRegistry { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 18 | pub fn new(agents: HashMap>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read [INFO] [stdout] --> tests/../src/config.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 30 | App { [INFO] [stdout] | --- fields in this variant [INFO] [stdout] 31 | app_id: u64, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | private_key_pem: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | installation_id: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GitHubAuth` 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: associated function `from_cli_override` is never used [INFO] [stdout] --> tests/../src/config.rs:271:12 [INFO] [stdout] | [INFO] [stdout] 221 | impl RepoConfig { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn from_cli_override( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_config_file` is never used [INFO] [stdout] --> tests/../src/config.rs:403:4 [INFO] [stdout] | [INFO] [stdout] 403 | fn find_config_file() -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dirs_path` is never used [INFO] [stdout] --> tests/../src/config.rs:418:4 [INFO] [stdout] | [INFO] [stdout] 418 | fn dirs_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load` is never used [INFO] [stdout] --> tests/../src/config.rs:496:14 [INFO] [stdout] | [INFO] [stdout] 496 | pub async fn load(source: &ConfigSource) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_from` is never used [INFO] [stdout] --> tests/../src/config.rs:514:8 [INFO] [stdout] | [INFO] [stdout] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_from_url` is never used [INFO] [stdout] --> tests/../src/config.rs:522:14 [INFO] [stdout] | [INFO] [stdout] 522 | pub async fn load_from_url(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_raw_from_path` is never used [INFO] [stdout] --> tests/../src/config.rs:533:4 [INFO] [stdout] | [INFO] [stdout] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `empty_raw_config` is never used [INFO] [stdout] --> tests/../src/config.rs:550:4 [INFO] [stdout] | [INFO] [stdout] 550 | fn empty_raw_config() -> RawConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `insert_discord_thread`, `get_discord_issue`, `set_issue_github_number`, `get_issue_by_id`, `get_issue_by_github_number_any_source`, and `update_issue_last_pr_comment` are never used [INFO] [stdout] --> tests/../src/db.rs:383:12 [INFO] [stdout] | [INFO] [stdout] 32 | impl Database { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 383 | pub fn insert_discord_thread( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 419 | pub fn get_discord_issue( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn set_issue_github_number( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 457 | pub fn get_issue_by_id(&self, id: i64) -> Result, HammurabiError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn get_issue_by_github_number_any_source( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 669 | pub fn update_issue_last_pr_comment( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `user_login` is never read [INFO] [stdout] --> tests/../src/github.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct GitHubIssue { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub user_login: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GitHubIssue` 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: associated function `new` is never used [INFO] [stdout] --> tests/../src/github.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl OctocrabClient { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 95 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_label_adder` is never used [INFO] [stdout] --> tests/../src/github.rs:735:16 [INFO] [stdout] | [INFO] [stdout] 692 | impl MockGitHubClient { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 735 | pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AppTokenProvider` is never constructed [INFO] [stdout] --> tests/../src/worktree.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct AppTokenProvider { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/worktree.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl AppTokenProvider { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 47 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `ensure_default_branch` and `fetch_origin` are never used [INFO] [stdout] --> tests/../src/worktree.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 74 | pub trait WorktreeManager: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] 75 | async fn ensure_bare_clone(&self, repo_url: &str) -> Result; [INFO] [stdout] 76 | async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 77 | async fn fetch_origin(&self) -> Result<(), HammurabiError>; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reader_alive` is never used [INFO] [stdout] --> tests/../src/acp/session.rs:323:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl Session { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn reader_alive(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_acp` is never used [INFO] [stdout] --> tests/../src/agents/mod.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl AgentKind { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 49 | /// Is this kind served by the ACP adapter? [INFO] [stdout] 50 | pub fn is_acp(self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `with_registry` are never used [INFO] [stdout] --> tests/../src/agents/acp.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 56 | impl AcpAgent { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 57 | pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn with_registry(mut self, registry: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct ClaudeCliAgent; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl ClaudeCliAgent { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/registry.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl AgentRegistry { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 18 | pub fn new(agents: HashMap>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read [INFO] [stdout] --> tests/../src/config.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 30 | App { [INFO] [stdout] | --- fields in this variant [INFO] [stdout] 31 | app_id: u64, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | private_key_pem: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | installation_id: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GitHubAuth` 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: associated function `from_cli_override` is never used [INFO] [stdout] --> tests/../src/config.rs:271:12 [INFO] [stdout] | [INFO] [stdout] 221 | impl RepoConfig { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn from_cli_override( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_config_file` is never used [INFO] [stdout] --> tests/../src/config.rs:403:4 [INFO] [stdout] | [INFO] [stdout] 403 | fn find_config_file() -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dirs_path` is never used [INFO] [stdout] --> tests/../src/config.rs:418:4 [INFO] [stdout] | [INFO] [stdout] 418 | fn dirs_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load` is never used [INFO] [stdout] --> tests/../src/config.rs:496:14 [INFO] [stdout] | [INFO] [stdout] 496 | pub async fn load(source: &ConfigSource) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_from` is never used [INFO] [stdout] --> tests/../src/config.rs:514:8 [INFO] [stdout] | [INFO] [stdout] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_from_url` is never used [INFO] [stdout] --> tests/../src/config.rs:522:14 [INFO] [stdout] | [INFO] [stdout] 522 | pub async fn load_from_url(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_raw_from_path` is never used [INFO] [stdout] --> tests/../src/config.rs:533:4 [INFO] [stdout] | [INFO] [stdout] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `empty_raw_config` is never used [INFO] [stdout] --> tests/../src/config.rs:550:4 [INFO] [stdout] | [INFO] [stdout] 550 | fn empty_raw_config() -> RawConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `insert_discord_thread`, `get_discord_issue`, `set_issue_github_number`, `get_issue_by_id`, `get_issue_by_github_number_any_source`, and `update_issue_last_pr_comment` are never used [INFO] [stdout] --> tests/../src/db.rs:383:12 [INFO] [stdout] | [INFO] [stdout] 32 | impl Database { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 383 | pub fn insert_discord_thread( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 419 | pub fn get_discord_issue( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn set_issue_github_number( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 457 | pub fn get_issue_by_id(&self, id: i64) -> Result, HammurabiError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn get_issue_by_github_number_any_source( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 669 | pub fn update_issue_last_pr_comment( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `user_login` is never read [INFO] [stdout] --> tests/../src/github.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct GitHubIssue { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub user_login: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GitHubIssue` 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: associated function `new` is never used [INFO] [stdout] --> tests/../src/github.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl OctocrabClient { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 95 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_label_adder` is never used [INFO] [stdout] --> tests/../src/github.rs:735:16 [INFO] [stdout] | [INFO] [stdout] 692 | impl MockGitHubClient { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 735 | pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AppTokenProvider` is never constructed [INFO] [stdout] --> tests/../src/worktree.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct AppTokenProvider { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/worktree.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl AppTokenProvider { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 47 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `ensure_default_branch` and `fetch_origin` are never used [INFO] [stdout] --> tests/../src/worktree.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 74 | pub trait WorktreeManager: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] 75 | async fn ensure_bare_clone(&self, repo_url: &str) -> Result; [INFO] [stdout] 76 | async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 77 | async fn fetch_origin(&self) -> Result<(), HammurabiError>; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reader_alive` is never used [INFO] [stdout] --> src/acp/session.rs:323:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl Session { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn reader_alive(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_label_adder` is never used [INFO] [stdout] --> src/github.rs:735:16 [INFO] [stdout] | [INFO] [stdout] 692 | impl MockGitHubClient { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 735 | pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reader_alive` is never used [INFO] [stdout] --> tests/../src/acp/session.rs:323:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl Session { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn reader_alive(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_acp` is never used [INFO] [stdout] --> tests/../src/agents/mod.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl AgentKind { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 49 | /// Is this kind served by the ACP adapter? [INFO] [stdout] 50 | pub fn is_acp(self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `with_registry` are never used [INFO] [stdout] --> tests/../src/agents/acp.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 56 | impl AcpAgent { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 57 | pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn with_registry(mut self, registry: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ClaudeCliAgent` is never constructed [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct ClaudeCliAgent; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/claude_cli.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 15 | impl ClaudeCliAgent { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 16 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/agents/registry.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl AgentRegistry { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 18 | pub fn new(agents: HashMap>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read [INFO] [stdout] --> tests/../src/config.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 30 | App { [INFO] [stdout] | --- fields in this variant [INFO] [stdout] 31 | app_id: u64, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | private_key_pem: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | installation_id: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GitHubAuth` 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: associated function `from_cli_override` is never used [INFO] [stdout] --> tests/../src/config.rs:271:12 [INFO] [stdout] | [INFO] [stdout] 221 | impl RepoConfig { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn from_cli_override( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_config_file` is never used [INFO] [stdout] --> tests/../src/config.rs:403:4 [INFO] [stdout] | [INFO] [stdout] 403 | fn find_config_file() -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dirs_path` is never used [INFO] [stdout] --> tests/../src/config.rs:418:4 [INFO] [stdout] | [INFO] [stdout] 418 | fn dirs_path() -> PathBuf { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load` is never used [INFO] [stdout] --> tests/../src/config.rs:496:14 [INFO] [stdout] | [INFO] [stdout] 496 | pub async fn load(source: &ConfigSource) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_from` is never used [INFO] [stdout] --> tests/../src/config.rs:514:8 [INFO] [stdout] | [INFO] [stdout] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_from_url` is never used [INFO] [stdout] --> tests/../src/config.rs:522:14 [INFO] [stdout] | [INFO] [stdout] 522 | pub async fn load_from_url(url: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_raw_from_path` is never used [INFO] [stdout] --> tests/../src/config.rs:533:4 [INFO] [stdout] | [INFO] [stdout] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `empty_raw_config` is never used [INFO] [stdout] --> tests/../src/config.rs:550:4 [INFO] [stdout] | [INFO] [stdout] 550 | fn empty_raw_config() -> RawConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_issue_by_github_number_any_source` and `update_issue_last_pr_comment` are never used [INFO] [stdout] --> tests/../src/db.rs:473:12 [INFO] [stdout] | [INFO] [stdout] 32 | impl Database { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 473 | pub fn get_issue_by_github_number_any_source( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 669 | pub fn update_issue_last_pr_comment( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `user_login` is never read [INFO] [stdout] --> tests/../src/github.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct GitHubIssue { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub user_login: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GitHubIssue` 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: associated function `new` is never used [INFO] [stdout] --> tests/../src/github.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl OctocrabClient { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] 95 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_label_adder` is never used [INFO] [stdout] --> tests/../src/github.rs:735:16 [INFO] [stdout] | [INFO] [stdout] 692 | impl MockGitHubClient { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 735 | pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_agent_registry` is never used [INFO] [stdout] --> tests/../src/poller.rs:45:4 [INFO] [stdout] | [INFO] [stdout] 45 | fn build_agent_registry( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RepoRuntime` is never constructed [INFO] [stdout] --> tests/../src/poller.rs:71:8 [INFO] [stdout] | [INFO] [stdout] 71 | struct RepoRuntime { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_discord_client` is never used [INFO] [stdout] --> tests/../src/poller.rs:88:10 [INFO] [stdout] | [INFO] [stdout] 88 | async fn build_discord_client(cfg: &DiscordChannelConfig) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn_signal_handler` is never used [INFO] [stdout] --> tests/../src/poller.rs:123:4 [INFO] [stdout] | [INFO] [stdout] 123 | fn spawn_signal_handler(token: tokio_util::sync::CancellationToken) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `seed_discord_cursor` is never used [INFO] [stdout] --> tests/../src/poller.rs:171:10 [INFO] [stdout] | [INFO] [stdout] 171 | async fn seed_discord_cursor(client: &dyn DiscordClient, channel_id: u64) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run_daemon` is never used [INFO] [stdout] --> tests/../src/poller.rs:185:14 [INFO] [stdout] | [INFO] [stdout] 185 | pub async fn run_daemon( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `auth_fingerprint` is never used [INFO] [stdout] --> tests/../src/poller.rs:489:4 [INFO] [stdout] | [INFO] [stdout] 489 | fn auth_fingerprint(auth: &GitHubAuth) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_token_provider` is never used [INFO] [stdout] --> tests/../src/poller.rs:507:4 [INFO] [stdout] | [INFO] [stdout] 507 | fn build_token_provider( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_repo_runtime` is never used [INFO] [stdout] --> tests/../src/poller.rs:536:10 [INFO] [stdout] | [INFO] [stdout] 536 | async fn init_repo_runtime( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `poll_cycle` is never used [INFO] [stdout] --> tests/../src/poller.rs:709:10 [INFO] [stdout] | [INFO] [stdout] 709 | async fn poll_cycle(ctx: &TransitionContext) -> Result<(), HammurabiError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_issue` is never used [INFO] [stdout] --> tests/../src/poller.rs:888:10 [INFO] [stdout] | [INFO] [stdout] 888 | async fn process_issue( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_spec_drafting` is never used [INFO] [stdout] --> tests/../src/poller.rs:933:10 [INFO] [stdout] | [INFO] [stdout] 933 | async fn handle_spec_drafting( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_await_spec_approval` is never used [INFO] [stdout] --> tests/../src/poller.rs:979:10 [INFO] [stdout] | [INFO] [stdout] 979 | async fn handle_await_spec_approval( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_await_spec_approval_github` is never used [INFO] [stdout] --> tests/../src/poller.rs:1079:10 [INFO] [stdout] | [INFO] [stdout] 1079 | async fn handle_await_spec_approval_github( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_implementing` is never used [INFO] [stdout] --> tests/../src/poller.rs:1154:10 [INFO] [stdout] | [INFO] [stdout] 1154 | async fn handle_implementing( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_reviewing` is never used [INFO] [stdout] --> tests/../src/poller.rs:1162:10 [INFO] [stdout] | [INFO] [stdout] 1162 | async fn handle_reviewing( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_await_pr_approval` is never used [INFO] [stdout] --> tests/../src/poller.rs:1169:10 [INFO] [stdout] | [INFO] [stdout] 1169 | async fn handle_await_pr_approval( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_failed` is never used [INFO] [stdout] --> tests/../src/poller.rs:1234:10 [INFO] [stdout] | [INFO] [stdout] 1234 | async fn handle_failed( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reconcile` is never used [INFO] [stdout] --> tests/../src/poller.rs:1284:10 [INFO] [stdout] | [INFO] [stdout] 1284 | async fn reconcile(ctx: &TransitionContext) -> Result<(), HammurabiError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AppTokenProvider` is never constructed [INFO] [stdout] --> tests/../src/worktree.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct AppTokenProvider { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> tests/../src/worktree.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl AppTokenProvider { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] 47 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `ensure_default_branch` and `fetch_origin` are never used [INFO] [stdout] --> tests/../src/worktree.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 74 | pub trait WorktreeManager: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] 75 | async fn ensure_bare_clone(&self, repo_url: &str) -> Result; [INFO] [stdout] 76 | async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 77 | async fn fetch_origin(&self) -> Result<(), HammurabiError>; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 05s [INFO] running `Command { std: "docker" "inspect" "aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae", kill_on_drop: false }` [INFO] [stdout] aa87cef66ef340ddb2d2cdb36e0adf7976b2a499e8c0b5acebd5bb390d7e14ae [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984 [INFO] running `Command { std: "docker" "start" "-a" "d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `claude_cli::ClaudeCliAgent` [INFO] [stderr] --> tests/../src/agents/mod.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | pub use claude_cli::ClaudeCliAgent; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `reader_alive` is never used [INFO] [stderr] --> tests/../src/acp/session.rs:323:12 [INFO] [stderr] | [INFO] [stderr] 72 | impl Session { [INFO] [stderr] | ------------ method in this implementation [INFO] [stderr] ... [INFO] [stderr] 323 | pub fn reader_alive(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `is_acp` is never used [INFO] [stderr] --> tests/../src/agents/mod.rs:50:12 [INFO] [stderr] | [INFO] [stderr] 48 | impl AgentKind { [INFO] [stderr] | -------------- method in this implementation [INFO] [stderr] 49 | /// Is this kind served by the ACP adapter? [INFO] [stderr] 50 | pub fn is_acp(self) -> bool { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new` and `with_registry` are never used [INFO] [stderr] --> tests/../src/agents/acp.rs:57:12 [INFO] [stderr] | [INFO] [stderr] 56 | impl AcpAgent { [INFO] [stderr] | ------------- associated items in this implementation [INFO] [stderr] 57 | pub fn new(kind: AgentKind, def: AcpAgentDef) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 69 | pub fn with_registry(mut self, registry: Arc) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ClaudeCliAgent` is never constructed [INFO] [stderr] --> tests/../src/agents/claude_cli.rs:13:12 [INFO] [stderr] | [INFO] [stderr] 13 | pub struct ClaudeCliAgent; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> tests/../src/agents/claude_cli.rs:16:12 [INFO] [stderr] | [INFO] [stderr] 15 | impl ClaudeCliAgent { [INFO] [stderr] | ------------------- associated function in this implementation [INFO] [stderr] 16 | pub fn new() -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> tests/../src/agents/registry.rs:18:12 [INFO] [stderr] | [INFO] [stderr] 17 | impl AgentRegistry { [INFO] [stderr] | ------------------ associated function in this implementation [INFO] [stderr] 18 | pub fn new(agents: HashMap>) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `app_id`, `private_key_pem`, and `installation_id` are never read [INFO] [stderr] --> tests/../src/config.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 30 | App { [INFO] [stderr] | --- fields in this variant [INFO] [stderr] 31 | app_id: u64, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 32 | private_key_pem: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 33 | installation_id: u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `GitHubAuth` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated function `from_cli_override` is never used [INFO] [stderr] --> tests/../src/config.rs:271:12 [INFO] [stderr] | [INFO] [stderr] 221 | impl RepoConfig { [INFO] [stderr] | --------------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 271 | pub fn from_cli_override( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `find_config_file` is never used [INFO] [stderr] --> tests/../src/config.rs:403:4 [INFO] [stderr] | [INFO] [stderr] 403 | fn find_config_file() -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `dirs_path` is never used [INFO] [stderr] --> tests/../src/config.rs:418:4 [INFO] [stderr] | [INFO] [stderr] 418 | fn dirs_path() -> PathBuf { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `load` is never used [INFO] [stderr] --> tests/../src/config.rs:496:14 [INFO] [stderr] | [INFO] [stderr] 496 | pub async fn load(source: &ConfigSource) -> Result { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `load_from` is never used [INFO] [stderr] --> tests/../src/config.rs:514:8 [INFO] [stderr] | [INFO] [stderr] 514 | pub fn load_from(explicit_path: Option<&Path>) -> Result { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `load_from_url` is never used [INFO] [stderr] --> tests/../src/config.rs:522:14 [INFO] [stderr] | [INFO] [stderr] 522 | pub async fn load_from_url(url: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `read_raw_from_path` is never used [INFO] [stderr] --> tests/../src/config.rs:533:4 [INFO] [stderr] | [INFO] [stderr] 533 | fn read_raw_from_path(explicit_path: Option<&Path>) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `empty_raw_config` is never used [INFO] [stderr] --> tests/../src/config.rs:550:4 [INFO] [stderr] | [INFO] [stderr] 550 | fn empty_raw_config() -> RawConfig { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `insert_discord_thread`, `get_discord_issue`, `set_issue_github_number`, `get_issue_by_id`, `get_issue_by_github_number_any_source`, and `update_issue_last_pr_comment` are never used [INFO] [stderr] --> tests/../src/db.rs:383:12 [INFO] [stderr] | [INFO] [stderr] 32 | impl Database { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 383 | pub fn insert_discord_thread( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 419 | pub fn get_discord_issue( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 440 | pub fn set_issue_github_number( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 457 | pub fn get_issue_by_id(&self, id: i64) -> Result, HammurabiError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 473 | pub fn get_issue_by_github_number_any_source( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 669 | pub fn update_issue_last_pr_comment( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `user_login` is never read [INFO] [stderr] --> tests/../src/github.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 19 | pub struct GitHubIssue { [INFO] [stderr] | ----------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 25 | pub user_login: String, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `GitHubIssue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> tests/../src/github.rs:95:12 [INFO] [stderr] | [INFO] [stderr] 94 | impl OctocrabClient { [INFO] [stderr] | ------------------- associated function in this implementation [INFO] [stderr] 95 | pub fn new( [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: method `set_label_adder` is never used [INFO] [stderr] --> tests/../src/github.rs:735:16 [INFO] [stderr] | [INFO] [stderr] 692 | impl MockGitHubClient { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 735 | pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `AppTokenProvider` is never constructed [INFO] [stderr] --> tests/../src/worktree.rs:41:12 [INFO] [stderr] | [INFO] [stderr] 41 | pub struct AppTokenProvider { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> tests/../src/worktree.rs:47:12 [INFO] [stderr] | [INFO] [stderr] 46 | impl AppTokenProvider { [INFO] [stderr] | --------------------- associated function in this implementation [INFO] [stderr] 47 | pub fn new( [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `ensure_default_branch` and `fetch_origin` are never used [INFO] [stderr] --> tests/../src/worktree.rs:76:14 [INFO] [stderr] | [INFO] [stderr] 74 | pub trait WorktreeManager: Send + Sync { [INFO] [stderr] | --------------- methods in this trait [INFO] [stderr] 75 | async fn ensure_bare_clone(&self, repo_url: &str) -> Result; [INFO] [stderr] 76 | async fn ensure_default_branch(&self, default_branch: &str) -> Result<(), HammurabiError>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 77 | async fn fetch_origin(&self) -> Result<(), HammurabiError>; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `reader_alive` is never used [INFO] [stderr] --> src/acp/session.rs:323:12 [INFO] [stderr] | [INFO] [stderr] 72 | impl Session { [INFO] [stderr] | ------------ method in this implementation [INFO] [stderr] ... [INFO] [stderr] 323 | pub fn reader_alive(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `set_label_adder` is never used [INFO] [stderr] --> src/github.rs:735:16 [INFO] [stderr] | [INFO] [stderr] 692 | impl MockGitHubClient { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 735 | pub fn set_label_adder(&self, issue_number: u64, label: &str, user: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `registry::AgentRegistry` [INFO] [stderr] --> tests/../src/agents/mod.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | pub use registry::AgentRegistry; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `with_registry` is never used [INFO] [stderr] --> tests/../src/agents/acp.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 56 | impl AcpAgent { [INFO] [stderr] | ------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 69 | pub fn with_registry(mut self, registry: Arc) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `Database`, `GitHub`, and `Worktree` are never constructed [INFO] [stderr] --> tests/../src/error.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 4 | pub enum HammurabiError { [INFO] [stderr] | -------------- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 9 | Database(String), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 12 | GitHub(String), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 28 | Worktree(String), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `HammurabiError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `get_issue_by_github_number_any_source` and `update_issue_last_pr_comment` are never used [INFO] [stderr] --> tests/../src/db.rs:473:12 [INFO] [stderr] | [INFO] [stderr] 32 | impl Database { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 473 | pub fn get_issue_by_github_number_any_source( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 669 | pub fn update_issue_last_pr_comment( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `build_agent_registry` is never used [INFO] [stderr] --> tests/../src/poller.rs:45:4 [INFO] [stderr] | [INFO] [stderr] 45 | fn build_agent_registry( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `RepoRuntime` is never constructed [INFO] [stderr] --> tests/../src/poller.rs:71:8 [INFO] [stderr] | [INFO] [stderr] 71 | struct RepoRuntime { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `build_discord_client` is never used [INFO] [stderr] --> tests/../src/poller.rs:88:10 [INFO] [stderr] | [INFO] [stderr] 88 | async fn build_discord_client(cfg: &DiscordChannelConfig) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `spawn_signal_handler` is never used [INFO] [stderr] --> tests/../src/poller.rs:123:4 [INFO] [stderr] | [INFO] [stderr] 123 | fn spawn_signal_handler(token: tokio_util::sync::CancellationToken) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `seed_discord_cursor` is never used [INFO] [stderr] --> tests/../src/poller.rs:171:10 [INFO] [stderr] | [INFO] [stderr] 171 | async fn seed_discord_cursor(client: &dyn DiscordClient, channel_id: u64) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `run_daemon` is never used [INFO] [stderr] --> tests/../src/poller.rs:185:14 [INFO] [stderr] | [INFO] [stderr] 185 | pub async fn run_daemon( [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `auth_fingerprint` is never used [INFO] [stderr] --> tests/../src/poller.rs:489:4 [INFO] [stderr] | [INFO] [stderr] 489 | fn auth_fingerprint(auth: &GitHubAuth) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `build_token_provider` is never used [INFO] [stderr] --> tests/../src/poller.rs:507:4 [INFO] [stderr] | [INFO] [stderr] 507 | fn build_token_provider( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `init_repo_runtime` is never used [INFO] [stderr] --> tests/../src/poller.rs:536:10 [INFO] [stderr] | [INFO] [stderr] 536 | async fn init_repo_runtime( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `poll_cycle` is never used [INFO] [stderr] --> tests/../src/poller.rs:709:10 [INFO] [stderr] | [INFO] [stderr] 709 | async fn poll_cycle(ctx: &TransitionContext) -> Result<(), HammurabiError> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `process_issue` is never used [INFO] [stderr] --> tests/../src/poller.rs:888:10 [INFO] [stderr] | [INFO] [stderr] 888 | async fn process_issue( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_spec_drafting` is never used [INFO] [stderr] --> tests/../src/poller.rs:933:10 [INFO] [stderr] | [INFO] [stderr] 933 | async fn handle_spec_drafting( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_await_spec_approval` is never used [INFO] [stderr] --> tests/../src/poller.rs:979:10 [INFO] [stderr] | [INFO] [stderr] 979 | async fn handle_await_spec_approval( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_await_spec_approval_github` is never used [INFO] [stderr] --> tests/../src/poller.rs:1079:10 [INFO] [stderr] | [INFO] [stderr] 1079 | async fn handle_await_spec_approval_github( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_implementing` is never used [INFO] [stderr] --> tests/../src/poller.rs:1154:10 [INFO] [stderr] | [INFO] [stderr] 1154 | async fn handle_implementing( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_reviewing` is never used [INFO] [stderr] --> tests/../src/poller.rs:1162:10 [INFO] [stderr] | [INFO] [stderr] 1162 | async fn handle_reviewing( [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_await_pr_approval` is never used [INFO] [stderr] --> tests/../src/poller.rs:1169:10 [INFO] [stderr] | [INFO] [stderr] 1169 | async fn handle_await_pr_approval( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_failed` is never used [INFO] [stderr] --> tests/../src/poller.rs:1234:10 [INFO] [stderr] | [INFO] [stderr] 1234 | async fn handle_failed( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `reconcile` is never used [INFO] [stderr] --> tests/../src/poller.rs:1284:10 [INFO] [stderr] | [INFO] [stderr] 1284 | async fn reconcile(ctx: &TransitionContext) -> Result<(), HammurabiError> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `hammurabi` (test "integration_lifecycle") generated 23 warnings (run `cargo fix --test "integration_lifecycle" -p hammurabi` to apply 1 suggestion) [INFO] [stderr] warning: `hammurabi` (test "integration_error_handling") generated 23 warnings (23 duplicates) [INFO] [stderr] warning: `hammurabi` (bin "hammurabi" test) generated 2 warnings [INFO] [stderr] warning: `hammurabi` (test "acp_client_integration") generated 8 warnings (5 duplicates) (run `cargo fix --test "acp_client_integration" -p hammurabi` to apply 1 suggestion) [INFO] [stderr] warning: `hammurabi` (test "integration_discord_lifecycle") generated 41 warnings (21 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.50s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/hammurabi-f4a57a256646f032) [INFO] [stdout] [INFO] [stdout] running 252 tests [INFO] [stdout] test access::tests::all_allows_anyone ... ok [INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok [INFO] [stdout] test access::tests::list_matches_listed_user ... ok [INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok [INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok [INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok [INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok [INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok [INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok [INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok [INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok [INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok [INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok [INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok [INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok [INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok [INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok [INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok [INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok [INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok [INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok [INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok [INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok [INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok [INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok [INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok [INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok [INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok [INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok [INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok [INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok [INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok [INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok [INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok [INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok [INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok [INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok [INFO] [stdout] test approval::tests::test_pr_closed ... ok [INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok [INFO] [stdout] test approval::tests::test_pr_merged ... ok [INFO] [stdout] test approval::tests::test_comment_feedback ... ok [INFO] [stdout] test approval::tests::test_retry_no_comment ... ok [INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok [INFO] [stdout] test approval::tests::test_since_id_filters ... ok [INFO] [stdout] test approval::tests::test_pr_pending ... ok [INFO] [stdout] test approval::tests::test_retry_comment_found ... ok [INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok [INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok [INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok [INFO] [stdout] test acp::wire::tests::method_round_trip ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok [INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok [INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok [INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok [INFO] [stdout] test config::tests::test_bypass_label_configured ... ok [INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok [INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok [INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok [INFO] [stdout] test config::tests::test_custom_values ... ok [INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok [INFO] [stdout] test config::tests::github_token_file_reads_value ... ok [INFO] [stdout] test config::tests::test_env_override ... ok [INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok [INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok [INFO] [stdout] test config::tests::test_discord_source_parses ... ok [INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok [INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok [INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok [INFO] [stdout] test config::tests::test_invalid_repo_format ... ok [INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok [INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok [INFO] [stdout] test config::tests::test_missing_ai_model ... ok [INFO] [stdout] test config::tests::test_missing_approvers ... ok [INFO] [stdout] test config::tests::test_multi_repo_config ... ok [INFO] [stdout] test config::tests::test_missing_repo ... ok [INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok [INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok [INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok [INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok [INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok [INFO] [stdout] test config::tests::test_timeout_defaults ... ok [INFO] [stdout] test config::tests::test_per_task_overrides ... ok [INFO] [stdout] test config::tests::test_timeout_custom_values ... ok [INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok [INFO] [stdout] test config::tests::test_valid_config ... ok [INFO] [stdout] test db::tests::test_get_issues_by_state ... ok [INFO] [stdout] test db::tests::test_backfill_repo ... ok [INFO] [stdout] test db::tests::test_get_all_issues ... ok [INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok [INFO] [stdout] test db::tests::test_bypass_default_false ... ok [INFO] [stdout] test db::tests::test_increment_retry_count ... ok [INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok [INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok [INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok [INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok [INFO] [stdout] test db::tests::test_reset_retry_count ... ok [INFO] [stdout] test db::tests::test_set_issue_bypass ... ok [INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok [INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok [INFO] [stdout] test db::tests::test_update_issue_error ... ok [INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok [INFO] [stdout] test discord::mock::tests::edit_message_records ... ok [INFO] [stdout] test db::tests::test_update_issue_worktree ... ok [INFO] [stdout] test db::tests::test_update_issue_state ... ok [INFO] [stdout] test db::tests::test_usage_log ... ok [INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok [INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok [INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok [INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok [INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok [INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok [INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok [INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok [INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok [INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok [INFO] [stdout] test github::tests::test_file_content ... ok [INFO] [stdout] test github::tests::test_create_issue ... ok [INFO] [stdout] test github::tests::test_post_and_get_comments ... ok [INFO] [stdout] test github::tests::test_list_labeled_issues ... ok [INFO] [stdout] test github::tests::test_pr_status ... ok [INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok [INFO] [stdout] test hooks::tests::test_run_hook_none ... ok [INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok [INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok [INFO] [stdout] test lock::tests::test_acquire_and_release ... ok [INFO] [stdout] test models::tests::test_invalid_state_parse ... ok [INFO] [stdout] test models::tests::test_issue_state_classification ... ok [INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok [INFO] [stdout] test models::tests::test_sort_priority ... ok [INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok [INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok [INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok [INFO] [stdout] test lock::tests::test_stale_lock_overwritten ... ok [INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok [INFO] [stdout] test hooks::tests::test_run_hook_success ... ok [INFO] [stdout] test poller::tests::test_reconcile_leaves_open_issues_unchanged ... ok [INFO] [stdout] test poller::tests::test_reconcile_marks_closed_issue_as_done ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok [INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok [INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok [INFO] [stdout] test poller::tests::test_reconcile_skips_terminal_state_issues ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok [INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok [INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok [INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok [INFO] [stdout] test poller::tests::test_reconcile_multiple_issues_mixed_states ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok [INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok [INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok [INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok [INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok [INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok [INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok [INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok [INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok [INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok [INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok [INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok [INFO] [stdout] test state_machine::tests::test_pr_merged ... ok [INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok [INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok [INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok [INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok [INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok [INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok [INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok [INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok [INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok [INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok [INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok [INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok [INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok [INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok [INFO] [stdout] test worktree::tests::test_branch_naming ... ok [INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok [INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok [INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok [INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok [INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok [INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 252 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.06s [INFO] [stdout] [INFO] [stderr] Running tests/acp_client_integration.rs (/opt/rustwide/target/debug/deps/acp_client_integration-c24889b198430f46) [INFO] [stdout] [INFO] [stdout] running 71 tests [INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok [INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok [INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok [INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok [INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok [INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok [INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok [INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok [INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok [INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok [INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok [INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok [INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok [INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok [INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok [INFO] [stdout] test acp::wire::tests::method_round_trip ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok [INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok [INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok [INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok [INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok [INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok [INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok [INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok [INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok [INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok [INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok [INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok [INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok [INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok [INFO] [stdout] test missing_binary_surfaces_config_error ... ok [INFO] [stdout] test agent_crash_surfaces_as_acp_error ... ok [INFO] [stdout] test happy_path_returns_accumulated_text_and_usage ... ok [INFO] [stdout] test session_new_error_propagates ... ok [INFO] [stdout] test no_content_is_rejected ... ok [INFO] [stdout] test tool_calls_are_captured_in_summary ... ok [INFO] [stdout] test permission_request_is_auto_allowed ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok [INFO] [stdout] test overall_timeout_triggers_ai_timeout ... ok [INFO] [stdout] test stall_timeout_triggers_ai_timeout ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 71 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.06s [INFO] [stdout] [INFO] [stderr] Running tests/integration_discord_lifecycle.rs (/opt/rustwide/target/debug/deps/integration_discord_lifecycle-61122334a2cc6ac7) [INFO] [stdout] [INFO] [stdout] running 254 tests [INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok [INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok [INFO] [stdout] test access::tests::list_matches_listed_user ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok [INFO] [stdout] test access::tests::all_allows_anyone ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok [INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok [INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok [INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok [INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok [INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok [INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok [INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok [INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok [INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok [INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok [INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok [INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok [INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok [INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok [INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok [INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok [INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok [INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok [INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok [INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok [INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok [INFO] [stdout] test acp::wire::tests::method_round_trip ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok [INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok [INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok [INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok [INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok [INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok [INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok [INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok [INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok [INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok [INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok [INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok [INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok [INFO] [stdout] test approval::tests::test_pr_pending ... ok [INFO] [stdout] test approval::tests::test_pr_merged ... ok [INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok [INFO] [stdout] test approval::tests::test_comment_feedback ... ok [INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok [INFO] [stdout] test approval::tests::test_retry_comment_found ... ok [INFO] [stdout] test approval::tests::test_pr_closed ... ok [INFO] [stdout] test approval::tests::test_since_id_filters ... ok [INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok [INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok [INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok [INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok [INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok [INFO] [stdout] test approval::tests::test_retry_no_comment ... ok [INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok [INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok [INFO] [stdout] test config::tests::github_token_file_reads_value ... ok [INFO] [stdout] test config::tests::test_bypass_label_configured ... ok [INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok [INFO] [stdout] test config::tests::test_custom_values ... ok [INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok [INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok [INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok [INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok [INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok [INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok [INFO] [stdout] test config::tests::test_discord_source_parses ... ok [INFO] [stdout] test config::tests::test_env_override ... ok [INFO] [stdout] test config::tests::test_invalid_repo_format ... ok [INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok [INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok [INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok [INFO] [stdout] test config::tests::test_missing_approvers ... ok [INFO] [stdout] test config::tests::test_missing_ai_model ... ok [INFO] [stdout] test config::tests::test_missing_repo ... ok [INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok [INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok [INFO] [stdout] test config::tests::test_timeout_custom_values ... ok [INFO] [stdout] test config::tests::test_per_task_overrides ... ok [INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok [INFO] [stdout] test config::tests::test_multi_repo_config ... ok [INFO] [stdout] test config::tests::test_timeout_defaults ... ok [INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok [INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok [INFO] [stdout] test config::tests::test_valid_config ... ok [INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok [INFO] [stdout] test db::tests::test_backfill_repo ... ok [INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok [INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok [INFO] [stdout] test db::tests::test_get_all_issues ... ok [INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok [INFO] [stdout] test db::tests::test_get_issues_by_state ... ok [INFO] [stdout] test db::tests::test_bypass_default_false ... ok [INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok [INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok [INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok [INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok [INFO] [stdout] test db::tests::test_increment_retry_count ... ok [INFO] [stdout] test db::tests::test_reset_retry_count ... ok [INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok [INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok [INFO] [stdout] test db::tests::test_update_issue_error ... ok [INFO] [stdout] test db::tests::test_set_issue_bypass ... ok [INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok [INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok [INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok [INFO] [stdout] test discord::mock::tests::edit_message_records ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok [INFO] [stdout] test db::tests::test_update_issue_state ... ok [INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok [INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok [INFO] [stdout] test db::tests::test_usage_log ... ok [INFO] [stdout] test db::tests::test_update_issue_worktree ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok [INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok [INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok [INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok [INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok [INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok [INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok [INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok [INFO] [stdout] test github::tests::test_list_labeled_issues ... ok [INFO] [stdout] test github::tests::test_create_issue ... ok [INFO] [stdout] test github::tests::test_pr_status ... ok [INFO] [stdout] test hooks::tests::test_run_hook_none ... ok [INFO] [stdout] test github::tests::test_file_content ... ok [INFO] [stdout] test github::tests::test_post_and_get_comments ... ok [INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok [INFO] [stdout] test lock::tests::test_acquire_and_release ... ok [INFO] [stdout] test models::tests::test_invalid_state_parse ... ok [INFO] [stdout] test models::tests::test_issue_state_classification ... ok [INFO] [stdout] test lock::tests::test_stale_lock_overwritten ... ok [INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok [INFO] [stdout] test models::tests::test_sort_priority ... ok [INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok [INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok [INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok [INFO] [stdout] test poller::tests::test_reconcile_leaves_open_issues_unchanged ... ok [INFO] [stdout] test hooks::tests::test_run_hook_success ... ok [INFO] [stdout] test non_allowlisted_user_intake_is_dropped ... ok [INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok [INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok [INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok [INFO] [stdout] test discord_end_to_end_lifecycle ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok [INFO] [stdout] test poller::tests::test_reconcile_skips_terminal_state_issues ... ok [INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok [INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok [INFO] [stdout] test poller::tests::test_reconcile_marks_closed_issue_as_done ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok [INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok [INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok [INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok [INFO] [stdout] test poller::tests::test_reconcile_multiple_issues_mixed_states ... ok [INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok [INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok [INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok [INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok [INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok [INFO] [stdout] test state_machine::tests::test_pr_merged ... ok [INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok [INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok [INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok [INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok [INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok [INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok [INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok [INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok [INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok [INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok [INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok [INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok [INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok [INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok [INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok [INFO] [stdout] test worktree::tests::test_branch_naming ... ok [INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok [INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok [INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok [INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok [INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok [INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok [INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 254 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.05s [INFO] [stdout] [INFO] [stderr] Running tests/integration_error_handling.rs (/opt/rustwide/target/debug/deps/integration_error_handling-ff3d330c5e30e682) [INFO] [stdout] [INFO] [stdout] running 249 tests [INFO] [stdout] test access::tests::all_allows_anyone ... ok [INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok [INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok [INFO] [stdout] test access::tests::list_matches_listed_user ... ok [INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok [INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok [INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok [INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok [INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok [INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok [INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok [INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok [INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok [INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok [INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok [INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok [INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok [INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok [INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok [INFO] [stdout] test acp::wire::tests::method_round_trip ... ok [INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok [INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok [INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok [INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok [INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok [INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok [INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok [INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok [INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok [INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok [INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok [INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok [INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok [INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok [INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok [INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok [INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok [INFO] [stdout] test approval::tests::test_pr_closed ... ok [INFO] [stdout] test approval::tests::test_pr_merged ... ok [INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok [INFO] [stdout] test approval::tests::test_comment_feedback ... ok [INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok [INFO] [stdout] test approval::tests::test_retry_no_comment ... ok [INFO] [stdout] test approval::tests::test_pr_pending ... ok [INFO] [stdout] test approval::tests::test_retry_comment_found ... ok [INFO] [stdout] test approval::tests::test_since_id_filters ... ok [INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok [INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok [INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok [INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok [INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok [INFO] [stdout] test config::tests::github_token_file_reads_value ... ok [INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok [INFO] [stdout] test config::tests::test_bypass_label_configured ... ok [INFO] [stdout] test config::tests::test_custom_values ... ok [INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok [INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok [INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok [INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok [INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok [INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok [INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok [INFO] [stdout] test config::tests::test_discord_source_parses ... ok [INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok [INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok [INFO] [stdout] test config::tests::test_invalid_repo_format ... ok [INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok [INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok [INFO] [stdout] test config::tests::test_env_override ... ok [INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok [INFO] [stdout] test config::tests::test_missing_approvers ... ok [INFO] [stdout] test config::tests::test_missing_ai_model ... ok [INFO] [stdout] test config::tests::test_multi_repo_config ... ok [INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok [INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok [INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok [INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok [INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok [INFO] [stdout] test config::tests::test_timeout_custom_values ... ok [INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok [INFO] [stdout] test config::tests::test_timeout_defaults ... ok [INFO] [stdout] test config::tests::test_per_task_overrides ... ok [INFO] [stdout] test config::tests::test_valid_config ... ok [INFO] [stdout] test config::tests::test_missing_repo ... ok [INFO] [stdout] test db::tests::test_get_issues_by_state ... ok [INFO] [stdout] test db::tests::test_bypass_default_false ... ok [INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok [INFO] [stdout] test db::tests::test_backfill_repo ... ok [INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok [INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok [INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok [INFO] [stdout] test db::tests::test_get_all_issues ... ok [INFO] [stdout] test db::tests::test_reset_retry_count ... ok [INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok [INFO] [stdout] test db::tests::test_increment_retry_count ... ok [INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok [INFO] [stdout] test db::tests::test_set_issue_bypass ... ok [INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok [INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok [INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok [INFO] [stdout] test db::tests::test_update_issue_error ... ok [INFO] [stdout] test db::tests::test_update_issue_worktree ... ok [INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok [INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok [INFO] [stdout] test db::tests::test_update_issue_state ... ok [INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok [INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok [INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok [INFO] [stdout] test discord::mock::tests::edit_message_records ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok [INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok [INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok [INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok [INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok [INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok [INFO] [stdout] test github::tests::test_create_issue ... ok [INFO] [stdout] test github::tests::test_file_content ... ok [INFO] [stdout] test github::tests::test_list_labeled_issues ... ok [INFO] [stdout] test db::tests::test_usage_log ... ok [INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok [INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok [INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok [INFO] [stdout] test github::tests::test_pr_status ... ok [INFO] [stdout] test hooks::tests::test_run_hook_none ... ok [INFO] [stdout] test github::tests::test_post_and_get_comments ... ok [INFO] [stdout] test models::tests::test_invalid_state_parse ... ok [INFO] [stdout] test models::tests::test_issue_state_classification ... ok [INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok [INFO] [stdout] test models::tests::test_sort_priority ... ok [INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok [INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok [INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok [INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok [INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok [INFO] [stdout] test hooks::tests::test_run_hook_success ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok [INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok [INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok [INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok [INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok [INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok [INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok [INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok [INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok [INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok [INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok [INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok [INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok [INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok [INFO] [stdout] test state_machine::tests::test_pr_merged ... ok [INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok [INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok [INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok [INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok [INFO] [stdout] test test_pr_closed_without_merge ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok [INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok [INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok [INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok [INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok [INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok [INFO] [stdout] test test_retry_after_spec_failure ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok [INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok [INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok [INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok [INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok [INFO] [stdout] test worktree::tests::test_branch_naming ... ok [INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok [INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok [INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok [INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok [INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok [INFO] [stdout] test test_implementation_failure_and_retry ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok [INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok [INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok [INFO] [stderr] Running tests/integration_lifecycle.rs (/opt/rustwide/target/debug/deps/integration_lifecycle-b31b519fd0377ab6) [INFO] [stdout] [INFO] [stdout] test result: ok. 249 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.04s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 249 tests [INFO] [stdout] test access::tests::all_allows_anyone ... ok [INFO] [stdout] test access::tests::from_raw_all_short_circuits ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_message_chunk_as_text_delta ... ok [INFO] [stdout] test acp::events::tests::classifies_agent_thought_chunk_as_thinking ... ok [INFO] [stdout] test access::tests::from_raw_list_preserves_users ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_as_tool_started ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_completed_as_tool_finished_ok ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_failed_as_tool_finished_not_ok ... ok [INFO] [stdout] test acp::events::tests::missing_tool_call_id_defaults_to_empty ... ok [INFO] [stdout] test acp::permission::tests::all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::events::tests::unknown_kind_returns_none ... ok [INFO] [stdout] test acp::permission::tests::allow_always_wins_over_allow_once ... ok [INFO] [stdout] test access::tests::empty_list_allows_nobody ... ok [INFO] [stdout] test acp::events::tests::missing_update_key_returns_none ... ok [INFO] [stdout] test acp::permission::tests::allow_once_wins_over_unknown_kind ... ok [INFO] [stdout] test acp::permission::tests::build_response_none_params_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::build_response_empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_all_reject_returns_cancelled ... ok [INFO] [stdout] test acp::permission::tests::build_response_missing_options_uses_legacy_fallback ... ok [INFO] [stdout] test acp::permission::tests::claude_option_fixtures_pick_bypass_permissions ... ok [INFO] [stdout] test acp::permission::tests::build_response_with_options_picks_best ... ok [INFO] [stdout] test acp::permission::tests::empty_options_returns_cancelled ... ok [INFO] [stdout] test acp::spawn::tests::dollar_escapes_itself ... ok [INFO] [stdout] test access::tests::list_matches_listed_user ... ok [INFO] [stdout] test acp::registry::tests::register_and_unregister_are_balanced ... ok [INFO] [stdout] test acp::registry::tests::kill_all_clears_nothing_by_itself ... ok [INFO] [stdout] test acp::spawn::tests::expands_partial_refs ... ok [INFO] [stdout] test acp::permission::tests::unknown_kind_selected_when_no_allow_present ... ok [INFO] [stdout] test acp::events::tests::classifies_tool_call_update_in_progress_as_tool_started ... ok [INFO] [stdout] test acp::registry::tests::non_positive_pgid_ignored ... ok [INFO] [stdout] test acp::wire::tests::method_parse_unknown_returns_other ... ok [INFO] [stdout] test acp::wire::tests::method_round_trip ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_notification ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_request ... ok [INFO] [stdout] test acp::spawn::tests::missing_var_becomes_empty ... ok [INFO] [stdout] test acp::spawn::tests::expands_whole_value_ref ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_error ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_malformed_json ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_rejects_missing_id_and_method ... ok [INFO] [stdout] test agents::acp::tests::apply_event_accumulates_text_deltas ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_includes_params ... ok [INFO] [stdout] test acp::wire::tests::request_serialization_omits_missing_params ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_flat_format ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_assistant_message ... ok [INFO] [stdout] test agents::acp::tests::apply_event_tracks_tool_lifecycle ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_classifies_response_ok ... ok [INFO] [stdout] test acp::wire::tests::parse_frame_empty_line_is_none ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_for_each_acp_kind ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_multiple_lines ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_unparseable_lines_skipped ... ok [INFO] [stdout] test agents::claude_cli::tests::test_token_aggregation ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_empty_output ... ok [INFO] [stdout] test agents::registry::tests::get_returns_registered_agent ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_no_response_errors ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_matches_substring ... ok [INFO] [stdout] test agents::mock::tests::test_mock_agent_default_response ... ok [INFO] [stdout] test approval::tests::discord_non_approver_is_ignored ... ok [INFO] [stdout] test approval::tests::discord_revise_without_feedback_is_ignored ... ok [INFO] [stdout] test approval::tests::discord_since_id_filters_older_commands ... ok [INFO] [stdout] test acp::spawn::tests::non_placeholder_values_pass_through ... ok [INFO] [stdout] test approval::tests::test_approve_after_feedback ... ok [INFO] [stdout] test approval::tests::discord_revise_captures_feedback ... ok [INFO] [stdout] test approval::tests::test_comment_approve_from_unauthorized_ignored ... ok [INFO] [stdout] test approval::tests::discord_confirm_wins_over_earlier_revise ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_no_content ... ok [INFO] [stdout] test approval::tests::test_comment_approved_by_approver ... ok [INFO] [stdout] test approval::tests::test_most_recent_feedback_wins ... ok [INFO] [stdout] test approval::tests::test_feedback_after_approve ... ok [INFO] [stdout] test approval::tests::test_comment_feedback ... ok [INFO] [stdout] test approval::tests::test_pr_merged ... ok [INFO] [stdout] test approval::tests::test_pr_pending ... ok [INFO] [stdout] test approval::tests::test_pr_closed ... ok [INFO] [stdout] test approval::tests::test_retry_comment_found ... ok [INFO] [stdout] test approval::tests::test_retry_comment_from_unauthorized ... ok [INFO] [stdout] test approval::tests::test_retry_no_comment ... ok [INFO] [stdout] test config::tests::github_token_file_and_github_token_mutual_exclusion ... ok [INFO] [stdout] test config::tests::config_source_from_raw_detects_scheme ... ok [INFO] [stdout] test config::tests::read_secret_file_strict_mode_behavior ... ok [INFO] [stdout] test config::tests::read_secret_file_strips_trailing_newline ... ok [INFO] [stdout] test config::tests::github_token_file_reads_value ... ok [INFO] [stdout] test config::tests::test_bypass_label_configured ... ok [INFO] [stdout] test config::tests::test_agent_kind_defaults_to_claude_cli ... ok [INFO] [stdout] test config::tests::test_agents_block_overrides_defaults ... ok [INFO] [stdout] test config::tests::test_bypass_label_default_none ... ok [INFO] [stdout] test config::tests::test_custom_values ... ok [INFO] [stdout] test config::tests::test_discord_source_allow_all_and_allow_users_conflicts ... ok [INFO] [stdout] test config::tests::test_discord_source_duplicate_channel_rejected ... ok [INFO] [stdout] test config::tests::test_discord_source_parses ... ok [INFO] [stdout] test config::tests::test_discord_source_rejects_unknown_repo ... ok [INFO] [stdout] test config::tests::test_duplicate_repos_rejected ... ok [INFO] [stdout] test config::tests::test_env_override ... ok [INFO] [stdout] test agents::claude_cli::tests::test_parse_stream_json_result_message ... ok [INFO] [stdout] test approval::tests::discord_cancel_is_distinct_outcome ... ok [INFO] [stdout] test approval::tests::test_since_id_filters ... ok [INFO] [stdout] test config::tests::fetch_remote_config_rejects_http ... ok [INFO] [stdout] test config::tests::test_discord_source_empty_approvers_inherits_from_repo ... ok [INFO] [stdout] test config::tests::test_missing_approvers ... ok [INFO] [stdout] test config::tests::test_invalid_repo_format ... ok [INFO] [stdout] test config::tests::test_legacy_single_repo_compat ... ok [INFO] [stdout] test config::tests::test_missing_agents_block_uses_all_defaults ... ok [INFO] [stdout] test config::tests::test_missing_ai_model ... ok [INFO] [stdout] test config::tests::test_multi_repo_missing_repo_field ... ok [INFO] [stdout] test config::tests::test_per_repo_agent_kind_overrides_global ... ok [INFO] [stdout] test config::tests::test_per_task_agent_kind_overrides_repo ... ok [INFO] [stdout] test config::tests::test_per_task_overrides ... ok [INFO] [stdout] test config::tests::test_timeout_custom_values ... ok [INFO] [stdout] test config::tests::test_timeout_defaults ... ok [INFO] [stdout] test config::tests::test_timeout_per_task_overrides ... ok [INFO] [stdout] test config::tests::test_missing_repo ... ok [INFO] [stdout] test config::tests::test_valid_config ... ok [INFO] [stdout] test config::tests::test_multi_repo_config ... ok [INFO] [stdout] test config::tests::test_discord_debug_redacts_token ... ok [INFO] [stdout] test config::tests::test_multi_repo_per_repo_overrides ... ok [INFO] [stdout] test config::tests::test_no_sources_parses_as_empty_vec ... ok [INFO] [stdout] test db::tests::test_bypass_default_false ... ok [INFO] [stdout] test db::tests::test_get_all_issues_for_repo ... ok [INFO] [stdout] test db::tests::test_backfill_repo ... ok [INFO] [stdout] test db::tests::test_get_issue_any_repo ... ok [INFO] [stdout] test db::tests::test_get_nonexistent_issue ... ok [INFO] [stdout] test db::tests::test_get_issues_by_state ... ok [INFO] [stdout] test db::tests::test_insert_populates_source_and_external_id ... ok [INFO] [stdout] test config::tests::test_global_agent_kind_applies_to_repo ... ok [INFO] [stdout] test db::tests::test_increment_retry_count ... ok [INFO] [stdout] test db::tests::test_insert_and_get_issue ... ok [INFO] [stdout] test db::tests::test_reset_retry_count ... ok [INFO] [stdout] test db::tests::test_get_all_issues ... ok [INFO] [stdout] test db::tests::test_update_issue_error ... ok [INFO] [stdout] test db::tests::test_same_issue_number_different_repos ... ok [INFO] [stdout] test db::tests::test_set_issue_bypass ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_comment ... ok [INFO] [stdout] test db::tests::test_update_issue_state ... ok [INFO] [stdout] test db::tests::test_update_issue_worktree ... ok [INFO] [stdout] test db::tests::test_usage_log ... ok [INFO] [stdout] test db::tests::test_spec_comment_and_last_comment ... ok [INFO] [stdout] test discord::mock::tests::edit_message_records ... ok [INFO] [stdout] test discord::mock::tests::fetch_new_messages_filters_by_since_id ... ok [INFO] [stdout] test discord::mock::tests::post_message_records_and_appears_in_thread_fetch ... ok [INFO] [stdout] test db::tests::test_update_issue_impl_pr ... ok [INFO] [stdout] test discord::mock::tests::start_thread_returns_fresh_id ... ok [INFO] [stdout] test env_expand::tests::lone_dollar_preserved ... ok [INFO] [stdout] test env_expand::tests::dollar_dollar_escape ... ok [INFO] [stdout] test env_expand::tests::mid_string_expansion ... ok [INFO] [stdout] test env_expand::tests::multiple_vars_in_one_string ... ok [INFO] [stdout] test env_expand::tests::unknown_var_empty ... ok [INFO] [stdout] test db::tests::test_insert_duplicate_issue_ignored ... ok [INFO] [stdout] test db::tests::test_retry_count_default_zero ... ok [INFO] [stdout] test db::tests::test_update_issue_spec_content ... ok [INFO] [stdout] test github::tests::test_create_issue ... ok [INFO] [stdout] test env_expand::tests::unterminated_preserved ... ok [INFO] [stdout] test env_expand::tests::whole_value_expansion ... ok [INFO] [stdout] test github::tests::test_file_content ... ok [INFO] [stdout] test github::tests::test_list_labeled_issues ... ok [INFO] [stdout] test github::tests::test_post_and_get_comments ... ok [INFO] [stdout] test hooks::tests::test_run_hook_empty ... ok [INFO] [stdout] test db::tests::test_migration_backfills_source_and_external_id ... ok [INFO] [stdout] test hooks::tests::test_run_hook_none ... ok [INFO] [stdout] test models::tests::test_invalid_state_parse ... ok [INFO] [stdout] test models::tests::test_issue_state_classification ... ok [INFO] [stdout] test models::tests::test_issue_state_roundtrip ... ok [INFO] [stdout] test models::tests::test_sort_priority ... ok [INFO] [stdout] test models::tests::test_source_kind_invalid_parse ... ok [INFO] [stdout] test models::tests::test_source_kind_roundtrip ... ok [INFO] [stdout] test hooks::tests::test_run_hook_failure ... ok [INFO] [stdout] test hooks::tests::test_run_hook_best_effort_logs_failure ... ok [INFO] [stdout] test hooks::tests::test_run_hook_success ... ok [INFO] [stdout] test prompts::tests::test_claude_md_boundaries ... ok [INFO] [stdout] test github::tests::test_pr_status ... ok [INFO] [stdout] test prompts::tests::test_claude_md_for_review_content ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings_none_found ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_implementation_prompt_with_feedback ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_fail_detected ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_bracketed_pass_detected ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_fail ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_inline_colon_pass ... ok [INFO] [stdout] test prompts::tests::test_extract_blocking_findings ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failsafe ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_failure ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_passing ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_no_false_positive_password ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_pass ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_unparseable_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_template_line_returns_unknown ... ok [INFO] [stdout] test prompts::tests::test_review_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_content ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_without_feedback ... ok [INFO] [stdout] test prompts::tests::test_spec_drafting_prompt_with_feedback ... ok [INFO] [stdout] test publisher::tests::discord_publisher_post_routes_to_post_message ... ok [INFO] [stdout] test publisher::tests::github_publisher_update_routes_to_update_issue_comment ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_approved ... ok [INFO] [stdout] test state_machine::tests::test_await_spec_feedback ... ok [INFO] [stdout] test publisher::tests::multiplex_fans_post_to_all_members ... ok [INFO] [stdout] test state_machine::tests::test_discovered_poll ... ok [INFO] [stdout] test state_machine::tests::test_feedback_loop_cycle ... ok [INFO] [stdout] test state_machine::tests::test_implementing_poll ... ok [INFO] [stdout] test state_machine::tests::test_invalid_transition ... ok [INFO] [stdout] test state_machine::tests::test_pr_closed_without_merge ... ok [INFO] [stdout] test state_machine::tests::test_pr_feedback ... ok [INFO] [stdout] test state_machine::tests::test_pr_merged ... ok [INFO] [stdout] test prompts::tests::test_parse_review_verdict_fail_in_summary ... ok [INFO] [stdout] test publisher::tests::discord_publisher_update_routes_to_edit_message ... ok [INFO] [stdout] test state_machine::tests::test_reset_from_any_state ... ok [INFO] [stdout] test publisher::tests::github_publisher_post_routes_to_issue_comment ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed ... ok [INFO] [stdout] test state_machine::tests::test_issue_closed_from_any_state ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_active ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_blocking ... ok [INFO] [stdout] test state_machine::tests::test_retry_from_failed_implementing ... ok [INFO] [stdout] test state_machine::tests::test_transition_error_reviewing ... ok [INFO] [stdout] test state_machine::tests::test_retry_no_previous_state ... ok [INFO] [stdout] test state_machine::tests::test_spec_drafting_poll ... ok [INFO] [stdout] test state_machine::tests::test_reviewing_poll ... ok [INFO] [stdout] test test_bypass_rejected_for_non_approver ... ok [INFO] [stdout] test agents::acp::tests::default_agent_def_panics_for_claude_cli - should panic ... ok [INFO] [stdout] test transitions::completion::tests::test_no_pr_number_does_nothing ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_closed_fails_issue ... ok [INFO] [stdout] test transitions::completion::tests::test_pr_merged_completes_issue ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_is_silent_when_no_events_arrive ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_skips_if_pr_exists_no_feedback ... ok [INFO] [stdout] test test_bypass_spec_auto_approval ... ok [INFO] [stdout] test transitions::progress::tests::apply_upgrades_running_to_completed_by_title ... ok [INFO] [stdout] test transitions::progress::tests::render_collapses_under_details_when_final ... ok [INFO] [stdout] test transitions::progress::tests::thinking_only_is_visible ... ok [INFO] [stdout] test transitions::progress::tests::render_open_form_omits_details_tag ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_no_pr_uses_impl_branch_and_goes_to_reviewing ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_max_iterations_creates_pr ... ok [INFO] [stdout] test test_full_lifecycle ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_transitions_to_reviewing ... ok [INFO] [stdout] test transitions::seed_filename_tests::claude_kinds_seed_claude_md ... ok [INFO] [stdout] test transitions::seed_filename_tests::codex_seeds_agents_md ... ok [INFO] [stdout] test transitions::seed_filename_tests::gemini_seeds_gemini_md ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_idempotency_guard_transitions_to_await_pr_approval ... ok [INFO] [stdout] test worktree::tests::test_absolute_base_dir_stays_absolute ... ok [INFO] [stdout] test transitions::implementing::tests::test_implementing_with_feedback_revises ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_pass_creates_pr ... ok [INFO] [stdout] test worktree::tests::test_branch_naming ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_fail_sends_back_to_implementing ... ok [INFO] [stdout] test transitions::reviewing::tests::test_review_unparseable_verdict_creates_pr_with_advisory ... ok [INFO] [stdout] test worktree::tests::test_relative_base_dir_becomes_absolute ... ok [INFO] [stdout] test transitions::spec_drafting::tests::test_spec_drafting_posts_comment ... ok [INFO] [stdout] test worktree::tests::test_worktree_dir_naming ... ok [INFO] [stdout] test worktree::tests::test_mock_worktree_create ... ok [INFO] [stdout] test worktree::tests::test_mock_seed_file ... ok [INFO] [stdout] test transitions::progress::tests::aggregator_posts_initial_and_final_updates ... ok [INFO] [stdout] test worktree::tests::test_worktree_created_at_correct_path_and_seedable ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_lands_in_correct_directory ... ok [INFO] [stdout] test worktree::tests::test_bare_clone_has_origin_refs_after_setup ... ok [INFO] [stdout] test hooks::tests::test_run_hook_timeout ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 249 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.09s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984", kill_on_drop: false }` [INFO] [stdout] d03f70b38c202b1cc1a23ffe082151086db12a0093c6326b6edde1f247149984