[INFO] cloning repository https://github.com/andrew-garfield101/writ
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/andrew-garfield101/writ" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandrew-garfield101%2Fwrit", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandrew-garfield101%2Fwrit'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0153db497992a56924d66efc46ddd42d2182e4f3
[INFO] testing andrew-garfield101/writ against master#1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 for pr-154065-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandrew-garfield101%2Fwrit" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/andrew-garfield101/writ
[INFO] finished tweaking git repo https://github.com/andrew-garfield101/writ
[INFO] tweaked toml for git repo https://github.com/andrew-garfield101/writ written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/andrew-garfield101/writ on toolchain 1f7f8ea0721a3b1eb73e6c6d25cccb371434b320
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/andrew-garfield101/writ 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" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fsevent-sys v4.1.0
[INFO] [stderr]   Downloaded kqueue v1.1.1
[INFO] [stderr]   Downloaded hostname v0.4.2
[INFO] [stderr]   Downloaded indoc v2.0.7
[INFO] [stderr]   Downloaded pyo3-build-config v0.23.5
[INFO] [stderr]   Downloaded clap v4.5.59
[INFO] [stderr]   Downloaded colored v3.1.1
[INFO] [stderr]   Downloaded rmcp-macros v0.16.0
[INFO] [stderr]   Downloaded kqueue-sys v1.0.4
[INFO] [stderr]   Downloaded pyo3-ffi v0.23.5
[INFO] [stderr]   Downloaded pythonize v0.23.0
[INFO] [stderr]   Downloaded crossterm v0.28.1
[INFO] [stderr]   Downloaded rmcp v0.16.0
[INFO] [stderr]   Downloaded inotify v0.9.6
[INFO] [stderr]   Downloaded pyo3-macros-backend v0.23.5
[INFO] [stderr]   Downloaded blake3 v1.8.3
[INFO] [stderr]   Downloaded git2 v0.19.0
[INFO] [stderr]   Downloaded ed25519 v2.2.3
[INFO] [stderr]   Downloaded notify v6.1.1
[INFO] [stderr]   Downloaded pyo3 v0.23.5
[INFO] [stderr]   Downloaded clap_builder v4.5.59
[INFO] [stderr]   Downloaded ed25519-dalek v2.2.0
[INFO] [stderr]   Downloaded fancy-regex v0.13.0
[INFO] [stderr]   Downloaded toon-format v0.4.4
[INFO] [stderr]   Downloaded constant_time_eq v0.4.2
[INFO] [stderr]   Downloaded tiktoken-rs v0.9.1
[INFO] [stderr]   Downloaded libgit2-sys v0.17.0+1.8.1
[INFO] [stderr]   Downloaded unindent v0.2.4
[INFO] [stderr]   Downloaded pyo3-macros v0.23.5
[INFO] [stderr]   Downloaded libz-sys v1.1.23
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c2a0d8080a12bb30d4696c39edeee9e2b35a076994eed0885d9d2588843a678c
[INFO] running `Command { std: "docker" "start" "-a" "c2a0d8080a12bb30d4696c39edeee9e2b35a076994eed0885d9d2588843a678c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c2a0d8080a12bb30d4696c39edeee9e2b35a076994eed0885d9d2588843a678c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c2a0d8080a12bb30d4696c39edeee9e2b35a076994eed0885d9d2588843a678c", kill_on_drop: false }`
[INFO] [stdout] c2a0d8080a12bb30d4696c39edeee9e2b35a076994eed0885d9d2588843a678c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] eb3385f8eb393b84dc5a0f4ea1d918ad2d8156855b2c7c3842e82b6f5011f3cf
[INFO] running `Command { std: "docker" "start" "-a" "eb3385f8eb393b84dc5a0f4ea1d918ad2d8156855b2c7c3842e82b6f5011f3cf", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling target-lexicon v0.12.16
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling inout v0.1.4
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling inotify v0.9.6
[INFO] [stderr]    Compiling cc v1.2.56
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling ed25519 v2.2.3
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling pyo3-build-config v0.23.5
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling universal-hash v0.5.1
[INFO] [stderr]    Compiling cipher v0.4.4
[INFO] [stderr]    Compiling aead v0.5.2
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling polyval v0.6.2
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling ctr v0.9.2
[INFO] [stderr]    Compiling aes v0.8.4
[INFO] [stderr]    Compiling rmcp v0.16.0
[INFO] [stderr]    Compiling openssl-probe v0.1.6
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling ghash v0.5.1
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]    Compiling constant_time_eq v0.4.2
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling hostname v0.4.2
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling aes-gcm v0.10.3
[INFO] [stderr]    Compiling notify v6.1.1
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling unindent v0.2.4
[INFO] [stderr]    Compiling clap_builder v4.5.59
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling writ-cli v0.1.0 (/opt/rustwide/workdir/crates/writ-cli)
[INFO] [stderr]    Compiling number_prefix v0.4.0
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]    Compiling libz-sys v1.1.23
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]    Compiling libgit2-sys v0.17.0+1.8.1
[INFO] [stderr]    Compiling blake3 v1.8.3
[INFO] [stderr]    Compiling pyo3-ffi v0.23.5
[INFO] [stderr]    Compiling pyo3-macros-backend v0.23.5
[INFO] [stderr]    Compiling pyo3 v0.23.5
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling tempfile v3.25.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling zstd v0.13.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio v1.50.0
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling clap_derive v4.5.55
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling rmcp-macros v0.16.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling dialoguer v0.11.0
[INFO] [stderr]    Compiling ed25519-dalek v2.2.0
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling pyo3-macros v0.23.5
[INFO] [stderr]    Compiling clap v4.5.59
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling futures v0.3.32
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toon-format v0.4.4
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling git2 v0.19.0
[INFO] [stderr]    Compiling pythonize v0.23.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling writ-core v0.1.0 (/opt/rustwide/workdir/crates/writ-core)
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:4553:48
[INFO] [stdout]      |
[INFO] [stdout] 4553 |             "most-recent" => ConvergeStrategy::MostRecent,
[INFO] [stdout]      |                                                ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:48:41
[INFO] [stdout]    |
[INFO] [stdout] 48 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stdout]    |                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling writ-mcp v0.1.0 (/opt/rustwide/workdir/crates/writ-mcp)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:4062:13
[INFO] [stdout]      |
[INFO] [stdout] 4062 |         let mut proposal =
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_dir_empty` is never used
[INFO] [stdout]     --> crates/writ-core/src/hooks.rs:1030:4
[INFO] [stdout]      |
[INFO] [stdout] 1030 | fn is_dir_empty(path: &Path) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convergence_epoch` and `bridge_tree_hash` are never used
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:6741:8
[INFO] [stdout]      |
[INFO] [stdout]  201 | impl Repository {
[INFO] [stdout]      | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 6741 |     fn convergence_epoch(&self) -> Option<chrono::DateTime<chrono::Utc>> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 6746 |     fn bridge_tree_hash(&self) -> Option<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling writ-py v0.1.0 (/opt/rustwide/workdir/crates/writ-py)
[INFO] [stdout] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stdout]     --> crates/writ-py/src/lib.rs:1477:19
[INFO] [stdout]      |
[INFO] [stdout] 1477 |                 d.to_object(py)
[INFO] [stdout]      |                   ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stdout]     --> crates/writ-py/src/lib.rs:1485:17
[INFO] [stdout]      |
[INFO] [stdout] 1485 |         Ok(dict.to_object(py))
[INFO] [stdout]      |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stdout]     --> crates/writ-py/src/lib.rs:1507:25
[INFO] [stdout]      |
[INFO] [stdout] 1507 |                 Ok(dict.to_object(py))
[INFO] [stdout]      |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy`
[INFO] [stdout]     --> crates/writ-cli/src/main.rs:4894:5
[INFO] [stdout]      |
[INFO] [stdout] 4894 |     strategy: &str,
[INFO] [stdout]      |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `proposal`
[INFO] [stdout]     --> crates/writ-cli/src/main.rs:4950:9
[INFO] [stdout]      |
[INFO] [stdout] 4950 |     let proposal = repo.reject_proposal(proposal_id)?;
[INFO] [stdout]      |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_proposal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy`
[INFO] [stdout]     --> crates/writ-cli/src/main.rs:4964:35
[INFO] [stdout]      |
[INFO] [stdout] 4964 | fn cmd_finish_auto(cwd: &PathBuf, strategy: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]      |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `profile` is never read
[INFO] [stdout]   --> crates/writ-cli/src/init.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct InitOptions {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub profile: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InitOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `global_config`, `enable_git`, `project_name`, and `scan` are never read
[INFO] [stdout]   --> crates/writ-cli/src/init.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct InitPlan {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 50 |     pub global_config: Option<GlobalConfig>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 51 |     pub project_config: ProjectConfig,
[INFO] [stdout] 52 |     pub enable_git: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub project_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 57 |     pub scan: EnvironmentScan,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InitPlan` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 03s
[INFO] running `Command { std: "docker" "inspect" "eb3385f8eb393b84dc5a0f4ea1d918ad2d8156855b2c7c3842e82b6f5011f3cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "eb3385f8eb393b84dc5a0f4ea1d918ad2d8156855b2c7c3842e82b6f5011f3cf", kill_on_drop: false }`
[INFO] [stdout] eb3385f8eb393b84dc5a0f4ea1d918ad2d8156855b2c7c3842e82b6f5011f3cf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] ea2793fb7e236762a4be2497b63a3715b167a642743d4db12375d191d97d2a6c
[INFO] running `Command { std: "docker" "start" "-a" "ea2793fb7e236762a4be2497b63a3715b167a642743d4db12375d191d97d2a6c", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling bit-vec v0.6.3
[INFO] [stderr]    Compiling anyhow v1.0.101
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling bit-set v0.5.3
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling proptest v1.10.0
[INFO] [stderr]    Compiling schemars v1.2.1
[INFO] [stderr]    Compiling writ-core v0.1.0 (/opt/rustwide/workdir/crates/writ-core)
[INFO] [stderr]    Compiling rmcp v0.16.0
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling fancy-regex v0.13.0
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:4553:48
[INFO] [stdout]      |
[INFO] [stdout] 4553 |             "most-recent" => ConvergeStrategy::MostRecent,
[INFO] [stdout]      |                                                ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:48:41
[INFO] [stdout]    |
[INFO] [stdout] 48 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stdout]    |                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling tiktoken-rs v0.9.1
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: duplicated attribute
[INFO] [stdout]     --> crates/writ-core/src/watch.rs:1139:5
[INFO] [stdout]      |
[INFO] [stdout] 1139 |     #[test]
[INFO] [stdout]      |     ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(duplicate_macro_attributes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:4553:48
[INFO] [stdout]      |
[INFO] [stdout] 4553 |             "most-recent" => ConvergeStrategy::MostRecent,
[INFO] [stdout]      |                                                ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]   --> crates/writ-core/src/watch.rs:48:41
[INFO] [stdout]    |
[INFO] [stdout] 48 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stdout]    |                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]    --> crates/writ-core/src/watch.rs:880:41
[INFO] [stdout]     |
[INFO] [stdout] 880 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stdout]     |                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]     --> crates/writ-core/src/watch.rs:1202:41
[INFO] [stdout]      |
[INFO] [stdout] 1202 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stdout]      |                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]     --> crates/writ-core/src/watch.rs:1297:41
[INFO] [stdout]      |
[INFO] [stdout] 1297 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stdout]      |                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stdout]     --> crates/writ-core/src/watch.rs:1389:41
[INFO] [stdout]      |
[INFO] [stdout] 1389 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stdout]      |                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:4062:13
[INFO] [stdout]      |
[INFO] [stdout] 4062 |         let mut proposal =
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_dir_empty` is never used
[INFO] [stdout]     --> crates/writ-core/src/hooks.rs:1030:4
[INFO] [stdout]      |
[INFO] [stdout] 1030 | fn is_dir_empty(path: &Path) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convergence_epoch` and `bridge_tree_hash` are never used
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:6741:8
[INFO] [stdout]      |
[INFO] [stdout]  201 | impl Repository {
[INFO] [stdout]      | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 6741 |     fn convergence_epoch(&self) -> Option<chrono::DateTime<chrono::Utc>> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 6746 |     fn bridge_tree_hash(&self) -> Option<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling writ-mcp v0.1.0 (/opt/rustwide/workdir/crates/writ-mcp)
[INFO] [stderr]    Compiling writ-py v0.1.0 (/opt/rustwide/workdir/crates/writ-py)
[INFO] [stderr]    Compiling writ-cli v0.1.0 (/opt/rustwide/workdir/crates/writ-cli)
[INFO] [stdout] warning: variant `Append` is never constructed
[INFO] [stdout]   --> crates/writ-core/tests/convergence_scenarios/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | enum FileChange {
[INFO] [stdout]    |      ---------- variant in this enum
[INFO] [stdout] 45 |     Write(String, String),
[INFO] [stdout] 46 |     Append(String, String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `appends` is never used
[INFO] [stdout]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 210 | impl AgentBuilder {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn appends(mut self, path: &str, content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `expect_error` is never used
[INFO] [stdout]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:290:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | impl ConvergeResult {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn expect_error(self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `repo` is never read
[INFO] [stdout]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 300 | pub struct SuccessResult {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 304 |     repo: Repository,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `assert_file_not_contains`, `assert_fully_resolved`, `assert_files_changed`, `report`, and `repo` are never used
[INFO] [stdout]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:322:12
[INFO] [stdout]     |
[INFO] [stdout] 307 | impl SuccessResult {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn assert_file_not_contains(&self, path: &str, content: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn assert_fully_resolved(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn assert_files_changed(&self, expected: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn report(&self) -> &ConvergeAllReport {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn repo(&self) -> &Repository {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `root` and `repo` are never read
[INFO] [stdout]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:399:5
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub struct EscalationResult {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 398 |     _dir: TempDir,
[INFO] [stdout] 399 |     root: PathBuf,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 400 |     report: ConvergeAllReport,
[INFO] [stdout] 401 |     repo: Repository,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `report` and `file_content` are never used
[INFO] [stdout]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:419:12
[INFO] [stdout]     |
[INFO] [stdout] 404 | impl EscalationResult {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn report(&self) -> &ConvergeAllReport {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn file_content(&self, path: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stdout]     --> crates/writ-py/src/lib.rs:1477:19
[INFO] [stdout]      |
[INFO] [stdout] 1477 |                 d.to_object(py)
[INFO] [stdout]      |                   ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stdout]     --> crates/writ-py/src/lib.rs:1485:17
[INFO] [stdout]      |
[INFO] [stdout] 1485 |         Ok(dict.to_object(py))
[INFO] [stdout]      |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stdout]     --> crates/writ-py/src/lib.rs:1507:25
[INFO] [stdout]      |
[INFO] [stdout] 1507 |                 Ok(dict.to_object(py))
[INFO] [stdout]      |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:4062:13
[INFO] [stdout]      |
[INFO] [stdout] 4062 |         let mut proposal =
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy`
[INFO] [stdout]     --> crates/writ-cli/src/main.rs:4894:5
[INFO] [stdout]      |
[INFO] [stdout] 4894 |     strategy: &str,
[INFO] [stdout]      |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `proposal`
[INFO] [stdout]     --> crates/writ-cli/src/main.rs:4950:9
[INFO] [stdout]      |
[INFO] [stdout] 4950 |     let proposal = repo.reject_proposal(proposal_id)?;
[INFO] [stdout]      |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_proposal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `strategy`
[INFO] [stdout]     --> crates/writ-cli/src/main.rs:4964:35
[INFO] [stdout]      |
[INFO] [stdout] 4964 | fn cmd_finish_auto(cwd: &PathBuf, strategy: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]      |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `profile` is never read
[INFO] [stdout]   --> crates/writ-cli/src/init.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct InitOptions {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub profile: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InitOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `global_config`, `enable_git`, `project_name`, and `scan` are never read
[INFO] [stdout]   --> crates/writ-cli/src/init.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct InitPlan {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 50 |     pub global_config: Option<GlobalConfig>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 51 |     pub project_config: ProjectConfig,
[INFO] [stdout] 52 |     pub enable_git: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub project_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 57 |     pub scan: EnvironmentScan,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InitPlan` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]      --> crates/writ-core/src/repo.rs:31877:13
[INFO] [stdout]       |
[INFO] [stdout] 31877 |         let result = repo.create_task("Complete me".into(), None).unwrap();
[INFO] [stdout]       |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout]       |
[INFO] [stdout]       = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/writ-core/src/watch.rs:685:13
[INFO] [stdout]     |
[INFO] [stdout] 685 |         let mut state = WatchState::new(&repo).unwrap();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> crates/writ-core/src/watch.rs:685:13
[INFO] [stdout]     |
[INFO] [stdout] 685 |         let mut state = WatchState::new(&repo).unwrap();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> crates/writ-core/src/watch.rs:955:18
[INFO] [stdout]     |
[INFO] [stdout] 955 |         let (tx, rx) = mpsc::channel();
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_dir_empty` is never used
[INFO] [stdout]     --> crates/writ-core/src/hooks.rs:1030:4
[INFO] [stdout]      |
[INFO] [stdout] 1030 | fn is_dir_empty(path: &Path) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bridge_tree_hash` is never used
[INFO] [stdout]     --> crates/writ-core/src/repo.rs:6746:8
[INFO] [stdout]      |
[INFO] [stdout]  201 | impl Repository {
[INFO] [stdout]      | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 6746 |     fn bridge_tree_hash(&self) -> Option<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_watch_no_re_convergence_on_same_overlap` is never used
[INFO] [stdout]     --> crates/writ-core/src/watch.rs:1234:8
[INFO] [stdout]      |
[INFO] [stdout] 1234 |     fn test_watch_no_re_convergence_on_same_overlap() {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 20s
[INFO] running `Command { std: "docker" "inspect" "ea2793fb7e236762a4be2497b63a3715b167a642743d4db12375d191d97d2a6c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ea2793fb7e236762a4be2497b63a3715b167a642743d4db12375d191d97d2a6c", kill_on_drop: false }`
[INFO] [stdout] ea2793fb7e236762a4be2497b63a3715b167a642743d4db12375d191d97d2a6c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1955ca43b63c4cd2a3d4f74cdf696b6de5e7159ff9eec2ae7f53ce6829059a74
[INFO] running `Command { std: "docker" "start" "-a" "1955ca43b63c4cd2a3d4f74cdf696b6de5e7159ff9eec2ae7f53ce6829059a74", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `HashMap`
[INFO] [stderr]   --> crates/writ-core/src/watch.rs:10:24
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::collections::{HashMap, HashSet};
[INFO] [stderr]    |                        ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::path::PathBuf`
[INFO] [stderr]   --> crates/writ-core/src/watch.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use std::path::PathBuf;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stderr]     --> crates/writ-core/src/repo.rs:4553:48
[INFO] [stderr]      |
[INFO] [stderr] 4553 |             "most-recent" => ConvergeStrategy::MostRecent,
[INFO] [stderr]      |                                                ^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stderr]   --> crates/writ-core/src/watch.rs:48:41
[INFO] [stderr]    |
[INFO] [stderr] 48 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stderr]    |                                         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> crates/writ-core/src/repo.rs:4062:13
[INFO] [stderr]      |
[INFO] [stderr] 4062 |         let mut proposal =
[INFO] [stderr]      |             ----^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_dir_empty` is never used
[INFO] [stderr]     --> crates/writ-core/src/hooks.rs:1030:4
[INFO] [stderr]      |
[INFO] [stderr] 1030 | fn is_dir_empty(path: &Path) -> bool {
[INFO] [stderr]      |    ^^^^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: methods `convergence_epoch` and `bridge_tree_hash` are never used
[INFO] [stderr]     --> crates/writ-core/src/repo.rs:6741:8
[INFO] [stderr]      |
[INFO] [stderr]  201 | impl Repository {
[INFO] [stderr]      | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 6741 |     fn convergence_epoch(&self) -> Option<chrono::DateTime<chrono::Utc>> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 6746 |     fn bridge_tree_hash(&self) -> Option<String> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `writ-core` (lib) generated 7 warnings (run `cargo fix --lib -p writ-core` to apply 3 suggestions)
[INFO] [stderr] warning: duplicated attribute
[INFO] [stderr]     --> crates/writ-core/src/watch.rs:1139:5
[INFO] [stderr]      |
[INFO] [stderr] 1139 |     #[test]
[INFO] [stderr]      |     ^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(duplicate_macro_attributes)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stderr]    --> crates/writ-core/src/watch.rs:880:41
[INFO] [stderr]     |
[INFO] [stderr] 880 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stderr]     |                                         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stderr]     --> crates/writ-core/src/watch.rs:1202:41
[INFO] [stderr]      |
[INFO] [stderr] 1202 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stderr]      |                                         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stderr]     --> crates/writ-core/src/watch.rs:1297:41
[INFO] [stderr]      |
[INFO] [stderr] 1297 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stderr]      |                                         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated unit variant `convergence::ConvergeStrategy::MostRecent`: use Escalate instead — MostRecent silently drops work
[INFO] [stderr]     --> crates/writ-core/src/watch.rs:1389:41
[INFO] [stderr]      |
[INFO] [stderr] 1389 |             strategy: ConvergeStrategy::MostRecent,
[INFO] [stderr]      |                                         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `result`
[INFO] [stderr]      --> crates/writ-core/src/repo.rs:31877:13
[INFO] [stderr]       |
[INFO] [stderr] 31877 |         let result = repo.create_task("Complete me".into(), None).unwrap();
[INFO] [stderr]       |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stderr]       |
[INFO] [stderr]       = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> crates/writ-core/src/watch.rs:685:13
[INFO] [stderr]     |
[INFO] [stderr] 685 |         let mut state = WatchState::new(&repo).unwrap();
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `state`
[INFO] [stderr]    --> crates/writ-core/src/watch.rs:685:13
[INFO] [stderr]     |
[INFO] [stderr] 685 |         let mut state = WatchState::new(&repo).unwrap();
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rx`
[INFO] [stderr]    --> crates/writ-core/src/watch.rs:955:18
[INFO] [stderr]     |
[INFO] [stderr] 955 |         let (tx, rx) = mpsc::channel();
[INFO] [stderr]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stderr] 
[INFO] [stderr] warning: method `bridge_tree_hash` is never used
[INFO] [stderr]     --> crates/writ-core/src/repo.rs:6746:8
[INFO] [stderr]      |
[INFO] [stderr]  201 | impl Repository {
[INFO] [stderr]      | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 6746 |     fn bridge_tree_hash(&self) -> Option<String> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_watch_no_re_convergence_on_same_overlap` is never used
[INFO] [stderr]     --> crates/writ-core/src/watch.rs:1234:8
[INFO] [stderr]      |
[INFO] [stderr] 1234 |     fn test_watch_no_re_convergence_on_same_overlap() {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Append` is never constructed
[INFO] [stderr]   --> crates/writ-core/tests/convergence_scenarios/mod.rs:46:5
[INFO] [stderr]    |
[INFO] [stderr] 44 | enum FileChange {
[INFO] [stderr]    |      ---------- variant in this enum
[INFO] [stderr] 45 |     Write(String, String),
[INFO] [stderr] 46 |     Append(String, String),
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `appends` is never used
[INFO] [stderr]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:219:12
[INFO] [stderr]     |
[INFO] [stderr] 210 | impl AgentBuilder {
[INFO] [stderr]     | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 219 |     pub fn appends(mut self, path: &str, content: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `expect_error` is never used
[INFO] [stderr]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:290:12
[INFO] [stderr]     |
[INFO] [stderr] 252 | impl ConvergeResult {
[INFO] [stderr]     | ------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 290 |     pub fn expect_error(self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `repo` is never read
[INFO] [stderr]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:304:5
[INFO] [stderr]     |
[INFO] [stderr] 300 | pub struct SuccessResult {
[INFO] [stderr]     |            ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 304 |     repo: Repository,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `assert_file_not_contains`, `assert_fully_resolved`, `assert_files_changed`, `report`, and `repo` are never used
[INFO] [stderr]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:322:12
[INFO] [stderr]     |
[INFO] [stderr] 307 | impl SuccessResult {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 322 |     pub fn assert_file_not_contains(&self, path: &str, content: &str) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 348 |     pub fn assert_fully_resolved(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 357 |     pub fn assert_files_changed(&self, expected: usize) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 379 |     pub fn report(&self) -> &ConvergeAllReport {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 384 |     pub fn repo(&self) -> &Repository {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `root` and `repo` are never read
[INFO] [stderr]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:399:5
[INFO] [stderr]     |
[INFO] [stderr] 397 | pub struct EscalationResult {
[INFO] [stderr]     |            ---------------- fields in this struct
[INFO] [stderr] 398 |     _dir: TempDir,
[INFO] [stderr] 399 |     root: PathBuf,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 400 |     report: ConvergeAllReport,
[INFO] [stderr] 401 |     repo: Repository,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `report` and `file_content` are never used
[INFO] [stderr]    --> crates/writ-core/tests/convergence_scenarios/mod.rs:419:12
[INFO] [stderr]     |
[INFO] [stderr] 404 | impl EscalationResult {
[INFO] [stderr]     | --------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 419 |     pub fn report(&self) -> &ConvergeAllReport {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 424 |     pub fn file_content(&self, path: &str) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `writ-core` (lib test) generated 17 warnings (6 duplicates) (run `cargo fix --lib -p writ-core --tests` to apply 4 suggestions)
[INFO] [stderr] warning: `writ-core` (test "scenario_tests") generated 7 warnings
[INFO] [stderr] warning: unused variable: `strategy`
[INFO] [stderr]     --> crates/writ-cli/src/main.rs:4894:5
[INFO] [stderr]      |
[INFO] [stderr] 4894 |     strategy: &str,
[INFO] [stderr]      |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `proposal`
[INFO] [stderr]     --> crates/writ-cli/src/main.rs:4950:9
[INFO] [stderr]      |
[INFO] [stderr] 4950 |     let proposal = repo.reject_proposal(proposal_id)?;
[INFO] [stderr]      |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_proposal`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `strategy`
[INFO] [stderr]     --> crates/writ-cli/src/main.rs:4964:35
[INFO] [stderr]      |
[INFO] [stderr] 4964 | fn cmd_finish_auto(cwd: &PathBuf, strategy: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stderr]      |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy`
[INFO] [stderr] 
[INFO] [stderr] warning: field `profile` is never read
[INFO] [stderr]   --> crates/writ-cli/src/init.rs:40:9
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct InitOptions {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 40 |     pub profile: String,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `InitOptions` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `global_config`, `enable_git`, `project_name`, and `scan` are never read
[INFO] [stderr]   --> crates/writ-cli/src/init.rs:50:9
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub struct InitPlan {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] 50 |     pub global_config: Option<GlobalConfig>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 51 |     pub project_config: ProjectConfig,
[INFO] [stderr] 52 |     pub enable_git: bool,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 56 |     pub project_name: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 57 |     pub scan: EnvironmentScan,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `InitPlan` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: `writ-cli` (bin "writ" test) generated 5 warnings (run `cargo fix --bin "writ" -p writ-cli --tests` to apply 3 suggestions)
[INFO] [stderr] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stderr]     --> crates/writ-py/src/lib.rs:1477:19
[INFO] [stderr]      |
[INFO] [stderr] 1477 |                 d.to_object(py)
[INFO] [stderr]      |                   ^^^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stderr]     --> crates/writ-py/src/lib.rs:1485:17
[INFO] [stderr]      |
[INFO] [stderr] 1485 |         Ok(dict.to_object(py))
[INFO] [stderr]      |                 ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated method `pyo3::ToPyObject::to_object`: `ToPyObject` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23.0/migration) for more information.
[INFO] [stderr]     --> crates/writ-py/src/lib.rs:1507:25
[INFO] [stderr]      |
[INFO] [stderr] 1507 |                 Ok(dict.to_object(py))
[INFO] [stderr]      |                         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `writ-py` (lib test) generated 3 warnings
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.48s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/writ-dfc041d744a5b43e)
[INFO] [stdout] 
[INFO] [stdout] running 20 tests
[INFO] [stdout] test tests::test_common_prefix_mixed_depth ... ok
[INFO] [stdout] test tests::test_common_prefix_empty_list ... ok
[INFO] [stdout] test tests::test_common_prefix_nested_match ... ok
[INFO] [stdout] test tests::test_common_prefix_root_files ... ok
[INFO] [stdout] test tests::test_common_prefix_single_file ... ok
[INFO] [stdout] test tests::test_common_prefix_no_overlap ... ok
[INFO] [stdout] test tests::test_common_prefix_same_directory ... ok
[INFO] [stdout] test tests::test_group_specs_by_directory ... ok
[INFO] [stdout] test tests::test_common_prefix_partial_directory_match ... ok
[INFO] [stdout] test tests::test_group_specs_empty_file_scope_goes_to_misc ... ok
[INFO] [stdout] test watch_ui::tests::test_format_duration_hours ... ok
[INFO] [stdout] test tests::test_group_specs_cross_directory_spec_gets_own_group ... ok
[INFO] [stdout] test watch_ui::tests::test_format_duration_minutes ... ok
[INFO] [stdout] test watch_ui::tests::test_format_duration_seconds ... ok
[INFO] [stdout] test watch_ui::tests::test_watch_summary_default ... ok
[INFO] [stdout] test watch_ui::tests::test_render_seal_detected_event ... ok
[INFO] [stdout] test watch_ui::tests::test_render_convergence_completed_event ... ok
[INFO] [stdout] test watch_ui::tests::test_format_duration_zero ... ok
[INFO] [stdout] test tests::test_group_specs_all_same_area ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/writ_core-6e81c89a451e5371)
[INFO] [stdout] test watch_ui::tests::test_render_conflict_detected_event ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 1995 tests
[INFO] [stdout] test agent::tests::test_agent_status_default ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_normal_path ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_rejects_traversal ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_single_file ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_directory_prefix ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_directory_without_trailing_slash ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_exact_match ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_normalizes_double_slashes ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_normalizes_double_slash ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_empty_constraints ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_rejects_traversal ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_wildcard ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_glob_star ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_rejects_absolute_windows ... ok
[INFO] [stdout] test agent::tests::test_registered_agent_revoked_roundtrip ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_empty_stays_empty ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_rejects_absolute_unix ... ok
[INFO] [stdout] test agent::tests::test_trust_adjustment_both_full ... ok
[INFO] [stdout] test agent::tests::test_trust_adjustment_mixed_full_standard ... ok
[INFO] [stdout] test agent::tests::test_trust_adjustment_untrusted ... ok
[INFO] [stdout] test agent::tests::test_trust_adjustment_untrusted_overrides_restricted ... ok
[INFO] [stdout] test agent::tests::test_agent_status_serialization_roundtrip ... ok
[INFO] [stdout] test config::tests::test_auto_mode_config_defaults ... ok
[INFO] [stdout] test agent::tests::test_trust_adjustment_restricted ... ok
[INFO] [stdout] test agent::tests::test_trust_level_from_str_loose ... ok
[INFO] [stdout] test config::tests::test_global_config_default ... ok
[INFO] [stdout] test agent::tests::test_trust_level_default ... ok
[INFO] [stdout] test agent::tests::test_trust_adjustment_both_standard ... ok
[INFO] [stdout] test agent::tests::test_trust_level_serde_values ... ok
[INFO] [stdout] test config::tests::test_frameworks_config_only_set_fields_serialized ... ok
[INFO] [stdout] test config::tests::test_global_config_no_auto_section ... ok
[INFO] [stdout] test config::tests::test_global_config_output_format_accessor ... ok
[INFO] [stdout] test config::tests::test_auto_mode_config_roundtrip_toml ... ok
[INFO] [stdout] test config::tests::test_global_config_partial_toml ... ok
[INFO] [stdout] test agent::tests::test_trust_level_serialization_roundtrip ... ok
[INFO] [stdout] test config::tests::test_frameworks_config_with_extras ... ok
[INFO] [stdout] test config::tests::test_global_config_empty_toml_parses ... ok
[INFO] [stdout] test config::tests::test_project_config_default ... ok
[INFO] [stdout] test agent::tests::test_registered_agent_json_roundtrip ... ok
[INFO] [stdout] test config::tests::test_project_config_output_format_accessor ... ok
[INFO] [stdout] test config::tests::test_project_config_git_section ... ok
[INFO] [stdout] test config::tests::test_project_config_roundtrip_toml ... ok
[INFO] [stdout] test config::tests::test_project_config_security_default_false ... ok
[INFO] [stdout] test config::tests::test_migration_creates_config_toml ... ok
[INFO] [stdout] test config::tests::test_resolve_cli_wins ... ok
[INFO] [stdout] test config::tests::test_resolve_commit_mode_cli_wins ... ok
[INFO] [stdout] test config::tests::test_resolve_commit_mode_project_over_global ... ok
[INFO] [stdout] test config::tests::test_project_config_migrate_from_settings ... ok
[INFO] [stdout] test config::tests::test_project_config_load_corrupt_toml ... ok
[INFO] [stdout] test config::tests::test_project_config_load_missing ... ok
[INFO] [stdout] test config::tests::test_migration_preserves_old_settings_json ... ok
[INFO] [stdout] test config::tests::test_migration_maps_enforce_scope_to_security ... ok
[INFO] [stdout] test config::tests::test_resolve_commit_mode_rejects_invalid ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_normalizes_dot_slash ... ok
[INFO] [stdout] test config::tests::test_project_config_prefers_toml_over_settings_json ... ok
[INFO] [stdout] test config::tests::test_migration_no_format_leaves_output_none ... ok
[INFO] [stdout] test agent::tests::test_is_in_scope_multiple_constraints ... ok
[INFO] [stdout] test config::tests::test_global_config_roundtrip_toml ... ok
[INFO] [stdout] test config::tests::test_global_config_workflow_section ... ok
[INFO] [stdout] test config::tests::test_project_config_save_and_load ... ok
[INFO] [stdout] test config::tests::test_resolve_commit_strategy_cli_wins ... ok
[INFO] [stdout] test config::tests::test_resolve_commit_strategy_falls_to_default ... ok
[INFO] [stdout] test config::tests::test_resolve_commit_strategy_rejects_invalid ... ok
[INFO] [stdout] test config::tests::test_resolve_falls_to_default ... ok
[INFO] [stdout] test config::tests::test_resolve_full_chain_cli_wins_everything ... ok
[INFO] [stdout] test config::tests::test_resolve_global_over_default ... ok
[INFO] [stdout] test config::tests::test_resolve_stale_timeout_falls_to_default ... ok
[INFO] [stdout] test config::tests::test_resolve_stale_timeout_project_over_global ... ok
[INFO] [stdout] test config::tests::test_resolve_project_over_global ... ok
[INFO] [stdout] test config::tests::test_resolve_stale_timeout_zero_from_project ... ok
[INFO] [stdout] test config::tests::test_resolve_watch_config_defaults ... ok
[INFO] [stdout] test config::tests::test_resolve_watch_config_global_over_default ... ok
[INFO] [stdout] test config::tests::test_resolve_custom_default ... ok
[INFO] [stdout] test config::tests::test_valid_commit_strategies ... ok
[INFO] [stdout] test config::tests::test_resolve_watch_config_project_over_global ... ok
[INFO] [stdout] test config::tests::test_watch_config_defaults ... ok
[INFO] [stdout] test config::tests::test_valid_commit_modes ... ok
[INFO] [stdout] test config::tests::test_watch_config_omitted_from_toml_when_none ... ok
[INFO] [stdout] test config::tests::test_watch_config_validation_absolute_log_path ... ok
[INFO] [stdout] test config::tests::test_watch_config_validation_interval_zero ... ok
[INFO] [stdout] test config::tests::test_watch_config_validation_max_retries_zero ... ok
[INFO] [stdout] test config::tests::test_watch_config_partial_fields_use_defaults ... ok
[INFO] [stdout] test config::tests::test_watch_config_in_global_config_toml ... ok
[INFO] [stdout] test config::tests::test_watch_config_toml_roundtrip ... ok
[INFO] [stdout] test config::tests::test_watch_config_save_and_load ... ok
[INFO] [stdout] test config::tests::test_resolve_watch_config_rejects_invalid ... ok
[INFO] [stdout] test config::tests::test_watch_config_validation_valid ... ok
[INFO] [stdout] test config::tests::test_workflow_config_defaults ... ok
[INFO] [stdout] test config::tests::test_workflow_config_partial_fields ... ok
[INFO] [stdout] test config::tests::test_workflow_config_stale_timeout_zero_disables ... ok
[INFO] [stdout] test config::tests::test_workspace_settings_omitted_from_toml_when_none ... ok
[INFO] [stdout] test context::tests::dep_status_from_blocked_spec ... ok
[INFO] [stdout] test config::tests::test_workspace_root_custom ... ok
[INFO] [stdout] test context::tests::dep_status_from_complete_spec ... ok
[INFO] [stdout] test context::tests::dep_status_from_in_progress_spec ... ok
[INFO] [stdout] test config::tests::test_workspace_root_none_falls_to_default ... ok
[INFO] [stdout] test config::tests::test_workflow_config_roundtrip_toml ... ok
[INFO] [stdout] test config::tests::test_workspace_root_default ... ok
[INFO] [stdout] test config::tests::test_workspace_settings_toml_roundtrip ... ok
[INFO] [stdout] test context::tests::dep_status_not_found ... ok
[INFO] [stdout] test context::tests::dep_status_from_pending_spec ... ok
[INFO] [stdout] test config::tests::test_workflow_config_save_and_load ... ok
[INFO] [stdout] test config::tests::test_workspace_root_save_and_load ... ok
[INFO] [stdout] test context::tests::diff_summary_empty_diff ... ok
[INFO] [stdout] test context::tests::risk_compounds_multiple_signals ... ok
[INFO] [stdout] test context::tests::risk_high_with_five_agent_file_contention ... ok
[INFO] [stdout] test context::tests::risk_level_thresholds ... ok
[INFO] [stdout] test context::tests::risk_low_when_no_signals ... ok
[INFO] [stdout] test context::tests::risk_high_with_four_plus_diverged_branches ... ok
[INFO] [stdout] test context::tests::risk_medium_with_one_diverged_branch ... ok
[INFO] [stdout] test context::tests::risk_medium_with_three_agent_file_contention ... ok
[INFO] [stdout] test context::tests::risk_high_with_many_scope_violations ... ok
[INFO] [stdout] test context::tests::risk_medium_with_three_diverged_branches ... ok
[INFO] [stdout] test context::tests::risk_scores_scope_violations ... ok
[INFO] [stdout] test context::tests::seal_summary_formats_complete_status ... ok
[INFO] [stdout] test context::tests::seal_summary_captures_agent_and_summary ... ok
[INFO] [stdout] test context::tests::seal_summary_formats_blocked_status ... ok
[INFO] [stdout] test context::tests::seal_summary_includes_spec_id_when_present ... ok
[INFO] [stdout] test context::tests::seal_summary_counts_files_changed ... ok
[INFO] [stdout] test context::tests::seal_summary_formats_in_progress_status ... ok
[INFO] [stdout] test context::tests::seal_summary_omits_verification_when_default ... ok
[INFO] [stdout] test context::tests::seal_summary_skips_empty_changed_paths_in_json ... ok
[INFO] [stdout] test context::tests::diff_summary_maps_diff_output ... ok
[INFO] [stdout] test context::tests::risk_adds_contested_files_above_five ... ok
[INFO] [stdout] test context::tests::verification_summary_preserves_all_fields ... ok
[INFO] [stdout] test context::tests::verification_summary_returns_none_for_all_defaults ... ok
[INFO] [stdout] test context::tests::verification_summary_returns_some_when_linted ... ok
[INFO] [stdout] test context::tests::verification_summary_skips_none_fields_in_json ... ok
[INFO] [stdout] test context::tests::working_state_summary_categorizes_changes ... ok
[INFO] [stdout] test context::tests::working_state_summary_clean ... ok
[INFO] [stdout] test context::tests::working_state_summary_skips_empty_lists_in_json ... ok
[INFO] [stdout] test convergence::analyzers::generic::tests::test_name ... ok
[INFO] [stdout] test convergence::analyzers::generic::tests::test_no_imports_or_definitions ... ok
[INFO] [stdout] test convergence::analyzers::generic::tests::test_parse_structure_covers_all_lines ... ok
[INFO] [stdout] test context::tests::seal_summary_includes_changed_paths ... ok
[INFO] [stdout] test context::tests::seal_summary_truncates_id_to_12_chars ... ok
[INFO] [stdout] test context::tests::verification_summary_returns_some_with_tests_passed ... ok
[INFO] [stdout] test context::tests::risk_score_capped_at_100 ... ok
[INFO] [stdout] test convergence::analyzers::generic::tests::test_parse_structure_empty_source ... ok
[INFO] [stdout] test convergence::analyzers::generic::tests::test_parse_structure_simple ... ok
[INFO] [stdout] test convergence::analyzers::generic::tests::test_semantic_equivalence_exact_only ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_empty_source ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_comments_parsed ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_const_block ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_extract_definitions ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_method_receiver ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_import_metadata_populated ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_extract_imports ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_multiline_definition_spans ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_name ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_parse_structure_covers_all_lines ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_semantic_equivalence ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_empty_source ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_comments_parsed ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_export_default_class ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_extract_imports ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_multiline_definition_spans ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_name ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_extract_definitions ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_parse_structure_imports ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_no_ts_specific_syntax ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_parse_structure_grouped_import ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_parse_structure_covers_all_lines ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_parse_structure_definitions ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_parse_structure_imports ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_var_declaration ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_extract_definitions_non_overlapping ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_empty_source ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_multiple_decorators ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_import_metadata_populated ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_parse_imports ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_class_with_methods ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_parse_class_with_decorator ... ok
[INFO] [stdout] test convergence::analyzers::javascript::tests::test_semantic_equivalence ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_comments_parsed_correctly ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_name ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_parse_covers_all_lines ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_semantic_equivalence_real_difference ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_const_and_static ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_comments_parsed ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_semantic_equivalence_whitespace_differences ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_parse_simple_script ... ok
[INFO] [stdout] test convergence::analyzers::go::tests::test_parse_structure_definitions ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_star_import ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_empty_source ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_attributes_attached_to_definition ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_ordering_matters_for_python ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_extract_definitions ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_extract_imports ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_multiline_definition_spans ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_import_metadata_populated ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_name ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_semantic_equivalence ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_type_alias ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_parse_structure_covers_all_lines ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_cjs ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_parse_structure_definitions ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_parse_structure_imports ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_go ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_mod_declaration_is_import ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_jsx ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_javascript ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_mjs ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_python ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_mod_with_body_is_definition ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_pyi ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_tsx ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_typescript ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_unknown_falls_back_to_generic ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_ordering_matters_defaults ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_export_star_is_import ... ok
[INFO] [stdout] test convergence::analyzers::rust_lang::tests::test_async_fn ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_decorator_attached_to_class ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_extract_definitions ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_jsdoc_comment ... ok
[INFO] [stdout] test convergence::analyzers::tests::test_analyzer_dispatch_rust ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_import_metadata_populated ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_empty_source ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_extract_imports ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_parse_structure_covers_all_lines ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_name ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_multiline_definition_spans ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_parse_structure_definitions ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_require_as_import ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_parse_structure_imports ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_definition_only_scope_returns_none ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_empty_imports_returns_none ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_preserves_conflict_type ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_mixed_region_splits_imports_from_body ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_recomputes_body_scope ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_whitespace_between_imports_stays_with_imports ... ok
[INFO] [stdout] test convergence::decompose::tests::test_partition_no_imports ... ok
[INFO] [stdout] test convergence::decompose::tests::test_partition_all_imports ... ok
[INFO] [stdout] test convergence::analyzers::typescript::tests::test_semantic_equivalence ... ok
[INFO] [stdout] test convergence::diff3::tests::test_action_table_no_changes ... ok
[INFO] [stdout] test convergence::diff3::tests::test_action_table_insertion ... ok
[INFO] [stdout] test convergence::diff3::tests::test_action_table_replacement ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_non_mixed_returns_none ... ok
[INFO] [stdout] test convergence::diff3::tests::test_action_table_trailing_insert ... ok
[INFO] [stdout] test convergence::decompose::tests::test_partition_separates_imports_from_defs ... ok
[INFO] [stdout] test convergence::diff3::tests::test_action_table_deletion ... ok
[INFO] [stdout] test convergence::decompose::tests::test_partition_empty_input ... ok
[INFO] [stdout] test convergence::diff3::tests::test_action_table_empty_base ... ok
[INFO] [stdout] test convergence::decompose::tests::test_decompose_both_inserted_mixed ... ok
[INFO] [stdout] test convergence::diff3::tests::test_both_insert_same_content ... ok
[INFO] [stdout] test convergence::diff3::tests::test_delete_vs_replace_is_conflict ... ok
[INFO] [stdout] test convergence::diff3::tests::test_conflict_region_has_correct_base_start ... ok
[INFO] [stdout] test convergence::diff3::tests::test_empty_base ... ok
[INFO] [stdout] test convergence::diff3::tests::test_identical_left_and_right ... ok
[INFO] [stdout] test convergence::diff3::tests::test_left_deletes_right_keeps ... ok
[INFO] [stdout] test convergence::diff3::tests::test_left_inserts_right_unchanged ... ok
[INFO] [stdout] test convergence::diff3::tests::test_left_unchanged_returns_right ... ok
[INFO] [stdout] test convergence::diff3::tests::test_non_overlapping_changes ... ok
[INFO] [stdout] test convergence::diff3::tests::test_no_trailing_newline_preserved ... ok
[INFO] [stdout] test convergence::diff3::tests::test_all_three_empty ... ok
[INFO] [stdout] test convergence::diff3::tests::test_all_three_identical ... ok
[INFO] [stdout] test convergence::diff3::tests::test_rebuild_multiple_resolutions ... ok
[INFO] [stdout] test convergence::diff3::tests::test_both_delete_same_line ... ok
[INFO] [stdout] test convergence::diff3::tests::test_both_insert_different_before_same_line ... ok
[INFO] [stdout] test convergence::diff3::tests::test_empty_left_yields_right ... ok
[INFO] [stdout] test convergence::diff3::tests::test_empty_right_yields_left ... ok
[INFO] [stdout] test convergence::diff3::tests::test_multiple_conflict_regions ... ok
[INFO] [stdout] test convergence::diff3::tests::test_rebuild_preserves_clean_regions ... ok
[INFO] [stdout] test convergence::diff3::tests::test_rebuild_with_single_resolution ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_deduplicates_shared_additions ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_additive_composition_both_add ... ok
[INFO] [stdout] test convergence::diff3::tests::test_trailing_additions_conflict ... ok
[INFO] [stdout] test convergence::diff3::tests::test_right_unchanged_returns_left ... ok
[INFO] [stdout] test convergence::diff3::tests::test_same_region_different_changes ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_confidence_scales_with_additions ... ok
[INFO] [stdout] test convergence::diff3::tests::test_single_line_conflict ... ok
[INFO] [stdout] test convergence::diff3::tests::test_single_line_no_newline ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_import_extension_only_gets_bonus ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_empty_base_does_not_match ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_returns_none_when_base_missing_from_side ... ok
[INFO] [stdout] test convergence::diff3::tests::test_large_non_overlapping ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_rust_import_removal_fails ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_merge_import_line_python ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_import_extension_recognized_as_additive ... ok
[INFO] [stdout] test convergence::diff3::tests::test_trailing_newline_preserved ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_import_is_preserved_different_module_fails ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_import_extension_with_new_definitions ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_import_is_preserved_extension ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_import_is_preserved_removal_fails ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_import_removal_still_fails ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_rust_use_extension_additive ... ok
[INFO] [stdout] test convergence::patterns::definitions::tests::test_name_collision_returns_none ... ok
[INFO] [stdout] test convergence::patterns::definitions::tests::test_no_definitions_does_not_match ... ok
[INFO] [stdout] test convergence::patterns::eof_append::tests::test_base_modified_returns_none ... ok
[INFO] [stdout] test convergence::patterns::eof_append::tests::test_confidence_scales_with_appended_lines ... ok
[INFO] [stdout] test convergence::patterns::eof_append::tests::test_left_only_append ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_detect_lang_fallback_ts ... ok
[INFO] [stdout] test convergence::patterns::definitions::tests::test_compose_functions_and_classes ... ok
[INFO] [stdout] test convergence::patterns::definitions::tests::test_compose_non_overlapping_classes ... ok
[INFO] [stdout] test convergence::patterns::additive::tests::test_ts_import_extension_additive ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_detect_lang_from_metadata ... ok
[INFO] [stdout] test convergence::patterns::definitions::tests::test_confidence_scales_with_definition_count ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_detect_lang_fallback_go ... ok
[INFO] [stdout] test convergence::patterns::eof_append::tests::test_both_append ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_detect_lang_fallback_python ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_detect_lang_fallback_rust ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_import_is_preserved_name_removed ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_import_is_preserved_python_extension ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_merge_same_module_ts ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_python_fallback ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_python_with_metadata ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_merge_same_module_python ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_detect_name_conflicts_found ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_import_is_preserved_module_mismatch ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_rust_fallback ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_import_is_preserved_rust ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_go_fallback ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_detect_name_conflicts_none ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_go_single ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_merge_same_module_rust ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_python ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_rust ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_rust_pub ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_ts_type_import ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_does_not_match_mixed_content ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_rust_with_metadata ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_ts ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_deduplicates_identical_imports ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_ts_fallback ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_go_grouped ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_ts_with_metadata ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_reconstruct_ts_double_quotes ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_conflicting_imports_lowers_confidence ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_python_alias_extraction ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_ts_named_import_dedup ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_union_disjoint_imports ... ok
[INFO] [stdout] test convergence::patterns::superset::tests::test_left_superset ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_go_import_dedup ... ok
[INFO] [stdout] test convergence::patterns::superset::tests::test_superset_below_auto_resolve ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_rust_use_dedup ... ok
[INFO] [stdout] test convergence::patterns::superset::tests::test_confidence_scales_with_diff_size ... ok
[INFO] [stdout] test convergence::patterns::superset::tests::test_equal_sets_not_superset ... ok
[INFO] [stdout] test convergence::patterns::superset::tests::test_has_warning ... ok
[INFO] [stdout] test convergence::patterns::imports::tests::test_rust_conflict_detection ... ok
[INFO] [stdout] test convergence::patterns::superset::tests::test_neither_superset ... ok
[INFO] [stdout] test convergence::patterns::tests::test_delete_vs_modify_always_skipped ... ok
[INFO] [stdout] test convergence::patterns::tests::test_highest_confidence_wins ... ok
[INFO] [stdout] test convergence::patterns::tests::test_non_overlapping_definitions_resolves ... ok
[INFO] [stdout] test convergence::patterns::tests::test_import_accumulation_resolves ... ok
[INFO] [stdout] test convergence::patterns::tests::test_registry_creation ... ok
[INFO] [stdout] test convergence::phase1::tests::test_clean_merge_returns_clean ... ok
[INFO] [stdout] test convergence::phase1::tests::test_base_span_reflects_conflict_position ... ok
[INFO] [stdout] test convergence::phase1::tests::test_empty_base_both_insert ... ok
[INFO] [stdout] test convergence::phase1::tests::test_multiple_conflict_regions ... ok
[INFO] [stdout] test convergence::phase2::tests::test_all_empty_is_clean ... ok
[INFO] [stdout] test convergence::phase1::tests::test_one_side_changed_returns_clean ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_both_deleted ... ok
[INFO] [stdout] test convergence::phase1::tests::test_structural_units_populated_for_python ... ok
[INFO] [stdout] test convergence::phase1::tests::test_both_modified_returns_conflicts ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_both_inserted ... ok
[INFO] [stdout] test convergence::phase1::tests::test_generic_analyzer_used_for_unknown_extension ... ok
[INFO] [stdout] test convergence::patterns::import_utils::tests::test_parse_import_go_with_metadata ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_clean_identical_changes ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_delete_vs_modify_left_deleted ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_left_only ... ok
[INFO] [stdout] test convergence::phase2::tests::test_intra_function_scope ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_right_only ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_both_modified ... ok
[INFO] [stdout] test convergence::phase2::tests::test_run_empty_diff ... ok
[INFO] [stdout] test convergence::phase2::tests::test_classify_delete_vs_modify_right_deleted ... ok
[INFO] [stdout] test convergence::phase2::tests::test_structural_info_definition_scope ... ok
[INFO] [stdout] test convergence::phase2::tests::test_structural_info_mixed_scope ... ok
[INFO] [stdout] test convergence::phase2::tests::test_structural_info_import_scope ... ok
[INFO] [stdout] test convergence::phase2::tests::test_structural_info_name_overlap ... ok
[INFO] [stdout] test convergence::phase4::tests::test_delete_confirmation_both_reference ... ok
[INFO] [stdout] test convergence::phase2::tests::test_structural_info_no_name_overlap ... ok
[INFO] [stdout] test convergence::phase4::tests::test_delete_confirmation_modifier_spec_owns ... ok
[INFO] [stdout] test convergence::phase4::tests::test_delete_confirmation_neither_reference ... ok
[INFO] [stdout] test convergence::phase4::tests::test_delete_confirmation_deleter_spec_owns ... ok
[INFO] [stdout] test convergence::phase4::tests::test_file_in_scope_directory_prefix ... ok
[INFO] [stdout] test convergence::phase2::tests::test_semantic_equivalence_used ... ok
[INFO] [stdout] test convergence::phase4::tests::test_file_in_scope_empty_scope ... ok
[INFO] [stdout] test convergence::phase4::tests::test_file_in_scope_exact_match ... ok
[INFO] [stdout] test convergence::phase4::tests::test_intent_compatibility_confirms_suggestion ... ok
[INFO] [stdout] test convergence::phase4::tests::test_intent_compatibility_conflicting_summaries ... ok
[INFO] [stdout] test convergence::phase2::tests::test_run_produces_phase2_result ... ok
[INFO] [stdout] test convergence::phase4::tests::test_delete_confirmation_only_on_delete_vs_modify ... ok
[INFO] [stdout] test convergence::phase4::tests::test_intent_compatibility_no_suggestion ... ok
[INFO] [stdout] test convergence::phase4::tests::test_scope_authority_both_in_scope ... ok
[INFO] [stdout] test convergence::phase4::tests::test_scope_authority_left_in_scope ... ok
[INFO] [stdout] test convergence::phase4::tests::test_resolve_returns_none_when_no_rules_match ... ok
[INFO] [stdout] test convergence::phase4::tests::test_scope_authority_neither_in_scope ... ok
[INFO] [stdout] test convergence::phase4::tests::test_scope_authority_right_in_scope ... ok
[INFO] [stdout] test convergence::phase4::tests::test_intents_compatible ... ok
[INFO] [stdout] test convergence::phase4::tests::test_spec_does_not_reference_unrelated_file ... ok
[INFO] [stdout] test convergence::phase4::tests::test_intents_conflict_negation ... ok
[INFO] [stdout] test convergence::phase4::tests::test_resolve_tries_rules_in_order ... ok
[INFO] [stdout] test convergence::phase4::tests::test_spec_references_file_by_stem ... ok
[INFO] [stdout] test convergence::phase4::tests::test_truncate_ascii ... ok
[INFO] [stdout] test convergence::phase4::tests::test_spec_references_file_in_seal_summary ... ok
[INFO] [stdout] test convergence::phase5::tests::test_build_prompt_includes_all_sections ... ok
[INFO] [stdout] test convergence::phase4::tests::test_truncate_multibyte_utf8 ... ok
[INFO] [stdout] test convergence::phase5::tests::test_build_prompt_includes_suggestion ... ok
[INFO] [stdout] test convergence::phase5::tests::test_parse_empty_returns_none ... ok
[INFO] [stdout] test convergence::phase5::tests::test_parse_incompatible_returns_none ... ok
[INFO] [stdout] test convergence::phase4::tests::test_spec_references_file_by_name ... ok
[INFO] [stdout] test convergence::phase4::tests::test_scope_authority_glob_matching ... ok
[INFO] [stdout] test convergence::phase5::tests::test_parse_strips_markdown_fences ... ok
[INFO] [stdout] test convergence::phase5::tests::test_parse_valid_response ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_strips_dot_slash ... ok
[INFO] [stdout] test convergence::phase5::tests::test_sanity_check_penalizes_content_loss ... ok
[INFO] [stdout] test convergence::phase5::tests::test_sanity_check_rewards_complete_merge ... ok
[INFO] [stdout] test convergence::phase5::tests::test_structured_resolver_calls_backend ... ok
[INFO] [stdout] test convergence::phase5::tests::test_structured_resolver_rejects_incompatible ... ok
[INFO] [stdout] test convergence::phase5::tests::test_structured_resolver_returns_none_on_backend_failure ... ok
[INFO] [stdout] test convergence::phase5::tests::test_structured_resolver_skips_clean_conflicts ... ok
[INFO] [stdout] test convergence::phase6::tests::test_balanced_delimiters_pass ... ok
[INFO] [stdout] test convergence::phase6::tests::test_clean_python_passes_reparse ... ok
[INFO] [stdout] test convergence::phase6::tests::test_conflict_markers_detected ... ok
[INFO] [stdout] test convergence::phase6::tests::test_delimiters_in_strings_ignored ... ok
[INFO] [stdout] test convergence::phase6::tests::test_conflict_markers_in_middle_of_file ... ok
[INFO] [stdout] test convergence::phase6::tests::test_different_named_definitions_pass ... ok
[INFO] [stdout] test convergence::phase6::tests::test_duplicate_function_fails ... ok
[INFO] [stdout] test convergence::phase6::tests::test_empty_py_file_fails ... ok
[INFO] [stdout] test convergence::phase6::tests::test_empty_txt_file_passes ... ok
[INFO] [stdout] test convergence::phase6::tests::test_duplicate_imports_warns ... ok
[INFO] [stdout] test convergence::phase6::tests::test_generic_file_skips_unknown_check ... ok
[INFO] [stdout] test convergence::phase6::tests::test_full_verification_clean_python ... ok
[INFO] [stdout] test convergence::phase6::tests::test_low_coverage_warns ... ok
[INFO] [stdout] test convergence::phase6::tests::test_multiple_issues_first_failure_wins ... ok
[INFO] [stdout] test convergence::phase6::tests::test_no_conflict_markers_passes ... ok
[INFO] [stdout] test convergence::phase6::tests::test_unbalanced_delimiters_skip_generic ... ok
[INFO] [stdout] test convergence::phase6::tests::test_unbalanced_brace_fails ... ok
[INFO] [stdout] test convergence::phase6::tests::test_whitespace_only_py_file_fails ... ok
[INFO] [stdout] test convergence::phase6::tests::test_warnings_accumulate_across_checks ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_full_full_python_imports_auto_resolve ... ok
[INFO] [stdout] test convergence::phase6::tests::test_unique_imports_pass ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_full_full_rust_use_statements_auto_resolve ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_full_full_typescript_imports_resolve ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_mixed_full_standard_demotes_to_escalation ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_restricted_restricted_escalates ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_restricted_typescript_imports_escalate ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_standard_standard_confidence_capped_in_resolutions ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_untrusted_full_always_escalates ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_untrusted_standard_always_escalates ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_restricted_full_escalates ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_no_trust_context_resolves_normally ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_trust_adjustment_is_symmetric ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_untrusted_both_sides_always_escalates ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_mixed_standard_full_same_as_full_standard ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_identical_content_no_conflict ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_one_side_only_change ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_config_determinism ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_go_import_merge ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_disjoint_import_merge ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_with_verification_disabled ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_all_phases_disabled_still_runs_phases_1_through_3 ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_both_phase4_and_phase5_disabled_escalates ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_decomposed_method_is_reported ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_typescript_import_merge ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_phase4_enabled_with_spec_context_no_side_effects_on_clean_merge ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_phase4_skipped_when_disabled ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_phase6_disabled_skips_verification ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_decomposed_flask_app_resolves ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_phase6_enabled_runs_verification ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_auto_resolved_region_outcome ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_rust_function_conflict ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_phase5_enabled_with_noop_backend_is_inert ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_escalation ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_phase4_enabled_but_no_spec_context_is_noop ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_both_modified_no_pattern_escalates ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_clean_merge_no_conflicts ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_delete_vs_modify_always_escalates ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_config_defaults ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_identical_changes_clean ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_disjoint_imports_auto_resolved ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_timings_populated ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_uses_phase1_module ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_verification_runs_on_resolved ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_full_full_no_cap ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_mixed_caps_at_075 ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_none_context_is_passthrough ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_restricted_caps_at_060 ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_standard_standard_caps_at_090 ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_untrusted_always_drops_to_nomatch ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_untrusted_escalates_normally_resolvable ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_hardened_verifier_failure_skips_traceability ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_failure_path_escalation_structure ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_none_on_clean_phase1_merge ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_none_when_no_merged_content ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_failure_causes_escalation ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_none_when_phase6_disabled ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_trust_cap_applied_after_pattern_evaluation ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_passes_on_auto_resolved_merge ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_report_in_output_with_verification ... ok
[INFO] [stdout] test convergence::pipeline::traceability_pipeline_tests::test_traceability_report_present_on_auto_resolved_imports ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_phase5_skipped_when_disabled ... ok
[INFO] [stdout] test convergence::tests::test_additive_composition_deduplicates_shared_additions ... ok
[INFO] [stdout] test convergence::tests::test_additive_composition_both_sides_add ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_region_outcome_uses_types_rs_format ... ok
[INFO] [stdout] test convergence::tests::test_additive_composition_deterministic_ordering ... ok
[INFO] [stdout] test convergence::tests::test_additive_composition_no_additions_returns_none ... ok
[INFO] [stdout] test convergence::pipeline::tests::test_pipeline_non_overlapping_definitions_auto_resolved ... ok
[INFO] [stdout] test convergence::tests::test_additive_composition_one_side_deletes_base ... ok
[INFO] [stdout] test convergence::tests::test_additive_composition_via_resolve_conflict_regions ... ok
[INFO] [stdout] test convergence::tests::test_additive_composition_via_resolve_direct ... ok
[INFO] [stdout] test convergence::pipeline::reproducibility_tests::test_reproducible_merged_content_byte_identical ... ok
[INFO] [stdout] test convergence::tests::test_both_inserted_non_superset_still_concatenates ... ok
[INFO] [stdout] test convergence::tests::test_classify_both_inserted ... ok
[INFO] [stdout] test convergence::tests::test_classify_both_modified ... ok
[INFO] [stdout] test convergence::tests::test_both_inserted_superset_avoids_duplication ... ok
[INFO] [stdout] test convergence::tests::test_classify_delete_vs_modify_right ... ok
[INFO] [stdout] test convergence::tests::test_consolidate_rust_derives_unit ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_empty_needle ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_exact_match ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_matches_with_punctuation_boundary ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_rejects_mid_word_substring ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_rejects_prefix_substring ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_rejects_suffix_substring ... ok
[INFO] [stdout] test convergence::tests::test_both_agents_append_to_file_uses_concatenation ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_respects_underscore_boundary ... ok
[INFO] [stdout] test convergence::tests::test_contains_word_start_and_end_of_string ... ok
[INFO] [stdout] test convergence::tests::test_css_bracket_preservation ... ok
[INFO] [stdout] test convergence::tests::test_dedup_imports_exact_duplicate ... ok
[INFO] [stdout] test convergence::tests::test_dedup_imports_non_python ... ok
[INFO] [stdout] test convergence::tests::test_dedup_imports_python_from_consolidation ... ok
[INFO] [stdout] test convergence::tests::test_dedup_imports_star_duplicate ... ok
[INFO] [stdout] test convergence::tests::test_default_strategy_is_escalate ... ok
[INFO] [stdout] test convergence::tests::test_detect_import_language ... ok
[INFO] [stdout] test convergence::tests::test_dynamic_confidence_definitions_scales ... ok
[INFO] [stdout] test convergence::tests::test_dynamic_confidence_eof_append_scales ... ok
[INFO] [stdout] test convergence::tests::test_dynamic_confidence_import_accumulation_base ... ok
[INFO] [stdout] test convergence::tests::test_dynamic_confidence_import_accumulation_penalized ... ok
[INFO] [stdout] test convergence::tests::test_dynamic_confidence_superset_never_auto_resolves ... ok
[INFO] [stdout] test convergence::tests::test_dynamic_confidence_bounds ... ok
[INFO] [stdout] test convergence::tests::test_extract_go_imports ... ok
[INFO] [stdout] test convergence::tests::test_fix_python_formatting_normalizes_excess_blanks ... ok
[INFO] [stdout] test convergence::tests::test_fix_python_formatting_indented_def_untouched ... ok
[INFO] [stdout] test convergence::tests::test_fix_python_formatting_two_blank_lines_before_class ... ok
[INFO] [stdout] test convergence::tests::test_fix_python_formatting_two_blank_lines_before_def ... ok
[INFO] [stdout] test convergence::tests::test_go_import_block_merge ... ok
[INFO] [stdout] test convergence::tests::test_go_import_dedup ... ok
[INFO] [stdout] test convergence::tests::test_go_import_grouped_sorting ... ok
[INFO] [stdout] test convergence::tests::test_go_single_import_merge ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_default ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_mixed_default_and_named ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_multiline ... ok
[INFO] [stdout] test convergence::tests::test_classify_delete_vs_modify_left ... ok
[INFO] [stdout] test convergence::tests::test_classify_trailing_replacement_is_both_modified ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_side_effect ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_named ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_type_imports ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_namespace ... ok
[INFO] [stdout] test convergence::tests::test_import_accumulation_js_require ... ok
[INFO] [stdout] test convergence::tests::test_is_go_stdlib ... ok
[INFO] [stdout] test convergence::tests::test_join_multiline_imports ... ok
[INFO] [stdout] test convergence::tests::test_import_dedup_same_source ... ok
[INFO] [stdout] test convergence::tests::test_import_region_multiline_detection ... ok
[INFO] [stdout] test convergence::tests::test_merge_js_imports_consolidation ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_cascading_accumulation ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_cascading_changes_pick ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_empty_candidates ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_disjoint_specs_tiebreak_by_seal_count ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_disjoint_before_overlapping ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_empty_modified_files ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_least_overlap_first ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_single_candidate ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_seal_count_tiebreak_over_spec_id ... ok
[INFO] [stdout] test convergence::tests::test_merge_order_tiebreak_deterministic_by_spec_id ... ok
[INFO] [stdout] test convergence::tests::test_parse_js_import_default_plus_named ... ok
[INFO] [stdout] test convergence::tests::test_n_agent_three_way_chained ... ok
[INFO] [stdout] test convergence::tests::test_parse_js_import_named ... ok
[INFO] [stdout] test convergence::tests::test_parse_js_import_namespace ... ok
[INFO] [stdout] test convergence::tests::test_n_agent_four_imports_chained ... ok
[INFO] [stdout] test convergence::tests::test_parse_js_import_reexport ... ok
[INFO] [stdout] test convergence::tests::test_parse_js_import_default ... ok
[INFO] [stdout] test convergence::tests::test_parse_js_import_side_effect ... ok
[INFO] [stdout] test convergence::tests::test_parse_js_import_type ... ok
[INFO] [stdout] test convergence::tests::test_parse_python_import_bare ... ok
[INFO] [stdout] test convergence::tests::test_parse_python_import_from ... ok
[INFO] [stdout] test convergence::tests::test_parse_python_import_parenthesized ... ok
[INFO] [stdout] test convergence::tests::test_parse_python_import_star ... ok
[INFO] [stdout] test convergence::tests::test_post_merge_cleanup_no_imports_passthrough ... ok
[INFO] [stdout] test convergence::tests::test_prune_drops_entire_unused_from_import ... ok
[INFO] [stdout] test convergence::tests::test_post_merge_cleanup_full_pipeline ... ok
[INFO] [stdout] test convergence::tests::test_prune_unused_keeps_bare_imports ... ok
[INFO] [stdout] test convergence::tests::test_prune_unused_imports ... ok
[INFO] [stdout] test convergence::tests::test_prune_unused_imports_word_boundary ... ok
[INFO] [stdout] test convergence::tests::test_prune_unused_imports_removes_unreferenced ... ok
[INFO] [stdout] test convergence::tests::test_prune_unused_keeps_star_imports ... ok
[INFO] [stdout] test convergence::tests::test_python_bare_import_preserved ... ok
[INFO] [stdout] test convergence::tests::test_python_future_import_first ... ok
[INFO] [stdout] test convergence::tests::test_python_import_consolidation_multiple_names ... ok
[INFO] [stdout] test convergence::tests::test_python_import_dedup_identical ... ok
[INFO] [stdout] test convergence::tests::test_python_import_ordering_blank_lines_between_groups ... ok
[INFO] [stdout] test convergence::tests::test_python_import_ordering_pep8 ... ok
[INFO] [stdout] test convergence::tests::test_python_import_consolidation_same_module ... ok
[INFO] [stdout] test convergence::tests::test_python_import_smart_merge_integration ... ok
[INFO] [stdout] test convergence::tests::test_python_import_group_classification ... ok
[INFO] [stdout] test convergence::tests::test_python_star_import_preserved ... ok
[INFO] [stdout] test convergence::tests::test_resolve_both_inserted_concatenates ... ok
[INFO] [stdout] test convergence::tests::test_resolve_both_inserted_commutativity ... ok
[INFO] [stdout] test convergence::tests::test_resolve_delete_vs_modify_escalates ... ok
[INFO] [stdout] test convergence::tests::test_resolve_import_accumulation_python ... ok
[INFO] [stdout] test convergence::tests::test_resolve_decorator_preservation ... ok
[INFO] [stdout] test convergence::tests::test_resolve_import_accumulation_js ... ok
[INFO] [stdout] test convergence::tests::test_resolve_import_accumulation_rust ... ok
[INFO] [stdout] test convergence::tests::test_resolve_superset_ordered ... ok
[INFO] [stdout] test convergence::tests::test_rust_derive_with_other_attributes ... ok
[INFO] [stdout] test convergence::tests::test_rust_derive_accumulation ... ok
[INFO] [stdout] test convergence::tests::test_smart_merge_fully_resolves ... ok
[INFO] [stdout] test convergence::tests::test_smart_merge_confidence_scoring ... ok
[INFO] [stdout] test convergence::tests::test_smart_merge_partial_resolution ... ok
[INFO] [stdout] test convergence::tests::test_rust_multiline_use_import_region ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_add_lines ... ok
[INFO] [stdout] test convergence::tests::test_smart_merge_tr13_regression ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_both_identical_from_empty ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_delete_vs_modify ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_conflict ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_identical_change ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_empty_base ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_only_left_changed ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_multi_region_conflict ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_only_right_changed ... ok
[INFO] [stdout] test convergence::tests::test_three_way_merge_no_overlap ... ok
[INFO] [stdout] test convergence::tests::test_tr21_definition_composition ... ok
[INFO] [stdout] test convergence::tests::test_tr21_mixed_imports_and_definitions ... ok
[INFO] [stdout] test convergence::tests::test_tr21_eof_append ... ok
[INFO] [stdout] test convergence::tests::test_tr21_python_import_merge ... ok
[INFO] [stdout] test convergence::tests::test_tr21_go_import_merge ... ok
[INFO] [stdout] test convergence::tests::test_tr21_python_from_import_extension ... ok
[INFO] [stdout] test convergence::tests::test_tr21_rust_use_merge ... ok
[INFO] [stdout] test convergence::traceability::tests::test_block_comments_not_trivial_for_unknown ... ok
[INFO] [stdout] test convergence::tests::test_tr21_typescript_import_merge ... ok
[INFO] [stdout] test convergence::traceability::tests::test_block_comments_not_trivial_for_python ... ok
[INFO] [stdout] test convergence::tests::test_tr21_stress_many_imports ... ok
[INFO] [stdout] test convergence::traceability::tests::test_clean_merge_passes ... ok
[INFO] [stdout] test convergence::traceability::tests::test_composed_function_from_both_sides ... ok
[INFO] [stdout] test convergence::traceability::tests::test_empty_merged_passes ... ok
[INFO] [stdout] test convergence::traceability::tests::test_both_tier1_and_tier2_failures ... ok
[INFO] [stdout] test convergence::traceability::tests::test_generic_file_type_clean_merge_passes ... ok
[INFO] [stdout] test convergence::traceability::tests::test_levenshtein_classic_case ... ok
[INFO] [stdout] test convergence::traceability::tests::test_generic_file_type_tier2_still_works ... ok
[INFO] [stdout] test convergence::traceability::tests::test_levenshtein_empty ... ok
[INFO] [stdout] test convergence::traceability::tests::test_levenshtein_identical ... ok
[INFO] [stdout] test convergence::traceability::tests::test_import_reordering_passes ... ok
[INFO] [stdout] test convergence::traceability::tests::test_levenshtein_single_substitution ... ok
[INFO] [stdout] test convergence::traceability::tests::test_merged_imports_from_both_sides ... ok
[INFO] [stdout] test convergence::traceability::tests::test_non_ascii_content_does_not_panic ... ok
[INFO] [stdout] test convergence::traceability::tests::test_normalize_line_empty ... ok
[INFO] [stdout] test convergence::traceability::tests::test_normalize_line_collapses_internal_whitespace ... ok
[INFO] [stdout] test convergence::traceability::tests::test_normalize_line_strips_whitespace ... ok
[INFO] [stdout] test convergence::traceability::tests::test_non_ascii_traceable_content_passes ... ok
[INFO] [stdout] test convergence::traceability::tests::test_normalize_line_tabs_and_mixed ... ok
[INFO] [stdout] test convergence::tests::test_tr21_superset_containment ... ok
[INFO] [stdout] test convergence::traceability::tests::test_not_trivial_python_logic ... ok
[INFO] [stdout] test convergence::traceability::tests::test_not_trivial_go_logic ... ok
[INFO] [stdout] test convergence::traceability::tests::test_not_trivial_real_code ... ok
[INFO] [stdout] test convergence::traceability::tests::test_novel_class_tier1_fail ... ok
[INFO] [stdout] test convergence::traceability::tests::test_novel_line_tier2_fail ... ok
[INFO] [stdout] test convergence::traceability::tests::test_reordered_definitions_pass ... ok
[INFO] [stdout] test convergence::traceability::tests::test_report_full_json_roundtrip ... ok
[INFO] [stdout] test convergence::traceability::tests::test_novel_unit_serialization_roundtrip ... ok
[INFO] [stdout] test convergence::traceability::tests::test_similarity_completely_different ... ok
[INFO] [stdout] test convergence::traceability::tests::test_similarity_empty ... ok
[INFO] [stdout] test convergence::traceability::tests::test_similar_line_above_threshold_passes ... ok
[INFO] [stdout] test convergence::traceability::tests::test_similarity_exact_match ... ok
[INFO] [stdout] test agent::tests::test_canonicalize_strips_trailing_slash ... ok
[INFO] [stdout] test convergence::traceability::tests::test_similarity_minor_edit_above_threshold ... ok
[INFO] [stdout] test convergence::traceability::tests::test_similarity_normalized_match ... ok
[INFO] [stdout] test convergence::traceability::tests::test_summary_is_actionable_on_fail ... ok
[INFO] [stdout] test convergence::traceability::tests::test_summary_is_pass_message_on_success ... ok
[INFO] [stdout] test convergence::traceability::tests::test_summary_truncation_more_than_5_untraced ... ok
[INFO] [stdout] test convergence::traceability::tests::test_threshold_one_lenient ... ok
[INFO] [stdout] test convergence::traceability::tests::test_threshold_zero_strict ... ok
[INFO] [stdout] test convergence::traceability::tests::test_traceability_verdict_serialization ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_blank_lines ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_block_comments_go ... ok
[INFO] [stdout] test config::tests::test_resolve_commit_mode_falls_to_default ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_block_comments_js_ts ... ok
[INFO] [stdout] test convergence::analyzers::python::tests::test_parse_async_def ... ok
[INFO] [stdout] test convergence::patterns::eof_append::tests::test_empty_base_does_not_match ... ok
[INFO] [stdout] test convergence::patterns::superset::tests::test_right_superset ... ok
[INFO] [stdout] test convergence::phase5::tests::test_sanity_check_detects_missing_names ... ok
[INFO] [stdout] test convergence::phase6::tests::test_duplicate_class_fails ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_block_comments_rust ... ok
[INFO] [stdout] test convergence::traceability::tests::test_traceability_report_serialization_roundtrip ... ok
[INFO] [stdout] test convergence::pipeline::mixed_trust_convergence_tests::test_standard_standard_still_auto_resolves_high_confidence ... ok
[INFO] [stdout] test convergence::traceability::tests::test_not_trivial_rust_logic ... ok
[INFO] [stdout] test convergence::traceability::tests::test_not_trivial_typescript_logic ... ok
[INFO] [stdout] test convergence::traceability::tests::test_novel_function_tier1_fail ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_braces ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_ellipsis ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_else_brace_patterns ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_generic_fallback_no_comments ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_go_comments ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_go_keywords ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_keywords ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_lines_excluded ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_python_comments ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_python_keywords ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_rust_comments ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_rust_keywords ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_single_char ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_typescript_comments ... ok
[INFO] [stdout] test convergence::traceability::tests::test_trivial_typescript_keywords ... ok
[INFO] [stdout] test convergence::traceability::tests::test_untraced_line_serialization_roundtrip ... ok
[INFO] [stdout] test convergence::traceability::tests::test_whitespace_difference_passes ... ok
[INFO] [stdout] test convergence::types::tests::test_confidence_thresholds_defaults ... ok
[INFO] [stdout] test convergence::types::tests::test_conflict_type_requires_review ... ok
[INFO] [stdout] test convergence::types::tests::test_convergence_seal_record_config_hash_deterministic ... ok
[INFO] [stdout] test convergence::types::tests::test_convergence_seal_record_construction ... ok
[INFO] [stdout] test convergence::types::tests::test_convergence_seal_record_has_all_sprint_doc_fields ... ok
[INFO] [stdout] test convergence::types::tests::test_convergence_seal_record_serialization_roundtrip ... ok
[INFO] [stdout] test convergence::types::tests::test_convergence_seal_record_traceability_passed_false ... ok
[INFO] [stdout] test convergence::types::tests::test_definition_names_extraction ... ok
[INFO] [stdout] test convergence::types::tests::test_escalation_record_construction ... ok
[INFO] [stdout] test convergence::types::tests::test_import_only_region ... ok
[INFO] [stdout] test convergence::types::tests::test_mixed_region_is_not_import_only ... ok
[INFO] [stdout] test convergence::types::tests::test_phase1_result_serialization ... ok
[INFO] [stdout] test convergence::types::tests::test_pipeline_file_result_construction ... ok
[INFO] [stdout] test convergence::types::tests::test_region_resolution_status_variants ... ok
[INFO] [stdout] test convergence::types::tests::test_resolution_proposal_serialization ... ok
[INFO] [stdout] test convergence::types::tests::test_structural_conflict_region_base_is_empty ... ok
[INFO] [stdout] test convergence::types::tests::test_structural_unit_new ... ok
[INFO] [stdout] test crypto::tests::test_canonical_bytes_deterministic ... ok
[INFO] [stdout] test crypto::tests::test_canonical_bytes_excludes_derived_fields ... ok
[INFO] [stdout] test crypto::tests::test_canonical_derived_fields_do_not_affect_output ... ok
[INFO] [stdout] test crypto::tests::test_canonical_bytes_includes_parent_seal_hash ... ok
[INFO] [stdout] test crypto::tests::test_canonical_empty_summary ... ok
[INFO] [stdout] test crypto::tests::test_canonical_empty_changes ... ok
[INFO] [stdout] test crypto::tests::test_canonical_every_content_field_matters ... ok
[INFO] [stdout] test crypto::tests::test_canonical_field_order_is_deterministic ... ok
[INFO] [stdout] test crypto::tests::test_canonical_golden_value_regression ... ok
[INFO] [stdout] test crypto::tests::test_canonical_id_does_not_affect_output ... ok
[INFO] [stdout] test crypto::tests::test_canonical_null_bytes_in_path ... ok
[INFO] [stdout] test crypto::tests::test_canonical_output_is_valid_json ... ok
[INFO] [stdout] test crypto::tests::test_canonical_roundtrip_hash_stability ... ok
[INFO] [stdout] test crypto::tests::test_canonical_many_warnings ... ok
[INFO] [stdout] test crypto::tests::test_canonical_special_chars_in_summary ... ok
[INFO] [stdout] test crypto::tests::test_canonical_no_parent ... ok
[INFO] [stdout] test crypto::tests::test_canonical_no_spec_id ... ok
[INFO] [stdout] test crypto::tests::test_canonical_unicode_emoji ... ok
[INFO] [stdout] test crypto::tests::test_canonical_unicode_rtl ... ok
[INFO] [stdout] test crypto::tests::test_canonical_unicode_cjk ... ok
[INFO] [stdout] test crypto::tests::test_canonical_verification_edge_cases ... ok
[INFO] [stdout] test crypto::tests::test_chain_hash_changes_with_parent ... ok
[INFO] [stdout] test crypto::tests::test_chain_hash_changes_with_content ... ok
[INFO] [stdout] test crypto::tests::test_chain_hash_first_seal ... ok
[INFO] [stdout] test crypto::tests::test_chain_hash_length ... ok
[INFO] [stdout] test crypto::tests::test_chain_hash_with_parent ... ok
[INFO] [stdout] test crypto::tests::test_content_hash_deterministic ... ok
[INFO] [stdout] test crypto::tests::test_content_hash_is_blake3 ... ok
[INFO] [stdout] test crypto::tests::test_invalid_key_hex ... ok
[INFO] [stdout] test crypto::tests::test_content_hash_changes_on_different_content ... ok
[INFO] [stdout] test crypto::tests::test_generate_keypair ... ok
[INFO] [stdout] test crypto::tests::test_verify_rejects_malformed_signature ... ok
[INFO] [stdout] test crypto::tests::test_signing_key_hex_roundtrip ... ok
[INFO] [stdout] test crypto::tests::test_tampered_seal_breaks_chain ... ok
[INFO] [stdout] test crypto::tests::test_canonical_unicode_combining_chars ... ok
[INFO] [stdout] test crypto::tests::test_verify_rejects_truncated_signature ... ok
[INFO] [stdout] test crypto::tests::test_canonical_many_changes ... ok
[INFO] [stdout] test diff::tests::test_empty_to_content ... ok
[INFO] [stdout] test diff::tests::test_identical_content ... ok
[INFO] [stdout] test diff::tests::test_binary_detection ... ok
[INFO] [stdout] test crypto::tests::test_verifying_key_hex_roundtrip ... ok
[INFO] [stdout] test diff::tests::test_content_to_empty ... ok
[INFO] [stdout] test diff::tests::test_modification ... ok
[INFO] [stdout] test diff::tests::test_single_add ... ok
[INFO] [stdout] test diff::tests::test_single_remove ... ok
[INFO] [stdout] test env_scan::tests::test_extract_toml_string_empty_value ... ok
[INFO] [stdout] test env_scan::tests::test_extract_toml_string_value ... ok
[INFO] [stdout] test env_scan::tests::test_extract_toml_string_with_spaces_around_equals ... ok
[INFO] [stdout] test crypto::tests::test_verify_rejects_wrong_key ... ok
[INFO] [stdout] test env_scan::tests::test_global_config_path_resolves ... ok
[INFO] [stdout] test env_scan::tests::test_project_name_source_display ... ok
[INFO] [stdout] test diff::tests::test_linear_diff_identical_large_file ... ok
[INFO] [stdout] test crypto::tests::test_signature_hex_roundtrip ... ok
[INFO] [stdout] test crypto::tests::test_canonical_max_length_summary ... ok
[INFO] [stdout] test crypto::tests::test_sign_and_verify ... ok
[INFO] [stdout] test diff::tests::test_large_file_uses_linear_fallback ... ok
[INFO] [stdout] test crypto::tests::test_verify_rejects_tampered_content ... ok
[INFO] [stdout] test env_scan::tests::test_detect_user_name_returns_something ... ok
[INFO] [stdout] test env_scan::tests::test_scan_cargo_toml_without_package_section ... ok
[INFO] [stdout] test env_scan::tests::test_scan_detects_codex_dir ... ok
[INFO] [stdout] test env_scan::tests::test_scan_detects_agents_md ... ok
[INFO] [stdout] test env_scan::tests::test_scan_detects_claude_dir ... ok
[INFO] [stdout] test env_scan::tests::test_scan_all_framework_files_present ... ok
[INFO] [stdout] test env_scan::tests::test_scan_detects_claude_md ... ok
[INFO] [stdout] test env_scan::tests::test_git_display_no_git ... ok
[INFO] [stdout] test env_scan::tests::test_scan_empty_directory ... ok
[INFO] [stdout] test env_scan::tests::test_scan_no_frameworks_detected_empty ... ok
[INFO] [stdout] test env_scan::tests::test_scan_malformed_package_json ... ok
[INFO] [stdout] test env_scan::tests::test_scan_detects_existing_writ ... ok
[INFO] [stdout] test env_scan::tests::test_scan_detects_toml_config ... ok
[INFO] [stdout] test env_scan::tests::test_scan_detects_legacy_settings ... ok
[INFO] [stdout] test env_scan::tests::test_scan_both_legacy_and_toml_present ... ok
[INFO] [stdout] test env_scan::tests::test_scan_frameworks_vec_populated ... ok
[INFO] [stdout] test env_scan::tests::test_scan_package_json_missing_name ... ok
[INFO] [stdout] test env_scan::tests::test_scan_path_is_set ... ok
[INFO] [stdout] test env_scan::tests::test_scan_project_name_from_directory ... ok
[INFO] [stdout] test env_scan::tests::test_scan_project_name_priority_package_json_over_pyproject ... ok
[INFO] [stdout] test env_scan::tests::test_scan_project_name_from_cargo_toml ... ok
[INFO] [stdout] test env_scan::tests::test_scan_project_name_from_package_json ... ok
[INFO] [stdout] test env_scan::tests::test_scan_project_name_from_pyproject_toml ... ok
[INFO] [stdout] test env_scan::tests::test_scan_serializes_to_json ... ok
[INFO] [stdout] test env_scan::tests::test_scan_project_name_priority_cargo_over_package_json ... ok
[INFO] [stdout] test env_scan::tests::test_scan_writ_initialized_but_no_legacy_no_toml ... ok
[INFO] [stdout] test diff::tests::test_linear_diff_complete_replacement ... ok
[INFO] [stdout] test format::tests::benchmark_spec_list_token_savings ... ok
[INFO] [stdout] test crypto::tests::test_canonical_stress_repeated_serialization ... ok
[INFO] [stdout] test format::tests::test_all_format_names_are_valid ... ok
[INFO] [stdout] test format::tests::test_all_format_names_have_formatters ... ok
[INFO] [stdout] test format::tests::test_all_three_formatters_produce_output ... ok
[INFO] [stdout] test format::tests::test_format_names_constant ... ok
[INFO] [stdout] test format::tests::benchmark_full_context_token_savings ... ok
[INFO] [stdout] test format::tests::test_formatter_for_empty_string ... ok
[INFO] [stdout] test format::tests::test_formatter_for_case_sensitive ... ok
[INFO] [stdout] test format::tests::test_formatter_for_project_json_ignores_name ... ok
[INFO] [stdout] test format::tests::test_formatter_for_project_passes_name_to_toon ... ok
[INFO] [stdout] test format::tests::test_formatter_for_known ... ok
[INFO] [stdout] test format::tests::test_formatter_for_toon ... ok
[INFO] [stdout] test format::tests::test_formatter_for_unknown ... ok
[INFO] [stdout] test env_scan::tests::test_user_name_source_serializes ... ok
[INFO] [stdout] test format::tests::test_is_valid_format ... ok
[INFO] [stdout] test format::tests::test_formatter_for_project_without_name ... ok
[INFO] [stdout] test format::tests::test_is_valid_format_rejects_old_names ... ok
[INFO] [stdout] test format::tests::test_json_and_compact_identical_data ... ok
[INFO] [stdout] test format::tests::test_json_compact_format_seal_log_empty ... ok
[INFO] [stdout] test format::tests::test_json_compact_no_indentation ... ok
[INFO] [stdout] test format::tests::test_json_format_seal_log_empty ... ok
[INFO] [stdout] test format::tests::test_formatter_names_match_factory_key ... ok
[INFO] [stdout] test format::tests::test_json_formatter_name ... ok
[INFO] [stdout] test format::tests::test_json_format_spec_list_empty ... ok
[INFO] [stdout] test format::tests::test_json_pretty_has_indentation ... ok
[INFO] [stdout] test format::tests::benchmark_seal_log_token_savings ... ok
[INFO] [stdout] test format::tests::test_toon_contains_all_spec_ids ... ok
[INFO] [stdout] test format::tests::test_toon_default_impl ... ok
[INFO] [stdout] test format::tests::test_toon_empty_array_produces_header ... ok
[INFO] [stdout] test format::tests::test_toon_empty_seal_log_has_header ... ok
[INFO] [stdout] test format::tests::test_json_compact_formatter_name ... ok
[INFO] [stdout] test format::tests::test_toon_encodes_specs ... ok
[INFO] [stdout] test format::tests::test_toon_format_spec_list_empty ... ok
[INFO] [stdout] test format::tests::test_toon_formatter_name ... ok
[INFO] [stdout] test format::tests::test_toon_formatter_with_project ... ok
[INFO] [stdout] test format::tests::test_toon_default_project_unknown ... ok
[INFO] [stdout] test format::tests::test_toon_format_seal_log_empty ... ok
[INFO] [stdout] test format::tests::test_toon_header_comment ... ok
[INFO] [stdout] test format::tests::test_toon_output_is_smaller_than_json ... ok
[INFO] [stdout] test format::tests::test_toon_header_contains_timestamp ... ok
[INFO] [stdout] test crypto::tests::test_three_seal_chain_integrity ... ok
[INFO] [stdout] test format::tests::test_toon_single_spec_uses_header_format ... ok
[INFO] [stdout] test format::tests::test_toon_named_project_in_header ... ok
[INFO] [stdout] test format::tests::test_toon_spec_with_comma_in_description ... ok
[INFO] [stdout] test format::tests::test_toon_spec_with_empty_description ... ok
[INFO] [stdout] test format::tests::test_toon_spec_with_unicode ... ok
[INFO] [stdout] test gc::tests::test_clean_events_preserves_critical ... ok
[INFO] [stdout] test gc::tests::test_config_json_roundtrip ... ok
[INFO] [stdout] test gc::tests::test_config_load_missing_file_returns_default ... ok
[INFO] [stdout] test gc::tests::test_clean_events_keeps_recent ... ok
[INFO] [stdout] test gc::tests::test_default_config_has_sensible_values ... ok
[INFO] [stdout] test format::tests::benchmark_summary_report ... ok
[INFO] [stdout] test gc::tests::test_config_save_and_load ... ok
[INFO] [stdout] test gc::tests::test_empty_repo_no_orphans ... ok
[INFO] [stdout] test gc::tests::test_clean_events_no_file_ok ... ok
[INFO] [stdout] test gc::tests::test_executor_blocks_active_spec_cleanup ... ok
[INFO] [stdout] test gc::tests::test_audit_log_limit ... ok
[INFO] [stdout] test gc::tests::test_empty_prefix_dir_cleaned_after_prune ... ok
[INFO] [stdout] test gc::tests::test_executor_counts_info_events_cleaned ... ok
[INFO] [stdout] test gc::tests::test_executor_counts_warning_events_cleaned ... ok
[INFO] [stdout] test gc::tests::test_executor_cleans_spec_creates_tombstone ... ok
[INFO] [stdout] test format::tests::test_toon_50_specs_still_smaller_than_json ... ok
[INFO] [stdout] test gc::tests::test_executor_mixed_severity_cleans_non_critical_only ... ok
[INFO] [stdout] test gc::tests::test_executor_prunes_orphan_files ... ok
[INFO] [stdout] test gc::tests::test_executor_empty_plan ... ok
[INFO] [stdout] test gc::tests::test_executor_reports_bytes_freed_in_audit ... ok
[INFO] [stdout] test gc::tests::test_executor_skips_unknown_target_state ... ok
[INFO] [stdout] test gc::tests::test_executor_writes_audit_record ... ok
[INFO] [stdout] test gc::tests::test_find_uncompressed_detects_legacy ... ok
[INFO] [stdout] test gc::tests::test_executor_transitions_spec ... ok
[INFO] [stdout] test gc::tests::test_flagged_seal_objects_not_orphaned ... ok
[INFO] [stdout] test gc::tests::test_find_uncompressed_skips_explicit_raw ... ok
[INFO] [stdout] test gc::tests::test_executor_writes_tombstones_for_pruned ... ok
[INFO] [stdout] test gc::tests::test_from_profile_unknown_returns_error ... ok
[INFO] [stdout] test gc::tests::test_find_uncompressed_skips_compressed ... ok
[INFO] [stdout] test gc::tests::test_load_all_seals_empty_dir ... ok
[INFO] [stdout] test gc::tests::test_load_all_seals_reads_from_disk ... ok
[INFO] [stdout] test gc::tests::test_multiple_specs_all_contribute ... ok
[INFO] [stdout] test gc::tests::test_new_hash_included_in_referenced ... ok
[INFO] [stdout] test gc::tests::test_incompressible_gets_raw_prefix ... ok
[INFO] [stdout] test gc::tests::test_multiple_gc_runs_append_audit ... ok
[INFO] [stdout] test gc::tests::test_no_orphans_when_all_referenced ... ok
[INFO] [stdout] test gc::tests::test_old_hash_included_in_referenced ... ok
[INFO] [stdout] test gc::tests::test_orphan_detected ... ok
[INFO] [stdout] test gc::tests::test_plan_active_spec_no_cleanup ... ok
[INFO] [stdout] test gc::tests::test_plan_cancelled_spec_past_grace_cleaned ... ok
[INFO] [stdout] test gc::tests::test_objects_dir_missing_returns_empty ... ok
[INFO] [stdout] test gc::tests::test_plan_completed_spec_past_retention_cleaned ... ok
[INFO] [stdout] test gc::tests::test_plan_completed_spec_within_retention_not_cleaned ... ok
[INFO] [stdout] test gc::tests::test_plan_critical_events_within_retention_not_flagged ... ok
[INFO] [stdout] test gc::tests::test_plan_includes_prune_objects_when_orphans_exist ... ok
[INFO] [stdout] test gc::tests::test_plan_is_serializable ... ok
[INFO] [stdout] test gc::tests::test_plan_mixed_severity_generates_per_severity_actions ... ok
[INFO] [stdout] test gc::tests::test_plan_old_info_events_flagged ... ok
[INFO] [stdout] test gc::tests::test_plan_no_prune_when_no_orphans ... ok
[INFO] [stdout] test gc::tests::test_plan_empty_repo ... ok
[INFO] [stdout] test gc::tests::test_plan_stale_active_spec_transitions ... ok
[INFO] [stdout] test gc::tests::test_plan_summary_counts ... ok
[INFO] [stdout] test gc::tests::test_plan_warning_within_retention_not_flagged ... ok
[INFO] [stdout] test gc::tests::test_profiles_differ_meaningfully ... ok
[INFO] [stdout] test gc::tests::test_plan_summary_total_actions_counts_event_actions_individually ... ok
[INFO] [stdout] test gc::tests::test_profiles_have_valid_allocations ... ok
[INFO] [stdout] test gc::tests::test_recompression_rewrites_legacy ... ok
[INFO] [stdout] test gc::tests::test_storage_config_backward_compat_missing_field ... ok
[INFO] [stdout] test gc::tests::test_staleness_safety_object_becomes_referenced ... ok
[INFO] [stdout] test gc::tests::test_storage_config_from_profile_names ... ok
[INFO] [stdout] test gc::tests::test_executor_blocks_critical_event_cleanup ... ok
[INFO] [stdout] test gc::tests::test_storage_config_per_profile_levels ... ok
[INFO] [stdout] test gc::tests::test_storage_report_categorizes_seals ... ok
[INFO] [stdout] test gc::tests::test_storage_config_json_roundtrip ... ok
[INFO] [stdout] test gc::tests::test_storage_report_categorizes_security ... ok
[INFO] [stdout] test gc::tests::test_storage_report_empty_dir ... ok
[INFO] [stdout] test gc::tests::test_storage_report_usage_pct ... ok
[INFO] [stdout] test gc::tests::test_tombstone_roundtrip ... ok
[INFO] [stdout] test gc::tests::test_tree_hash_included_in_referenced ... ok
[INFO] [stdout] test gc::tests::test_storage_report_unlimited_budget ... ok
[INFO] [stdout] test gc::tests::test_storage_config_all_profiles_use_zstd ... ok
[INFO] [stdout] test gc::tests::test_storage_config_default_level_3 ... ok
[INFO] [stdout] test gc::tests::test_orphan_has_correct_size ... ok
[INFO] [stdout] test gc::tests::test_executor_does_not_prune_referenced ... ok
[INFO] [stdout] test git_ops::tests::test_open_not_a_repo ... ok
[INFO] [stdout] test git_ops::tests::test_stage_and_commit ... ok
[INFO] [stdout] test git_ops::tests::test_open_valid_repo ... ok
[INFO] [stdout] test hash::tests::test_hash_different_inputs ... ok
[INFO] [stdout] test hash::tests::test_hash_length ... ok
[INFO] [stdout] test hooks::tests::test_agent_instructions_has_restore_warning ... ok
[INFO] [stdout] test hooks::tests::test_agents_md_has_restore_warning ... ok
[INFO] [stdout] test hooks::tests::test_agents_md_section_has_mandatory_language ... ok
[INFO] [stdout] test hooks::tests::test_agents_md_section_has_round_trip_commands ... ok
[INFO] [stdout] test hooks::tests::test_agents_md_section_has_spec_done_workflow ... ok
[INFO] [stdout] test hooks::tests::test_agents_md_section_is_focused ... ok
[INFO] [stdout] test hooks::tests::test_agents_md_section_prohibits_git_and_finish ... ok
[INFO] [stdout] test hooks::tests::test_append_gitignore_appends_to_existing ... ok
[INFO] [stdout] test hooks::tests::test_append_gitignore_creates_new ... ok
[INFO] [stdout] test git_ops::tests::test_root_returns_path ... ok
[INFO] [stdout] test git_ops::tests::test_checkout_or_create_branch ... ok
[INFO] [stdout] test hooks::tests::test_append_gitignore_handles_no_trailing_newline ... ok
[INFO] [stdout] test git_ops::tests::test_stage_all ... ok
[INFO] [stdout] test git_ops::tests::test_current_branch ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_has_git_commit_prohibition ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_section_has_mandatory_language ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_section_has_round_trip_commands ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_section_has_mandatory_commands ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_section_has_guidelines_section ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_section_prohibits_git_and_finish ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_section_has_spec_done_workflow ... ok
[INFO] [stdout] test hooks::tests::test_claude_md_section_has_writ_finish_prohibition ... ok
[INFO] [stdout] test hooks::tests::test_append_gitignore_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_detect_claude_code_with_claude_md ... ok
[INFO] [stdout] test hooks::tests::test_detect_codex_with_agents_md ... ok
[INFO] [stdout] test hooks::tests::test_detect_nothing ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_hook_creates_both_events ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_hook_merges_existing ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_hook_preserves_other_hooks ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_instructions_creates ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_permissions_creates_settings ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_permissions_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_hook_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_instructions_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_permissions_merges_existing ... ok
[INFO] [stdout] test hooks::tests::test_ensure_claude_instructions_merges_existing ... ok
[INFO] [stdout] test hash::tests::test_hash_deterministic ... ok
[INFO] [stdout] test hooks::tests::test_claudemd_prepends_to_existing ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_appends_to_existing_with_markers ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_adds_permissions ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_adds_both_hooks ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_adds_instruction ... ok
[INFO] [stdout] test hooks::tests::test_hook_codex_creates_agents_md_with_markers ... ok
[INFO] [stdout] test hooks::tests::test_hook_codex_appends_with_markers ... ok
[INFO] [stdout] test hooks::tests::test_hook_codex_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_hook_generic_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_hook_generic_skips_without_writ_dir ... ok
[INFO] [stdout] test hooks::tests::test_hook_generic_creates_instructions ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_creates_files_with_markers ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_upgrades_legacy_heading ... ok
[INFO] [stdout] test hooks::tests::test_hook_claude_code_reinit_updates_in_place ... ok
[INFO] [stdout] test hooks::tests::test_init_skill_count_matches_template_count ... ok
[INFO] [stdout] test hooks::tests::test_init_generates_both_slash_commands_and_skills ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_hook_noop_when_missing ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_hook_preserves_other ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_hook_removes_both_events ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_instructions_noop_when_missing ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_instructions_preserves_other ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_instructions_removes ... ok
[INFO] [stdout] test hooks::tests::test_init_skill_directories_have_correct_structure ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_permissions_preserves_other ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_permissions_removes_entry ... ok
[INFO] [stdout] test hooks::tests::test_remove_gitignore_catches_no_trailing_slash ... ok
[INFO] [stdout] test hooks::tests::test_remove_claude_permissions_noop_when_missing ... ok
[INFO] [stdout] test hooks::tests::test_remove_gitignore_entry_preserves_other_content ... ok
[INFO] [stdout] test hooks::tests::test_remove_gitignore_entry ... ok
[INFO] [stdout] test hooks::tests::test_remove_gitignore_noop_when_not_present ... ok
[INFO] [stdout] test hooks::tests::test_remove_marked_section ... ok
[INFO] [stdout] test hooks::tests::test_remove_marked_section_only_content ... ok
[INFO] [stdout] test hooks::tests::test_remove_writ_section_at_end ... ok
[INFO] [stdout] test hooks::tests::test_remove_writ_section_matches_writ_version_control ... ok
[INFO] [stdout] test hooks::tests::test_init_skills_idempotent ... ok
[INFO] [stdout] test hooks::tests::test_remove_writ_section_middle ... ok
[INFO] [stdout] test hooks::tests::test_remove_writ_section_does_not_match_writing ... ok
[INFO] [stdout] test hooks::tests::test_remove_writ_section_only_content ... ok
[INFO] [stdout] test hooks::tests::test_replace_marked_section ... ok
[INFO] [stdout] test hooks::tests::test_unhook_claude_code_handles_legacy_heading ... ok
[INFO] [stdout] test hooks::tests::test_unhook_claude_code_legacy_preserves_user_content ... ok
[INFO] [stdout] test hooks::tests::test_init_with_existing_skills_no_corruption ... ok
[INFO] [stdout] test hooks::tests::test_install_hooks_creates_generic_and_gitignore ... ok
[INFO] [stdout] test hooks::tests::test_reinit_updates_stale_skill_content ... ok
[INFO] [stdout] test hooks::tests::test_unhook_codex_preserves_existing_content ... ok
[INFO] [stdout] test hooks::tests::test_unhook_codex_removes_marker_based ... ok
[INFO] [stdout] test hooks::tests::test_unhook_generic_removes_instructions ... ok
[INFO] [stdout] test hooks::tests::test_unhook_claude_code_removes_hooks ... ok
[INFO] [stdout] test hooks::tests::test_unhook_claude_code_removes_marker_based ... ok
[INFO] [stdout] test convergence::prop_tests::tests::diff3_never_panics ... ok
[INFO] [stdout] test hooks::tests::test_uninstall_hooks_noop_when_nothing_installed ... ok
[INFO] [stdout] test hooks::tests::test_unhook_claude_code_removes_instruction ... ok
[INFO] [stdout] test hooks::tests::test_unhook_claude_code_preserves_existing_content ... ok
[INFO] [stdout] test hooks::tests::test_wrap_with_markers ... ok
[INFO] [stdout] test ignore::tests::test_always_ignored_with_custom ... ok
[INFO] [stdout] test ignore::tests::test_create_writignore_no_gitignore ... ok
[INFO] [stdout] test ignore::tests::test_create_writignore_has_header ... ok
[INFO] [stdout] test ignore::tests::test_create_writignore_skips_existing ... ok
[INFO] [stdout] test ignore::tests::test_create_writignore_deduplicates ... ok
[INFO] [stdout] test ignore::tests::test_glob_match_exact ... ok
[INFO] [stdout] test ignore::tests::test_glob_match_question ... ok
[INFO] [stdout] test hooks::tests::test_unhook_claude_code_removes_permissions ... ok
[INFO] [stdout] test ignore::tests::test_defaults_include_always_ignored ... ok
[INFO] [stdout] test ignore::tests::test_glob_match_star ... ok
[INFO] [stdout] test ignore::tests::test_parse_blank_and_comments ... ok
[INFO] [stdout] test ignore::tests::test_parse_glob_patterns ... ok
[INFO] [stdout] test ignore::tests::test_create_writignore_with_gitignore ... ok
[INFO] [stdout] test index::tests::test_empty_index ... ok
[INFO] [stdout] test ignore::tests::test_load_fallback_to_defaults ... ok
[INFO] [stdout] test index::tests::test_remove ... ok
[INFO] [stdout] test index::tests::test_upsert_and_lookup ... ok
[INFO] [stdout] test keystore::tests::test_encrypted_key_permissions_0600 ... ok
[INFO] [stdout] test keystore::tests::test_encrypted_key_not_plaintext ... ok
[INFO] [stdout] test keystore::tests::test_ensure_master_key_creates_file ... ok
[INFO] [stdout] test keystore::tests::test_ensure_master_key_idempotent ... ok
[INFO] [stdout] test ignore::tests::test_parse_dir_names ... ok
[INFO] [stdout] test keystore::tests::test_has_agent ... ok
[INFO] [stdout] test keystore::tests::test_list_agents ... ok
[INFO] [stdout] test index::tests::test_save_and_load ... ok
[INFO] [stdout] test keystore::tests::test_public_key_not_restricted ... ok
[INFO] [stdout] test keystore::tests::test_master_key_permissions_0600 ... ok
[INFO] [stdout] test keystore::tests::test_path_traversal_in_agent_id_rejected ... ok
[INFO] [stdout] test keystore::tests::test_remove_nonexistent_agent ... ok
[INFO] [stdout] test keystore::tests::test_store_and_load_agent_key ... ok
[INFO] [stdout] test keystore::tests::test_multiple_agents_independent_keys ... ok
[INFO] [stdout] test keystore::tests::test_remove_agent_keys ... ok
[INFO] [stdout] test hooks::tests::test_uninit_preserves_non_writ_skills ... ok
[INFO] [stdout] test lock::tests::test_lock_acquire_release ... ok
[INFO] [stdout] test keystore::tests::test_valid_agent_ids ... ok
[INFO] [stdout] test keystore::tests::test_store_duplicate_agent_rejected ... ok
[INFO] [stdout] test keystore::tests::test_wrong_master_key_fails_decrypt ... ok
[INFO] [stdout] test hooks::tests::test_uninit_removes_both_slash_commands_and_skills ... ok
[INFO] [stdout] test keystore::tests::test_sign_verify_with_stored_keys ... ok
[INFO] [stdout] test migrate::tests::test_created_by_preserved_across_opens ... ok
[INFO] [stdout] test lock::tests::test_lock_blocks_second ... ok
[INFO] [stdout] test migrate::tests::test_doctor_check_count ... ok
[INFO] [stdout] test migrate::tests::test_doctor_corrupt_index ... ok
[INFO] [stdout] test migrate::tests::test_doctor_corrupt_seal ... ok
[INFO] [stdout] test migrate::tests::test_doctor_corrupt_spec ... ok
[INFO] [stdout] test lock::tests::test_lock_released_after_drop ... ok
[INFO] [stdout] test migrate::tests::test_doctor_future_schema_is_fail ... ok
[INFO] [stdout] test migrate::tests::test_doctor_corrupt_config ... ok
[INFO] [stdout] test migrate::tests::test_doctor_healthy_repo ... ok
[INFO] [stdout] test migrate::tests::test_doctor_missing_index ... ok
[INFO] [stdout] test migrate::tests::test_doctor_missing_directory ... ok
[INFO] [stdout] test migrate::tests::test_doctor_missing_version_is_warning ... ok
[INFO] [stdout] test lock::tests::test_lock_timeout ... ok
[INFO] [stdout] test migrate::tests::test_doctor_missing_master_key ... ok
[INFO] [stdout] test migrate::tests::test_doctor_report_serialization_roundtrip ... ok
[INFO] [stdout] test migrate::tests::test_doctor_no_config_is_pass ... ok
[INFO] [stdout] test hooks::tests::test_uninstall_hooks_removes_all ... ok
[INFO] [stdout] test migrate::tests::test_doctor_on_fresh_init ... ok
[INFO] [stdout] test migrate::tests::test_init_creates_version_toml ... ok
[INFO] [stdout] test migrate::tests::test_load_missing_returns_none ... ok
[INFO] [stdout] test migrate::tests::test_migrate_idempotent ... ok
[INFO] [stdout] test migrate::tests::test_legacy_repo_opens_via_auto_migration ... ok
[INFO] [stdout] test migrate::tests::test_migrate_v0_to_v1_creates_dirs_and_version ... ok
[INFO] [stdout] test migrate::tests::test_migrate_noop_when_current ... ok
[INFO] [stdout] test migrate::tests::test_repo_version_new_sets_current_schema ... ok
[INFO] [stdout] test migrate::tests::test_repo_version_default_matches_new ... ok
[INFO] [stdout] test migrate::tests::test_migrate_backup_preserves_original_content ... ok
[INFO] [stdout] test migrate::tests::test_migrate_unknown_step_returns_error ... ok
[INFO] [stdout] test migrate::tests::test_migrate_creates_backup ... ok
[INFO] [stdout] test migrate::tests::test_repo_version_toml_roundtrip ... ok
[INFO] [stdout] test migrate::tests::test_ws2_doctor_missing_workspace_dir ... ok
[INFO] [stdout] test migrate::tests::test_open_rejects_future_schema_version ... ok
[INFO] [stdout] test migrate::tests::test_ws2_doctor_corrupted_workspace_layout ... ok
[INFO] [stdout] test migrate::tests::test_ws2_flat_layout_auto_migrates ... ok
[INFO] [stdout] test migrate::tests::test_ws2_doctor_healthy_workspace ... ok
[INFO] [stdout] test migrate::tests::test_ws2_already_migrated_skips ... ok
[INFO] [stdout] test migrate::tests::test_ws2_idempotent_run_twice ... ok
[INFO] [stdout] test migrate::tests::test_ws2_migrated_head_content_preserved ... ok
[INFO] [stdout] test object::tests::test_backward_compat_legacy_objects ... ok
[INFO] [stdout] test migrate::tests::test_open_updates_last_opened_by ... ok
[INFO] [stdout] test migrate::tests::test_ws2_missing_head_handled ... ok
[INFO] [stdout] test object::tests::test_bomb_emits_security_event ... ok
[INFO] [stdout] test migrate::tests::test_ws2_missing_index_handled ... ok
[INFO] [stdout] test migrate::tests::test_ws2_no_seals_fresh_repo ... ok
[INFO] [stdout] test migrate::tests::test_ws2_migrated_index_content_preserved ... ok
[INFO] [stdout] test migrate::tests::test_ws2_migrated_spec_heads_preserved ... ok
[INFO] [stdout] test object::tests::test_bomb_just_over_limit_fails ... ok
[INFO] [stdout] test object::tests::test_compress_decompress_roundtrip ... ok
[INFO] [stdout] test object::tests::test_bomb_just_under_limit_succeeds ... ok
[INFO] [stdout] test object::tests::test_compression_disabled_stores_raw ... ok
[INFO] [stdout] test object::tests::test_compression_stats_empty_store ... ok
[INFO] [stdout] test object::tests::test_bomb_returns_decompression_bomb_error_variant ... ok
[INFO] [stdout] test object::tests::test_compression_actually_saves_space ... ok
[INFO] [stdout] test object::tests::test_compression_stats_legacy_objects_counted ... ok
[INFO] [stdout] test object::tests::test_compression_stats_all_compressed ... ok
[INFO] [stdout] test object::tests::test_compression_stats_serialization_roundtrip ... ok
[INFO] [stdout] test object::tests::test_decompression_bomb_rejected ... ok
[INFO] [stdout] test object::tests::test_compression_stats_nonexistent_dir ... ok
[INFO] [stdout] test object::tests::test_dedup_still_works_with_compression ... ok
[INFO] [stdout] test object::tests::test_has_magic_byte ... ok
[INFO] [stdout] test object::tests::test_exists_returns_false_for_invalid_hash ... ok
[INFO] [stdout] test object::tests::test_hash_stability_across_formats ... ok
[INFO] [stdout] test object::tests::test_compression_stats_mixed_formats ... ok
[INFO] [stdout] test object::tests::test_is_compressed ... ok
[INFO] [stdout] test object::tests::test_exists ... ok
[INFO] [stdout] test object::tests::test_legacy_raw_passthrough ... ok
[INFO] [stdout] test object::tests::test_magic_raw_explicit ... ok
[INFO] [stdout] test object::tests::test_magic_zstd_decompression ... ok
[INFO] [stdout] test object::tests::test_integrity_check_catches_corruption ... ok
[INFO] [stdout] test object::tests::test_mixed_compressed_and_raw_coexist ... ok
[INFO] [stdout] test object::tests::test_retrieve_rejects_invalid_hash ... ok
[INFO] [stdout] test object::tests::test_retrieve_rejects_too_short_hash ... ok
[INFO] [stdout] test object::tests::test_retrieve_rejects_traversal_in_hash ... ok
[INFO] [stdout] test object::tests::test_store_and_retrieve ... ok
[INFO] [stdout] test object::tests::test_store_compresses_on_disk ... ok
[INFO] [stdout] test object::tests::test_bomb_streaming_does_not_allocate_full_size ... ok
[INFO] [stdout] test object::tests::test_empty_content_roundtrip ... ok
[INFO] [stdout] test object::tests::test_retrieve_nonexistent ... ok
[INFO] [stdout] test object::tests::test_store_raw_and_retrieve ... ok
[INFO] [stdout] test object::tests::test_store_is_idempotent ... ok
[INFO] [stdout] test object::tests::test_unknown_magic_byte_treated_as_legacy ... ok
[INFO] [stdout] test platform::tests::test_check_daemon_no_pid_file ... ok
[INFO] [stdout] test object::tests::test_with_config_compression_level ... ok
[INFO] [stdout] test platform::tests::test_check_daemon_stale_pid ... ok
[INFO] [stdout] test object::tests::test_large_content_roundtrip ... ok
[INFO] [stdout] test platform::tests::test_detect_resource_limits ... ok
[INFO] [stdout] test platform::tests::test_is_process_alive_nonexistent ... ok
[INFO] [stdout] test object::tests::test_different_levels_produce_valid_output ... ok
[INFO] [stdout] test platform::tests::test_is_process_alive_current_process ... ok
[INFO] [stdout] test platform::tests::test_remove_nonexistent_pid_file_is_ok ... ok
[INFO] [stdout] test platform::tests::test_pid_file_roundtrip ... ok
[INFO] [stdout] test platform::tests::test_send_signal_probe_nonexistent ... ok
[INFO] [stdout] test platform::tests::test_stop_daemon_no_pid_file ... ok
[INFO] [stdout] test platform::tests::test_watch_backend_display ... ok
[INFO] [stdout] test proposal::tests::test_proposal_accept ... ok
[INFO] [stdout] test proposal::tests::test_proposal_new_is_pending ... ok
[INFO] [stdout] test proposal::tests::test_proposal_overlaps ... ok
[INFO] [stdout] test proposal::tests::test_proposal_reject ... ok
[INFO] [stdout] test proposal::tests::test_proposal_serde_roundtrip ... ok
[INFO] [stdout] test proposal::tests::test_proposal_status_serde_values ... ok
[INFO] [stdout] test proposal::tests::test_proposal_supersede ... ok
[INFO] [stdout] test platform::tests::test_detect_watch_backend_returns_valid_backend ... ok
[INFO] [stdout] test platform::tests::test_detect_watch_environment ... ok
[INFO] [stdout] test platform::tests::test_send_signal_probe_current_process ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_agent_activity_empty_when_no_seals ... ok
[INFO] [stdout] test object::tests::test_with_config_max_size ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_agent_activity_json_serializable ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_agent_activity_excludes_deletes_from_ownership ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_agent_activity_sorted_by_most_recent ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_convergence_recommended_false_when_linear ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_agent_activity_has_latest_summary ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_agent_activity_tracks_specs ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_agent_activity_walks_all_heads ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_convergence_recommended_false_in_spec_scoped ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_convergence_recommended_true_when_diverged ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_convergence_recommended_serialized_only_when_true ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_diverged_branch_warning_has_recommendation ... ok
[INFO] [stdout] test object::tests::test_large_file_store_and_retrieve ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_dot_slash_normalized_for_scope ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_multi_agent_file_provenance ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_diverged_branches_empty_in_spec_scoped_context ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_enforce_scope_false_allows_out_of_scope_with_warning ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_enforce_scope_seal_paths_rejects_out_of_scope ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_single_agent_owns_all_files ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_diverged_branches_detected_in_context ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_enforce_scope_true_allows_in_scope_files ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_spec_scoped_agent_activity_filters_files ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_enforce_scope_true_also_emits_security_event ... ok
[INFO] [stdout] test repo::agent_activity_tests::test_no_diverged_branches_when_linear ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_enforce_scope_true_rejects_out_of_scope ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_path_traversal_rejected_by_scope_check ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_register_auto_creates_agents_directory ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_register_overlapping_scope_patterns ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_register_empty_scope_means_unrestricted ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_unicode_agent_id_rejected_at_seal ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_register_agent_id_boundary_lengths ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_suspended_agent_reactivated_with_scope_still_enforced ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_multiple_agents_different_scopes_via_seal_paths ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_unregistered_agent_bypasses_scope_enforcement ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_scope_violation_emits_security_event_regardless_of_enforce ... ok
[INFO] [stdout] test repo::agent_identity_tests::test_revoked_agent_seal_rejected ... ok
[INFO] [stdout] test repo::agent_identity_tests::test_revocation_emits_security_event ... ok
[INFO] [stdout] test repo::agent_identity_tests::test_revoked_agent_seal_paths_rejected ... ok
[INFO] [stdout] test repo::agent_edge_case_tests::test_update_scope_constraints_changes_enforcement ... ok
[INFO] [stdout] test repo::agent_identity_tests::test_reactivated_agent_can_seal_again ... ok
[INFO] [stdout] test repo::agent_identity_tests::test_suspended_agent_seal_rejected ... ok
[INFO] [stdout] test repo::agent_identity_tests::test_unregistered_agent_seal_allowed ... ok
[INFO] [stdout] test repo::agent_identity_tests::test_seals_before_revocation_remain_valid ... ok
[INFO] [stdout] test repo::agent_store_tests::test_agent_in_scope_unregistered ... ok
[INFO] [stdout] test repo::agent_store_tests::test_agent_in_scope_registered_with_constraints ... ok
[INFO] [stdout] test repo::agent_store_tests::test_agent_trust_level_unregistered ... ok
[INFO] [stdout] test repo::agent_store_tests::test_agent_trust_level_registered ... ok
[INFO] [stdout] test repo::agent_scoped_context_tests::test_agent_scoped_recommended_action ... ok
[INFO] [stdout] test repo::agent_store_tests::test_load_agent_not_found ... ok
[INFO] [stdout] test repo::agent_scoped_context_tests::test_agent_scoped_context_filters_to_agent_specs ... ok
[INFO] [stdout] test repo::agent_scoped_context_tests::test_agent_scoped_context_file_scope ... ok
[INFO] [stdout] test repo::agent_store_tests::test_init_creates_agents_dir ... ok
[INFO] [stdout] test repo::agent_store_tests::test_list_agents ... ok
[INFO] [stdout] test repo::agent_scoped_context_tests::test_agent_scoped_context_shows_all_agent_activity ... ok
[INFO] [stdout] test repo::agent_scoped_context_tests::test_agent_scoped_contention_filtered ... ok
[INFO] [stdout] test repo::agent_store_tests::test_load_agent_roundtrip ... ok
[INFO] [stdout] test repo::agent_store_tests::test_reactivate_revoked_fails ... ok
[INFO] [stdout] test repo::agent_store_tests::test_register_agent_duplicate_rejected ... ok
[INFO] [stdout] test repo::agent_store_tests::test_revoke_agent ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_accepts_valid_branch_names ... ok
[INFO] [stdout] test repo::agent_store_tests::test_suspend_and_reactivate ... ok
[INFO] [stdout] test repo::agent_store_tests::test_register_agent_creates_file ... ok
[INFO] [stdout] test repo::agent_store_tests::test_update_agent_scope ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_export_no_import ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_export_creates_commits ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_export_maps_metadata ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_import_creates_seal ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_import_dirty_tree_doesnt_pollute_first_seal ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_export_incremental ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_export_nothing_pending ... ok
[INFO] [stdout] test repo::agent_store_tests::test_update_agent_trust_level ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_rejects_invalid_git_ref ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_import_from_old_commit_refreshes_baseline ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_import_no_git_repo ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_rejects_invalid_branch_name ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_import_stores_all_files ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_import_with_ref ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_status_no_state ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_seal_preserves_git_tree_snapshot ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_status_after_import ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_import_ownership_not_polluted ... ok
[INFO] [stdout] test repo::bridge_tests::test_first_seal_after_bridge_captures_only_agent_changes ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_parent_linkage_correct ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_status_pending_count ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_single_seal_verifies ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_tampered_agent_detected ... ok
[INFO] [stdout] test repo::bridge_tests::test_bridge_roundtrip ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_each_seal_has_crypto_fields ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_all_hashes_unique ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_tampered_parent_hash_detected ... ok
[INFO] [stdout] test format::tests::benchmark_seal_log_token_counts ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_with_signed_seals_verifies ... ok
[INFO] [stdout] test repo::chain_tests::test_verify_chain_missing_head_seal_returns_failure ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_tampered_timestamp_detected ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_tampered_content_detected ... ok
[INFO] [stdout] test repo::chain_tests::test_verify_chain_missing_seal_returns_failure_not_error ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_three_seals_verify ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_deleted_file_not_in_ownership ... ok
[INFO] [stdout] test repo::chain_tests::test_verify_chain_partial_chain_still_verifies_loaded_seals ... ok
[INFO] [stdout] test repo::chain_tests::test_verify_chain_reopened_repo_passes ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_one_seal_full_scope ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_one_seal_spec_scoped ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_renamed_files ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_integration_risk_low_with_single_agent ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_conflicting_specs_same_files ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_seal_limit_exceeds_total ... ok
[INFO] [stdout] test convergence::prop_tests::tests::pattern_never_panics ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_spec_scope_nonexistent_spec ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_zero_seals_agent_scope ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_seal_limit_zero ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_with_deleted_files ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_zero_seals_with_pending_changes ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_specs_with_dependencies ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_zero_seals_with_specs ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_session_not_complete_with_mixed_statuses ... ok
[INFO] [stdout] test repo::context_head_tracking_tests::test_context_head_none_when_no_seals ... ok
[INFO] [stdout] test repo::context_head_tracking_tests::test_clear_context_head ... ok
[INFO] [stdout] test repo::context_head_tracking_tests::test_context_records_head ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_zero_seals_full_scope ... ok
[INFO] [stdout] test repo::context_stress_tests::test_import_orphan_fires_for_missing_local_module ... ok
[INFO] [stdout] test repo::context_stress_tests::test_import_orphan_fires_for_missing_module ... ok
[INFO] [stdout] test repo::context_stress_tests::test_import_orphan_suppressed_by_local_module ... ok
[INFO] [stdout] test repo::context_stress_tests::test_import_orphan_suppressed_by_requirements_txt ... ok
[INFO] [stdout] test repo::context_head_tracking_tests::test_no_context_head_before_context_call ... ok
[INFO] [stdout] test repo::context_head_tracking_tests::test_context_records_spec_head ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_session_complete_all_specs_done ... ok
[INFO] [stdout] test repo::context_stress_tests::test_converge_all_applied_false_when_not_clean ... ok
[INFO] [stdout] test repo::converge_all_tests::test_apply_convergence_advances_spec_head ... ok
[INFO] [stdout] test repo::context_stress_tests::test_converge_all_updates_base_spec_head_when_diverged ... ok
[INFO] [stdout] test repo::context_stress_tests::test_summary_refreshed_after_convergence ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_clean_multi_branch ... ok
[INFO] [stdout] test format::tests::benchmark_full_context_token_counts ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_both_modified_most_recent_picks_by_timestamp ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_apply_clears_diverged_branches ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_escalate_strategy_produces_escalation_records ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_no_diverged ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_manual_leaves_both_modified_unresolved ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_most_recent_fallback_for_both_modified ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_resolution_records_have_strategy ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_most_recent_resolves_conflicts ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_merge_order_tracks_specs ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_three_way_leaves_conflicts_unresolved ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_report_serializable ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_step_results_match_order ... ok
[INFO] [stdout] test repo::context_stress_tests::test_context_stress_full_workflow ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_v2_pipeline_resolves_python_imports ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_warnings_for_high_contention ... ok
[INFO] [stdout] test repo::converge_all_tests::test_converge_all_with_apply ... ok
[INFO] [stdout] test repo::converge_all_tests::test_quality_report_consistency_checks_on_html ... ok
[INFO] [stdout] test repo::converge_all_tests::test_quality_report_present_on_converge_all ... ok
[INFO] [stdout] test repo::converge_all_tests::test_quality_report_conflict_decisions_with_strategy ... ok
[INFO] [stdout] test repo::converge_all_tests::test_quality_report_serializable ... ok
[INFO] [stdout] test repo::converge_all_tests::test_quality_report_tracks_file_decisions ... ok
[INFO] [stdout] test repo::converge_all_tests::test_quality_report_unresolved_conflicts_lower_score ... ok
[INFO] [stdout] test repo::convergence_events_integration_tests::test_converge_all_populates_convergence_record ... ok
[INFO] [stdout] test repo::convergence_events_integration_tests::test_converge_all_emits_started_and_completed_events ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_all_updates_last_converged_at ... ok
[INFO] [stdout] test crypto::tests::test_chain_with_100_seals_performance ... FAILED
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_clean_non_overlapping_changes ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_identical_changes_clean ... ok
[INFO] [stdout] test repo::converge_all_tests::test_tr13_regression_additive_changes_preserved ... ok
[INFO] [stdout] test repo::converge_all_tests::test_tr16_regression_three_way_chaining ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_spec_with_no_seals_errors ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_full_cycle_diverge_merge_context ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_left_only_and_right_only_files ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_convergence_state_persists_timestamp ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_reduces_diverged_branch_count ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_report_serializable ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_report_has_all_metadata ... ok
[INFO] [stdout] test convergence::prop_tests::tests::confidence_always_valid ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_no_specs ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_three_specs_sequential ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_unresolved_conflict_errors ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_then_seal_captures_merged_state ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_disjoint_files ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_single_spec ... ok
[INFO] [stdout] test repo::convergence_keypair_tests::test_convergence_key_can_sign_and_verify ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_converge_with_conflict_and_resolution ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_mixed_active_and_recently_completed ... ok
[INFO] [stdout] test repo::convergence_keypair_tests::test_convergence_keypair_loads ... ok
[INFO] [stdout] test repo::convergence_keypair_tests::test_init_creates_convergence_keypair ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_same_content_no_conflict ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_same_file_different_content ... ok
[INFO] [stdout] test repo::convergence_keypair_tests::test_convergence_key_unique_per_repo ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_stale_completed_specs_excluded ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_recently_completed_specs_included ... ok
[INFO] [stdout] test repo::convergence_metadata_tests::test_quality_report_confidence_affects_score ... ok
[INFO] [stdout] test repo::convergence_keypair_tests::test_wrong_key_signature_rejected ... ok
[INFO] [stdout] test repo::convergence_keypair_tests::test_truncated_signature_rejected ... ok
[INFO] [stdout] test repo::convergence_keypair_tests::test_seal_secured_with_convergence_key ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_detect_overlaps_three_specs_one_shared_file ... ok
[INFO] [stdout] test repo::convergence_integration_tests::test_setup_creates_divergence ... ok
[INFO] [stdout] test repo::file_contention_tests::test_contention_not_in_spec_scoped_context ... ok
[INFO] [stdout] test repo::file_contention_tests::test_contention_excludes_bridge_seals ... ok
[INFO] [stdout] test repo::convergence_metadata_tests::test_restore_updates_spec_head ... ok
[INFO] [stdout] test repo::convergence_metadata_tests::test_context_clean_after_apply_convergence ... ok
[INFO] [stdout] test repo::file_contention_tests::test_contention_capped_at_10 ... ok
[INFO] [stdout] test repo::file_contention_tests::test_contention_serializable ... ok
[INFO] [stdout] test repo::flagged_seals_tests::test_flagged_seal_store_accessible_from_repo ... ok
[INFO] [stdout] test repo::file_contention_tests::test_contention_two_agents_same_file ... ok
[INFO] [stdout] test repo::install_tests::test_install_creates_writignore ... ok
[INFO] [stdout] test repo::file_contention_tests::test_no_contention_single_agent ... ok
[INFO] [stdout] test repo::convergence_metadata_tests::test_file_decision_has_confidence ... ok
[INFO] [stdout] test repo::flagged_seals_tests::test_no_seals_in_window_produces_no_flags ... ok
[INFO] [stdout] test repo::file_contention_tests::test_contention_sorted_by_agent_count_desc ... ok
[INFO] [stdout] test repo::install_tests::test_install_detects_claude_code ... ok
[INFO] [stdout] test repo::flagged_seals_tests::test_revoke_with_compromise_flags_seals_in_window ... ok
[INFO] [stdout] test repo::flagged_seals_tests::test_revoke_without_compromise_timestamp_uses_now ... ok
[INFO] [stdout] test repo::flagged_seals_tests::test_downstream_seals_transitively_flagged ... ok
[INFO] [stdout] test repo::install_tests::test_install_fresh_no_git ... ok
[INFO] [stdout] test repo::convergence_metadata_tests::test_context_clean_after_converge_all ... ok
[INFO] [stdout] test repo::install_tests::test_install_no_frameworks ... ok
[INFO] [stdout] test repo::install_tests::test_install_has_available_operations ... ok
[INFO] [stdout] test repo::convergence_metadata_tests::test_quality_report_has_min_confidence ... ok
[INFO] [stdout] test repo::install_tests::test_install_preserves_existing_writignore ... ok
[INFO] [stdout] test repo::install_tests::test_install_idempotent_no_git ... ok
[INFO] [stdout] test repo::install_tests::test_install_has_repo_root ... ok
[INFO] [stdout] test repo::install_tests::test_install_writignore_imports_gitignore ... ok
[INFO] [stdout] test repo::install_tests::test_install_result_serializable ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_cancel_spec_already_cancelled_fails ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_cancel_spec_from_active ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_cancel_spec_from_stale ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_context_includes_stale_spec_warnings ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_enforce_scope_from_settings ... ok
[INFO] [stdout] test repo::install_tests::test_install_detects_dirty_git ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_context_no_stale_warnings_for_fresh_specs ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_complete_spec_requires_status_complete ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_illegal_transition_active_to_archived ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_init_creates_repo_with_default_settings ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_illegal_transition_archived_to_active ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_open_no_settings_file ... ok
[INFO] [stdout] test repo::install_tests::test_install_idempotent_already_synced ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_scan_stale_specs_empty_repo ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_open_loads_settings ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_complete_spec_with_correct_status ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_scan_stale_specs_identifies_stale ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_scan_stale_specs_ignores_terminal_states ... ok
[INFO] [stdout] test repo::install_tests::test_install_reimports_on_head_move ... ok
[INFO] [stdout] test repo::install_tests::test_install_with_git ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_storage_report_on_repo ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_seal_always_succeeds_regardless_of_storage_pressure ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_active_to_completed ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_active_to_stale ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_completed_to_active_allowed ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_active_to_cancelled ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_nonexistent_spec_fails ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_seal_updates_last_activity ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_cancelled_to_archived ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_storage_pressure_emits_event ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_stale_to_active ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_completed_to_archived ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_updates_timestamp ... ok
[INFO] [stdout] test repo::log_all_tests::test_log_all_empty_repo ... ok
[INFO] [stdout] test repo::lifecycle_tests::test_transition_stale_to_cancelled ... ok
[INFO] [stdout] test format::tests::benchmark_spec_list_token_counts ... ok
[INFO] [stdout] test repo::log_all_tests::test_log_all_deduplicates ... ok
[INFO] [stdout] test repo::merge_on_seal_tests::test_seal_with_check_no_conflict ... ok
[INFO] [stdout] test repo::monitoring_event_tests::test_chain_hash_failure_emits_event ... ok
[INFO] [stdout] test repo::merge_on_seal_tests::test_seal_with_check_no_expected_head ... ok
[INFO] [stdout] test repo::log_all_tests::test_log_all_matches_log_when_no_branches ... ok
[INFO] [stdout] test repo::monitoring_event_tests::test_signature_failure_emits_event ... ok
[INFO] [stdout] test repo::merge_on_seal_tests::test_seal_with_check_detects_head_movement ... ok
[INFO] [stdout] test repo::monitoring_event_tests::test_unrecognized_agent_seal_emits_event ... ok
[INFO] [stdout] test format::tests::benchmark_git_baseline_vs_writ ... ok
[INFO] [stdout] test repo::merge_on_seal_tests::test_seal_with_check_detects_file_overlap ... ok
[INFO] [stdout] test repo::merge_on_seal_tests::test_seal_with_check_short_id ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_none_when_clean ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_blocking_dependency ... ok
[INFO] [stdout] test repo::log_all_tests::test_log_all_includes_diverged_branch_seals ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_seal_when_changes ... ok
[INFO] [stdout] test repo::log_all_tests::test_log_all_sorted_newest_first ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_priority_ordering ... ok
[INFO] [stdout] test repo::remote_tests::test_push_idempotent ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_finish_when_session_complete ... ok
[INFO] [stdout] test repo::remote_tests::test_remote_init_creates_structure ... ok
[INFO] [stdout] test repo::remote_tests::test_remote_add_duplicate_fails ... ok
[INFO] [stdout] test repo::remote_tests::test_remote_add_and_list ... ok
[INFO] [stdout] test repo::remote_tests::test_remote_init_twice_fails ... ok
[INFO] [stdout] test repo::remote_tests::test_pull_objects_and_seals ... ok
[INFO] [stdout] test repo::remote_tests::test_spec_merge_status_progression ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_dependency_resolved_no_block ... ok
[INFO] [stdout] test repo::remote_tests::test_remote_remove ... ok
[INFO] [stdout] test repo::remote_tests::test_remote_remove_nonexistent ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_converge_when_diverged ... ok
[INFO] [stdout] test repo::remote_tests::test_push_objects_and_seals ... ok
[INFO] [stdout] test repo::remote_tests::test_push_fast_forward ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_absolute_path_rejected_stub ... ok
[INFO] [stdout] test repo::remote_tests::test_push_diverged_fails ... ok
[INFO] [stdout] test repo::remote_tests::test_pull_fast_forward ... ok
[INFO] [stdout] test repo::recommended_action_tests::test_recommended_action_converge_in_spec_scope ... ok
[INFO] [stdout] test repo::remote_tests::test_push_pull_roundtrip ... ok
[INFO] [stdout] test repo::remote_tests::test_spec_merge_union_sealed_by ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_agent_scope_warning_on_seal ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_directory_prefix_in_scope ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_path_traversal_dot_dot_stub ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_exact_path_in_scope_no_warning ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_symlink_outside_scope_stub ... ok
[INFO] [stdout] test repo::remote_tests::test_remote_status_ahead_behind ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_multiple_files_mixed_scope ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_scope_violation_emits_security_event ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_file_outside_scope_detected ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_deeply_nested_path_in_scope ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_empty_scope_allows_all ... ok
[INFO] [stdout] test repo::scope_constraint_tests::test_wildcard_scope_matches ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_committed_specs_excluded_from_convergence ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_finalize_convergence_backstop ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_no_bridge_seal_includes_all_specs ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_2spec_clean_merge ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_materialize_convergence_writes_to_disk ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_2spec_conflict_detection ... ok
[INFO] [stdout] test repo::scale_tests::test_scale_100_specs ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_contaminated_inputs_same_result ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_deterministic_ordering ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_disjoint_files_no_merge ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_epoch_boundary_excludes_pre_bridge_specs ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_3spec_nway_merge ... ok
[INFO] [stdout] test repo::signature_tests::test_convergence_signing_key_signs_seals ... ok
[INFO] [stdout] test repo::signature_tests::test_convergence_key_rejects_agent_seal ... ok
[INFO] [stdout] test repo::signature_tests::test_seal_modified_agent_id_detected ... ok
[INFO] [stdout] test repo::signature_tests::test_seal_signed_with_key_verifies ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_escalate_auto_resolves_conflict ... ok
[INFO] [stdout] test repo::signature_tests::test_unsigned_seal_reports_no_signature ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_single_spec_returns_clean ... ok
[INFO] [stdout] test repo::signature_tests::test_seal_truncated_signature_fails ... ok
[INFO] [stdout] test repo::signature_tests::test_seal_wrong_key_fails_signature ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_genesis_always_used_as_base ... ok
[INFO] [stdout] test repo::spec_head_tests::test_spec_head_none_for_unknown_spec ... ok
[INFO] [stdout] test repo::signature_tests::test_seal_tampered_content_fails_signature ... ok
[INFO] [stdout] test repo::seal_tree_convergence_tests::test_seal_tree_shadow_results_in_object_store ... ok
[INFO] [stdout] test repo::spec_head_tests::test_seal_without_spec_uses_global_head ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_directory_prefix_matching ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_filters_pending_changes ... ok
[INFO] [stdout] test repo::spec_head_tests::test_spec_log_returns_spec_chain ... ok
[INFO] [stdout] test repo::spec_head_tests::test_spec_scoped_head_isolation ... ok
[INFO] [stdout] test repo::spec_head_tests::test_spec_head_chains_correctly ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_filters_seal_nudge ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_file_contention_filtered_to_scope ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_filters_working_state_by_file_scope ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_diverged_still_has_progress ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_no_filter_when_no_scope_or_seals ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_integration_risk_computed_from_filtered_signals ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_infers_scope_from_seals ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_scope_violations_filtered_to_spec ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_includes_diverged_branches ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_converge_all_single_spec_returns_early ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_cross_file_reference_integrity_detects_broken_imports ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_cross_file_reference_integrity_passes_when_intact ... ok
[INFO] [stdout] test repo::spec_scoped_context_tests::test_spec_context_shows_diverged_spec_seals ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_converge_all_deduplicates_warnings ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_quality_report_duplicate_definitions_detected ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_converge_all_additive_composition_preserves_content ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_quality_report_no_duplicate_definitions_passes ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_quality_report_unused_imports_whole_word_not_flagged ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_quality_report_summary_includes_confidence ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_quality_report_unused_imports_word_boundary ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_quality_score_penalizes_duplicate_imports ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_quality_score_penalizes_unused_imports ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_converge_all_files_changed_populated ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_empty_repo ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_files_to_stage ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_converge_all_includes_non_diverged_specs ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_converge_all_runs_layer5_cleanup ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_excludes_bridge_seals ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_commit_message_format ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_degraded_false_when_clean_merge ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_degraded_true_when_most_recent_discards_content ... ok
[INFO] [stdout] test repo::sprint14_reporting_tests::test_converge_all_sequential_shared_file_all_preserved ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_omits_workspace_section_when_no_convergence ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_serializable ... ok
[INFO] [stdout] test repo::scale_tests::test_scale_many_files_in_single_seal ... ok
[INFO] [stdout] test repo::tests::test_add_spec_rejects_duplicate ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_includes_workspace_section_after_convergence ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_headline_reflects_workspace_convergence ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_multi_agent_multi_spec ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_single_agent_single_spec ... ok
[INFO] [stdout] test repo::tests::test_cancel_spec_from_active ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_with_diverged_branches ... ok
[INFO] [stdout] test repo::tests::test_cancel_spec_rejects_terminal_states ... ok
[INFO] [stdout] test repo::tests::test_cancel_spec_from_stale ... ok
[INFO] [stdout] test repo::tests::test_complete_spec_succeeds_with_complete_status ... ok
[INFO] [stdout] test repo::tests::test_apply_convergence_with_resolutions ... ok
[INFO] [stdout] test repo::tests::test_complete_spec_rejects_from_cancelled ... ok
[INFO] [stdout] test repo::tests::test_complete_spec_requires_complete_status ... ok
[INFO] [stdout] test repo::tests::test_apply_unresolved_conflicts ... ok
[INFO] [stdout] test repo::tests::test_apply_convergence_clean ... ok
[INFO] [stdout] test repo::tests::test_context_dependency_missing ... ok
[INFO] [stdout] test repo::summary_tests::test_summary_preserves_all_specs_after_convergence ... ok
[INFO] [stdout] test repo::tests::test_context_dependency_status ... ok
[INFO] [stdout] test repo::tests::test_context_filter_by_agent ... ok
[INFO] [stdout] test repo::tests::test_context_dependency_resolved ... ok
[INFO] [stdout] test repo::tests::test_context_full_empty_repo ... ok
[INFO] [stdout] test repo::tests::test_context_full_no_enrichment ... ok
[INFO] [stdout] test repo::tests::test_context_filter_by_status ... ok
[INFO] [stdout] test repo::tests::test_context_has_available_operations ... ok
[INFO] [stdout] test repo::tests::test_concurrent_seal_safety ... ok
[INFO] [stdout] test repo::tests::test_context_full_with_seals ... ok
[INFO] [stdout] test repo::tests::test_context_filter_empty_returns_all ... ok
[INFO] [stdout] test repo::tests::test_context_pending_changes ... ok
[INFO] [stdout] test repo::tests::test_context_filter_combined_status_and_agent ... ok
[INFO] [stdout] test repo::tests::test_converge_no_seals ... ok
[INFO] [stdout] test repo::tests::test_context_seal_summary_has_status_and_verification ... ok
[INFO] [stdout] test repo::tests::test_context_filter_with_spec_scope ... ok
[INFO] [stdout] test repo::tests::test_context_seal_summary_omits_empty_verification ... ok
[INFO] [stdout] test repo::tests::test_converge_spec_not_found ... ok
[INFO] [stdout] test repo::tests::test_context_spec_not_found ... ok
[INFO] [stdout] test repo::tests::test_context_spec_scoped ... ok
[INFO] [stdout] test repo::tests::test_diff_after_deletion ... ok
[INFO] [stdout] test repo::tests::test_diff_after_modification ... ok
[INFO] [stdout] test repo::tests::test_converge_disjoint_files ... ok
[INFO] [stdout] test repo::tests::test_diff_clean_working_tree ... ok
[INFO] [stdout] test repo::tests::test_context_spec_progress ... ok
[INFO] [stdout] test repo::tests::test_diff_no_seals_yet ... ok
[INFO] [stdout] test repo::tests::test_init_creates_structure ... ok
[INFO] [stdout] test repo::tests::test_diff_seals_nonexistent ... ok
[INFO] [stdout] test repo::tests::test_context_seal_limit ... ok
[INFO] [stdout] test repo::tests::test_diff_seal_first_seal ... ok
[INFO] [stdout] test repo::tests::test_get_seal_by_short_id ... ok
[INFO] [stdout] test repo::tests::test_init_twice_fails ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_active_to_completed ... ok
[INFO] [stdout] test repo::tests::test_diff_seal_with_parent ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_active_to_stale ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_active_to_cancelled ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_allows_completed_to_active ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_cancelled_to_archived ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_nonexistent_spec_errors ... ok
[INFO] [stdout] test repo::tests::test_converge_overlapping_conflict ... ok
[INFO] [stdout] test repo::chain_tests::test_chain_100_seals_performance ... ok
[INFO] [stdout] test repo::tests::test_diff_seals ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_noop_same_state_rejected ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_rejects_active_to_archived_directly ... ok
[INFO] [stdout] test repo::tests::test_open_nonexistent_fails ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_completed_to_archived ... ok
[INFO] [stdout] test repo::tests::test_log_empty ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_rejects_cancelled_to_active ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_rejects_archived_to_any ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_stale_to_active ... ok
[INFO] [stdout] test repo::tests::test_no_writignore_uses_defaults ... ok
[INFO] [stdout] test repo::tests::test_converge_overlapping_clean ... ok
[INFO] [stdout] test repo::tests::test_lifecycle_stale_to_cancelled ... ok
[INFO] [stdout] test repo::tests::test_resolve_seal_id_short ... ok
[INFO] [stdout] test repo::tests::test_restore_nonexistent_seal ... ok
[INFO] [stdout] test repo::tests::test_save_seal_rejects_overwrite ... ok
[INFO] [stdout] test repo::tests::test_log_after_seals ... ok
[INFO] [stdout] test repo::tests::test_restore_creates_files ... ok
[INFO] [stdout] test repo::tests::test_seal_accepts_valid_agent_id ... ok
[INFO] [stdout] test repo::tests::test_restore_deletes_files ... ok
[INFO] [stdout] test repo::tests::test_restore_to_current_head ... ok
[INFO] [stdout] test repo::tests::test_restore_to_previous_seal ... ok
[INFO] [stdout] test repo::tests::test_seal_allow_empty ... ok
[INFO] [stdout] test repo::tests::test_seal_integrity_after_overwrite_attempt ... ok
[INFO] [stdout] test repo::tests::test_restore_updates_head_and_index ... ok
[INFO] [stdout] test repo::tests::test_seal_allow_empty_with_spec ... ok
[INFO] [stdout] test repo::tests::test_seal_auto_promote_never_downgrades ... ok
[INFO] [stdout] test repo::tests::test_seal_nothing_fails ... ok
[INFO] [stdout] test repo::tests::test_seal_nudge_present_when_dirty ... ok
[INFO] [stdout] test repo::tests::test_seal_paths_directory_prefix ... ok
[INFO] [stdout] test repo::tests::test_seal_auto_promotes_spec_status ... ok
[INFO] [stdout] test repo::tests::test_seal_holds_lock ... ok
[INFO] [stdout] test repo::tests::test_seal_paths_nothing_matching ... ok
[INFO] [stdout] test repo::tests::test_seal_paths_allow_empty ... ok
[INFO] [stdout] test repo::tests::test_seal_rejects_invalid_agent_id ... ok
[INFO] [stdout] test repo::tests::test_seal_paths_multiple_files ... ok
[INFO] [stdout] test repo::tests::test_seal_allow_empty_false_still_fails ... ok
[INFO] [stdout] test repo::tests::test_seal_paths_selective ... ok
[INFO] [stdout] test repo::tests::test_seal_paths_interleaved_with_seal_all ... ok
[INFO] [stdout] test repo::tests::test_spec_backwards_compat_deserialize ... ok
[INFO] [stdout] test repo::tests::test_seal_nudge_absent_when_clean ... ok
[INFO] [stdout] test repo::tests::test_spec_new_has_empty_enrichment_fields ... ok
[INFO] [stdout] test repo::tests::test_spec_serializes_with_enrichment ... ok
[INFO] [stdout] test repo::tests::test_spec_serializes_without_empty_fields ... ok
[INFO] [stdout] test repo::tests::test_seal_paths_with_spec ... ok
[INFO] [stdout] test repo::tests::test_seal_summary_includes_changed_paths ... ok
[INFO] [stdout] test repo::tests::test_seal_verification_default ... ok
[INFO] [stdout] test repo::tests::test_seal_with_new_file ... ok
[INFO] [stdout] test repo::tests::test_spec_lifecycle ... ok
[INFO] [stdout] test repo::tests::test_seal_store_no_delete_path ... ok
[INFO] [stdout] test repo::tests::test_seal_verification_in_log ... ok
[INFO] [stdout] test repo::tests::test_seal_with_verification ... ok
[INFO] [stdout] test repo::tests::test_seal_auto_promote_respects_blocked ... ok
[INFO] [stdout] test repo::tests::test_state_clean_after_init ... ok
[INFO] [stdout] test repo::tests::test_update_spec_design_notes ... ok
[INFO] [stdout] test repo::tests::test_update_spec_file_scope ... ok
[INFO] [stdout] test repo::tests::test_update_spec_depends_on ... ok
[INFO] [stdout] test repo::tests::test_update_spec_not_found ... ok
[INFO] [stdout] test repo::tests::test_summary_derives_status_from_seals ... ok
[INFO] [stdout] test repo::tests::test_update_spec_status ... ok
[INFO] [stdout] test repo::tests::test_update_spec_tech_stack ... ok
[INFO] [stdout] test repo::tests::test_update_spec_acceptance_criteria ... ok
[INFO] [stdout] test repo::tests::test_update_spec_persists ... ok
[INFO] [stdout] test repo::tests::test_validate_path_accepts_normal ... ok
[INFO] [stdout] test repo::tests::test_validate_path_rejects_absolute ... ok
[INFO] [stdout] test repo::verify_all_chains_tests::test_verify_all_chains_empty_repo ... ok
[INFO] [stdout] test repo::tests::test_writignore_hides_files ... ok
[INFO] [stdout] test repo::tests::test_validate_path_rejects_parent_traversal ... ok
[INFO] [stdout] test repo::tests::test_validate_path_rejects_nested_traversal ... ok
[INFO] [stdout] test repo::workspace_tests::test_active_workspace_defaults_to_main ... ok
[INFO] [stdout] test repo::verify_all_chains_tests::test_verify_all_chains_head_only ... ok
[INFO] [stdout] test repo::tests::test_update_spec_unaffected_by_duplicate_guard ... ok
[INFO] [stdout] test repo::workspace_tests::test_assign_nonexistent_spec_errors ... ok
[INFO] [stdout] test repo::workspace_tests::test_assign_to_nonexistent_workspace_errors ... ok
[INFO] [stdout] test repo::workspace_tests::test_assign_preserves_other_spec_fields ... ok
[INFO] [stdout] test repo::workspace_tests::test_auto_scope_explicit_overrides ... ok
[INFO] [stdout] test repo::workspace_tests::test_auto_scope_pending_spec_before_first_seal ... ok
[INFO] [stdout] test repo::workspace_tests::test_assign_spec_to_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_auto_scope_zero_claimed_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_auto_scope_different_agent_not_found ... ok
[INFO] [stdout] test repo::workspace_tests::test_backward_compat_single_agent_no_spec ... ok
[INFO] [stdout] test repo::verify_all_chains_tests::test_verify_all_chains_with_spec_branch ... ok
[INFO] [stdout] test repo::workspace_tests::test_auto_scope_single_claimed_spec ... ok
[INFO] [stdout] test repo::verify_all_chains_tests::test_verify_all_chains_multiple_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_dependency_awareness ... ok
[INFO] [stdout] test repo::workspace_tests::test_auto_scope_ignores_completed_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_from_workspace_shows_task ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_from_main_omits_task ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_cross_workspace_dependency_shown ... ok
[INFO] [stdout] test repo::workspace_tests::test_chain_subtraction_fallback_no_recent_seals ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_main_workspace_shows_all_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_no_workspace_filter_returns_full_context ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_no_assigned_spec_omits_task ... ok
[INFO] [stdout] test repo::workspace_tests::test_auto_scope_multiple_claimed_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_chain_subtraction_excludes_other_agents_changes ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_empty_list ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_task_after_spec_done_shows_complete ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_workspace_scoped_filters_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_chain_subtraction_keeps_same_file_different_content ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_task_appears_before_specs_in_output ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_workspace_scoped_filters_seals ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_nonexistent_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_rejects_main ... ok
[INFO] [stdout] test repo::workspace_tests::test_context_task_fields_correct ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_dry_run_no_apply ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_no_changes_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_assigns_spec_to_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_conflict_with_escalate ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_creates_spec ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_creates_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_custom_id_override ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_non_overlapping_changes ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_gitignore_updated ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_happy_path ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_duplicate_title_allowed_different_ids ... ok
[INFO] [stdout] test repo::workspace_tests::test_converge_workspaces_overlapping_clean_merge ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_result_fields_complete ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_suggested_prompt_already_has_period ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_gitignore_not_duplicated ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_suggested_prompt_capitalized ... ok
[INFO] [stdout] test repo::workspace_tests::test_convergence_on_same_directory_seals ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_task_workspace_at_project_root ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_creates_state_directory ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_rejects_path_with_writ_dir ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_rejects_invalid_names ... ok
[INFO] [stdout] test repo::workspace_tests::test_delete_nonexistent_workspace_errors ... ok
[INFO] [stdout] test repo::workspace_tests::test_delete_main_workspace_rejected ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_copies_index ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_pointer_file_content ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_rejects_duplicate_name ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_with_explicit_path ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_copies_head ... ok
[INFO] [stdout] test repo::workspace_tests::test_delete_workspace_removes_state ... ok
[INFO] [stdout] test repo::workspace_tests::test_delete_workspace_keep_files ... ok
[INFO] [stdout] test repo::workspace_tests::test_delete_workspace_unassigns_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_create_workspace_from_another_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_delete_workspace_preserves_seals ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_cleanup_keep_files_preserves_dir ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_no_workspaces_converge_is_noop ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_cleanup_deletes_workspace_state ... ok
[INFO] [stdout] test repo::workspace_tests::test_generate_spec_id_format ... ok
[INFO] [stdout] test repo::workspace_tests::test_generate_spec_id_different_titles ... ok
[INFO] [stdout] test repo::workspace_tests::test_generate_spec_id_uniqueness ... ok
[INFO] [stdout] test repo::workspace_tests::test_find_last_seal_for_spec_and_agent ... ok
[INFO] [stdout] test repo::workspace_tests::test_integration_duplicate_task_id_error ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_convergence_report_fields ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_clean_convergence_applies_files ... ok
[INFO] [stdout] test repo::workspace_tests::test_first_seal_may_over_capture_safely ... ok
[INFO] [stdout] test repo::workspace_tests::test_open_from_dir_falls_back_to_open ... ok
[INFO] [stdout] test repo::workspace_tests::test_open_from_dir_detects_workspace_pointer ... ok
[INFO] [stdout] test repo::workspace_tests::test_integration_two_tasks_independent ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_with_workspaces_auto_converges ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_single_workspace_trivial_convergence ... ok
[INFO] [stdout] test repo::workspace_tests::test_finish_escalation_blocks_convergence ... ok
[INFO] [stdout] test repo::workspace_tests::test_integration_task_lifecycle ... ok
[INFO] [stdout] test repo::workspace_tests::test_plan_creates_hash_ids_with_slugs ... ok
[INFO] [stdout] test repo::workspace_tests::test_open_workspace_invalid_name_errors ... ok
[INFO] [stdout] test repo::workspace_tests::test_plan_same_title_twice_succeeds ... ok
[INFO] [stdout] test repo::workspace_tests::test_open_workspace_sets_active ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_empty_input ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_case_insensitive_slug ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_ambiguous_slug ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_exact_id ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_exact_slug ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_backward_compat_no_convergence_field ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_id_prefix ... ok
[INFO] [stdout] test repo::workspace_tests::test_reassign_changes_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_not_found ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_legacy_spec_no_slug ... ok
[INFO] [stdout] test repo::workspace_tests::test_resolve_spec_slug_prefix ... ok
[INFO] [stdout] test repo::workspace_tests::test_four_agents_same_directory_independent_seals ... ok
[INFO] [stdout] test repo::workspace_tests::test_over_capture_resolves_after_first_round ... ok
[INFO] [stdout] test repo::workspace_tests::test_integration_two_tasks_seal_converge_cleanup ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_legacy_spec_without_genesis_uses_empty ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_genesis_snapshot_at_spec_creation ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_convergence_preserves_seal_integrity ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_convergence_config_disabled ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_deleted_file_attributed_to_deleter ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_new_file_attributed_to_creator ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_convergence_result_in_seal_struct ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_convergence_failure_does_not_block_seal ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_no_convergence_without_spec ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_convergence_serialization_roundtrip ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_tags_workspace_name ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_spec_scoped_no_changes ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_no_convergence_without_overlap ... ok
[INFO] [stdout] test repo::workspace_tests::test_slugify_consecutive_specials_collapsed ... ok
[INFO] [stdout] test repo::workspace_tests::test_slugify_leading_trailing_trimmed ... ok
[INFO] [stdout] test repo::workspace_tests::test_slugify_long_title_truncated ... ok
[INFO] [stdout] test repo::workspace_tests::test_slugify_mixed_case ... ok
[INFO] [stdout] test repo::workspace_tests::test_slugify_spaces_to_hyphens ... ok
[INFO] [stdout] test repo::workspace_tests::test_slugify_special_chars ... ok
[INFO] [stdout] test repo::workspace_tests::test_slugify_unicode ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_convergence_idempotent ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_convergence_with_three_specs ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_race_two_agents_seal_simultaneously ... ok
[INFO] [stdout] test repo::workspace_tests::test_spec_claim_already_claimed_fails ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_without_spec_captures_full_directory ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_uses_last_agent_seal_as_baseline ... ok
[INFO] [stdout] test repo::workspace_tests::test_spec_claim_idempotent_same_agent ... ok
[INFO] [stdout] test repo::workspace_tests::test_spec_claim_success ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_two_agents_same_file_both_captured ... ok
[INFO] [stdout] test repo::workspace_tests::test_status_no_untracked_on_clean_working_dir ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_uses_genesis_index_for_first_seal ... ok
[INFO] [stdout] test repo::workspace_tests::test_unassign_spec_from_workspace ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_with_spec_captures_only_spec_files ... ok
[INFO] [stdout] test repo::workspace_tests::test_spec_auto_claim_on_first_seal ... ok
[INFO] [stdout] test repo::workspace_tests::test_status_detects_untracked_file_changes ... ok
[INFO] [stdout] test repo::workspace_tests::test_wv19_gitignore_already_present_skips ... ok
[INFO] [stdout] test repo::workspace_tests::test_wv19_gitignore_adds_workspaces_entry ... ok
[INFO] [stdout] test repo::workspace_tests::test_wv19_gitignore_custom_workspace_root ... ok
[INFO] [stdout] test repo::workspace_tests::test_ws18_single_workspace_list ... ok
[INFO] [stdout] test repo::workspace_tests::test_wv19_gitignore_idempotent ... ok
[INFO] [stdout] test security::tests::test_append_only_multiple_flags ... ok
[INFO] [stdout] test repo::workspace_tests::test_wv19_gitignore_preserves_existing_content ... ok
[INFO] [stdout] test security::tests::test_audit_logger_appends_multiple ... ok
[INFO] [stdout] test repo::workspace_tests::test_ws18_multiple_workspaces_listed ... ok
[INFO] [stdout] test security::tests::test_audit_logger_creates_gc_directory ... ok
[INFO] [stdout] test security::tests::test_audit_logger_no_file ... ok
[INFO] [stdout] test security::tests::test_audit_logger_write_and_read ... ok
[INFO] [stdout] test security::tests::test_audit_logger_read_last ... ok
[INFO] [stdout] test repo::workspace_tests::test_two_workspaces_exist_simultaneously ... ok
[INFO] [stdout] test repo::workspace_tests::test_workspace_config_records_ancestor ... ok
[INFO] [stdout] test repo::workspace_tests::test_seal_triggers_convergence_on_overlap ... ok
[INFO] [stdout] test security::tests::test_audit_record_json_roundtrip ... ok
[INFO] [stdout] test security::tests::test_audit_record_unique_ids ... ok
[INFO] [stdout] test security::tests::test_audit_record_creation ... ok
[INFO] [stdout] test repo::workspace_tests::test_status_no_untracked_when_all_sealed ... ok
[INFO] [stdout] test security::tests::test_clean_events_nothing_to_clean ... ok
[INFO] [stdout] test security::tests::test_clean_events_idempotent ... ok
[INFO] [stdout] test security::tests::test_clean_events_preserves_critical_within_retention ... ok
[INFO] [stdout] test security::tests::test_clean_events_preserves_warnings_within_retention ... ok
[INFO] [stdout] test security::tests::test_clean_events_removes_old_info ... ok
[INFO] [stdout] test security::tests::test_auto_creates_directory ... ok
[INFO] [stdout] test security::tests::test_clean_events_no_file ... ok
[INFO] [stdout] test security::tests::test_critical_event_long_retention ... ok
[INFO] [stdout] test security::tests::test_custom_retention_config ... ok
[INFO] [stdout] test security::tests::test_emit_convergence_completed_event ... ok
[INFO] [stdout] test repo::workspace_tests::test_wv19_gitignore_creates_file_if_missing ... ok
[INFO] [stdout] test security::tests::test_emit_convergence_degraded_event ... ok
[INFO] [stdout] test security::tests::test_emit_convergence_started_event ... ok
[INFO] [stdout] test security::tests::test_emit_scope_violation_convenience ... ok
[INFO] [stdout] test security::tests::test_emit_unrecognized_agent ... ok
[INFO] [stdout] test security::tests::test_flag_reason_serde_roundtrip ... ok
[INFO] [stdout] test security::tests::test_event_json_roundtrip ... ok
[INFO] [stdout] test security::tests::test_flag_seal_and_load ... ok
[INFO] [stdout] test security::tests::test_flagged_seal_json_roundtrip ... ok
[INFO] [stdout] test security::tests::test_flagged_ids_returns_set ... ok
[INFO] [stdout] test security::tests::test_gc_trigger_serde ... ok
[INFO] [stdout] test security::tests::test_emit_chain_hash_failure ... ok
[INFO] [stdout] test security::tests::test_emit_authentication_failure ... ok
[INFO] [stdout] test security::tests::test_emit_agent_revoked_convenience ... ok
[INFO] [stdout] test security::tests::test_retention_config_defaults ... ok
[INFO] [stdout] test security::tests::test_retention_config_serde_roundtrip ... ok
[INFO] [stdout] test security::tests::test_retention_empty_events_file ... ok
[INFO] [stdout] test security::tests::test_severity_filter ... ok
[INFO] [stdout] test repo::workspace_tests::test_ws18_workspace_spec_counts_accurate ... ok
[INFO] [stdout] test security::tests::test_warning_event_within_default_retention ... ok
[INFO] [stdout] test settings::tests::test_backward_compat_new_field ... ok
[INFO] [stdout] test settings::tests::test_corrupt_settings_json_falls_back_to_defaults ... ok
[INFO] [stdout] test settings::tests::test_default_settings ... ok
[INFO] [stdout] test settings::tests::test_empty_convergence_not_serialized ... ok
[INFO] [stdout] test settings::tests::test_get_set_bool_key ... ok
[INFO] [stdout] test settings::tests::test_get_set_float_key ... ok
[INFO] [stdout] test settings::tests::test_get_set_string_key ... ok
[INFO] [stdout] test settings::tests::test_get_unset_key_returns_none ... ok
[INFO] [stdout] test settings::tests::test_is_valid_key ... ok
[INFO] [stdout] test settings::tests::test_keys_schema_completeness ... ok
[INFO] [stdout] test settings::tests::test_save_and_load_roundtrip ... ok
[INFO] [stdout] test security::tests::test_emit_and_read_events ... ok
[INFO] [stdout] test repo::workspace_tests::test_workspace_independent_head_and_index ... ok
[INFO] [stdout] test security::tests::test_emit_convergence_escalation_event ... ok
[INFO] [stdout] test settings::tests::test_set_invalid_bool ... ok
[INFO] [stdout] test security::tests::test_flagged_seal_store_empty ... ok
[INFO] [stdout] test security::tests::test_concurrent_writes_no_corruption ... ok
[INFO] [stdout] test security::tests::test_info_event_past_default_retention ... ok
[INFO] [stdout] test settings::tests::test_set_confidence_out_of_range ... ok
[INFO] [stdout] test security::tests::test_read_events_no_file ... ok
[INFO] [stdout] test security::tests::test_multiple_events_appended ... ok
[INFO] [stdout] test settings::tests::test_set_invalid_format ... ok
[INFO] [stdout] test settings::tests::test_set_invalid_strategy ... ok
[INFO] [stdout] test settings::tests::test_strategy_validates_v2_names ... ok
[INFO] [stdout] test settings::tests::test_unknown_key_error ... ok
[INFO] [stdout] test settings::tests::test_unset_resets_to_none ... ok
[INFO] [stdout] test skills::tests::test_all_names_start_with_writ ... ok
[INFO] [stdout] test skills::tests::test_all_skills_have_name_in_frontmatter ... ok
[INFO] [stdout] test skills::tests::test_all_skills_have_yaml_frontmatter ... ok
[INFO] [stdout] test skills::tests::test_all_templates_have_content ... ok
[INFO] [stdout] test skills::tests::test_auto_invoke_count ... ok
[INFO] [stdout] test skills::tests::test_non_auto_invoke_skills_no_auto_invoke_true ... ok
[INFO] [stdout] test skills::tests::test_remove_noop_when_no_skills ... ok
[INFO] [stdout] test settings::tests::test_load_missing_file ... ok
[INFO] [stdout] test skills::tests::test_template_count ... ok
[INFO] [stdout] test skills::tests::test_template_names_unique ... ok
[INFO] [stdout] test skills::tests::test_tier1_skills_have_auto_invoke_frontmatter ... ok
[INFO] [stdout] test skills::tests::test_tier1_skills_have_supporting_files ... ok
[INFO] [stdout] test slash_commands::tests::test_all_templates_have_content ... ok
[INFO] [stdout] test slash_commands::tests::test_all_templates_start_with_writ ... ok
[INFO] [stdout] test slash_commands::tests::test_context_template_mentions_toon ... ok
[INFO] [stdout] test slash_commands::tests::test_context_template_says_run_first ... ok
[INFO] [stdout] test slash_commands::tests::test_diff_template_has_correct_flags ... ok
[INFO] [stdout] test slash_commands::tests::test_finish_template_warns_agents ... ok
[INFO] [stdout] test slash_commands::tests::test_generate_creates_all_files ... ok
[INFO] [stdout] test skills::tests::test_generate_supporting_files ... ok
[INFO] [stdout] test skills::tests::test_generate_updates_changed_content ... ok
[INFO] [stdout] test slash_commands::tests::test_remove_noop_when_no_commands_dir ... ok
[INFO] [stdout] test skills::tests::test_generate_creates_directories ... ok
[INFO] [stdout] test skills::tests::test_generated_header_present ... ok
[INFO] [stdout] test slash_commands::tests::test_seal_template_has_spec_flag ... ok
[INFO] [stdout] test slash_commands::tests::test_seal_template_references_spec_done ... ok
[INFO] [stdout] test slash_commands::tests::test_spec_add_template_has_required_flags ... ok
[INFO] [stdout] test slash_commands::tests::test_spec_done_template_mentions_finish ... ok
[INFO] [stdout] test slash_commands::tests::test_template_count ... ok
[INFO] [stdout] test skills::tests::test_remove_cleans_writ_skills ... ok
[INFO] [stdout] test slash_commands::tests::test_workspace_create_template ... ok
[INFO] [stdout] test slash_commands::tests::test_workspace_list_template ... ok
[INFO] [stdout] test slash_commands::tests::test_workspace_status_template ... ok
[INFO] [stdout] test spec::tests::test_backward_compat_missing_commit_fields ... ok
[INFO] [stdout] test spec::tests::test_backward_compat_missing_lifecycle_state ... ok
[INFO] [stdout] test spec::tests::test_commit_state_default_is_uncommitted ... ok
[INFO] [stdout] test slash_commands::tests::test_template_names_unique ... ok
[INFO] [stdout] test spec::tests::test_commit_state_serde_values ... ok
[INFO] [stdout] test spec::tests::test_is_committable_complete_and_uncommitted ... ok
[INFO] [stdout] test spec::tests::test_is_committable_false_when_already_committed ... ok
[INFO] [stdout] test spec::tests::test_is_committable_false_when_not_complete ... ok
[INFO] [stdout] test spec::tests::test_legacy_spec_without_workspace_deserializes_to_none ... ok
[INFO] [stdout] test skills::tests::test_generate_idempotent ... ok
[INFO] [stdout] test spec::tests::test_lifecycle_state_default_is_active ... ok
[INFO] [stdout] test spec::tests::test_mark_committed ... ok
[INFO] [stdout] test spec::tests::test_lifecycle_state_serde_values ... ok
[INFO] [stdout] test spec::tests::test_lifecycle_state_serialization_roundtrip ... ok
[INFO] [stdout] test spec::tests::test_mark_pushed ... ok
[INFO] [stdout] test spec::tests::test_new_spec_has_no_workspace ... ok
[INFO] [stdout] test spec::tests::test_new_spec_has_uncommitted_state ... ok
[INFO] [stdout] test spec::tests::test_reopen_clears_commit_state ... ok
[INFO] [stdout] test spec::tests::test_roundtrip_with_commit_fields ... ok
[INFO] [stdout] test spec::tests::test_spec_new_has_active_lifecycle ... ok
[INFO] [stdout] test spec::tests::test_spec_status_from_str ... ok
[INFO] [stdout] test spec::tests::test_spec_workspace_none_not_serialized ... ok
[INFO] [stdout] test spec::tests::test_spec_workspace_serialization_roundtrip ... ok
[INFO] [stdout] test state::tests::brief_omits_zero_categories ... ok
[INFO] [stdout] test state::tests::brief_returns_clean_for_empty_changes ... ok
[INFO] [stdout] test state::tests::brief_shows_mixed_counts ... ok
[INFO] [stdout] test state::tests::brief_shows_new_count ... ok
[INFO] [stdout] test state::tests::compute_state_clean_empty_repo ... ok
[INFO] [stdout] test state::tests::compute_state_detects_deleted_file ... ok
[INFO] [stdout] test state::tests::compute_state_clean_when_files_match_index ... ok
[INFO] [stdout] test state::tests::compute_state_detects_new_file ... ok
[INFO] [stdout] test state::tests::compute_state_detects_modified_file ... ok
[INFO] [stdout] test state::tests::compute_state_detects_multiple_new_files ... ok
[INFO] [stdout] test skills::tests::test_remove_preserves_non_writ_skills ... ok
[INFO] [stdout] test state::tests::compute_state_ignores_writ_directory ... ok
[INFO] [stdout] test state::tests::compute_state_ignores_git_directory ... ok
[INFO] [stdout] test state::tests::compute_state_handles_nested_directories ... ok
[INFO] [stdout] test state::tests::compute_state_mixed_new_modified_deleted ... ok
[INFO] [stdout] test state::tests::compute_state_respects_custom_dir_ignore ... ok
[INFO] [stdout] test state::tests::file_status_serializes_to_lowercase ... ok
[INFO] [stdout] test state::tests::is_clean_returns_false_when_changes_exist ... ok
[INFO] [stdout] test state::tests::is_clean_returns_true_when_no_changes ... ok
[INFO] [stdout] test state::tests::compute_state_output_is_sorted ... ok
[INFO] [stdout] test state::tests::compute_state_respects_custom_file_ignore_patterns ... ok
[INFO] [stdout] test state::tests::modified_file_hash_reflects_new_content ... ok
[INFO] [stdout] test skills::tests::test_all_supporting_files_have_generated_header ... ok
[INFO] [stdout] test skills::tests::test_supporting_files_idempotent ... ok
[INFO] [stdout] test state::tests::new_file_hash_matches_content ... ok
[INFO] [stdout] test state::tests::compute_state_unchanged_file_not_in_changes ... ok
[INFO] [stdout] test status::tests::test_spec_brief_serializes ... ok
[INFO] [stdout] test status::tests::test_status_output_serializes ... ok
[INFO] [stdout] test status::tests::test_spec_brief_with_summary ... ok
[INFO] [stdout] test state::tests::tracked_count_includes_deleted_files ... ok
[INFO] [stdout] test state::tests::tracked_count_reflects_index_size ... ok
[INFO] [stdout] test slash_commands::tests::test_generate_updates_changed_content ... ok
[INFO] [stdout] test status::tests::test_status_roundtrip ... ok
[INFO] [stdout] test watch::tests::test_conflict_record_persistence ... ok
[INFO] [stdout] test slash_commands::tests::test_remove_preserves_non_writ_files ... ok
[INFO] [stdout] test slash_commands::tests::test_remove_removes_all_writ_files ... ok
[INFO] [stdout] test slash_commands::tests::test_generate_idempotent ... ok
[INFO] [stdout] test watch::tests::test_watch_detects_new_seal ... ok
[INFO] [stdout] test watch::tests::test_watch_stop_signal ... ok
[INFO] [stdout] test workspace::tests::test_consecutive_hyphens_rejected ... ok
[INFO] [stdout] test workspace::tests::test_empty_name_rejected ... ok
[INFO] [stdout] test workspace::tests::test_leading_trailing_hyphen_rejected ... ok
[INFO] [stdout] test workspace::tests::test_special_chars_rejected ... ok
[INFO] [stdout] test workspace::tests::test_uppercase_rejected ... ok
[INFO] [stdout] test workspace::tests::test_valid_workspace_names ... ok
[INFO] [stdout] test workspace::tests::test_workspace_config_serialization ... ok
[INFO] [stdout] test workspace::tests::test_workspace_pointer_roundtrip ... ok
[INFO] [stdout] test watch::tests::test_watch_auto_converge_on_overlap ... ok
[INFO] [stdout] test watch::tests::test_watch_conflict_recorded ... ok
[INFO] [stdout] test watch::tests::test_watch_no_overlap_no_convergence ... ok
[INFO] [stdout] test watch::tests::test_watch_retroactive_scan_on_first_cycle ... ok
[INFO] [stdout] test watch::tests::test_watch_respects_auto_converge_false ... ok
[INFO] [stdout] test watch::tests::test_watch_summary ... ok
[INFO] [stdout] test watch::tests::test_watch_retroactive_scan_on_first_cycle ... ok
[INFO] [stdout] test watch::tests::test_watch_re_converges_on_new_seal_from_participant ... ok
[INFO] [stdout] test watch::tests::test_watch_detects_overlap ... ok
[INFO] [stdout] test format::tests::benchmark_token_summary_report ... ok
[INFO] [stdout] test format::tests::benchmark_fleet_scaling ... ok
[INFO] [stdout] test repo::scale_tests::test_scale_context_with_many_seals ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_500_seals_all_scopes has been running for over 60 seconds
[INFO] [stdout] test repo::scale_tests::test_scale_500_seals_linear_chain ... ok
[INFO] [stdout] test repo::scale_tests::test_scale_parallel_specs has been running for over 60 seconds
[INFO] [stdout] test repo::scale_tests::test_scale_parallel_specs ... ok
[INFO] [stdout] test repo::context_edge_case_tests::test_context_500_seals_all_scopes ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- crypto::tests::test_chain_with_100_seals_performance stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'crypto::tests::test_chain_with_100_seals_performance' (790) panicked at crates/writ-core/src/crypto.rs:594:9:
[INFO] [stdout] 100-seal chain creation + verification took 7.568751364s
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5b8f44b3fb1a - std[f92b4c606f291077]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5b8f44b3fb1a - std[f92b4c606f291077]::backtrace_rs::backtrace::trace_unsynchronized::<std[f92b4c606f291077]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5b8f44b3fb1a - std[f92b4c606f291077]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5b8f44b3fb1a - <<std[f92b4c606f291077]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[786f478f706679df]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5b8f44b57eca - <core[786f478f706679df]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5b8f44b57eca - core[786f478f706679df]::fmt::write
[INFO] [stdout]    6:     0x5b8f44b45052 - std[f92b4c606f291077]::io::default_write_fmt::<alloc[64763625b5a07cdb]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5b8f44b45052 - <alloc[64763625b5a07cdb]::vec::Vec<u8> as std[f92b4c606f291077]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5b8f44b1a03f - <std[f92b4c606f291077]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5b8f44b1a03f - std[f92b4c606f291077]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5b8f44b35c49 - std[f92b4c606f291077]::panicking::default_hook
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b8f447fee9c - <alloc[64763625b5a07cdb]::boxed::Box<dyn for<'a, 'b> core[786f478f706679df]::ops::function::Fn<(&'a std[f92b4c606f291077]::panic::PanicHookInfo<'b>,), Output = ()> + core[786f478f706679df]::marker::Sync + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::Fn<(&std[f92b4c606f291077]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x5b8f447fee9c - test[20e1f0ae6cad7a17]::test_main_with_exit_callback::<test[20e1f0ae6cad7a17]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5b8f44b35ec2 - <alloc[64763625b5a07cdb]::boxed::Box<dyn for<'a, 'b> core[786f478f706679df]::ops::function::Fn<(&'a std[f92b4c606f291077]::panic::PanicHookInfo<'b>,), Output = ()> + core[786f478f706679df]::marker::Sync + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::Fn<(&std[f92b4c606f291077]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x5b8f44b35ec2 - std[f92b4c606f291077]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5b8f44b1a0f8 - std[f92b4c606f291077]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x5b8f44b110e9 - std[f92b4c606f291077]::sys::backtrace::__rust_end_short_backtrace::<std[f92b4c606f291077]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5b8f44b1b0ed - __rustc[8241495c18a89d70]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5b8f44b5870c - core[786f478f706679df]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5b8f43ce7e7f - writ_core[cb808603af349347]::crypto::tests::test_chain_with_100_seals_performance
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/writ-core/src/crypto.rs:594:9
[INFO] [stdout]   20:     0x5b8f43c8a297 - writ_core[cb808603af349347]::crypto::tests::test_chain_with_100_seals_performance::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/writ-core/src/crypto.rs:568:47
[INFO] [stdout]   21:     0x5b8f43f272f6 - <writ_core[cb808603af349347]::crypto::tests::test_chain_with_100_seals_performance::{closure#0} as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x5b8f447f2f7b - <fn() -> core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x5b8f447f2f7b - test[20e1f0ae6cad7a17]::__rust_begin_short_backtrace::<core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>, fn() -> core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x5b8f447ff96b - test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x5b8f447ff96b - <core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x5b8f447ff96b - std[f92b4c606f291077]::panicking::catch_unwind::do_call::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>, core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x5b8f447ff96b - std[f92b4c606f291077]::panicking::catch_unwind::<core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>, core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x5b8f447ff96b - std[f92b4c606f291077]::panic::catch_unwind::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<test[20e1f0ae6cad7a17]::run_test_in_process::{closure#0}>, core[786f478f706679df]::result::Result<(), alloc[64763625b5a07cdb]::string::String>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x5b8f447ff96b - test[20e1f0ae6cad7a17]::run_test_in_process
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x5b8f447ff96b - test[20e1f0ae6cad7a17]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x5b8f447fb084 - test[20e1f0ae6cad7a17]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x5b8f447fb084 - std[f92b4c606f291077]::sys::backtrace::__rust_begin_short_backtrace::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x5b8f44802572 - std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x5b8f44802572 - <core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x5b8f44802572 - std[f92b4c606f291077]::panicking::catch_unwind::do_call::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x5b8f44802572 - std[f92b4c606f291077]::panicking::catch_unwind::<(), core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x5b8f44802572 - std[f92b4c606f291077]::panic::catch_unwind::<core[786f478f706679df]::panic::unwind_safe::AssertUnwindSafe<std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x5b8f44802572 - std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked::<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x5b8f44802572 - <std[f92b4c606f291077]::thread::lifecycle::spawn_unchecked<test[20e1f0ae6cad7a17]::run_test::{closure#1}, ()>::{closure#1} as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x5b8f44b3eb4f - <alloc[64763625b5a07cdb]::boxed::Box<dyn core[786f478f706679df]::ops::function::FnOnce<(), Output = ()> + core[786f478f706679df]::marker::Send> as core[786f478f706679df]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   41:     0x5b8f44b3eb4f - <std[f92b4c606f291077]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/1f7f8ea0721a3b1eb73e6c6d25cccb371434b320/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x70b55fe8baa4 - <unknown>
[INFO] [stdout]   43:     0x70b55ff18a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     crypto::tests::test_chain_with_100_seals_performance
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 1994 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 80.79s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p writ-core --lib`
[INFO] running `Command { std: "docker" "inspect" "1955ca43b63c4cd2a3d4f74cdf696b6de5e7159ff9eec2ae7f53ce6829059a74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1955ca43b63c4cd2a3d4f74cdf696b6de5e7159ff9eec2ae7f53ce6829059a74", kill_on_drop: false }`
[INFO] [stdout] 1955ca43b63c4cd2a3d4f74cdf696b6de5e7159ff9eec2ae7f53ce6829059a74
