[INFO] fetching crate claudette 0.18.0...
[INFO] testing claudette-0.18.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate claudette 0.18.0 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate claudette 0.18.0
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate claudette 0.18.0
[INFO] tweaked toml for crates.io crate claudette 0.18.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate claudette 0.18.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate claudette 0.18.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.68
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.118
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.118
[INFO] [stderr]   Downloaded toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]   Downloaded strum v0.28.0
[INFO] [stderr]   Downloaded num_threads v0.1.7
[INFO] [stderr]   Downloaded by_address v1.2.1
[INFO] [stderr]   Downloaded num-conv v0.2.1
[INFO] [stderr]   Downloaded foldhash v0.2.0
[INFO] [stderr]   Downloaded rsqlite-vfs v0.1.0
[INFO] [stderr]   Downloaded approx v0.5.1
[INFO] [stderr]   Downloaded strum_macros v0.28.0
[INFO] [stderr]   Downloaded document-features v0.2.12
[INFO] [stderr]   Downloaded crossterm_winapi v0.9.1
[INFO] [stderr]   Downloaded castaway v0.2.4
[INFO] [stderr]   Downloaded signal-hook-mio v0.2.5
[INFO] [stderr]   Downloaded quick-error v2.0.1
[INFO] [stderr]   Downloaded line-clipping v0.3.7
[INFO] [stderr]   Downloaded siphasher v1.0.3
[INFO] [stderr]   Downloaded hashlink v0.12.1
[INFO] [stderr]   Downloaded unicode-truncate v2.0.1
[INFO] [stderr]   Downloaded fast-srgb8 v1.0.0
[INFO] [stderr]   Downloaded kasuari v0.4.12
[INFO] [stderr]   Downloaded toml v1.1.4+spec-1.1.0
[INFO] [stderr]   Downloaded winnow v1.0.2
[INFO] [stderr]   Downloaded instability v0.3.12
[INFO] [stderr]   Downloaded phf_generator v0.11.3
[INFO] [stderr]   Downloaded objc2-io-surface v0.3.2
[INFO] [stderr]   Downloaded error-code v3.3.2
[INFO] [stderr]   Downloaded palette_derive v0.7.6
[INFO] [stderr]   Downloaded indoc v2.0.7
[INFO] [stderr]   Downloaded zune-core v0.5.1
[INFO] [stderr]   Downloaded ratatui-crossterm v0.1.2
[INFO] [stderr]   Downloaded phf v0.11.3
[INFO] [stderr]   Downloaded glob v0.3.4
[INFO] [stderr]   Downloaded lru v0.18.0
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.118
[INFO] [stderr]   Downloaded fdeflate v0.3.7
[INFO] [stderr]   Downloaded byteorder-lite v0.1.0
[INFO] [stderr]   Downloaded fax v0.2.7
[INFO] [stderr]   Downloaded cron v0.17.0
[INFO] [stderr]   Downloaded phf_macros v0.11.3
[INFO] [stderr]   Downloaded clipboard-win v5.4.1
[INFO] [stderr]   Downloaded weezl v0.1.12
[INFO] [stderr]   Downloaded static_assertions v1.1.0
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.20
[INFO] [stderr]   Downloaded ratatui v0.30.2
[INFO] [stderr]   Downloaded litrs v1.0.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.118
[INFO] [stderr]   Downloaded signal-hook v0.3.18
[INFO] [stderr]   Downloaded half v2.7.1
[INFO] [stderr]   Downloaded colored v3.1.1
[INFO] [stderr]   Downloaded bytemuck v1.25.0
[INFO] [stderr]   Downloaded arboard v3.6.1
[INFO] [stderr]   Downloaded compact_str v0.9.0
[INFO] [stderr]   Downloaded ignore v0.4.33
[INFO] [stderr]   Downloaded zune-jpeg v0.5.15
[INFO] [stderr]   Downloaded dispatch2 v0.3.1
[INFO] [stderr]   Downloaded unicode-segmentation v1.13.2
[INFO] [stderr]   Downloaded objc2-core-graphics v0.3.2
[INFO] [stderr]   Downloaded js-sys v0.3.95
[INFO] [stderr]   Downloaded tiff v0.11.3
[INFO] [stderr]   Downloaded iri-string v0.7.12
[INFO] [stderr]   Downloaded png v0.18.1
[INFO] [stderr]   Downloaded itertools v0.14.0
[INFO] [stderr]   Downloaded rusqlite v0.40.2
[INFO] [stderr]   Downloaded ratatui-core v0.1.2
[INFO] [stderr]   Downloaded crossterm v0.29.0
[INFO] [stderr]   Downloaded moxcms v0.8.1
[INFO] [stderr]   Downloaded objc2-core-foundation v0.3.2
[INFO] [stderr]   Downloaded ratatui-widgets v0.3.2
[INFO] [stderr]   Downloaded x11rb v0.13.2
[INFO] [stderr]   Downloaded palette v0.7.6
[INFO] [stderr]   Downloaded syn v3.0.2
[INFO] [stderr]   Downloaded unicode-width v0.2.0
[INFO] [stderr]   Downloaded image v0.25.10
[INFO] [stderr]   Downloaded rustls v0.23.38
[INFO] [stderr]   Downloaded x11rb-protocol v0.13.2
[INFO] [stderr]   Downloaded objc2-app-kit v0.3.2
[INFO] [stderr]   Downloaded web-sys v0.3.95
[INFO] [stderr]   Downloaded tokio v1.52.1
[INFO] [stderr]   Downloaded pxfm v0.1.29
[INFO] [stderr]   Downloaded libsqlite3-sys v0.38.2
[INFO] [stderr]   Downloaded sqlite-wasm-rs v0.5.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a
[INFO] running `Command { std: "docker" "start" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", 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 libc v0.2.185
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling syn v3.0.2
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[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 thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling try-lock v0.2.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling lru v0.18.0
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling strum v0.28.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling libsqlite3-sys v0.38.2
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling ratatui-core v0.1.2
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling pxfm v0.1.29
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling winnow v1.0.2
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling globset v0.4.18
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling ratatui-widgets v0.3.2
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.2
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling hashlink v0.12.1
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling toml_writer v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling toml v1.1.4+spec-1.1.0
[INFO] [stderr]    Compiling ignore v0.4.33
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling cron v0.17.0
[INFO] [stderr]    Compiling ratatui v0.30.2
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling glob v0.3.4
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling rusqlite v0.40.2
[INFO] [stderr]    Compiling claudette v0.18.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 25s
[INFO] running `Command { std: "docker" "inspect" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling claudette v0.18.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 36.43s
[INFO] running `Command { std: "docker" "inspect" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/claudette-6db30cf1f40b921d)
[INFO] [stdout] 
[INFO] [stdout] running 1167 tests
[INFO] [stdout] test api::harmony::tests::strip_harmony_handles_underscored_names ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_handles_marker_at_start_of_line ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_leaves_plain_angle_brackets_alone ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_no_op_on_clean_text ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_preserves_multibyte_utf8 ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_removes_qwen36_channel_pair ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_removes_symmetric_markers ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_unbalanced_marker_with_uppercase_is_left_alone ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_preserves_fenced_code ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_leaves_html_tags_alone ... ok
[INFO] [stdout] test api::tests::build_messages_truncates_history_under_budget ... ok
[INFO] [stdout] test api::tests::build_messages_always_keeps_system_prompt_and_newest ... ok
[INFO] [stdout] test api::tests::cap_tools_moves_enable_tools_to_front_when_present ... ok
[INFO] [stdout] test api::tests::cap_tools_passes_through_non_array ... ok
[INFO] [stdout] test api::tests::cap_tools_passthrough_when_under_cap ... ok
[INFO] [stdout] test api::tests::cap_tools_preserves_enable_tools_even_when_cap_is_one ... ok
[INFO] [stdout] test api::tests::cap_tools_truncates_when_over_cap ... ok
[INFO] [stdout] test api::tests::cap_tools_keeps_enable_tools_at_front_when_already_first ... ok
[INFO] [stdout] test api::tests::cap_tools_no_enable_tools_just_takes_first_n ... ok
[INFO] [stdout] test api::tests::estimate_message_chars_counts_content_and_tool_calls ... ok
[INFO] [stdout] test api::tests::build_chat_body_compat_uses_openai_history_shape ... ok
[INFO] [stdout] test api::tests::build_chat_body_default_stays_ollama_shape ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_false_for_empty ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_false_for_unset ... ok
[INFO] [stdout] test api::tests::build_chat_body_compat_uses_openai_shape ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_true_for_one ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_treats_other_strings_as_truthy ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_false_for_zero ... ok
[INFO] [stdout] test api::tests::lm_studio_data_empty_array_returns_true ... ok
[INFO] [stdout] test api::tests::history_budget_shrinks_with_larger_system_prompt ... ok
[INFO] [stdout] test api::tests::lm_studio_data_with_loaded_model_returns_false ... ok
[INFO] [stdout] test api::tests::is_local_ollama_url_recognises_loopback ... ok
[INFO] [stdout] test api::tests::is_local_ollama_url_rejects_remote ... ok
[INFO] [stdout] test api::tests::is_sse_content_type_is_case_and_param_insensitive ... ok
[INFO] [stdout] test api::tests::lm_studio_missing_data_field_returns_false ... ok
[INFO] [stdout] test api::tests::model_reload_transient_matches_lm_studio_400 ... ok
[INFO] [stdout] test api::tests::openai_history_assistant_with_text_and_tool_calls_keeps_both ... ok
[INFO] [stdout] test api::tests::openai_history_emits_separate_tool_messages_with_tool_call_id ... ok
[INFO] [stdout] test api::tests::openai_history_multiple_tool_results_in_one_message_become_separate ... ok
[INFO] [stdout] test api::tests::openai_history_plain_text_message_unchanged ... ok
[INFO] [stdout] test api::tests::model_reload_transient_rejects_genuine_400_bodies ... ok
[INFO] [stdout] test api::tests::model_reload_transient_rejects_non_400 ... ok
[INFO] [stdout] test api::tests::parse_openai_response_accepts_object_arguments ... ok
[INFO] [stdout] test api::tests::lm_studio_data_not_an_array_returns_false ... ok
[INFO] [stdout] test api::tests::lm_studio_invalid_json_returns_false ... ok
[INFO] [stdout] test api::tests::parse_openai_response_error_field_returns_err ... ok
[INFO] [stdout] test api::tests::parse_openai_response_missing_choices_is_err ... ok
[INFO] [stdout] test api::tests::parse_openai_response_text_only ... ok
[INFO] [stdout] test api::tests::parse_openai_response_text_then_tool_call ... ok
[INFO] [stdout] test api::tests::dynamic_registry_budget_shrinks_when_group_is_enabled ... ok
[INFO] [stdout] test api::tests::build_chat_body_honors_max_output_override ... ok
[INFO] [stdout] test api::tests::parse_openai_response_callback_fires_with_full_text ... ok
[INFO] [stdout] test api::tests::parse_openai_response_missing_id_synthesises_one ... ok
[INFO] [stdout] test api::tests::parse_openai_response_with_tool_calls ... ok
[INFO] [stdout] test api::tests::resolve_max_tools_garbage_returns_none ... ok
[INFO] [stdout] test api::tests::probe_ollama_skip_env_short_circuits ... ok
[INFO] [stdout] test api::tests::resolve_max_tools_unset_returns_none ... ok
[INFO] [stdout] test api::tests::sse_captures_reasoning_only_truncated_turn ... ok
[INFO] [stdout] test api::tests::sse_empty_returns_only_meta_usage_and_stop ... ok
[INFO] [stdout] test api::tests::resolve_max_tools_zero_is_treated_as_no_cap ... ok
[INFO] [stdout] test api::tests::sse_harmony_separators_stripped_from_final_text ... ok
[INFO] [stdout] test api::tests::sse_ignores_comments_and_blank_lines ... ok
[INFO] [stdout] test api::tests::sse_keeps_a_partial_turn_when_a_frame_is_malformed ... ok
[INFO] [stdout] test api::tests::sse_text_accumulates_across_chunks ... ok
[INFO] [stdout] test api::tests::sse_callback_fires_per_chunk_and_trailing_newline ... ok
[INFO] [stdout] test api::tests::sse_no_trailing_newline_when_only_tool_call ... ok
[INFO] [stdout] test api::tests::sse_tool_call_missing_id_and_name_get_defaults ... ok
[INFO] [stdout] test api::tests::sse_tool_call_split_across_chunks ... ok
[INFO] [stdout] test api::tests::sse_tool_calls_emit_in_index_order_regardless_of_arrival ... ok
[INFO] [stdout] test api::tests::sse_two_tool_calls_in_index_order ... ok
[INFO] [stdout] test api::tests::sse_usage_parsed_from_trailing_chunk ... ok
[INFO] [stdout] test api::tests::stream_callback_fires_per_delta_and_trailing_newline ... ok
[INFO] [stdout] test api::tests::sse_with_nothing_accumulated_is_still_an_error ... ok
[INFO] [stdout] test api::tests::stream_callback_no_trailing_newline_when_only_tool_call ... ok
[INFO] [stdout] test api::tests::sse_done_terminates_stream ... ok
[INFO] [stdout] test api::tests::stream_skips_blank_lines ... ok
[INFO] [stdout] test api::tests::stream_text_only_single_chunk ... ok
[INFO] [stdout] test api::tests::stream_empty_returns_only_usage_and_stop ... ok
[INFO] [stdout] test api::tests::stream_text_then_tool_call ... ok
[INFO] [stdout] test api::tests::stream_missing_id_synthesises_one ... ok
[INFO] [stdout] test api::tests::stream_error_chunk_returns_error ... ok
[INFO] [stdout] test api::tests::sse_error_payload_returns_error ... ok
[INFO] [stdout] test api::tests::stream_keeps_a_partial_turn_when_a_line_is_malformed ... ok
[INFO] [stdout] test api::tests::truncate_drops_oldest_first ... ok
[INFO] [stdout] test api::tests::truncate_drops_orphan_assistant_when_tool_skipped_ollama_shape ... ok
[INFO] [stdout] test api::tests::truncate_empty_input_returns_empty ... ok
[INFO] [stdout] test api::tests::stream_text_accumulates_multiple_deltas ... ok
[INFO] [stdout] test api::tests::truncate_drops_orphan_assistant_when_tool_skipped_openai_shape ... ok
[INFO] [stdout] test api::tests::truncate_keeps_everything_when_under_budget ... ok
[INFO] [stdout] test api::tests::stream_tool_call_on_done_chunk ... ok
[INFO] [stdout] test api::tests::stream_with_nothing_accumulated_is_still_an_error ... ok
[INFO] [stdout] test api::tests::truncate_pins_assistant_tool_calls_when_keeping_tool_openai_shape ... ok
[INFO] [stdout] test api::tests::truncate_keeps_oversized_newest_alone ... ok
[INFO] [stdout] test api::tests::truncate_pins_assistant_tool_calls_when_keeping_tool_ollama_shape ... ok
[INFO] [stdout] test api::tests::truncate_skips_oversized_older_keeps_smaller_oldest ... ok
[INFO] [stdout] test api::tests::truncate_pins_user_query_under_giant_tool_result_openai_shape ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_empty_text_under_threshold_does_not_escalate ... ok
[INFO] [stdout] test api::tests::truncate_zero_budget_still_keeps_newest ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_empty_response_from_err_message ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_skips_graceful_iteration_cap_landings ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_three_consecutive_tool_errors_escalates ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_text_response_passes_through ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_empty_text_at_max_iter_escalates ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_whitespace_only_text_counts_as_no_text ... ok
[INFO] [stdout] test brain_selector::tests::escape_json_handles_specials ... ok
[INFO] [stdout] test brain_selector::tests::fallback_to_the_same_model_is_skipped ... ok
[INFO] [stdout] test brain_selector::tests::long_legitimate_tool_chain_is_not_diagnosed_as_stuck_at_the_default_cap ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_two_errors_then_success_does_not_escalate ... ok
[INFO] [stdout] test brain_selector::tests::fallback_not_loaded_on_the_backend_is_skipped ... ok
[INFO] [stdout] test brain_selector::tests::prompt_hash_differs_for_different_inputs ... ok
[INFO] [stdout] test api::tests::truncate_pins_user_query_under_giant_tool_result_ollama_shape ... ok
[INFO] [stdout] test brain_selector::tests::fallback_that_is_loaded_still_escalates ... ok
[INFO] [stdout] test brain_selector::tests::stuck_threshold_tracks_the_iteration_cap ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_transport_error_does_not_escalate ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_interleaved_errors_resets_streak ... ok
[INFO] [stdout] test brain_selector::tests::unknown_backend_inventory_fails_open ... ok
[INFO] [stdout] test brain_selector::tests::prompt_hash_is_stable_for_same_input ... ok
[INFO] [stdout] test clock::tests::mock_clock_is_send_sync ... ok
[INFO] [stdout] test clock::tests::mock_clock_advance_accepts_negative_delta ... ok
[INFO] [stdout] test clock::tests::mock_clock_advance_moves_forward ... ok
[INFO] [stdout] test clock::tests::mock_clock_set_jumps_to_instant ... ok
[INFO] [stdout] test clock::tests::clock_is_object_safe ... ok
[INFO] [stdout] test clock::tests::mock_clock_starts_at_given_instant ... ok
[INFO] [stdout] test clock::tests::system_clock_returns_recent_time ... ok
[INFO] [stdout] test commands::tests::first_sentence_falls_back_to_max_chars_for_runaway_text ... ok
[INFO] [stdout] test commands::tests::first_sentence_falls_back_to_whole_string_when_no_boundary ... ok
[INFO] [stdout] test commands::tests::first_sentence_does_not_split_on_period_inside_path ... ok
[INFO] [stdout] test commands::tests::format_relative_age_buckets_match_user_expectations ... ok
[INFO] [stdout] test commands::tests::format_bytes_short_covers_each_unit ... ok
[INFO] [stdout] test commands::tests::handle_sessions_rename_noop_when_old_eq_new ... ok
[INFO] [stdout] test commands::tests::parse_brain_with_model_name ... ok
[INFO] [stdout] test commands::tests::handle_sessions_rename_rejects_when_source_missing ... ok
[INFO] [stdout] test commands::tests::parse_brain_without_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_clear_aliases ... ok
[INFO] [stdout] test commands::tests::parse_brownfield_with_target ... ok
[INFO] [stdout] test commands::tests::parse_diff ... ok
[INFO] [stdout] test commands::tests::parse_empty_slash_is_invalid ... ok
[INFO] [stdout] test commands::tests::handle_sessions_delete_rejects_unknown_session ... ok
[INFO] [stdout] test api::tests::history_budget_subtracts_tools_schema ... ok
[INFO] [stdout] test commands::tests::parse_exit_aliases ... ok
[INFO] [stdout] test commands::tests::first_sentence_handles_multibyte_safely ... ok
[INFO] [stdout] test commands::tests::parse_forge_with_prompt ... ok
[INFO] [stdout] test commands::tests::parse_help_aliases ... ok
[INFO] [stdout] test commands::tests::parse_load_with_name ... ok
[INFO] [stdout] test commands::tests::parse_is_case_insensitive ... ok
[INFO] [stdout] test commands::tests::parse_forge_without_prompt_is_invalid ... ok
[INFO] [stdout] test commands::tests::first_sentence_handles_question_and_exclamation ... ok
[INFO] [stdout] test commands::tests::first_sentence_takes_up_to_period_space ... ok
[INFO] [stdout] test commands::tests::parse_brownfield_without_target_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_recall_with_query ... ok
[INFO] [stdout] test commands::tests::parse_preset_without_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_recall_reprobe_subcommand ... ok
[INFO] [stdout] test commands::tests::parse_load_without_name_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_preset_variants ... ok
[INFO] [stdout] test commands::tests::parse_preset_with_unknown_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_recall_without_query_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_models_alias ... ok
[INFO] [stdout] test commands::tests::parse_mission_exit_aliases ... ok
[INFO] [stdout] test commands::tests::parse_sessions_delete_without_name_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_sessions_rename_with_both_names ... ok
[INFO] [stdout] test commands::tests::parse_returns_none_for_non_slash_lines ... ok
[INFO] [stdout] test commands::tests::parse_save_without_name_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_sessions_bare_is_list ... ok
[INFO] [stdout] test commands::tests::parse_save_with_name ... ok
[INFO] [stdout] test commands::tests::parse_sessions_unknown_subcommand_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_sessions_delete_with_name ... ok
[INFO] [stdout] test commands::tests::parse_simple_commands ... ok
[INFO] [stdout] test commands::tests::sanitize_rejects_oversized_names ... ok
[INFO] [stdout] test commands::tests::sanitize_rejects_path_chars ... ok
[INFO] [stdout] test commands::tests::sanitize_accepts_normal_names ... ok
[INFO] [stdout] test commands::tests::sanitize_rejects_empty_and_dotted ... ok
[INFO] [stdout] test commands::tests::short_ts_trims_to_date_prefix ... ok
[INFO] [stdout] test compact::tests::compacts_older_messages_into_a_system_summary ... ok
[INFO] [stdout] test compact::tests::continuation_message_warns_against_assuming_completion ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_keeps_only_most_recent_image ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_keeps_single_image_intact ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_passthrough_when_no_images ... ok
[INFO] [stdout] test compact::tests::extracts_key_files_from_message_content ... ok
[INFO] [stdout] test compact::tests::formats_compact_summary_like_upstream ... ok
[INFO] [stdout] test compact::tests::image_token_estimator_floors_small_images_at_256 ... ok
[INFO] [stdout] test compact::tests::image_token_estimator_transitions_at_the_floor ... ok
[INFO] [stdout] test compact::tests::infers_pending_work_from_recent_messages ... ok
[INFO] [stdout] test compact::tests::truncates_long_blocks_in_summary ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_estimator_drops_after_eviction ... ok
[INFO] [stdout] test compact::tests::image_token_estimator_charges_wire_cost_for_real_payloads ... ok
[INFO] [stdout] test compact::tests::leaves_small_sessions_unchanged ... ok
[INFO] [stdout] test commands::tests::parse_sessions_rename_with_missing_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_undo_defaults_to_whole_turn_and_one_opts_out ... ok
[INFO] [stdout] test commands::tests::parse_unknown_command_is_invalid ... ok
[INFO] [stdout] test commands::tests::repl_state_records_turns ... ok
[INFO] [stdout] test context_evict::tests::already_stubbed_results_are_skipped ... ok
[INFO] [stdout] test context_evict::tests::current_turn_results_are_immune ... ok
[INFO] [stdout] test context_evict::tests::eviction_preserves_message_and_block_counts ... ok
[INFO] [stdout] test context_evict::tests::evicts_oldest_first_and_stops_at_threshold ... ok
[INFO] [stdout] test config::tests::loads_and_merges_claude_code_config_files_by_precedence ... ok
[INFO] [stdout] test context_evict::tests::last_k_tool_results_are_immune ... ok
[INFO] [stdout] test context_evict::tests::small_results_are_skipped ... ok
[INFO] [stdout] test config::tests::rejects_non_object_settings_files ... ok
[INFO] [stdout] test context_evict::tests::stub_body_is_valid_json_and_discourages_refetch ... ok
[INFO] [stdout] test context_evict::tests::no_user_message_is_none ... ok
[INFO] [stdout] test conversation::tests::a_silent_turn_is_asked_to_continue_before_the_run_gives_up ... ok
[INFO] [stdout] test conversation::tests::auto_compacts_when_cumulative_input_threshold_is_crossed ... ok
[INFO] [stdout] test context_evict::tests::under_threshold_is_passthrough_none ... ok
[INFO] [stdout] test conversation::tests::auto_compaction_threshold_defaults_and_parses_values ... ok
[INFO] [stdout] test conversation::tests::block_edit_tool_classifier_matches_edits_only ... ok
[INFO] [stdout] test conversation::tests::build_turn_system_prompt_appends_hint_when_images_present ... ok
[INFO] [stdout] test conversation::tests::build_turn_system_prompt_no_op_when_no_images ... ok
[INFO] [stdout] test conversation::tests::build_turn_system_prompt_preserves_multi_segment_base ... ok
[INFO] [stdout] test context_evict::tests::trigger_percent_parses ... ok
[INFO] [stdout] test conversation::tests::budget_nudge_absent_without_graceful_flag ... ok
[INFO] [stdout] test conversation::tests::changed_file_between_reads_returns_real_content ... ok
[INFO] [stdout] test conversation::tests::budget_nudge_fires_only_in_final_window ... ok
[INFO] [stdout] test conversation::tests::a_clean_stop_never_burns_a_budget_escalation_retry ... ok
[INFO] [stdout] test conversation::tests::clean_but_silent_turn_does_not_blame_the_budget ... ok
[INFO] [stdout] test conversation::tests::distinct_files_read_once_are_not_suppressed ... ok
[INFO] [stdout] test conversation::tests::compacts_session_after_turns ... ok
[INFO] [stdout] test conversation::tests::duplicate_block_edit_call_is_suppressed_not_re_executed ... ok
[INFO] [stdout] test conversation::tests::duplicate_denied_call_is_suppressed_not_re_executed ... ok
[INFO] [stdout] test conversation::tests::duplicate_git_status_is_suppressed_not_re_executed ... ok
[INFO] [stdout] test conversation::tests::empty_turn_aborts_after_escalating_retries_are_exhausted ... ok
[INFO] [stdout] test conversation::tests::empty_turn_recovers_via_one_retry_with_doubled_budget ... ok
[INFO] [stdout] test conversation::tests::empty_turn_retry_ceiling_doubles_then_clamps_to_half_the_window ... ok
[INFO] [stdout] test conversation::tests::eviction_off_returns_borrowed_unchanged ... ok
[INFO] [stdout] test conversation::tests::eviction_on_over_threshold_owns_and_shrinks ... ok
[INFO] [stdout] test conversation::tests::eviction_on_under_threshold_returns_borrowed ... ok
[INFO] [stdout] test conversation::tests::graceful_cap_lands_with_text_summary ... ok
[INFO] [stdout] test conversation::tests::duplicate_navigation_call_is_suppressed_not_re_executed ... ok
[INFO] [stdout] test conversation::tests::iteration_cap_without_graceful_flag_hard_fails ... ok
[INFO] [stdout] test conversation::tests::mutation_tool_classifier_matches_writes_and_edits ... ok
[INFO] [stdout] test conversation::tests::empty_turn_after_real_work_keeps_the_work_instead_of_aborting ... ok
[INFO] [stdout] test conversation::tests::graceful_cap_synthesizes_reply_when_landing_has_no_text ... ok
[INFO] [stdout] test conversation::tests::navigation_tool_classifier_matches_readers_only ... ok
[INFO] [stdout] test conversation::tests::no_progress_nudge_does_not_fire_on_pure_read_churn ... ok
[INFO] [stdout] test conversation::tests::graceful_cap_refuses_landing_tool_calls ... ok
[INFO] [stdout] test conversation::tests::read_loop_limit_parses_env_or_falls_back ... ok
[INFO] [stdout] test conversation::tests::reconstructs_usage_tracker_from_restored_session ... ok
[INFO] [stdout] test conversation::tests::records_denied_tool_results_when_prompt_rejects ... ok
[INFO] [stdout] test conversation::tests::post_edit_check_timeout_reaches_the_model_as_unverified ... ok
[INFO] [stdout] test conversation::tests::no_progress_nudge_fires_in_read_then_failed_edit_churn ... ok
[INFO] [stdout] test conversation::tests::skips_auto_compaction_below_threshold ... ok
[INFO] [stdout] test conversation::tests::truncated_reasoning_turn_names_the_budget_as_the_cause ... ok
[INFO] [stdout] test conversation::tests::unchanged_re_read_is_suppressed_even_after_a_failed_edit ... ok
[INFO] [stdout] test conversation::tests::unknown_tool_falls_through_to_hinter_when_suggest_for_is_empty ... ok
[INFO] [stdout] test conversation::tests::unknown_tool_short_circuits_without_invoking_prompter_or_executor ... ok
[INFO] [stdout] test conversation::tests::unknown_tool_with_no_suggestions_returns_empty_did_you_mean ... ok
[INFO] [stdout] test conversation::tests::vision_discipline_hint_mentions_image ... ok
[INFO] [stdout] test diff_preview::tests::apply_diff_renders_a_hunk ... ok
[INFO] [stdout] test diff_preview::tests::apply_patch_colors_unified_diff ... ok
[INFO] [stdout] test conversation::tests::runs_user_to_tool_to_result_loop_end_to_end_and_tracks_usage ... ok
[INFO] [stdout] test diff_preview::tests::common_lines_become_context_not_markers ... ok
[INFO] [stdout] test diff_preview::tests::edit_file_uses_old_new_text_keys ... ok
[INFO] [stdout] test diff_preview::tests::non_edit_tool_returns_none ... ok
[INFO] [stdout] test diff_preview::tests::render_file_change_shows_a_deletion_as_removals ... ok
[INFO] [stdout] test diff_preview::tests::unparseable_or_incomplete_input_returns_none ... ok
[INFO] [stdout] test diff_preview::tests::write_file_overwrite_previews_the_loss ... ok
[INFO] [stdout] test doctor::tests::backend_start_hint_is_backend_specific ... ok
[INFO] [stdout] test conversation::tests::denies_tool_use_when_pre_tool_hook_blocks ... ok
[INFO] [stdout] test doctor::tests::doctor_lists_every_safety_override ... ok
[INFO] [stdout] test doctor::tests::extract_model_names_ollama_shape ... ok
[INFO] [stdout] test doctor::tests::extract_model_names_openai_compat_shape ... ok
[INFO] [stdout] test doctor::tests::extract_model_names_returns_empty_on_unknown_shape ... ok
[INFO] [stdout] test doctor::tests::git_is_the_only_required_toolchain ... ok
[INFO] [stdout] test doctor::tests::model_load_hint_ollama_uses_pull_command ... ok
[INFO] [stdout] test doctor::tests::model_present_is_case_insensitive ... ok
[INFO] [stdout] test doctor::tests::model_present_matches_latest_alias_either_direction ... ok
[INFO] [stdout] test doctor::tests::model_present_rejects_mismatch ... ok
[INFO] [stdout] test doctor::tests::redact_masks_anything_with_token_or_key_or_secret ... ok
[INFO] [stdout] test doctor::tests::redact_preserves_config_values ... ok
[INFO] [stdout] test doctor::tests::redact_short_secret_is_fully_starred ... ok
[INFO] [stdout] test doctor::tests::safety_vars_are_distinct_prefixed_and_not_double_listed ... ok
[INFO] [stdout] test doctor::tests::toolchain_install_hint_is_nonempty_for_every_key ... ok
[INFO] [stdout] test doctor::tests::command_first_line_none_for_missing_binary ... ok
[INFO] [stdout] test egress::tests::allow_list_includes_loopback_and_lan_backend ... ok
[INFO] [stdout] test egress::tests::cloud_hosts_denied ... ok
[INFO] [stdout] test egress::tests::configured_lan_backend_allowed_other_cloud_still_denied ... ok
[INFO] [stdout] test egress::tests::guard_blocks_cloud_and_allows_backend_when_offline_on ... ok
[INFO] [stdout] test egress::tests::guard_is_noop_when_offline_off ... ok
[INFO] [stdout] test egress::tests::is_offline_reads_truthy_env ... ok
[INFO] [stdout] test egress::tests::preflight_is_noop_when_offline_off ... ok
[INFO] [stdout] test egress::tests::preflight_refuses_offline_with_proxy ... ok
[INFO] [stdout] test egress::tests::proxy_vars_set_detects_both_spellings ... ok
[INFO] [stdout] test egress::tests::loopback_hosts_always_allowed ... ok
[INFO] [stdout] test env_config::tests::home_dir_prefers_userprofile_then_home ... ok
[INFO] [stdout] test env_config::tests::is_enabled_reads_env_fail_safe ... ok
[INFO] [stdout] test env_config::tests::is_truthy_accepts_canonical_set_case_insensitively ... ok
[INFO] [stdout] test env_config::tests::is_truthy_rejects_falsey_and_garbage ... ok
[INFO] [stdout] test executor::tests::stateless_executor_rejects_enable_tools ... ok
[INFO] [stdout] test executor::tests::stateless_executor_dispatches_core_tool ... ok
[INFO] [stdout] test executor::tests::wired_executor_bad_json_errors ... ok
[INFO] [stdout] test executor::tests::wired_executor_enables_git_group ... ok
[INFO] [stdout] test conversation::tests::appends_post_tool_hook_feedback_to_tool_result ... ok
[INFO] [stdout] test executor::tests::wired_executor_reports_already_enabled_on_second_call ... ok
[INFO] [stdout] test executor::tests::wired_executor_still_dispatches_non_meta_tools ... ok
[INFO] [stdout] test executor::tests::wired_executor_missing_group_enables_coding_core ... ok
[INFO] [stdout] test firstrun::tests::empty_list_is_no_model_loaded ... ok
[INFO] [stdout] test firstrun::tests::missing_brain_is_model_not_pulled ... ok
[INFO] [stdout] test executor::tests::wired_executor_unknown_group_errors_clearly ... ok
[INFO] [stdout] test doctor::tests::command_first_line_finds_present_binary ... ok
[INFO] [stdout] test executor::tests::transcript_records_mutating_calls_but_never_readonly ... ok
[INFO] [stdout] test firstrun::tests::nudge_wrapper_is_quiet_when_stdin_is_piped ... ok
[INFO] [stdout] test firstrun::tests::offer_is_refused_when_stdin_is_piped ... ok
[INFO] [stdout] test firstrun::tests::present_brain_is_ready ... ok
[INFO] [stdout] test forge::models_toml::tests::anthropic_provider_parses ... ok
[INFO] [stdout] test firstrun::tests::nudge_fires_once_then_never_again ... ok
[INFO] [stdout] test forge::models_toml::tests::env_override_model_precedes_toml ... ok
[INFO] [stdout] test firstrun::tests::nudge_menu_names_every_next_step ... ok
[INFO] [stdout] test forge::models_toml::tests::invalid_provider_returns_error ... ok
[INFO] [stdout] test firstrun::tests::nudge_respects_a_preexisting_sentinel ... ok
[INFO] [stdout] test forge::models_toml::tests::invalid_toml_returns_parse_error ... ok
[INFO] [stdout] test forge::models_toml::tests::missing_file_returns_defaults ... ok
[INFO] [stdout] test forge::models_toml::tests::round_trip_coder_override ... ok
[INFO] [stdout] test forge::personas::tests::bundled_personas_are_loaded_not_placeholder ... ok
[INFO] [stdout] test forge::personas::tests::bundled_personas_all_parse ... ok
[INFO] [stdout] test forge::models_toml::tests::missing_role_keeps_default ... ok
[INFO] [stdout] test forge::personas::tests::bundled_personas_have_expected_roles ... ok
[INFO] [stdout] test forge::personas::tests::load_personas_missing_bundled_is_err ... ok
[INFO] [stdout] test forge::personas::tests::load_personas_user_dir_overrides_bundled ... ok
[INFO] [stdout] test forge::personas::tests::parse_missing_closing_marker_fails ... ok
[INFO] [stdout] test forge::personas::tests::parse_missing_leading_marker_fails ... ok
[INFO] [stdout] test forge::personas::tests::parse_persona_file_with_crlf_line_endings ... ok
[INFO] [stdout] test forge::personas::tests::parse_persona_without_examples_section ... ok
[INFO] [stdout] test forge::personas::tests::parse_role_accepts_case_and_separators ... ok
[INFO] [stdout] test forge::personas::tests::parse_unknown_role_fails ... ok
[INFO] [stdout] test forge::personas::tests::parse_valid_persona_file ... ok
[INFO] [stdout] test forge::personas::tests::parse_missing_name_fails ... ok
[INFO] [stdout] test forge::types::tests::multiple_roles_coexist ... ok
[INFO] [stdout] test forge::types::tests::new_map_resolves_nothing ... ok
[INFO] [stdout] test forge::types::tests::set_then_resolve_round_trips ... ok
[INFO] [stdout] test forge::types::tests::set_twice_same_role_last_wins ... ok
[INFO] [stdout] test conversation::tests::post_edit_check_appends_failure_output ... ok
[INFO] [stdout] test forge::personas::tests::load_personas_walks_directory ... ok
[INFO] [stdout] test hw::tests::parse_mib_happy_path ... ok
[INFO] [stdout] test forge::models_toml::tests::env_override_works_without_toml_file ... ok
[INFO] [stdout] test hw::tests::parse_mib_takes_first_gpu_on_multi_gpu_boxes ... ok
[INFO] [stdout] test hw::tests::parse_mib_rejects_garbage ... ok
[INFO] [stdout] test hw::tests::recommend_boundaries_match_the_certified_table ... ok
[INFO] [stdout] test hw::tests::vram_source_is_comparable ... ok
[INFO] [stdout] test json::tests::escapes_control_characters ... ok
[INFO] [stdout] test json::tests::renders_and_parses_json_values ... ok
[INFO] [stdout] test memory::tests::cap_memory_truncates_on_char_boundary_for_multibyte ... ok
[INFO] [stdout] test memory::tests::cap_memory_under_budget_is_identity ... ok
[INFO] [stdout] test hooks::tests::allows_exit_code_zero_and_captures_stdout ... ok
[INFO] [stdout] test memory::tests::cap_memory_exactly_at_budget_passes_through ... ok
[INFO] [stdout] test memory::tests::empty_file_returns_none ... ok
[INFO] [stdout] test memory::tests::missing_file_returns_none ... ok
[INFO] [stdout] test memory::tests::small_file_loads_verbatim_after_trim ... ok
[INFO] [stdout] test memory::tests::oversize_file_is_truncated_with_marker ... ok
[INFO] [stdout] test missions::tests::active_cwd_falls_back_to_process_cwd_when_no_mission ... ok
[INFO] [stdout] test missions::tests::active_pointer_path_sits_under_claudette_home ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_is_idempotent ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_writes_into_fresh_repo ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_preserves_existing_rules ... ok
[INFO] [stdout] test missions::tests::list_missions_skips_dirs_without_markers ... ok
[INFO] [stdout] test missions::tests::list_orphan_slugs_runs_cleanly ... ok
[INFO] [stdout] test missions::tests::load_marker_errors_on_missing_file ... ok
[INFO] [stdout] test hooks::tests::warns_for_other_non_zero_statuses ... ok
[INFO] [stdout] test missions::tests::marker_path_for_appends_filename ... ok
[INFO] [stdout] test missions::tests::marker_filename_is_dotfile ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_creates_info_dir_if_missing ... ok
[INFO] [stdout] test missions::tests::missions_root_under_home_or_userprofile ... ok
[INFO] [stdout] test missions::tests::path_under_permitted_roots_accepts_home_subpath ... ok
[INFO] [stdout] test missions::tests::path_under_permitted_roots_rejects_system_dir ... ok
[INFO] [stdout] test missions::tests::rehydrate_clears_pointer_on_malformed_json ... ok
[INFO] [stdout] test missions::tests::rehydrate_clears_pointer_when_mission_tree_missing ... ok
[INFO] [stdout] test missions::tests::rehydrate_clears_pointer_when_not_a_git_tree ... ok
[INFO] [stdout] test missions::tests::rehydrate_installs_valid_mission_and_round_trips ... ok
[INFO] [stdout] test missions::tests::path_under_permitted_roots_accepts_workspace_entry ... ok
[INFO] [stdout] test missions::tests::rehydrate_returns_none_when_pointer_missing ... ok
[INFO] [stdout] test missions::tests::set_active_persists_non_ephemeral_only ... ok
[INFO] [stdout] test missions::tests::brownfield_failed_flag_round_trips ... ok
[INFO] [stdout] test missions::tests::marker_round_trip ... ok
[INFO] [stdout] test missions::tests::validate_slug_accepts_simple_name ... ok
[INFO] [stdout] test missions::tests::validate_slug_rejects_traversal_and_separators ... ok
[INFO] [stdout] test missions::tests::validate_slug_trims_whitespace ... ok
[INFO] [stdout] test model_config::tests::merge_toml_missing_file_is_noop ... ok
[INFO] [stdout] test model_config::tests::merge_toml_preset_switch ... ok
[INFO] [stdout] test model_config::tests::merge_toml_role_overrides ... ok
[INFO] [stdout] test model_config::tests::preset_auto_has_fallback ... ok
[INFO] [stdout] test model_config::tests::preset_parse_accepts_three_values ... ok
[INFO] [stdout] test model_config::tests::preset_smart_uses_9b_only ... ok
[INFO] [stdout] test missions::tests::try_bootstrap_local_mission_in_this_repo_succeeds ... ok
[INFO] [stdout] test model_config::tests::set_active_replaces_state ... ok
[INFO] [stdout] test model_config::tests::update_active_mutates_and_returns_snapshot ... ok
[INFO] [stdout] test permissions::tests::allows_tools_when_active_mode_meets_requirement ... ok
[INFO] [stdout] test permissions::tests::denies_read_only_escalations_without_prompt ... ok
[INFO] [stdout] test permissions::tests::is_known_returns_true_for_registered_tool ... ok
[INFO] [stdout] test hooks::tests::denies_exit_code_two ... ok
[INFO] [stdout] test permissions::tests::levenshtein_basic_distances ... ok
[INFO] [stdout] test permissions::tests::max_tier_allows_tools_at_or_below_cap ... ok
[INFO] [stdout] test model_config::tests::preset_fast_has_no_fallback ... ok
[INFO] [stdout] test permissions::tests::max_tier_defaults_to_danger_full_access ... ok
[INFO] [stdout] test permissions::tests::max_tier_denies_above_cap_even_in_allow_mode ... ok
[INFO] [stdout] test permissions::tests::operation_describe_passes_through_short_other ... ok
[INFO] [stdout] test permissions::tests::operation_describe_shows_file_paths ... ok
[INFO] [stdout] test permissions::tests::operation_describe_truncates_long_strings ... ok
[INFO] [stdout] test permissions::tests::prompts_for_workspace_write_to_danger_full_access_escalation ... ok
[INFO] [stdout] test permissions::tests::suggest_for_finds_levenshtein_neighbors ... ok
[INFO] [stdout] test permissions::tests::honors_prompt_rejection_reason ... ok
[INFO] [stdout] test permissions::tests::suggest_for_respects_max_cap ... ok
[INFO] [stdout] test permissions::tests::is_known_returns_false_for_unregistered_tool ... ok
[INFO] [stdout] test permissions::tests::operation_describe_shows_execute_argv ... ok
[INFO] [stdout] test permissions::tests::suggest_for_returns_close_matches_by_substring ... ok
[INFO] [stdout] test permissions::tests::with_max_tier_overrides_default ... ok
[INFO] [stdout] test permissions::tests::suggest_for_returns_empty_for_distant_names ... ok
[INFO] [stdout] test permissions::tests::suggest_for_zero_max_returns_empty ... ok
[INFO] [stdout] test permissions::tests::write_file_escalates_to_danger_only_when_it_overwrites ... ok
[INFO] [stdout] test permissions::tests::max_tier_at_default_preserves_legacy_behaviour ... ok
[INFO] [stdout] test prompt::tests::default_assistant_persona_parses ... ok
[INFO] [stdout] test prompt::tests::build_environment_block_contains_platform ... ok
[INFO] [stdout] test prompt::tests::assistant_prompt_includes_eva_overlay_by_default ... ok
[INFO] [stdout] test prompt::tests::environment_block_is_present ... ok
[INFO] [stdout] test prompt::tests::concise_mode_appends_telegram_suffix ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_appends_memory ... ok
[INFO] [stdout] test prompt::tests::forge_planner_prompt_demands_numbered_list_only ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_declares_mission_path ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_ignores_blank_memory ... ok
[INFO] [stdout] test prompt::tests::concise_mode_skips_eva_overlay ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_should_submit_false_forbids_mission_submit ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_skips_blank_persona_fields ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_with_persona_includes_voice_and_backstory ... ok
[INFO] [stdout] test prompt::tests::forge_verifier_prompt_demands_json_shape ... ok
[INFO] [stdout] test prompt::tests::faceless_env_disables_eva_overlay ... ok
[INFO] [stdout] test prompt::tests::faceless_truthy_values_all_recognised ... ok
[INFO] [stdout] test prompt::tests::memory_is_trimmed_when_appended ... ok
[INFO] [stdout] test prompt::tests::no_memory_returns_base_prompt_only ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_anti_stale_data_nudge ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_email_provenance_invariant ... ok
[INFO] [stdout] test prompt_runtime::tests::dedupes_identical_instruction_content_across_scopes ... ok
[INFO] [stdout] test prompt::tests::real_memory_appended_with_label ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_dynamic_group_names ... ok
[INFO] [stdout] test prompt_runtime::tests::discovers_dot_claude_instructions_markdown ... ok
[INFO] [stdout] test prompt_runtime::tests::discovers_instruction_files_from_ancestor_chain ... ok
[INFO] [stdout] test prompt_runtime::tests::displays_context_paths_compactly ... ok
[INFO] [stdout] test prompt::tests::whitespace_memory_treated_as_none ... ok
[INFO] [stdout] test prompt_runtime::tests::normalizes_and_collapses_blank_lines ... ok
[INFO] [stdout] test prompt_runtime::tests::renders_claude_code_style_sections_with_project_context ... ok
[INFO] [stdout] test prompt_runtime::tests::renders_instruction_file_metadata ... ok
[INFO] [stdout] test prompt_runtime::tests::truncates_instruction_content_to_budget ... ok
[INFO] [stdout] test prompt_runtime::tests::truncates_large_instruction_content_for_rendering ... ok
[INFO] [stdout] test recall::tests::cosine_handles_zero_vectors ... ok
[INFO] [stdout] test recall::tests::cosine_is_one_for_identical ... ok
[INFO] [stdout] test recall::tests::cosine_is_zero_for_orthogonal ... ok
[INFO] [stdout] test recall::tests::cosine_returns_zero_for_mismatched_length ... ok
[INFO] [stdout] test recall::tests::decode_rejects_misaligned_bytes ... ok
[INFO] [stdout] test recall::tests::embedder_failure_propagates_as_error_string ... ok
[INFO] [stdout] test recall::tests::empty_query_returns_empty_results ... ok
[INFO] [stdout] test recall::tests::encode_decode_roundtrip ... ok
[INFO] [stdout] test recall::tests::fifo_eviction_at_cap ... ok
[INFO] [stdout] test recall::tests::json_array_to_f32s_rejects_empty ... ok
[INFO] [stdout] test recall::tests::json_array_to_f32s_rejects_non_numeric ... ok
[INFO] [stdout] test prompt::tests::none_memory_equals_no_memory ... ok
[INFO] [stdout] test recall::tests::long_multibyte_snippet_does_not_panic_on_cap ... ok
[INFO] [stdout] test recall::tests::parse_ollama_embedding_happy_path ... ok
[INFO] [stdout] test recall::tests::parse_ollama_embedding_rejects_missing_field ... ok
[INFO] [stdout] test recall::tests::parse_openai_compat_embedding_happy_path ... ok
[INFO] [stdout] test recall::tests::parse_openai_compat_embedding_rejects_empty_data_array ... ok
[INFO] [stdout] test recall::tests::long_snippet_is_truncated ... ok
[INFO] [stdout] test recall::tests::probe_through_store_returns_err_on_embedder_failure ... ok
[INFO] [stdout] test recall::tests::query_returns_only_top_k_via_heap ... ok
[INFO] [stdout] test prompt_runtime::tests::load_system_prompt_reads_claude_files_and_config ... ok
[INFO] [stdout] test recall::tests::query_skips_rows_with_mismatched_dim ... ok
[INFO] [stdout] test recall::tests::recall_live_full_index_query_roundtrip ... ignored, requires live LM Studio with embed model loaded
[INFO] [stdout] test recall::tests::recall_live_openai_compat_embed_is_deterministic ... ignored, requires live LM Studio with embed model loaded
[INFO] [stdout] test recall::tests::parse_openai_compat_embedding_rejects_missing_data ... ok
[INFO] [stdout] test recall::tests::role_parse_roundtrip ... ok
[INFO] [stdout] test recall::tests::results_are_sorted_descending_by_score ... ok
[INFO] [stdout] test recall::tests::store_roundtrip_indexes_and_queries ... ok
[INFO] [stdout] test redact::tests::clean_input_is_borrowed_unchanged ... ok
[INFO] [stdout] test redact::tests::does_not_mangle_prose_with_password_word ... ok
[INFO] [stdout] test redact::tests::does_not_mangle_a_git_sha_or_plain_path ... ok
[INFO] [stdout] test redact::tests::header_backstop_is_idempotent ... ok
[INFO] [stdout] test recall::tests::store_skips_empty_snippets ... ok
[INFO] [stdout] test redact::tests::masks_bearer_header_keeps_scheme ... ok
[INFO] [stdout] test redact::tests::masks_basic_auth_keeps_scheme ... ok
[INFO] [stdout] test prompt_runtime::tests::discover_with_git_includes_status_snapshot ... ok
[INFO] [stdout] test redact::tests::masks_bare_api_key_header ... ok
[INFO] [stdout] test redact::tests::masks_github_fine_grained_pat ... ok
[INFO] [stdout] test redact::tests::masks_github_pat ... ok
[INFO] [stdout] test redact::tests::masks_gitlab_pat ... ok
[INFO] [stdout] test redact::tests::masks_pem_private_key_block ... ok
[INFO] [stdout] test redact::tests::masks_url_embedded_credentials ... ok
[INFO] [stdout] test redact::tests::masks_jwt ... ok
[INFO] [stdout] test run::cli_prompter::tests::format_ctx_gauge_shows_used_window_and_percent ... ok
[INFO] [stdout] test redact::tests::redaction_is_idempotent ... ok
[INFO] [stdout] test run::cli_prompter::tests::gate_line_decision_forwards_redirect_text ... ok
[INFO] [stdout] test run::cli_prompter::tests::gate_line_decision_plain_deny_on_empty_or_no ... ok
[INFO] [stdout] test run::cli_prompter::tests::gate_line_decision_allows_on_yes ... ok
[INFO] [stdout] test run::cli_prompter::tests::humanize_tokens_compacts_with_1024_base ... ok
[INFO] [stdout] test run::compaction_policy::tests::compact_threshold_default_when_env_var_unset ... ok
[INFO] [stdout] test redact::tests::masks_slack_aws_google_openai ... ok
[INFO] [stdout] test run::compaction_policy::tests::compact_threshold_falls_back_on_garbage ... ok
[INFO] [stdout] test run::compaction_policy::tests::compaction_tier_names_are_lowercase_for_logs ... ok
[INFO] [stdout] test run::compaction_policy::tests::compact_threshold_honors_env_var ... ok
[INFO] [stdout] test run::compaction_policy::tests::pick_compact_plan_prefers_hard_over_soft_when_both_crossed ... ok
[INFO] [stdout] test run::compaction_policy::tests::pick_compact_plan_returns_hard_when_hard_crossed ... ok
[INFO] [stdout] test run::compaction_policy::tests::pick_compact_plan_returns_soft_when_only_soft_crossed ... ok
[INFO] [stdout] test run::compaction_policy::tests::pick_compact_plan_skips_soft_when_threshold_unset ... ok
[INFO] [stdout] test run::compaction_policy::tests::pick_compact_plan_returns_none_below_both_thresholds ... ok
[INFO] [stdout] test run::compaction_policy::tests::resolve_compact_threshold_derives_half_the_window ... ok
[INFO] [stdout] test run::compaction_policy::tests::resolve_compact_threshold_honors_explicit_override ... ok
[INFO] [stdout] test run::compaction_policy::tests::resolve_compact_threshold_clamps_to_floor_and_ceiling ... ok
[INFO] [stdout] test run::compaction_policy::tests::soft_compact_threshold_returns_none_when_unset ... ok
[INFO] [stdout] test run::compaction_policy::tests::soft_compact_threshold_returns_some_when_set ... ok
[INFO] [stdout] test run::compaction_policy::tests::soft_compact_threshold_treats_zero_as_unset ... ok
[INFO] [stdout] test run::forge_run::tests::best_round_none_when_all_entries_lack_sha ... ok
[INFO] [stdout] test run::forge_run::tests::best_round_picks_highest_score_with_recoverable_sha ... ok
[INFO] [stdout] test run::forge_run::tests::best_round_breaks_tie_by_earlier_round ... ok
[INFO] [stdout] test run::forge_run::tests::best_round_none_on_empty ... ok
[INFO] [stdout] test run::forge_run::tests::best_round_prefers_passing_over_higher_scoring_fail ... ok
[INFO] [stdout] test run::forge_run::tests::best_round_prefers_security_clean_over_higher_scoring_vulnerable ... ok
[INFO] [stdout] test run::forge_run::tests::best_round_skips_entries_with_no_sha ... ok
[INFO] [stdout] test run::forge_run::tests::build_check_on_by_default_and_opt_out_works ... ok
[INFO] [stdout] test prompt_runtime::tests::discover_with_git_includes_diff_snapshot_for_tracked_changes ... ok
[INFO] [stdout] test run::forge_run::tests::capture_base_sha_returns_none_on_fresh_repo ... ok
[INFO] [stdout] test run::forge_run::tests::score_declining_detects_two_consecutive_drops ... ok
[INFO] [stdout] test run::forge_run::tests::score_declining_does_not_fire_on_recovery ... ok
[INFO] [stdout] test run::forge_run::tests::score_declining_requires_strict_inequality ... ok
[INFO] [stdout] test run::forge_run::tests::score_declining_returns_false_for_short_history ... ok
[INFO] [stdout] test run::forge_run::tests::short_sha_truncates_long_inputs ... ok
[INFO] [stdout] test run::forge_run::tests::short_sha_returns_short_inputs_intact ... ok
[INFO] [stdout] test run::forge_run::tests::human_review_disabled_under_auto_approve ... ok
[INFO] [stdout] test run::forge_run::tests::human_review_on_by_default_and_opt_out_works ... ok
[INFO] [stdout] test run::forge_run::tests::test_timeout_defaults_and_clamps ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_clamps_out_of_range_scores ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_missing_fields_fail_closed ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_parses_clean_json ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_parses_json_in_code_fence ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_parses_json_with_trailing_prose ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_pass_requires_score_threshold ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_rounds_float_scores ... ok
[INFO] [stdout] test run::forge_run::tests::verifier_unparseable_fails_closed ... ok
[INFO] [stdout] test run::line_editor::tests::a_plain_piped_line_is_unchanged_by_the_sentinel_path ... ok
[INFO] [stdout] test run::line_editor::tests::a_sentinel_block_becomes_one_line_joined_with_newlines ... ok
[INFO] [stdout] test run::line_editor::tests::backspace_and_delete_at_the_edges_are_noops ... ok
[INFO] [stdout] test run::line_editor::tests::blank_lines_inside_a_block_are_content_including_a_leading_one ... ok
[INFO] [stdout] test run::line_editor::tests::an_unterminated_block_errors_rather_than_delivering_half_a_prompt ... ok
[INFO] [stdout] test run::forge_run::tests::truncate_diff_for_review_caps_long_diffs ... ok
[INFO] [stdout] test run::line_editor::tests::crlf_in_a_block_is_normalised_to_lf ... ok
[INFO] [stdout] test run::line_editor::tests::ctrl_c_cancels_and_enter_submits ... ok
[INFO] [stdout] test run::line_editor::tests::ctrl_d_only_ends_input_on_an_empty_line ... ok
[INFO] [stdout] test run::line_editor::tests::control_chords_never_type_a_literal_character ... ok
[INFO] [stdout] test run::forge_run::tests::truncate_diff_for_review_keeps_short_diffs_whole ... ok
[INFO] [stdout] test run::line_editor::tests::ctrl_w_deletes_the_previous_word_including_trailing_space ... ok
[INFO] [stdout] test run::line_editor::tests::exit_inside_a_block_is_content_not_a_command ... ok
[INFO] [stdout] test run::line_editor::tests::editing_is_char_based_not_byte_based ... ok
[INFO] [stdout] test run::line_editor::tests::history_refuses_a_multi_line_entry ... ok
[INFO] [stdout] test run::line_editor::tests::key_bindings_map_to_the_expected_actions ... ok
[INFO] [stdout] test run::line_editor::tests::history_file_round_trips_and_is_capped ... ok
[INFO] [stdout] test run::line_editor::tests::kill_to_start_and_end_respect_the_cursor ... ok
[INFO] [stdout] test run::line_editor::tests::empty_input_is_eof ... ok
[INFO] [stdout] test run::line_editor::tests::history_navigation_on_empty_history_is_a_noop ... ok
[INFO] [stdout] test run::line_editor::tests::missing_history_file_loads_empty_rather_than_failing ... ok
[INFO] [stdout] test run::line_editor::tests::tab_completes_a_unique_slash_command ... ok
[INFO] [stdout] test run::line_editor::tests::tab_does_not_complete_plain_prose_or_mid_argument ... ok
[INFO] [stdout] test run::line_editor::tests::tab_fills_the_shared_prefix_when_several_commands_match ... ok
[INFO] [stdout] test run::line_editor::tests::the_opener_must_match_exactly ... ok
[INFO] [stdout] test run::line_editor::tests::up_walks_back_through_history_and_down_returns_the_draft ... ok
[INFO] [stdout] test run::line_editor::tests::the_reader_resumes_after_the_closing_sentinel ... ok
[INFO] [stdout] test run::research::tests::batch_prompt_lists_files_and_counts ... ok
[INFO] [stdout] test run::research::tests::batch_status_skip_reason_defaults_to_none ... ok
[INFO] [stdout] test run::research::tests::batch_files_clamped ... ok
[INFO] [stdout] test run::research::tests::batching_breaks_at_directory_change ... ok
[INFO] [stdout] test run::research::tests::batching_respects_byte_budget ... ok
[INFO] [stdout] test run::research::tests::batching_respects_file_cap ... ok
[INFO] [stdout] test run::research::tests::content_has_control_tokens_detects_dense_tokens ... ok
[INFO] [stdout] test run::research::tests::classify_attempt_empty_parse_ok ... ok
[INFO] [stdout] test run::research::tests::budget_oversize_file_gets_solo_batch ... ok
[INFO] [stdout] test run::research::tests::findings_md_header_and_append_format ... ok
[INFO] [stdout] test run::research::tests::findings_store_ids_continue_across_batches ... ok
[INFO] [stdout] test run::research::tests::empty_repo_errors ... ok
[INFO] [stdout] test run::research::tests::force_offline_for_run_sets_env ... ok
[INFO] [stdout] test run::research::tests::force_workspace_for_run_sets_env ... ok
[INFO] [stdout] test run::research::tests::findings_table_lists_rows ... ok
[INFO] [stdout] test run::research::tests::flip_skipped_to_pending_flips_only_skipped ... ok
[INFO] [stdout] test run::research::tests::manifest_flags_control_token_files ... ok
[INFO] [stdout] test run::research::tests::manifest_excludes_recorded_not_dropped ... ok
[INFO] [stdout] test run::research::tests::manifest_hash_stable_and_sensitive ... ok
[INFO] [stdout] test run::research::tests::needs_verify_high_medium_only ... ok
[INFO] [stdout] test run::research::tests::manifest_skips_oversize_and_unreadable ... ok
[INFO] [stdout] test run::line_editor::tests::typing_inserts_at_the_cursor ... ok
[INFO] [stdout] test run::research::tests::parse_backslash_path_normalized ... ok
[INFO] [stdout] test run::research::tests::parse_empty_verdict_errors ... ok
[INFO] [stdout] test run::research::tests::manifest_filters_orders_and_counts ... ok
[INFO] [stdout] test run::research::tests::output_dir_default_and_override ... ok
[INFO] [stdout] test run::research::tests::parse_bad_enum_errors ... ok
[INFO] [stdout] test run::research::tests::parse_exclude_list_normalizes ... ok
[INFO] [stdout] test run::research::tests::parse_evidence_strips_code_fences ... ok
[INFO] [stdout] test run::research::tests::parse_golden_output ... ok
[INFO] [stdout] test run::research::tests::parse_missing_key_errors ... ok
[INFO] [stdout] test run::research::tests::parse_finding_with_line_range ... ok
[INFO] [stdout] test run::research::tests::parse_missing_verdict_errors ... ok
[INFO] [stdout] test run::research::tests::parse_verdict_confirmed_retracted_none ... ok
[INFO] [stdout] test run::research::tests::path_is_excluded_matches_rules ... ok
[INFO] [stdout] test run::research::tests::probe_healthy_rejects_whitespace ... ok
[INFO] [stdout] test run::research::tests::parse_nonexistent_path_dropped_not_fatal ... ok
[INFO] [stdout] test run::research::tests::parse_traversal_and_absolute_dropped ... ok
[INFO] [stdout] test run::research::tests::report_header_names_root_model_and_counts ... ok
[INFO] [stdout] test run::research::tests::progress_roundtrip_and_next_pending ... ok
[INFO] [stdout] test run::research::tests::verify_prompt_carries_finding ... ok
[INFO] [stdout] test run::runtime_build::tests::forge_default_coder_persona_parses_bundled_codex7 ... ok
[INFO] [stdout] test run::research::tests::resume_action_matrix ... ok
[INFO] [stdout] test run::tests::default_session_path_honors_env_var ... ok
[INFO] [stdout] test run::tests::forge_model_map_has_a_default_for_each_role ... ok
[INFO] [stdout] test run::tests::high_blast_radius_tools_require_danger_tier ... ok
[INFO] [stdout] test run::research::tests::skipped_note_includes_reason ... ok
[INFO] [stdout] test run::tests::every_advertised_tool_has_permission_requirement ... ok
[INFO] [stdout] test run::runtime_build::tests::research_policy_is_read_only_capped ... ok
[INFO] [stdout] test run::tests::save_creates_parent_directory ... ok
[INFO] [stdout] test run::tests::save_then_load_round_trip ... ok
[INFO] [stdout] test run::tests::try_load_returns_none_when_missing ... ok
[INFO] [stdout] test scheduler::tests::add_default_catch_up_is_once_for_oneshot_and_skip_for_recurring ... ok
[INFO] [stdout] test scheduler::tests::add_oneshot_persists_and_next_due_reflects_it ... ok
[INFO] [stdout] test scheduler::tests::cancel_removes_entry ... ok
[INFO] [stdout] test scheduler::tests::catch_up_once_returns_missed_oneshot ... ok
[INFO] [stdout] test scheduler::tests::fire_due_advances_recurring ... ok
[INFO] [stdout] test scheduler::tests::fire_due_preserves_memory_on_save_failure ... ok
[INFO] [stdout] test scheduler::tests::fire_due_returns_ripe_oneshot_and_removes_it ... ok
[INFO] [stdout] test scheduler::tests::load_missing_file_returns_empty_scheduler ... ok
[INFO] [stdout] test scheduler::tests::malformed_line_is_ignored_not_fatal ... ok
[INFO] [stdout] test scheduler::tests::new_id_shape_is_stable ... ok
[INFO] [stdout] test scheduler::tests::catch_up_skip_drops_missed_recurring ... ok
[INFO] [stdout] test scheduler::tests::parse_cron_passthrough ... ok
[INFO] [stdout] test scheduler::tests::parse_daily_builds_star_cron ... ok
[INFO] [stdout] test scheduler::tests::parse_empty_errors ... ok
[INFO] [stdout] test scheduler::tests::parse_every_n_minutes ... ok
[INFO] [stdout] test scheduler::tests::parse_every_weekday_builds_cron ... ok
[INFO] [stdout] test scheduler::tests::parse_gibberish_errors_with_hint ... ok
[INFO] [stdout] test scheduler::tests::parse_in_days ... ok
[INFO] [stdout] test scheduler::tests::parse_in_hours_singular ... ok
[INFO] [stdout] test scheduler::tests::parse_in_rejects_unknown_unit ... ok
[INFO] [stdout] test scheduler::tests::parse_in_rejects_zero_or_negative ... ok
[INFO] [stdout] test scheduler::tests::parse_rfc3339_passthrough ... ok
[INFO] [stdout] test scheduler::tests::parse_tomorrow_at_12h_pm ... ok
[INFO] [stdout] test scheduler::tests::parse_tomorrow_at_24h ... ok
[INFO] [stdout] test scheduler::tests::parse_in_minutes ... ok
[INFO] [stdout] test secrets::tests::chat_id_path_under_secrets ... ok
[INFO] [stdout] test scheduler::tests::save_and_reload_roundtrip_preserves_entries ... ok
[INFO] [stdout] test secrets::tests::load_chat_ids_empty_when_no_file ... ok
[INFO] [stdout] test secrets::tests::create_private_file_writes_and_truncates ... ok
[INFO] [stdout] test secrets::tests::read_secret_error_mentions_all_paths ... ok
[INFO] [stdout] test secrets::tests::read_secret_picks_up_env_var ... ok
[INFO] [stdout] test secrets::tests::read_secret_rejects_empty_env_var ... ok
[INFO] [stdout] test secrets::tests::read_secret_trims_whitespace ... ok
[INFO] [stdout] test secrets::tests::read_secret_file_fallback ... ok
[INFO] [stdout] test secrets::tests::save_and_load_chat_id_roundtrip ... ok
[INFO] [stdout] test secrets::tests::secret_file_path_formats_correctly ... ok
[INFO] [stdout] test secrets::tests::secrets_dir_is_under_claudette ... ok
[INFO] [stdout] test security_review::tests::does_not_flag_sinks_mentioned_in_comments_or_strings ... ok
[INFO] [stdout] test security_review::tests::does_not_over_exclude_production_paths ... ok
[INFO] [stdout] test security_review::tests::feedback_lists_high_and_medium ... ok
[INFO] [stdout] test security_review::tests::flags_aws_key_shape ... ok
[INFO] [stdout] test security_review::tests::flags_eval_but_not_retrieval ... ok
[INFO] [stdout] test security_review::tests::excludes_test_fixture_and_doc_paths ... ok
[INFO] [stdout] test security_review::tests::flags_innerhtml_assignment_xss ... ok
[INFO] [stdout] test conversation::tests::post_edit_check_caps_rounds_per_file ... ok
[INFO] [stdout] test security_review::tests::flags_pickle_and_unsafe_yaml ... ok
[INFO] [stdout] test security_review::tests::flags_prototype_pollution_and_nosql ... ok
[INFO] [stdout] test security_review::tests::flags_python_exec_and_dynamic_import ... ok
[INFO] [stdout] test security_review::tests::flags_shell_true_and_os_system ... ok
[INFO] [stdout] test security_review::tests::flags_sql_concat_but_not_parameterized ... ok
[INFO] [stdout] test security_review::tests::flags_ssti_render_template_string ... ok
[INFO] [stdout] test security_review::tests::flags_ssrf_open_redirect_path_traversal_with_user_input ... ok
[INFO] [stdout] test security_review::tests::flags_weak_hash_and_cipher ... ok
[INFO] [stdout] test security_review::tests::flags_tls_verification_disabled ... ok
[INFO] [stdout] test security_review::tests::flags_xxe_entity_resolution ... ok
[INFO] [stdout] test security_review::tests::hardcoded_secret_heuristic_skips_placeholders_and_env ... ok
[INFO] [stdout] test security_review::tests::ignores_innerhtml_clear ... ok
[INFO] [stdout] test security_review::tests::ignores_innerhtml_equality_comparison ... ok
[INFO] [stdout] test security_review::tests::only_added_lines_are_scanned ... ok
[INFO] [stdout] test security_review::tests::request_sinks_without_user_input_do_not_flag ... ok
[INFO] [stdout] test security_review::tests::still_flags_real_sinks_after_strip ... ok
[INFO] [stdout] test security_review::tests::flags_javascript_url_and_doc_write ... ok
[INFO] [stdout] test session::tests::persists_and_restores_session_json ... ok
[INFO] [stdout] test status::tests::apply_swallow_strips_leading_newlines_until_first_visible_char ... ok
[INFO] [stdout] test conversation::tests::post_edit_check_off_leaves_tool_result_untouched ... ok
[INFO] [stdout] test status::tests::render_active_formats_frame_label_and_seconds ... ok
[INFO] [stdout] test status::tests::render_active_wraps_frame_index ... ok
[INFO] [stdout] test status::tests::disabled_controller_mutators_are_noops ... ok
[INFO] [stdout] test theme::tests::all_helpers_round_trip_text ... ok
[INFO] [stdout] test session::tests::save_redacts_secrets_and_writes_owner_only ... ok
[INFO] [stdout] test theme::tests::emoji_constants_are_non_empty ... ok
[INFO] [stdout] test theme::tests::init_is_idempotent ... ok
[INFO] [stdout] test tool_groups::tests::coding_core_is_the_lean_actuation_set ... ok
[INFO] [stdout] test setup::tests::setup_refuses_without_a_tty ... ok
[INFO] [stdout] test run::forge_run::tests::capture_git_diff_with_base_sees_committed_coder_work ... ok
[INFO] [stdout] test test_runner::tests::run_command_drains_large_output_without_timeout ... ok
[INFO] [stdout] test tool_groups::tests::advanced_group_contains_power_tools ... ok
[INFO] [stdout] test tool_groups::tests::coding_core_schema_stays_lean ... ok
[INFO] [stdout] test run::tests::maybe_compact_session_fires_when_over_threshold ... ok
[INFO] [stdout] test tool_groups::tests::enable_group_adds_tools_to_current ... ok
[INFO] [stdout] test tool_groups::tests::enable_tools_schema_has_no_enum ... ok
[INFO] [stdout] test tool_groups::tests::enable_tools_schema_mentions_every_group ... ok
[INFO] [stdout] test tool_groups::tests::enable_coding_core_enables_exactly_the_core_groups ... ok
[INFO] [stdout] test tool_groups::tests::enable_multiple_groups_combines_tools ... ok
[INFO] [stdout] test tool_groups::tests::enable_tools_group_param_has_no_redundant_description ... ok
[INFO] [stdout] test tool_groups::tests::enable_group_idempotent ... ok
[INFO] [stdout] test tool_groups::tests::github_group_includes_brownfield_tools ... ok
[INFO] [stdout] test tool_groups::tests::group_of_returns_none_for_core ... ok
[INFO] [stdout] test tool_groups::tests::parse_group_unknown ... ok
[INFO] [stdout] test tool_groups::tests::group_of_classifies_known_tools ... ok
[INFO] [stdout] test tool_groups::tests::every_advertised_tool_is_classified ... ok
[INFO] [stdout] test tool_groups::tests::parse_group_aliases ... ok
[INFO] [stdout] test tool_groups::tests::parse_group_canonical ... ok
[INFO] [stdout] test tools::clipboard::tests::clipboard_round_trip ... ok
[INFO] [stdout] test tool_groups::tests::registry_current_tools_starts_at_core_size ... ok
[INFO] [stdout] test tools::clipboard::tests::clipboard_write_rejects_missing_text ... ok
[INFO] [stdout] test tools::clipboard::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tool_groups::tests::group_tool_names_returns_schema_order ... ok
[INFO] [stdout] test tool_groups::tests::schema_chars_grows_with_enables ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_rejects_empty_question ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_uses_default_when_no_tty ... ok
[INFO] [stdout] test tools::dialog::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::facts::tests::hebrew_city_alias_maps_hebrew_to_english ... ok
[INFO] [stdout] test tools::facts::tests::hebrew_city_alias_maps_transliterations ... ok
[INFO] [stdout] test tools::facts::tests::hebrew_city_alias_returns_none_for_regular_name ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_errors_without_default_when_no_tty ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_rejects_missing_question ... ok
[INFO] [stdout] test tools::facts::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tool_groups::tests::registry_starts_with_only_core ... ok
[INFO] [stdout] test tools::facts::tests::resolve_location_accepts_lat_lon_shortcut ... ok
[INFO] [stdout] test tools::facts::tests::weather_rejects_missing_location ... ok
[INFO] [stdout] test tools::facts::tests::wikipedia_rejects_unknown_mode ... ok
[INFO] [stdout] test tools::facts::tests::wmo_label_covers_common_buckets ... ok
[INFO] [stdout] test tools::facts::tests::wikipedia_rejects_missing_query ... ok
[INFO] [stdout] test tools::file_ops::tests::existing_write_target_distinguishes_create_from_overwrite ... ok
[INFO] [stdout] test tools::file_ops::tests::read_file_caps_default_window_and_flags_truncation ... ok
[INFO] [stdout] test tools::file_ops::tests::read_file_honors_offset_and_limit ... ok
[INFO] [stdout] test tools::file_ops::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::file_ops::tests::read_file_round_trip_through_handlers ... ok
[INFO] [stdout] test tools::file_ops::tests::read_file_small_file_returns_whole_without_notice ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_allows_data_and_config_extensions ... ok
[INFO] [stdout] test run::tests::maybe_compact_session_no_op_when_under_threshold ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_accepts_code_directly ... ok
[INFO] [stdout] test tools::file_ops::tests::read_file_tail_returns_last_lines_and_rejects_offset ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_accepts_large_code_directly ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_allows_text_extension ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_resolves_bare_relative_under_sandbox ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_still_rejects_absolute_outside_sandbox ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_snapshots_only_existing_targets ... ok
[INFO] [stdout] test tools::forge_tail::tests::forge_tail_reports_missing_log_for_explicit_mission_id ... ok
[INFO] [stdout] test tools::forge_tail::tests::forge_tail_explains_when_no_active_mission_and_no_arg ... ok
[INFO] [stdout] test tools::forge_tail::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::forge_tail::tests::forge_tail_reads_existing_log ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::after_without_trailing_newline_gets_one ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::aligned_after_splices_verbatim_and_keeps_a_literal_blank_line ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::aligned_block_with_mixed_indent_is_spliced_not_refused ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_writes_python_without_workspace ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::before_that_merely_starts_blank_is_still_accepted ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::blank_first_line_window_keeps_python_method_nested ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::blank_first_line_window_keeps_yaml_keys_nested ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::crlf_in_content_lf_in_diff_falls_back ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::empty_before_errors ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::exact_match_replaces ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_writes_rust_without_workspace ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::exact_multiple_matches_is_ambiguous ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::exact_pass_does_not_edit_a_substring_inside_a_comment ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::exact_pass_does_not_edit_mid_token ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::line_trim_keeps_indent_when_block_dedents_below_first_line ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::line_trim_preserves_internal_relative_nesting_when_reindenting ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::line_trim_python_if_else_keeps_dedented_else ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::line_trim_reindents_python_block_to_file_indent ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::missing_before_returns_not_found ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::mixed_tab_and_space_after_is_refused_not_guessed ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::newline_only_before_is_refused ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::nonblank_first_line_window_is_unchanged_by_the_fix ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::last_block_in_file_with_no_trailing_newline ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::apply_diff_snapshots_a_pre_image ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::line_trim_ambiguity_detected ... ok
[INFO] [stdout] test tool_groups::tests::schema_size_report ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::overlapping_repeats_are_ambiguous ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::identical_before_after_is_a_loud_no_op ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::not_found_error_carries_near_miss_hint ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::replacement_preserves_surrounding_content ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::run_apply_diff_rejects_missing_before ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::whitespace_only_before_is_refused ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::whitespace_drift_falls_back_to_line_trim ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::whole_line_before_without_trailing_newline_still_matches_via_trim ... ok
[INFO] [stdout] test tools::git::tests::extract_stat_number_from_summary ... ok
[INFO] [stdout] test tools::git::tests::extract_stat_number_missing ... ok
[INFO] [stdout] test tools::git::tests::extract_stat_number_single_insertion ... ok
[INFO] [stdout] test tools::git::tests::filter_status_narrows_by_class ... ok
[INFO] [stdout] test tools::git::tests::run_git_clone_rejects_bad_dest ... ok
[INFO] [stdout] test tools::git::tests::schemas_lists_nine_tools ... ok
[INFO] [stdout] test tools::git::tests::validate_clone_url_accepts_known_schemes ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::shifted_block_keeps_a_blank_line_s_whitespace ... ok
[INFO] [stdout] test tools::git::tests::validate_clone_url_rejects_other_schemes ... ok
[INFO] [stdout] test tools::git::tests::validate_dest_slug_accepts_simple_name ... ok
[INFO] [stdout] test tools::git::tests::validate_dest_slug_rejects_traversal ... ok
[INFO] [stdout] test tools::github::tests::extract_error_lines_keeps_markers_and_context ... ok
[INFO] [stdout] test tools::git::tests::run_git_clone_rejects_bad_url ... ok
[INFO] [stdout] test tools::git::tests::run_git_clone_rejects_missing_fields ... ok
[INFO] [stdout] test tools::github::tests::gh_comment_issue_rejects_missing_body ... ok
[INFO] [stdout] test tools::github::tests::gh_create_issue_rejects_missing_title ... ok
[INFO] [stdout] test tools::github::tests::gh_create_pr_rejects_missing_base ... ok
[INFO] [stdout] test conversation::tests::successful_edits_reset_counter_and_suppress_no_progress_nudge ... ok
[INFO] [stdout] test tools::github::tests::gh_create_pr_rejects_missing_head ... ok
[INFO] [stdout] test tools::github::tests::gh_fork_rejects_missing_repo ... ok
[INFO] [stdout] test tools::github::tests::gh_get_issue_rejects_missing_fields ... ok
[INFO] [stdout] test tools::github::tests::gh_inbox_rejects_missing_scope ... ok
[INFO] [stdout] test tools::github::tests::gh_inbox_rejects_unknown_scope ... ok
[INFO] [stdout] test tools::github::tests::gh_list_repo_issues_rejects_missing_repo ... ok
[INFO] [stdout] test tools::github::tests::gh_pr_status_rejects_missing_number ... ok
[INFO] [stdout] test tools::github::tests::gh_pr_view_rejects_missing_number ... ok
[INFO] [stdout] test tools::github::tests::gh_pr_view_rejects_missing_owner ... ok
[INFO] [stdout] test tools::github::tests::gh_search_code_rejects_missing_query ... ok
[INFO] [stdout] test tools::github::tests::gh_workflow_logs_rejects_missing_owner ... ok
[INFO] [stdout] test tools::github::tests::extract_error_lines_truncates_huge_logs ... ok
[INFO] [stdout] test tools::github::tests::gh_workflow_logs_requires_resolver_arg ... ok
[INFO] [stdout] test tools::github::tests::github_token_error_mentions_env_and_file ... ok
[INFO] [stdout] test tools::ide::tests::open_in_editor_rejects_missing_path ... ok
[INFO] [stdout] test tools::git::tests::reject_destructive_blocks_force ... ok
[INFO] [stdout] test tools::ide::tests::reveal_in_explorer_rejects_missing_path ... ok
[INFO] [stdout] test tools::github::tests::schemas_lists_eleven_tools ... ok
[INFO] [stdout] test tools::ide::tests::open_url_rejects_bare_string_that_is_not_a_path ... ok
[INFO] [stdout] test tools::ide::tests::open_url_rejects_missing_url ... ok
[INFO] [stdout] test tools::ide::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::mission::tests::derive_dest_from_url_handles_trailing_slash_and_dot_git ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_rejects_missing_action ... ok
[INFO] [stdout] test tools::github::tests::gh_inbox_repo_issues_forwards_owner_repo_validation ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_attach_forwards_slug_validation ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_rejects_unknown_action ... ok
[INFO] [stdout] test tools::mission::tests::parse_github_canonical_recognises_known_forms ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_status_and_list_run_without_args ... ok
[INFO] [stdout] test tools::mission::tests::parse_github_canonical_returns_none_for_other_hosts ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_https_github ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_https_github_no_dot_git ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_non_github_url_keeps_repo_none ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_owner_repo_form ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_owner_repo_strips_dot_git ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_empty ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_traversal_in_owner_repo ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_ssh_github ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_errors_when_marker_missing ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_errors_when_slot_occupied ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_rejects_invalid_slug ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_rejects_missing_slug ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_exit_errors_when_nothing_active ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_list_note_present_iff_orphans_nonempty ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_list_succeeds_even_when_root_absent ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_start_rejects_missing_target ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_status_returns_null_when_inactive ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_submit_rejects_missing_title ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_submit_rejects_when_no_active_mission ... ok
[INFO] [stdout] test tools::mission::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::near_miss::tests::below_half_match_yields_no_hint ... ok
[INFO] [stdout] test tools::near_miss::tests::closest_window_reports_first_difference ... ok
[INFO] [stdout] test tools::near_miss::tests::dedouble_that_still_does_not_match_is_not_reported ... ok
[INFO] [stdout] test tools::near_miss::tests::empty_block_yields_no_hint ... ok
[INFO] [stdout] test tools::near_miss::tests::long_lines_are_truncated_in_the_hint ... ok
[INFO] [stdout] test tools::near_miss::tests::over_escaped_backslashes_detected ... ok
[INFO] [stdout] test tools::near_miss::tests::oversized_content_is_skipped ... ok
[INFO] [stdout] test tools::near_miss::tests::unrelated_block_yields_no_hint ... ok
[INFO] [stdout] test tools::near_miss::tests::whitespace_only_mismatch_reported_as_such ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_three_slash_form ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_unsupported_scheme ... ok
[INFO] [stdout] test tools::notes::tests::note_create_without_id_still_requires_title_and_body ... ok
[INFO] [stdout] test tools::notes::tests::note_delete_rejects_missing_id ... ok
[INFO] [stdout] test tools::notes::tests::note_create_same_title_same_second_keeps_both_notes ... ok
[INFO] [stdout] test tools::notes::tests::note_delete_rejects_nonexistent ... ok
[INFO] [stdout] test tools::notes::tests::note_delete_rejects_path_traversal ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_directory_separator ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_missing_id ... ok
[INFO] [stdout] test tools::notes::tests::note_list_accepts_limit_and_search_without_error ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_nonexistent_note ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_path_traversal ... ok
[INFO] [stdout] test tools::notes::tests::note_list_empty_tag_is_ignored ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_missing_id ... ok
[INFO] [stdout] test tools::notes::tests::note_create_with_id_is_upsert ... ok
[INFO] [stdout] test tools::notes::tests::note_update_preserves_created_adds_updated_line ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_nonexistent_note ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_path_traversal ... ok
[INFO] [stdout] test tools::notes::tests::note_delete_moves_note_to_trash_recoverably ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_no_fields_to_update ... ok
[INFO] [stdout] test tools::notes::tests::note_update_empty_tags_string_clears_tags ... ok
[INFO] [stdout] test tools::notes::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::notes::tests::slugify_basic ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_errors_on_context_mismatch ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_errors_on_past_eof ... ok
[INFO] [stdout] test tools::notes::tests::note_update_tags_replace_not_merge ... ok
[INFO] [stdout] test tools::notes::tests::note_update_replaces_body_only ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_handles_drift_between_hunks ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_preserves_crlf_line_endings ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_replaces_single_line ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_rejects_diff_without_file_header ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_rejects_empty_diff ... ok
[INFO] [stdout] test tools::notes::tests::note_update_title_change_keeps_filename_updates_heading ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_rejects_missing_diff ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_dry_run_makes_no_pre_image ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_is_atomic_across_files ... ok
[INFO] [stdout] test tools::patch::tests::parse_diff_extracts_b_prefix_path ... ok
[INFO] [stdout] test tools::patch::tests::parse_diff_supports_multi_file ... ok
[INFO] [stdout] test tools::patch::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_dry_run_does_not_touch_disk ... ok
[INFO] [stdout] test tools::post_edit_check::tests::builtin_cmd_js_node_check ... ok
[INFO] [stdout] test tools::post_edit_check::tests::builtin_cmd_go_targets_package_dir ... ok
[INFO] [stdout] test tools::post_edit_check::tests::builtin_cmd_rust_maps_to_cargo_check ... ok
[INFO] [stdout] test tools::post_edit_check::tests::builtin_cmd_unknown_ext_is_none ... ok
[INFO] [stdout] test tools::post_edit_check::tests::builtin_cmd_python_prefers_ruff_falls_back_py_compile ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_writes_when_not_dry_run ... ok
[INFO] [stdout] test tools::post_edit_check::tests::enabled_defaults_off_and_parses_truthy ... ok
[INFO] [stdout] test tools::post_edit_check::tests::failed_run_carries_its_output ... ok
[INFO] [stdout] test tools::post_edit_check::tests::override_cmd_empty_is_none ... ok
[INFO] [stdout] test tools::post_edit_check::tests::override_cmd_appends_file_when_no_placeholder ... ok
[INFO] [stdout] test tools::post_edit_check::tests::override_cmd_substitutes_file_placeholder ... ok
[INFO] [stdout] test tools::post_edit_check::tests::run_post_edit_check_disabled_returns_skipped ... ok
[INFO] [stdout] test tools::post_edit_check::tests::run_post_edit_check_skips_under_offline ... ok
[INFO] [stdout] test tools::post_edit_check::tests::successful_run_is_passed ... ok
[INFO] [stdout] test tools::post_edit_check::tests::suppressed_notice_names_the_file ... ok
[INFO] [stdout] test tools::post_edit_check::tests::timeout_defaults_and_clamps ... ok
[INFO] [stdout] test tools::post_edit_check::tests::timed_out_run_is_not_reported_as_clean ... ok
[INFO] [stdout] test tools::post_edit_check::tests::timeout_notice_says_unverified_and_names_the_file ... ok
[INFO] [stdout] test tools::post_edit_check::tests::max_rounds_defaults_and_clamps ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_snapshots_a_pre_image ... ok
[INFO] [stdout] test tools::post_edit_check::tests::truncate_output_caps_lines_then_chars ... ok
[INFO] [stdout] test tools::quality::tests::classify_tests_all_pass ... ok
[INFO] [stdout] test tools::post_edit_check::tests::truncate_output_passthrough_when_small ... ok
[INFO] [stdout] test tools::quality::tests::classify_tests_failed_count_is_hard_fail ... ok
[INFO] [stdout] test tools::quality::tests::classify_tests_spawn_failure_is_advisory ... ok
[INFO] [stdout] test tools::quality::tests::classify_tests_nonzero_without_failures_is_hard_fail ... ok
[INFO] [stdout] test tools::quality::tests::active_cwd_returns_path ... ok
[INFO] [stdout] test tools::quality::tests::detect_diag_tool_prefers_closest_marker ... ok
[INFO] [stdout] test tools::quality::tests::classify_tests_pytest_no_tests_collected_is_advisory ... ok
[INFO] [stdout] test tools::quality::tests::classify_tests_timeout_is_advisory_not_a_fail ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_prefers_closest_marker ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_ignores_marker_above_workspace_root ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_returns_none_when_no_markers ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_finds_marker_at_workspace_root ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_none_when_no_marker_inside_workspace ... ok
[INFO] [stdout] test tools::quality::tests::is_hard_fail_truth_table ... ok
[INFO] [stdout] test tools::quality::tests::diagnostics_rejects_unknown_tool ... ok
[INFO] [stdout] test tools::quality::tests::parse_cargo_counts_pulls_passed_and_failed ... ok
[INFO] [stdout] test tools::quality::tests::parse_cargo_messages_extracts_primary_span ... ok
[INFO] [stdout] test tools::quality::tests::parse_cargo_messages_skips_non_compiler_lines ... ok
[INFO] [stdout] test tools::quality::tests::parse_jest_counts_handles_full_summary ... ok
[INFO] [stdout] test tools::quality::tests::detect_diag_tool_stops_at_workspace_root ... ok
[INFO] [stdout] test tools::quality::tests::parse_go_counts_tallies_marker_lines ... ok
[INFO] [stdout] test tools::quality::tests::parse_mypy_lines_extracts_code_in_brackets ... ok
[INFO] [stdout] test tools::quality::tests::parse_ruff_json_array ... ok
[INFO] [stdout] test tools::quality::tests::parse_tsc_lines_extracts_position_and_code ... ok
[INFO] [stdout] test tools::quality::tests::refuse_toolchain_under_offline_blocks_only_when_offline ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_unbounded_when_workspace_unset ... ok
[INFO] [stdout] test tools::quality::tests::run_build_and_tests_noop_without_framework ... ok
[INFO] [stdout] test tools::quality::tests::run_tests_rejects_unknown_framework ... ok
[INFO] [stdout] test tools::quality::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::quality::tests::parse_pytest_counts_pulls_summary_line ... ok
[INFO] [stdout] test tools::quality::tests::summarize_cargo_errors_keeps_errors_drops_warnings ... ok
[INFO] [stdout] test tools::quality::tests::parse_pytest_failures_extracts_name_and_file ... ok
[INFO] [stdout] test tools::quality::tests::summarize_test_failures_lists_pytest_names ... ok
[INFO] [stdout] test tools::recall::tests::dispatch_returns_none_for_other_names ... ok
[INFO] [stdout] test tools::recall::tests::run_recall_rejects_missing_query ... ok
[INFO] [stdout] test tools::registry::tests::crate_info_rejects_missing_name ... ok
[INFO] [stdout] test tools::recall::tests::run_recall_rejects_non_json ... ok
[INFO] [stdout] test tools::recall::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::registry::tests::npm_info_rejects_missing_name ... ok
[INFO] [stdout] test tools::registry::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::git::tests::git_commit_empty_message_triggers_auto ... ok
[INFO] [stdout] test tools::repomap::tests::kotlin_patterns_capture_class_interface_object_and_fun ... ok
[INFO] [stdout] test tools::repomap::tests::csharp_patterns_capture_class_interface_enum_and_method ... ok
[INFO] [stdout] test tools::repomap::tests::php_patterns_capture_class_interface_trait_enum_namespace_and_function ... ok
[INFO] [stdout] test tools::repomap::tests::java_patterns_capture_class_interface_enum_and_method ... ok
[INFO] [stdout] test tools::repomap::tests::cpp_patterns_capture_class_struct_namespace_enum_typedef_and_function ... ok
[INFO] [stdout] test tools::clipboard::tests::clipboard_write_rejects_oversize ... ok
[INFO] [stdout] test tools::repomap::tests::repo_map_cpp_definitions_extracted_in_map_mode ... ok
[INFO] [stdout] test tools::repomap::tests::repo_map_csharp_definitions_extracted_in_map_mode ... ok
[INFO] [stdout] test tools::repomap::tests::repo_map_java_definitions_extracted_in_map_mode ... ok
[INFO] [stdout] test tools::repomap::tests::repo_map_kotlin_definitions_extracted_in_map_mode ... ok
[INFO] [stdout] test tools::repomap::tests::repo_map_ranks_the_matching_file_first_with_value_in_sig ... ok
[INFO] [stdout] test tools::repomap::tests::repo_map_ruby_definitions_extracted_in_map_mode ... ok
[INFO] [stdout] test tools::repomap::tests::ruby_patterns_capture_def_class_and_module ... ok
[INFO] [stdout] test tools::mission::tests::head_ahead_of_default_accepts_committed_clean_tree ... ok
[INFO] [stdout] test tools::repomap::tests::schema_language_list_is_derived_from_the_table ... ok
[INFO] [stdout] test tools::repomap::tests::repo_map_php_definitions_extracted_in_map_mode ... ok
[INFO] [stdout] test tools::schedule::tests::parse_catch_up_accepts_all_three_values ... ok
[INFO] [stdout] test tools::repomap::tests::repo_refs_enumerates_all_distinct_prefix_matches ... ok
[INFO] [stdout] test tools::repomap::tests::repo_refs_finds_string_literals_not_only_definitions ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_cancel_rejects_unknown_id ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_once_rejects_missing_prompt ... ok
[INFO] [stdout] test tools::repomap::tests::repo_refs_forgiving_args_falls_back_to_query ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_once_rejects_invalid_expression ... ok
[INFO] [stdout] test tools::schedule::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_once_rejects_missing_when ... ok
[INFO] [stdout] test tools::search::tests::glob_search_allows_workspace_outside_home ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_recurring_rejects_oneshot_expression ... ok
[INFO] [stdout] test tools::search::tests::glob_search_rejects_missing_pattern ... ok
[INFO] [stdout] test tools::search::tests::grep_search_case_sensitive_honors_exact_case ... ok
[INFO] [stdout] test tools::search::tests::glob_search_rejects_dotdot_traversal ... ok
[INFO] [stdout] test tools::search::tests::grep_search_context_includes_flagged_surrounding_lines ... ok
[INFO] [stdout] test tools::repomap::tests::tokenize_splits_snake_and_camel_and_drops_filler ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_cancel_rejects_missing_id ... ok
[INFO] [stdout] test tools::search::tests::grep_search_glob_rejects_invalid_pattern ... ok
[INFO] [stdout] test tools::search::tests::grep_search_rejects_empty_pattern_inline ... ok
[INFO] [stdout] test tools::search::tests::grep_search_rejects_missing_pattern ... ok
[INFO] [stdout] test tools::repomap::tests::repo_refs_puts_source_before_docs_with_value_in_sig ... ok
[INFO] [stdout] test tools::search::tests::grep_search_context_dedupes_overlapping_windows ... ok
[INFO] [stdout] test tools::search::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_blocks_ssrf_targets ... ok
[INFO] [stdout] test tools::search::tests::grep_search_uses_regex_and_skips_build_dirs ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_fails_closed_on_unresolvable_host ... ok
[INFO] [stdout] test tools::search::tests::grep_search_count_only_returns_totals_without_line_bodies ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_rejects_missing_url ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_returns_pinnable_addrs_for_public_ip ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_client_refuses_redirect_to_internal_host ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_rejects_non_http_scheme_inline ... ok
[INFO] [stdout] test tools::semantic::tests::chunk_file_splits_at_configured_line_limit ... ok
[INFO] [stdout] test tools::semantic::tests::is_text_file_recognises_common_extensions ... ok
[INFO] [stdout] test tools::semantic::tests::jaccard_is_intersection_over_union ... ok
[INFO] [stdout] test tools::semantic::tests::jaccard_zero_on_disjoint ... ok
[INFO] [stdout] test tools::semantic::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::semantic::tests::semantic_grep_rejects_missing_query ... ok
[INFO] [stdout] test tools::semantic::tests::tokenize_drops_single_char_tokens ... ok
[INFO] [stdout] test tools::semantic::tests::tokenize_filters_short_tokens_and_lowercases ... ok
[INFO] [stdout] test tools::semantic::tests::tokenize_drops_stop_words ... ok
[INFO] [stdout] test tools::semantic::tests::tokenize_splits_camelcase ... ok
[INFO] [stdout] test tools::semantic::tests::truncate_respects_utf8_boundaries ... ok
[INFO] [stdout] test tools::shell::tests::bash_background_rejects_empty_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_background_rejects_missing_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_rejects_empty_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_rejects_missing_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_rejects_whitespace_only_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_status_rejects_unknown_job ... ok
[INFO] [stdout] test tools::shell::tests::bash_tail_rejects_unknown_job ... ok
[INFO] [stdout] test tools::search::tests::grep_search_glob_filter_restricts_files ... ok
[INFO] [stdout] test tools::search::tests::grep_search_searches_large_files_and_flags_oversized ... ok
[INFO] [stdout] test tools::repomap::tests::repo_refs_source_hits_survive_a_flood_of_earlier_doc_hits ... ok
[INFO] [stdout] test tools::search::tests::grep_search_glob_matches_relative_path ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_rejects_missing_new_text ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_rejects_missing_old_text ... ok
[INFO] [stdout] test tools::repomap::tests::rust_patterns_capture_fn_and_const_with_value ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_rejects_missing_path ... ok
[INFO] [stdout] test tools::semantic::tests::end_to_end_finds_a_self_referential_token ... ok
[INFO] [stdout] test tools::shell::tests::bash_background_status_tail_round_trip ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_snapshots_a_pre_image ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_errors_on_ambiguous_match ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_errors_on_zero_matches ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_identical_old_new_is_a_loud_no_op ... ok
[INFO] [stdout] test tools::shell::tests::scan_captures_dash_c_workdir ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_replace_all_replaces_every_occurrence ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_replace_all_still_fires_noop_guard ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_replaces_unique_match ... ok
[INFO] [stdout] test tools::shell::tests::scan_flags_force_checkout_and_switch ... ok
[INFO] [stdout] test tools::shell::tests::scan_ignores_safe_and_quoted_commands ... ok
[INFO] [stdout] test tools::shell::tests::schemas_lists_five_tools ... ok
[INFO] [stdout] test tools::shell::tests::scan_flags_reset_hard_plain_and_chained ... ok
[INFO] [stdout] test tools::shell::tests::tail_file_redacts_surfaced_secrets ... ok
[INFO] [stdout] test tools::tests::expand_tilde_leaves_other_paths_alone ... ok
[INFO] [stdout] test tools::shell::tests::scan_catches_the_roast_bypass_table ... ok
[INFO] [stdout] test tools::tests::extract_str_reports_missing_field ... ok
[INFO] [stdout] test tools::tests::get_capabilities_reports_real_config ... ok
[INFO] [stdout] test tools::tests::expand_tilde_replaces_leading_tilde ... ok
[INFO] [stdout] test tools::tests::glob_search_expands_tilde ... ok
[INFO] [stdout] test tools::tests::get_current_time_has_new_fields ... ok
[INFO] [stdout] test tools::tests::glob_search_rejects_path_outside_home ... ok
[INFO] [stdout] test tools::shell::tests::destructive_git_guard_is_fail_safe_not_fail_open ... ok
[INFO] [stdout] test tools::tests::grep_search_rejects_empty_pattern ... ok
[INFO] [stdout] test tools::tests::grep_search_rejects_path_outside_home ... ok
[INFO] [stdout] test tools::shell::tests::guard_refuses_reset_hard_on_dirty_tree_but_allows_clean ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_zero_match_reports_over_escaped_backslashes ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_without_replace_all_still_refuses_multiple_matches ... ok
[INFO] [stdout] test tools::tests::list_dir_returns_known_entries ... ok
[INFO] [stdout] test tools::tests::default_workspace_root_returns_first_root_when_cwd_outside ... ok
[INFO] [stdout] test tools::tests::default_workspace_root_returns_none_when_env_empty ... ok
[INFO] [stdout] test tools::tests::list_dir_classifies_file_and_subdir_correctly ... ok
[INFO] [stdout] test tools::tests::normalize_path_collapses_dot ... ok
[INFO] [stdout] test tools::tests::normalize_path_empty_becomes_dot ... ok
[INFO] [stdout] test tools::tests::normalize_path_keeps_leading_dotdot_on_relative ... ok
[INFO] [stdout] test tools::tests::glob_search_matches_files_under_home ... ok
[INFO] [stdout] test tools::tests::parse_json_input_reports_tool_name ... ok
[INFO] [stdout] test tools::tests::sanitise_untrusted_defangs_close_tag_variants ... ok
[INFO] [stdout] test tools::tests::sanitise_untrusted_defangs_entity_close_tag ... ok
[INFO] [stdout] test tools::tests::strip_html_collapses_whitespace ... ok
[INFO] [stdout] test tools::tests::strip_html_decodes_common_entities ... ok
[INFO] [stdout] test tools::tests::strip_html_drops_script_and_style_blocks ... ok
[INFO] [stdout] test tools::tests::normalize_path_collapses_dotdot ... ok
[INFO] [stdout] test tools::tests::strip_html_handles_uppercase_script_tag ... ok
[INFO] [stdout] test tools::tests::strip_html_removes_simple_tags ... ok
[INFO] [stdout] test tools::tests::validate_edit_path_agent_allows_home_paths ... ok
[INFO] [stdout] test tools::tests::validate_edit_path_mission_allows_scratch ... ok
[INFO] [stdout] test tools::tests::validate_edit_path_mission_refuses_arbitrary_home_paths ... ok
[INFO] [stdout] test tools::tests::validate_read_path_accepts_paths_under_home ... ok
[INFO] [stdout] test tools::tests::grep_search_finds_substring_match ... ok
[INFO] [stdout] test tools::tests::validate_read_path_rejects_symlink_escape ... ok
[INFO] [stdout] test tools::tests::grep_search_skips_hidden_directories ... ok
[INFO] [stdout] test tools::tests::validate_read_path_with_injects_custom_roots ... ok
[INFO] [stdout] test tools::tests::validate_write_path_accepts_scratch_subdirs ... ok
[INFO] [stdout] test tools::tests::note_and_todo_tools_classified_into_their_groups ... ok
[INFO] [stdout] test tools::tests::validate_write_path_rejects_dotdot_escape_from_scratch ... ok
[INFO] [stdout] test tools::tests::resolve_input_path_falls_back_to_workspace_when_cwd_misses ... ok
[INFO] [stdout] test tools::tests::notes_and_todos_round_trip ... ok
[INFO] [stdout] test tools::tests::path_under_workspace_only_matches_explicit_roots ... ok
[INFO] [stdout] test tools::tests::validate_write_path_rejects_outside_scratch ... ok
[INFO] [stdout] test tools::tests::validate_read_path_blocks_credential_stores ... ok
[INFO] [stdout] test tools::tests::validate_read_path_rejects_traversal_escape ... ok
[INFO] [stdout] test tools::tests::validate_write_path_rejects_symlink_escape ... ok
[INFO] [stdout] test tools::tests::validate_read_path_respects_claudette_workspace ... ok
[INFO] [stdout] test tools::tests::web_fetch_rejects_non_http_scheme ... ok
[INFO] [stdout] test tools::tests::workspace_startup_diagnostics_warns_on_unwrappered_cwd ... ok
[INFO] [stdout] test tools::tests::wrap_untrusted_encloses_body_and_source ... ok
[INFO] [stdout] test tools::tests::wrap_untrusted_escapes_source_quotes_and_newlines ... ok
[INFO] [stdout] test tools::todos::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::todos::tests::todo_add_rejects_empty_text ... ok
[INFO] [stdout] test tools::todos::tests::todo_add_rejects_missing_text ... ok
[INFO] [stdout] test tools::todos::tests::todo_add_rejects_whitespace_only_text ... ok
[INFO] [stdout] test tools::todos::tests::todo_delete_rejects_missing_id ... ok
[INFO] [stdout] test tools::tests::workspace_roots_parse_workspace_env_empty_when_unset ... ok
[INFO] [stdout] test tools::todos::tests::todo_delete_rejects_unknown_id ... ok
[INFO] [stdout] test tools::tests::workspace_roots_parse_workspace_env_splits_on_platform_sep ... ok
[INFO] [stdout] test tools::todos::tests::todo_list_pending_only_flag_passes_through ... ok
[INFO] [stdout] test tools::tests::workspace_startup_diagnostics_quiet_when_cwd_under_home ... ok
[INFO] [stdout] test tools::todos::tests::todo_set_status_rejects_missing_id ... ok
[INFO] [stdout] test tools::todos::tests::todo_set_status_rejects_missing_done ... ok
[INFO] [stdout] test tools::todos::tests::todo_set_status_rejects_unknown_id ... ok
[INFO] [stdout] test tools::vision::tests::build_screenshot_command_returns_non_empty_program ... ok
[INFO] [stdout] test tools::vision::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::vision::tests::image_describe_rejects_non_image_extension ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_defangs_close_tag_smuggled_via_description ... ok
[INFO] [stdout] test tools::tests::validate_write_path_allows_explicit_workspace_when_no_mission ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_handles_empty_results ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_includes_infobox_inside_wrap ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_wraps_results_in_untrusted_tag ... ok
[INFO] [stdout] test tools::web_search::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::web_search::tests::web_search_rejects_missing_query ... ok
[INFO] [stdout] test tools::tests::workspace_roots_from_env_captures_home ... ok
[INFO] [stdout] test tools::vision::tests::image_describe_rejects_missing_path ... ok
[INFO] [stdout] test tools::web_search::tests::web_search_rejects_invalid_json ... ok
[INFO] [stdout] test tools::tests::workspace_startup_diagnostics_quiet_when_workspace_set ... ok
[INFO] [stdout] test transcript::tests::diff_last_turn_covers_only_the_last_turn ... ok
[INFO] [stdout] test tools::todos::tests::todo_delete_snapshots_the_prior_list_to_trash ... ok
[INFO] [stdout] test transcript::tests::record_caps_oversized_input ... ok
[INFO] [stdout] test transcript::tests::diff_last_turn_renders_the_turns_changes ... ok
[INFO] [stdout] test transcript::tests::move_to_trash_relocates_and_survives_name_collision ... ok
[INFO] [stdout] test transcript::tests::pending_undo_is_take_once ... ok
[INFO] [stdout] test transcript::tests::diff_and_undo_agree_when_last_turn_has_nothing_recoverable ... ok
[INFO] [stdout] test transcript::tests::record_and_undo_round_trip ... ok
[INFO] [stdout] test transcript::tests::diff_last_turn_with_no_pre_images_is_explicit ... ok
[INFO] [stdout] test transcript::tests::undo_one_reverts_a_single_action_within_a_multi_action_turn ... ok
[INFO] [stdout] test transcript::tests::snapshot_keeps_the_original_in_place ... ok
[INFO] [stdout] test transcript::tests::undo_last_turn_leaves_earlier_turns_intact ... ok
[INFO] [stdout] test transcript::tests::undo_last_turn_restores_every_action_of_the_turn ... ok
[INFO] [stdout] test transcript::tests::undo_skips_entries_without_refs_and_walks_backwards ... ok
[INFO] [stdout] test transcript::tests::undo_never_destroys_newer_content_at_the_original_path ... ok
[INFO] [stdout] test transcript::tests::record_redacts_secrets_before_writing_to_disk ... ok
[INFO] [stdout] test tui::paste::tests::clear_removes_active_state ... ok
[INFO] [stdout] test tui::paste::tests::large_text_stored_and_retrieved ... ok
[INFO] [stdout] test tui::paste::tests::small_text_not_stored ... ok
[INFO] [stdout] test tui::paste::tests::display_shows_preview_and_count ... ok
[INFO] [stdout] test transcript::tests::undo_refuses_trash_source_outside_trash_dir ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_long_line_wraps_to_multiple_rows ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_short_lines_one_row_each ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_sums_multi_span_width ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_empty_line_still_counts_as_one_row ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_handles_zero_width_without_panic ... ok
[INFO] [stdout] test transcript::tests::undo_restores_workspace_files_outside_home ... ok
[INFO] [stdout] test tui_worker::tests::strip_ansi_preserves_newlines_and_emoji ... ok
[INFO] [stdout] test tui_worker::tests::strip_ansi_removes_csi_sgr ... ok
[INFO] [stdout] test transcript::tests::undo_last_turn_without_turn_ids_falls_back_to_single_entry ... ok
[INFO] [stdout] test tui_worker::tests::strip_ansi_passthrough_when_no_escapes ... ok
[INFO] [stdout] test tui_worker::tests::tui_prompter_denies_when_render_loop_is_gone_entirely ... ok
[INFO] [stdout] test usage::tests::reconstructs_usage_from_session_messages ... ok
[INFO] [stdout] test usage::tests::tracks_true_cumulative_usage ... ok
[INFO] [stdout] test tui_worker::tests::tui_prompter_allows_on_true_and_ships_full_input ... ok
[INFO] [stdout] test tui_worker::tests::authorize_consults_tui_prompter_for_danger_tools ... ok
[INFO] [stdout] test tui_worker::tests::tui_prompter_denies_when_render_loop_drops_the_answer ... ok
[INFO] [stdout] test transcript::tests::undo_twice_restores_both_entries_of_a_same_millisecond_batch ... ok
[INFO] [stdout] test tui_worker::tests::tui_prompter_denies_on_false_with_cli_parity_reason ... ok
[INFO] [stdout] test transcript::tests::undo_with_no_transcript_says_so ... ok
[INFO] [stdout] test transcript::tests::undo_refuses_restore_target_outside_allowed_roots ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 1165 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 3.03s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/claudette-9eac25814c85655d)
[INFO] [stdout] 
[INFO] [stdout] running 32 tests
[INFO] [stdout] test tests::parse_args_briefing_defaults ... ok
[INFO] [stdout] test tests::parse_args_chat_any_case_insensitive ... ok
[INFO] [stdout] test tests::parse_args_auth_google_unknown_next_treated_as_prompt ... ok
[INFO] [stdout] test tests::parse_args_auth_google_scope_falls_through_in_coding_only_build ... ok
[INFO] [stdout] test tests::parse_args_auth_google_flag ... ok
[INFO] [stdout] test tests::help_text_mentions_every_flag ... ok
[INFO] [stdout] test tests::parse_args_chat_env_any_sets_accept_all ... ok
[INFO] [stdout] test tests::parse_args_does_not_mistake_prompt_text_for_flags ... ok
[INFO] [stdout] test tests::parse_args_briefing_with_time_and_days ... ok
[INFO] [stdout] test tests::parse_args_chat_any_sets_accept_all ... ok
[INFO] [stdout] test tests::parse_args_no_flags ... ok
[INFO] [stdout] test tests::parse_args_known_flags_list_matches_the_parser ... ok
[INFO] [stdout] test tests::parse_args_help_short ... ok
[INFO] [stdout] test tests::parse_args_offline_sets_env_and_is_not_a_prompt_word ... ok
[INFO] [stdout] test tests::parse_args_resume_anywhere ... ok
[INFO] [stdout] test tests::parse_args_double_dash_ends_flag_parsing ... ok
[INFO] [stdout] test tests::parse_args_help_long ... ok
[INFO] [stdout] test tests::parse_args_research_flag ... ok
[INFO] [stdout] test tests::parse_args_resume_long ... ok
[INFO] [stdout] test tests::parse_args_auth_google_revoke ... ok
[INFO] [stdout] test tests::parse_args_resume_short ... ok
[INFO] [stdout] test tests::parse_args_telegram_short ... ok
[INFO] [stdout] test tests::parse_args_telegram_with_chat ... ok
[INFO] [stdout] test tests::parse_args_tui_flag ... ok
[INFO] [stdout] test tests::parse_args_setup_flag ... ok
[INFO] [stdout] test tests::parse_args_telegram_mode ... ok
[INFO] [stdout] test tests::parse_args_version_long ... ok
[INFO] [stdout] test tests::parse_args_version_short ... ok
[INFO] [stdout] test tests::suggest_flags_finds_the_intended_flag ... ok
[INFO] [stdout] test tests::parse_args_tui_with_resume ... ok
[INFO] [stdout] test tests::parse_args_typo_flag_is_rejected_not_sent_to_the_model ... ok
[INFO] [stdout] test tests::every_env_var_is_documented ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests claudette
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a", kill_on_drop: false }`
[INFO] [stdout] f7376c8efbb0b5b868180f24bea81fbe95a7e228babdfe4f2ed4f807233fa58a
